Skip to main content

perfetto_trace_protos/
perfetto.protos.rs

1// Begin of protos/perfetto/common/ftrace_descriptor.proto
2
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct FtraceDescriptor {
5    /// Report the available atrace categories.
6    ///
7    /// Used by Traceur via `perfetto --query`.
8    #[prost(message, repeated, tag="1")]
9    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
10}
11/// Nested message and enum types in `FtraceDescriptor`.
12pub mod ftrace_descriptor {
13    #[derive(Clone, PartialEq, ::prost::Message)]
14    pub struct AtraceCategory {
15        #[prost(string, optional, tag="1")]
16        pub name: ::core::option::Option<::prost::alloc::string::String>,
17        #[prost(string, optional, tag="2")]
18        pub description: ::core::option::Option<::prost::alloc::string::String>,
19    }
20}
21// End of protos/perfetto/common/ftrace_descriptor.proto
22
23// Begin of protos/perfetto/common/gpu_counter_descriptor.proto
24
25/// Description of GPU counters.
26/// This message is sent by a GPU counter producer to specify the counters
27/// available in the hardware.
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct GpuCounterDescriptor {
30    #[prost(message, repeated, tag="1")]
31    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
32    #[prost(message, repeated, tag="2")]
33    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
34    /// optional.  Minimum sampling period supported by the producer in
35    /// nanoseconds.
36    #[prost(uint64, optional, tag="3")]
37    pub min_sampling_period_ns: ::core::option::Option<u64>,
38    /// optional.  Maximum sampling period supported by the producer in
39    /// nanoseconds.
40    #[prost(uint64, optional, tag="4")]
41    pub max_sampling_period_ns: ::core::option::Option<u64>,
42    /// optional.  The producer supports counter sampling by instrumenting the
43    /// command buffer.
44    #[prost(bool, optional, tag="5")]
45    pub supports_instrumented_sampling: ::core::option::Option<bool>,
46}
47/// Nested message and enum types in `GpuCounterDescriptor`.
48pub mod gpu_counter_descriptor {
49    #[derive(Clone, PartialEq, ::prost::Message)]
50    pub struct GpuCounterSpec {
51        #[prost(uint32, optional, tag="1")]
52        pub counter_id: ::core::option::Option<u32>,
53        #[prost(string, optional, tag="2")]
54        pub name: ::core::option::Option<::prost::alloc::string::String>,
55        #[prost(string, optional, tag="3")]
56        pub description: ::core::option::Option<::prost::alloc::string::String>,
57        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
58        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
59        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
60        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
61        #[prost(bool, optional, tag="9")]
62        pub select_by_default: ::core::option::Option<bool>,
63        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
64        pub groups: ::prost::alloc::vec::Vec<i32>,
65        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
66        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
67    }
68    /// Nested message and enum types in `GpuCounterSpec`.
69    pub mod gpu_counter_spec {
70        #[derive(Clone, PartialEq, ::prost::Oneof)]
71        pub enum PeakValue {
72            #[prost(int64, tag="5")]
73            IntPeakValue(i64),
74            #[prost(double, tag="6")]
75            DoublePeakValue(f64),
76        }
77    }
78    /// Allow producer to group counters into block to represent counter islands.
79    /// A capacity may be specified to indicate the number of counters that can be
80    /// enable simultaneously in that block.
81    #[derive(Clone, PartialEq, ::prost::Message)]
82    pub struct GpuCounterBlock {
83        /// required. Unique ID for the counter group.
84        #[prost(uint32, optional, tag="1")]
85        pub block_id: ::core::option::Option<u32>,
86        /// optional. Number of counters supported by the block. No limit if unset.
87        #[prost(uint32, optional, tag="2")]
88        pub block_capacity: ::core::option::Option<u32>,
89        /// optional. Name of block.
90        #[prost(string, optional, tag="3")]
91        pub name: ::core::option::Option<::prost::alloc::string::String>,
92        /// optional. Description for the block.
93        #[prost(string, optional, tag="4")]
94        pub description: ::core::option::Option<::prost::alloc::string::String>,
95        /// list of counters that are part of the block.
96        #[prost(uint32, repeated, packed="false", tag="5")]
97        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
98    }
99    /// Logical groups for a counter.  This is used in the UI to present the
100    /// related counters together.
101    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
102    #[repr(i32)]
103    pub enum GpuCounterGroup {
104        Unclassified = 0,
105        System = 1,
106        Vertices = 2,
107        Fragments = 3,
108        Primitives = 4,
109        /// Includes counters relating to caching and bandwidth.
110        Memory = 5,
111        Compute = 6,
112        RayTracing = 7,
113    }
114    impl GpuCounterGroup {
115        /// String value of the enum field names used in the ProtoBuf definition.
116        ///
117        /// The values are not transformed in any way and thus are considered stable
118        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
119        pub fn as_str_name(&self) -> &'static str {
120            match self {
121                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
122                GpuCounterGroup::System => "SYSTEM",
123                GpuCounterGroup::Vertices => "VERTICES",
124                GpuCounterGroup::Fragments => "FRAGMENTS",
125                GpuCounterGroup::Primitives => "PRIMITIVES",
126                GpuCounterGroup::Memory => "MEMORY",
127                GpuCounterGroup::Compute => "COMPUTE",
128                GpuCounterGroup::RayTracing => "RAY_TRACING",
129            }
130        }
131    }
132    /// next id: 41
133    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
134    #[repr(i32)]
135    pub enum MeasureUnit {
136        None = 0,
137        Bit = 1,
138        Kilobit = 2,
139        Megabit = 3,
140        Gigabit = 4,
141        Terabit = 5,
142        Petabit = 6,
143        Byte = 7,
144        Kilobyte = 8,
145        Megabyte = 9,
146        Gigabyte = 10,
147        Terabyte = 11,
148        Petabyte = 12,
149        Hertz = 13,
150        Kilohertz = 14,
151        Megahertz = 15,
152        Gigahertz = 16,
153        Terahertz = 17,
154        Petahertz = 18,
155        Nanosecond = 19,
156        Microsecond = 20,
157        Millisecond = 21,
158        Second = 22,
159        Minute = 23,
160        Hour = 24,
161        Vertex = 25,
162        Pixel = 26,
163        Triangle = 27,
164        Primitive = 38,
165        Fragment = 39,
166        Milliwatt = 28,
167        Watt = 29,
168        Kilowatt = 30,
169        Joule = 31,
170        Volt = 32,
171        Ampere = 33,
172        Celsius = 34,
173        Fahrenheit = 35,
174        Kelvin = 36,
175        /// Values should be out of 100.
176        Percent = 37,
177        Instruction = 40,
178    }
179    impl MeasureUnit {
180        /// String value of the enum field names used in the ProtoBuf definition.
181        ///
182        /// The values are not transformed in any way and thus are considered stable
183        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
184        pub fn as_str_name(&self) -> &'static str {
185            match self {
186                MeasureUnit::None => "NONE",
187                MeasureUnit::Bit => "BIT",
188                MeasureUnit::Kilobit => "KILOBIT",
189                MeasureUnit::Megabit => "MEGABIT",
190                MeasureUnit::Gigabit => "GIGABIT",
191                MeasureUnit::Terabit => "TERABIT",
192                MeasureUnit::Petabit => "PETABIT",
193                MeasureUnit::Byte => "BYTE",
194                MeasureUnit::Kilobyte => "KILOBYTE",
195                MeasureUnit::Megabyte => "MEGABYTE",
196                MeasureUnit::Gigabyte => "GIGABYTE",
197                MeasureUnit::Terabyte => "TERABYTE",
198                MeasureUnit::Petabyte => "PETABYTE",
199                MeasureUnit::Hertz => "HERTZ",
200                MeasureUnit::Kilohertz => "KILOHERTZ",
201                MeasureUnit::Megahertz => "MEGAHERTZ",
202                MeasureUnit::Gigahertz => "GIGAHERTZ",
203                MeasureUnit::Terahertz => "TERAHERTZ",
204                MeasureUnit::Petahertz => "PETAHERTZ",
205                MeasureUnit::Nanosecond => "NANOSECOND",
206                MeasureUnit::Microsecond => "MICROSECOND",
207                MeasureUnit::Millisecond => "MILLISECOND",
208                MeasureUnit::Second => "SECOND",
209                MeasureUnit::Minute => "MINUTE",
210                MeasureUnit::Hour => "HOUR",
211                MeasureUnit::Vertex => "VERTEX",
212                MeasureUnit::Pixel => "PIXEL",
213                MeasureUnit::Triangle => "TRIANGLE",
214                MeasureUnit::Primitive => "PRIMITIVE",
215                MeasureUnit::Fragment => "FRAGMENT",
216                MeasureUnit::Milliwatt => "MILLIWATT",
217                MeasureUnit::Watt => "WATT",
218                MeasureUnit::Kilowatt => "KILOWATT",
219                MeasureUnit::Joule => "JOULE",
220                MeasureUnit::Volt => "VOLT",
221                MeasureUnit::Ampere => "AMPERE",
222                MeasureUnit::Celsius => "CELSIUS",
223                MeasureUnit::Fahrenheit => "FAHRENHEIT",
224                MeasureUnit::Kelvin => "KELVIN",
225                MeasureUnit::Percent => "PERCENT",
226                MeasureUnit::Instruction => "INSTRUCTION",
227            }
228        }
229    }
230}
231// End of protos/perfetto/common/gpu_counter_descriptor.proto
232
233// Begin of protos/perfetto/common/track_event_descriptor.proto
234
235#[derive(Clone, PartialEq, ::prost::Message)]
236pub struct TrackEventCategory {
237    #[prost(string, optional, tag="1")]
238    pub name: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, optional, tag="2")]
240    pub description: ::core::option::Option<::prost::alloc::string::String>,
241    #[prost(string, repeated, tag="3")]
242    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
243}
244#[derive(Clone, PartialEq, ::prost::Message)]
245pub struct TrackEventDescriptor {
246    #[prost(message, repeated, tag="1")]
247    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
248}
249// End of protos/perfetto/common/track_event_descriptor.proto
250
251// Begin of protos/perfetto/protovm/vm_program.proto
252
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct VmProgram {
255    #[prost(uint32, optional, tag="1")]
256    pub version: ::core::option::Option<u32>,
257    #[prost(message, repeated, tag="2")]
258    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
259}
260#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct VmInstruction {
262    #[prost(enumeration="vm_instruction::AbortLevel", optional, tag="6")]
263    pub abort_level: ::core::option::Option<i32>,
264    /// Sub-instructions executed if the current instruction succeeds
265    #[prost(message, repeated, tag="7")]
266    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
267    #[prost(oneof="vm_instruction::Operation", tags="1, 2, 3, 4, 5")]
268    pub operation: ::core::option::Option<vm_instruction::Operation>,
269}
270/// Nested message and enum types in `VmInstruction`.
271pub mod vm_instruction {
272    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
273    #[repr(i32)]
274    pub enum AbortLevel {
275        /// Skip current instruction but execute following ones
276        SkipCurrentInstruction = 1,
277        /// Skip current instruction as well as following ones (default)
278        SkipCurrentInstructionAndBreakOuter = 2,
279        /// Abort whole program
280        Abort = 3,
281    }
282    impl AbortLevel {
283        /// String value of the enum field names used in the ProtoBuf definition.
284        ///
285        /// The values are not transformed in any way and thus are considered stable
286        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
287        pub fn as_str_name(&self) -> &'static str {
288            match self {
289                AbortLevel::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
290                AbortLevel::SkipCurrentInstructionAndBreakOuter => "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER",
291                AbortLevel::Abort => "ABORT",
292            }
293        }
294    }
295    #[derive(Clone, PartialEq, ::prost::Oneof)]
296    pub enum Operation {
297        #[prost(message, tag="1")]
298        Select(super::VmOpSelect),
299        #[prost(message, tag="2")]
300        RegLoad(super::VmOpRegLoad),
301        #[prost(message, tag="3")]
302        Merge(super::VmOpMerge),
303        #[prost(message, tag="4")]
304        Set(super::VmOpSet),
305        #[prost(message, tag="5")]
306        Del(super::VmOpDel),
307    }
308}
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct VmOpSelect {
311    /// Enum SRC|DST|BOTH. Default=SRC.
312    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
313    pub cursor: ::core::option::Option<i32>,
314    #[prost(message, repeated, tag="2")]
315    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
316    /// Creates the submessage if doesn't exist in the DST cursor
317    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
318    #[prost(bool, optional, tag="3")]
319    pub create_if_not_exist: ::core::option::Option<bool>,
320}
321/// Nested message and enum types in `VmOpSelect`.
322pub mod vm_op_select {
323    /// A path component is either: (1) a field id to descend into (common case);
324    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
325    /// repeated fields, where we snoop a sub-field as a map key)
326    #[derive(Clone, PartialEq, ::prost::Message)]
327    pub struct PathComponent {
328        // When we are selecting a leaf field, tell what's the field type
329        // to disambiguate integer types. Using uint64 by default will likely
330        // do the right thing in 99% cases (so probably we don't need to impl
331        // this until much later if somebody does a map with a fixed64 key)
332        // enum ProtoFieldType field_type = 4;  // bool | int32 | fixed32 | ...
333
334        /// Only valid when using field_id. This makes select have foreach
335        /// semantics. This means that the body of nested_instructions is
336        /// executed several times, once per each repeated submessage.
337        #[prost(bool, optional, tag="5")]
338        pub is_repeated: ::core::option::Option<bool>,
339        /// Only valid when using map_key_field_id. This defines which
340        /// register (R1..R32) should be used to match the key of the dict
341        /// in a map lookup operation.
342        /// In other words:
343        /// foreach msg in repeated message {
344        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
345        ///       break;  // Lookup succeeded, PathComponent resolves here.
346        ///    }
347        /// }
348        #[prost(uint32, optional, tag="6")]
349        pub register_to_match: ::core::option::Option<u32>,
350        /// Only valid when using field_id and is_repeated=true. When iterating
351        /// over repeated fields, stores the current iteration index into the
352        /// the register R1..R32 defined below. This can be used to do complex
353        /// operations like "find the entry in the array that has width==100,
354        /// remember its offset in the SRC array and overwrite the matching
355        /// i-th element in the DST array. We will probably never implement
356        /// this but it's here for completeness.
357        #[prost(uint32, optional, tag="7")]
358        pub store_foreach_index_into_register: ::core::option::Option<u32>,
359        #[prost(oneof="path_component::Field", tags="1, 2, 3")]
360        pub field: ::core::option::Option<path_component::Field>,
361    }
362    /// Nested message and enum types in `PathComponent`.
363    pub mod path_component {
364        #[derive(Clone, PartialEq, ::prost::Oneof)]
365        pub enum Field {
366            #[prost(uint32, tag="1")]
367            FieldId(u32),
368            #[prost(uint32, tag="2")]
369            ArrayIndex(u32),
370            /// The ID of the field in the repeated submessage that we
371            /// use as a key (e.g. LayerState.layer_id). When setting this
372            /// register_to_match must also be set, to tell what's the
373            /// expected value of the key we are looking up.
374            #[prost(uint32, tag="3")]
375            MapKeyFieldId(u32),
376        }
377    }
378}
379#[derive(Clone, PartialEq, ::prost::Message)]
380pub struct VmOpRegLoad {
381    /// SRC(default) | DST.
382    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
383    pub cursor: ::core::option::Option<i32>,
384    /// 1=R1, 2=R2... 32=R32
385    #[prost(uint32, optional, tag="2")]
386    pub dst_register: ::core::option::Option<u32>,
387}
388/// Merges SRC into DST. Both need to point to a message (not a field).
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct VmOpMerge {
391    /// When true, the merge operation will skip any field that is already
392    /// resolved as a message node in the destination tree.
393    ///
394    /// This is used to support merging of nested messages. Because ProtoVM
395    /// does not know the schema, a standard MERGE cannot distinguish
396    /// between a string and a message on the wire and it would overwrite
397    /// the entire blob, destroying granular updates.
398    ///
399    /// By setting this to true, a program can be implemented to do a
400    /// bottom-up, multi-step merge by traversing into and merging
401    /// the deepest submessages first, then moving up to the parent
402    /// message and merging it with skip_submessages = true.
403    #[prost(bool, optional, tag="1")]
404    pub skip_submessages: ::core::option::Option<bool>,
405}
406/// Copies SRC into DST. If a message, replaces the DST node, discarding any
407/// pre-existing field.
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct VmOpSet {
410}
411/// Delete the field or message pointed by DST.
412#[derive(Clone, PartialEq, ::prost::Message)]
413pub struct VmOpDel {
414}
415// End of protos/perfetto/protovm/vm_program.proto
416
417// Begin of protos/perfetto/common/data_source_descriptor.proto
418
419/// This message is sent from Producer(s) to the tracing Service when registering
420/// to advertise their capabilities. It describes the structure of tracing
421/// protos that will be produced by the data source and the supported filters.
422#[derive(Clone, PartialEq, ::prost::Message)]
423pub struct DataSourceDescriptor {
424    /// e.g., "linux.ftrace", "chromium.tracing"
425    #[prost(string, optional, tag="1")]
426    pub name: ::core::option::Option<::prost::alloc::string::String>,
427    /// When non-zero, this is a unique ID within the scope of the Producer for
428    /// this data source (it is NOT globally unique). This is useful to
429    /// differentiate between data sources with matching names when calling
430    /// UpdateDataSource(). This field has been introduced in November 2021
431    /// (v22, Android T) and is not supported on older versions.
432    #[prost(uint64, optional, tag="7")]
433    pub id: ::core::option::Option<u64>,
434    /// When true the data source is expected to ack the stop request through the
435    /// NotifyDataSourceStopped() IPC. This field has been introduced after
436    /// Android P in Jul 2018 and is not supported on older versions.
437    #[prost(bool, optional, tag="2")]
438    pub will_notify_on_stop: ::core::option::Option<bool>,
439    /// When true the data source is expected to ack the start request through the
440    /// NotifyDataSourceStarted() IPC. This field has been introduced after
441    /// Android P in March 2019 and is not supported on older versions.
442    #[prost(bool, optional, tag="3")]
443    pub will_notify_on_start: ::core::option::Option<bool>,
444    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
445    /// set if the data source writes packets that refer to previous trace
446    /// contents, and knows how to stop referring to the already-emitted data.
447    #[prost(bool, optional, tag="4")]
448    pub handles_incremental_state_clear: ::core::option::Option<bool>,
449    /// If true, indicates that the data source does nothing upon Flush. This
450    /// allows the service to reduce the flush-related IPC traffic and better deal
451    /// with frozen producers (see go/perfetto-frozen). This is usually the case
452    /// for data sources like 'track_event' that don't have access to the various
453    /// thread task runners to post a flush task and rely purely on server-side
454    /// scraping.
455    /// Introduced in v39 / Android V.
456    #[prost(bool, optional, tag="9")]
457    pub no_flush: ::core::option::Option<bool>,
458    /// If present, the tracing service executes this program within a ProtoVM to
459    /// process overwritten packets (patches). The service computes a hash of the
460    /// program to detect and disambiguate between different versions; if multiple
461    /// versions (from different producers) are specified for the same data source,
462    /// the service instantiates a dedicated ProtoVM for each.
463    #[prost(message, optional, tag="10")]
464    pub protovm_program: ::core::option::Option<VmProgram>,
465    /// Optional specification about available GPU counters.
466    #[prost(message, optional, tag="5")]
467    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
468    #[prost(message, optional, tag="6")]
469    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
470    #[prost(message, optional, tag="8")]
471    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
472}
473// End of protos/perfetto/common/data_source_descriptor.proto
474
475// Begin of protos/perfetto/common/tracing_service_state.proto
476
477/// Reports the state of the tracing service. Used to gather details about the
478/// data sources connected.
479/// See ConsumerPort::QueryServiceState().
480#[derive(Clone, PartialEq, ::prost::Message)]
481pub struct TracingServiceState {
482    /// Lists all the producers connected.
483    #[prost(message, repeated, tag="1")]
484    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
485    /// Lists the data sources available.
486    #[prost(message, repeated, tag="2")]
487    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
488    /// Lists the tracing sessions active AND owned by a consumer that has the same
489    /// UID of the caller (or all of them if the caller is root).
490    /// Introduced in v24 / Android T.
491    #[prost(message, repeated, tag="6")]
492    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
493    /// This is always set to true from v24 and beyond. This flag is only used to
494    /// tell the difference between: (1) talking to a recent service which happens
495    /// to have no tracing session active; (2) talking to an older version of the
496    /// service which will never report any tracing session.
497    #[prost(bool, optional, tag="7")]
498    pub supports_tracing_sessions: ::core::option::Option<bool>,
499    /// Total number of tracing sessions.
500    #[prost(int32, optional, tag="3")]
501    pub num_sessions: ::core::option::Option<i32>,
502    /// Number of tracing sessions in the started state. Always <= num_sessions.
503    #[prost(int32, optional, tag="4")]
504    pub num_sessions_started: ::core::option::Option<i32>,
505    /// The version of traced (the same returned by `traced --version`).
506    /// This is a human readable string with and its format varies depending on
507    /// the build system and the repo (standalone vs AOSP).
508    /// This is intended for human debugging only.
509    #[prost(string, optional, tag="5")]
510    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
511}
512/// Nested message and enum types in `TracingServiceState`.
513pub mod tracing_service_state {
514    /// Describes a producer process.
515    #[derive(Clone, PartialEq, ::prost::Message)]
516    pub struct Producer {
517        /// Unique ID of the producer (monotonic counter).
518        #[prost(int32, optional, tag="1")]
519        pub id: ::core::option::Option<i32>,
520        /// Typically matches the process name.
521        #[prost(string, optional, tag="2")]
522        pub name: ::core::option::Option<::prost::alloc::string::String>,
523        /// Unix pid of the remote process. Supported only on Linux-based systems.
524        /// Introduced in v24 / Android T.
525        #[prost(int32, optional, tag="5")]
526        pub pid: ::core::option::Option<i32>,
527        /// Unix uid of the remote process.
528        #[prost(int32, optional, tag="3")]
529        pub uid: ::core::option::Option<i32>,
530        /// The version of the client library used by the producer.
531        /// This is a human readable string with and its format varies depending on
532        /// the build system and the repo (standalone vs AOSP).
533        /// This is intended for human debugging only.
534        #[prost(string, optional, tag="4")]
535        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
536        /// Returns true if the process appears to be frozen (Android only).
537        /// Introduced in Perfetto V49 / Android 24Q4.
538        #[prost(bool, optional, tag="6")]
539        pub frozen: ::core::option::Option<bool>,
540    }
541    /// Describes a data source registered by a producer. Data sources are listed
542    /// regardless of the fact that they are being used or not.
543    #[derive(Clone, PartialEq, ::prost::Message)]
544    pub struct DataSource {
545        /// Descriptor passed by the data source when calling RegisterDataSource().
546        #[prost(message, optional, tag="1")]
547        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
548        /// ID of the producer, as per Producer.id.
549        #[prost(int32, optional, tag="2")]
550        pub producer_id: ::core::option::Option<i32>,
551    }
552    #[derive(Clone, PartialEq, ::prost::Message)]
553    pub struct TracingSession {
554        /// The TracingSessionID.
555        #[prost(uint64, optional, tag="1")]
556        pub id: ::core::option::Option<u64>,
557        /// The Unix uid of the consumer that started the session.
558        /// This is meaningful only if the caller is root. In all other cases only
559        /// tracing sessions that match the caller UID will be displayed.
560        #[prost(int32, optional, tag="2")]
561        pub consumer_uid: ::core::option::Option<i32>,
562        /// Internal state of the tracing session.
563        /// These strings are FYI only and subjected to change.
564        #[prost(string, optional, tag="3")]
565        pub state: ::core::option::Option<::prost::alloc::string::String>,
566        /// The unique_session_name as set in the trace config (might be empty).
567        #[prost(string, optional, tag="4")]
568        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
569        /// The number and size of each buffer.
570        #[prost(uint32, repeated, packed="false", tag="5")]
571        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
572        /// Duration, as specified in the TraceConfig.duration_ms.
573        #[prost(uint32, optional, tag="6")]
574        pub duration_ms: ::core::option::Option<u32>,
575        /// Number of data sources involved in the session.
576        #[prost(uint32, optional, tag="7")]
577        pub num_data_sources: ::core::option::Option<u32>,
578        /// Time when the session was started, in the CLOCK_REALTIME domain.
579        /// Available only on Linux-based systems.
580        #[prost(int64, optional, tag="8")]
581        pub start_realtime_ns: ::core::option::Option<i64>,
582        // The fields below have been introduced in v42.
583
584        /// The bugreport_score, as set in TraceConfig.bugreport_score.
585        #[prost(int32, optional, tag="9")]
586        pub bugreport_score: ::core::option::Option<i32>,
587        /// As per TraceConfig.bugreport_filename.
588        #[prost(string, optional, tag="10")]
589        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
590        /// If true, the session is in the STARTED state. If false the session is in
591        /// any other state (see `state` field).
592        #[prost(bool, optional, tag="11")]
593        pub is_started: ::core::option::Option<bool>,
594    }
595}
596// End of protos/perfetto/common/semantic_type.proto
597
598// Begin of protos/perfetto/config/android/android_aflags_config.proto
599
600/// Options for the android.aflags data source.
601/// This data source captures snapshots of Android aconfig flags.
602/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
603/// for more information on aconfig flags.
604#[derive(Clone, PartialEq, ::prost::Message)]
605pub struct AndroidAflagsConfig {
606    /// Frequency of polling. If absent or 0, the state will be recorded once,
607    /// at the start of the trace.
608    ///
609    /// It is recommended to either leave this absent or set it to a large
610    /// value as each invocation of the `aflags` tool can be time consuming
611    /// (approx. 350ms) and also triggers an expensive flush. This is required to
612    /// be > 1000ms if set, to avoid excessive CPU usage.
613    #[prost(uint32, optional, tag="1")]
614    pub poll_ms: ::core::option::Option<u32>,
615}
616// End of protos/perfetto/config/android/android_aflags_config.proto
617
618// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
619
620/// Data source that lists game modes and game interventions of games
621/// on an Android device.
622#[derive(Clone, PartialEq, ::prost::Message)]
623pub struct AndroidGameInterventionListConfig {
624    /// If not empty, emit info about only the following list of package names
625    /// (exact match, no regex). Otherwise, emit info about all packages.
626    #[prost(string, repeated, tag="1")]
627    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
628}
629// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
630
631// Begin of protos/perfetto/config/android/android_input_event_config.proto
632
633/// Custom configuration for the "android.input.inputevent" data source.
634///
635/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
636///
637/// Next ID: 5
638#[derive(Clone, PartialEq, ::prost::Message)]
639pub struct AndroidInputEventConfig {
640    /// The tracing mode to use. If unspecified, it will default to
641    /// TRACE_MODE_USE_RULES.
642    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
643    pub mode: ::core::option::Option<i32>,
644    /// The list of rules to use to determine the trace level of events.
645    /// Each event will be traced using the TraceLevel of the first rule that it
646    /// triggers from this list. The rules are evaluated in the order in which they
647    /// are specified. If an event does not match any of the rules,
648    /// TRACE_LEVEL_NONE will be used by default.
649    #[prost(message, repeated, tag="2")]
650    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
651    // --- Control flags ---
652
653    /// Trace input events processed by the system as they are being dispatched
654    /// to application windows. All trace rules will apply.
655    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
656    ///    it will
657    ///      trace InputDispatcher's inbound events (which does not include events
658    ///      synthesized within InputDispatcher) that match the rules.
659    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
660    ///    events
661    ///      matching the rules, including all events synthesized within
662    ///      InputDispatcher, will be traced.
663    #[prost(bool, optional, tag="3")]
664    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
665    /// Trace details about which windows the system is sending each input event
666    /// to. All trace rules will apply.
667    #[prost(bool, optional, tag="4")]
668    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
669}
670/// Nested message and enum types in `AndroidInputEventConfig`.
671pub mod android_input_event_config {
672    /// A rule that specifies the TraceLevel for an event based on matching
673    /// conditions. All matchers in the rule are optional. To trigger this rule, an
674    /// event must match all of its specified matchers (i.e. the matchers function
675    /// like a series of conditions connected by a logical 'AND' operator). A rule
676    /// with no specified matchers will match all events. Next ID: 6
677    #[derive(Clone, PartialEq, ::prost::Message)]
678    pub struct TraceRule {
679        /// The trace level to be used for events that trigger this rule.
680        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
681        #[prost(enumeration="TraceLevel", optional, tag="1")]
682        pub trace_level: ::core::option::Option<i32>,
683        // --- Optional Matchers ---
684
685        /// Package matchers
686        ///
687        /// Respectively matches if all or any of the target apps for this event are
688        /// contained in the specified list of package names.
689        ///
690        /// Intended usage:
691        ///    - Use match_all_packages to selectively allow tracing for the listed
692        ///    packages.
693        ///    - Use match_any_packages to selectively deny tracing for certain
694        ///    packages.
695        ///
696        /// WARNING: Great care must be taken when designing rules for field tracing!
697        ///           This is because each event is almost always sent to more than
698        ///           one app.
699        ///               For example, when allowing tracing for a package that has a
700        ///               spy window
701        ///           over the display (e.g. SystemUI) using match_any_packages,
702        ///           essentially all input will be recorded on that display. This is
703        ///           because the events will be sent to the spy as well as the
704        ///           foreground app, and regardless of what the foreground app is,
705        ///           the event will end up being traced.
706        ///               Alternatively, when attempting to block tracing for specific
707        ///               packages using
708        ///           match_all_packages, no events will likely be blocked. This is
709        ///           because the event will also be sent to other apps (such as, but
710        ///           not limited to, ones with spy windows), so the matcher will not
711        ///           match unless all other targets are also listed under the
712        ///           match_all_packages list.
713        #[prost(string, repeated, tag="2")]
714        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
715        #[prost(string, repeated, tag="3")]
716        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
717        /// Matches if the event is secure, which means that at least one of the
718        /// targets of this event is using the window flag FLAG_SECURE.
719        #[prost(bool, optional, tag="4")]
720        pub match_secure: ::core::option::Option<bool>,
721        /// Matches if there was an active IME connection while this event was being
722        /// processed.
723        #[prost(bool, optional, tag="5")]
724        pub match_ime_connection_active: ::core::option::Option<bool>,
725    }
726    /// Trace modes are tracing presets that are included in the system.
727    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
728    #[repr(i32)]
729    pub enum TraceMode {
730        /// Preset mode for maximal tracing.
731        /// WARNING: This will bypass all privacy measures on debuggable builds, and
732        /// will record all
733        ///           input events processed by the system, regardless of the context
734        ///           in which they were processed. It should only be used for tracing
735        ///           on a local device or for tests. It should NEVER be used for
736        ///           field tracing.
737        TraceAll = 0,
738        /// Use the tracing rules defined in this config to specify what events to
739        /// trace.
740        UseRules = 1,
741    }
742    impl TraceMode {
743        /// String value of the enum field names used in the ProtoBuf definition.
744        ///
745        /// The values are not transformed in any way and thus are considered stable
746        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
747        pub fn as_str_name(&self) -> &'static str {
748            match self {
749                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
750                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
751            }
752        }
753    }
754    /// The level of tracing that should be applied to an event.
755    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
756    #[repr(i32)]
757    pub enum TraceLevel {
758        /// Do not trace the input event.
759        None = 0,
760        /// Trace the event as a redacted event, where certain sensitive fields are
761        /// omitted from the trace, including the coordinates of pointer events and
762        /// the key/scan codes of key events.
763        Redacted = 1,
764        /// Trace the complete event.
765        Complete = 2,
766    }
767    impl TraceLevel {
768        /// String value of the enum field names used in the ProtoBuf definition.
769        ///
770        /// The values are not transformed in any way and thus are considered stable
771        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
772        pub fn as_str_name(&self) -> &'static str {
773            match self {
774                TraceLevel::None => "TRACE_LEVEL_NONE",
775                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
776                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
777            }
778        }
779    }
780}
781// End of protos/perfetto/common/android_log_constants.proto
782
783// Begin of protos/perfetto/config/android/android_log_config.proto
784
785#[derive(Clone, PartialEq, ::prost::Message)]
786pub struct AndroidLogConfig {
787    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
788    pub log_ids: ::prost::alloc::vec::Vec<i32>,
789    /// If set ignores all log messages whose prio is < the given value.
790    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
791    pub min_prio: ::core::option::Option<i32>,
792    /// If non-empty ignores all log messages whose tag doesn't match one of the
793    /// specified values.
794    #[prost(string, repeated, tag="4")]
795    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
796    /// If true, includes the contents of the logcat buffers that were already
797    /// present before the data source started. By default (false), only new
798    /// log entries produced after the data source starts are recorded.
799    /// Can be useful for boot traces or situations where logs from before
800    /// traced started are important.
801    #[prost(bool, optional, tag="5")]
802    pub preserve_log_buffer: ::core::option::Option<bool>,
803}
804// End of protos/perfetto/config/android/android_log_config.proto
805
806// Begin of protos/perfetto/config/android/android_polled_state_config.proto
807
808/// Data source that polls for display state. This should only be used for
809/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
810#[derive(Clone, PartialEq, ::prost::Message)]
811pub struct AndroidPolledStateConfig {
812    /// Frequency of polling. If absent the state will be recorded once, at the
813    /// start of the trace.
814    /// This is required to be > 100ms to avoid excessive CPU usage.
815    #[prost(uint32, optional, tag="1")]
816    pub poll_ms: ::core::option::Option<u32>,
817}
818// End of protos/perfetto/config/android/android_polled_state_config.proto
819
820// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
821
822/// Data source that controls the system properties used to guard initialization
823/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
824/// processes like SurfaceFlinger.
825///
826/// This data source only tells Skia to initialized the Perfetto SDK and start
827/// routing data to the Track Event system instead of ATrace. For those events
828/// to actually show up in a trace, the track_event data source must be used as
829/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
830/// processes may need to be restarted for Skia to revert to using ATrace if
831/// Track Events are no longer desired.
832///
833/// In addition to switching Skia to use Perfetto's track_event data source,
834/// this "guard" also controls Skia's "broad tracing", which removes Skia's
835/// internal tracing constraints and allows the track_event config to specify
836/// which categories should be traced. Filtering to the "skia.always" category
837/// *tag* in a track_event config can be used to re-enable the standard
838/// constraints typically used with ATrace.
839///
840/// Data source name: android.sdk_sysprop_guard
841/// Introduced in Android 14 (U) QPR1.
842/// Next id: 4
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct AndroidSdkSyspropGuardConfig {
845    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
846    /// integration with the track_event data source in RenderEngine.
847    /// If false or omitted, the simpler ATrace fallback is used.
848    ///
849    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
850    /// restarted.
851    ///
852    /// Specifically this sets the following system properties:
853    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
854    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
855    ///
856    /// Does not affect actual track_event data *collection*, which must be
857    /// configured separately.
858    #[prost(bool, optional, tag="1")]
859    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
860    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
861    /// with the track_event data source. hwui_package_name_filter
862    /// can be used to control which apps are affected.
863    /// If false or omitted, the simpler ATrace fallback is used.
864    ///
865    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
866    /// restarted.
867    ///
868    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
869    /// If filtering is NOT set, this controls these GLOBAL system properties:
870    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
871    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
872    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
873    /// for each package listed in the filter:
874    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
875    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
876    ///
877    /// Does not affect actual track_event data *collection*, which must be
878    /// configured separately.
879    #[prost(bool, optional, tag="2")]
880    pub hwui_skia_track_events: ::core::option::Option<bool>,
881    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
882    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
883    #[prost(string, repeated, tag="3")]
884    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
885}
886// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
887
888// Begin of protos/perfetto/config/android/android_system_property_config.proto
889
890/// Data source that polls for system properties.
891#[derive(Clone, PartialEq, ::prost::Message)]
892pub struct AndroidSystemPropertyConfig {
893    /// Frequency of polling. If absent the state will be recorded once, at the
894    /// start of the trace.
895    /// This is required to be > 100ms to avoid excessive CPU usage.
896    #[prost(uint32, optional, tag="1")]
897    pub poll_ms: ::core::option::Option<u32>,
898    /// Properties to poll. All property names must start with "debug.tracing.".
899    #[prost(string, repeated, tag="2")]
900    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
901}
902// End of protos/perfetto/config/android/android_system_property_config.proto
903
904// Begin of protos/perfetto/config/android/app_wakelock_config.proto
905
906/// Configuration for the android.app_wakelocks data source.
907#[derive(Clone, PartialEq, ::prost::Message)]
908pub struct AppWakelocksConfig {
909    /// Specifies the delay (in milliseconds) after which the data source will
910    /// attempt to write events. Writing less frequently reduces the trace size by
911    /// making better use of the packed arrays and reducing the total number of
912    /// TracePackets needed (which each have dozens of bytes of overhead). The
913    /// suggested delay is 5000ms.
914    #[prost(int32, optional, tag="1")]
915    pub write_delay_ms: ::core::option::Option<i32>,
916    /// When set, wakelocks held for less than this amount of time are filtered
917    /// from the resulting trace. Note: duration is computed by matching wakelocks
918    /// with identical attributes, not by tracking the underlying objects. The
919    /// threshold should be < the trace's flush_period_ms.
920    #[prost(int32, optional, tag="2")]
921    pub filter_duration_below_ms: ::core::option::Option<i32>,
922    /// When true, the owner_pid is dropped from the resulting output, reducing the
923    /// size of the interning tables.
924    #[prost(bool, optional, tag="3")]
925    pub drop_owner_pid: ::core::option::Option<bool>,
926}
927// End of protos/perfetto/config/android/app_wakelock_config.proto
928
929// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
930
931/// Data source that records CPU per UID data.
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct CpuPerUidConfig {
934    /// Record at this frequency.
935    #[prost(uint32, optional, tag="1")]
936    pub poll_ms: ::core::option::Option<u32>,
937}
938// End of protos/perfetto/config/android/cpu_per_uid_config.proto
939
940// Begin of protos/perfetto/config/android/inputmethod_config.proto
941
942/// Custom configuration for the "android.inputmethod" data source.
943#[derive(Clone, PartialEq, ::prost::Message)]
944pub struct InputMethodConfig {
945    /// If true, enables tracing in the clients.
946    #[prost(bool, optional, tag="1")]
947    pub client: ::core::option::Option<bool>,
948    /// If true, enables tracing in InputMethodService.
949    #[prost(bool, optional, tag="2")]
950    pub service: ::core::option::Option<bool>,
951    /// If true, enables tracing in InputMethodManagerService.
952    #[prost(bool, optional, tag="3")]
953    pub manager_service: ::core::option::Option<bool>,
954}
955// End of protos/perfetto/config/android/inputmethod_config.proto
956
957// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
958
959/// Data source that records kernel (and native) wakelock data.
960#[derive(Clone, PartialEq, ::prost::Message)]
961pub struct KernelWakelocksConfig {
962    /// Record at this frequency.
963    #[prost(uint32, optional, tag="1")]
964    pub poll_ms: ::core::option::Option<u32>,
965}
966// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
967
968// Begin of protos/perfetto/config/android/network_trace_config.proto
969
970/// Network tracing data source that records details on all packets sent or
971/// received by the network.
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct NetworkPacketTraceConfig {
974    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
975    /// ring buffer. The polling interval should be such that the ring buffer is
976    /// unlikely to fill in that interval (or that filling is an acceptable risk).
977    /// The minimum polling rate is 100ms (values below this are ignored).
978    /// Introduced in Android 14 (U).
979    #[prost(uint32, optional, tag="1")]
980    pub poll_ms: ::core::option::Option<u32>,
981    /// The aggregation_threshold is the number of packets at which an event will
982    /// switch from per-packet details to aggregate details. For example, a value
983    /// of 50 means that if a particular event (grouped by the unique combinations
984    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
985    /// packets, the exact timestamp and length are recorded for each packet. If
986    /// there were 50 or more packets in an event, it would only record the total
987    /// duration, packets, and length. A value of zero or unspecified will always
988    /// / record per-packet details. A value of 1 always records aggregate details.
989    #[prost(uint32, optional, tag="2")]
990    pub aggregation_threshold: ::core::option::Option<u32>,
991    /// Specifies the maximum number of packet contexts to intern at a time. This
992    /// prevents the interning table from growing too large and controls whether
993    /// interning is enabled or disabled (a value of zero disables interning and
994    /// is the default). When a data sources interning table reaches this amount,
995    /// packet contexts will be inlined into NetworkPacketEvents.
996    #[prost(uint32, optional, tag="3")]
997    pub intern_limit: ::core::option::Option<u32>,
998    /// The following fields specify whether certain fields should be dropped from
999    /// the output. Dropping fields improves normalization results, reduces the
1000    /// size of the interning table, and slightly reduces event size.
1001    #[prost(bool, optional, tag="4")]
1002    pub drop_local_port: ::core::option::Option<bool>,
1003    #[prost(bool, optional, tag="5")]
1004    pub drop_remote_port: ::core::option::Option<bool>,
1005    #[prost(bool, optional, tag="6")]
1006    pub drop_tcp_flags: ::core::option::Option<bool>,
1007}
1008// End of protos/perfetto/config/android/network_trace_config.proto
1009
1010// Begin of protos/perfetto/config/android/packages_list_config.proto
1011
1012/// Data source that lists details (such as version code) about packages on an
1013/// Android device.
1014#[derive(Clone, PartialEq, ::prost::Message)]
1015pub struct PackagesListConfig {
1016    /// If not empty, emit info about only the following list of package names
1017    /// (exact match, no regex). Can be combined with
1018    /// |package_name_regex_filter|: a package is included if it matches either
1019    /// filter. If both filters are empty, emit info about all packages.
1020    #[prost(string, repeated, tag="1")]
1021    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1022    /// If not empty, emit info about only the packages whose names match any of
1023    /// the following regexes (full match, not partial). Can be combined with
1024    /// |package_name_filter|: a package is included if it matches either filter.
1025    /// If both filters are empty, emit info about all packages.
1026    /// This field was introduced in Android 26Q2 (Perfetto v55).
1027    #[prost(string, repeated, tag="3")]
1028    pub package_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1029    /// If present and non-zero, the data source will periodically poll for CPU
1030    /// use by packages and only emit results for those that it sees. If absent,
1031    /// the data source will emit results for all packages at startup. The package
1032    /// name filters apply either way.
1033    #[prost(uint32, optional, tag="2")]
1034    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1035}
1036// End of protos/perfetto/config/android/packages_list_config.proto
1037
1038// Begin of protos/perfetto/config/android/pixel_modem_config.proto
1039
1040/// Data source that records events from the modem.
1041#[derive(Clone, PartialEq, ::prost::Message)]
1042pub struct PixelModemConfig {
1043    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1044    pub event_group: ::core::option::Option<i32>,
1045    /// If set, record only events with these hashes.
1046    #[prost(int64, repeated, packed="false", tag="2")]
1047    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1048    /// If set and allow_list is not set, deny events with these hashes.
1049    #[prost(int64, repeated, packed="false", tag="3")]
1050    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1051}
1052/// Nested message and enum types in `PixelModemConfig`.
1053pub mod pixel_modem_config {
1054    /// Event group to record, as defined by the modem.
1055    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1056    #[repr(i32)]
1057    pub enum EventGroup {
1058        Unknown = 0,
1059        /// Events suitable for low bandwidth tracing only.
1060        LowBandwidth = 1,
1061        /// Events suitable for high and low bandwidth tracing.
1062        HighAndLowBandwidth = 2,
1063    }
1064    impl EventGroup {
1065        /// String value of the enum field names used in the ProtoBuf definition.
1066        ///
1067        /// The values are not transformed in any way and thus are considered stable
1068        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1069        pub fn as_str_name(&self) -> &'static str {
1070            match self {
1071                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1072                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1073                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1074            }
1075        }
1076    }
1077}
1078// Begin of protos/perfetto/config/android/protolog_config.proto
1079
1080/// Custom configuration for the "android.protolog" data source.
1081/// ProtoLog is a logging mechanism that is intented to be more efficient than
1082/// logcat. This configures what logs to capture in the tracing instance.
1083#[derive(Clone, PartialEq, ::prost::Message)]
1084pub struct ProtoLogConfig {
1085    /// Specified the configurations for each of the logging groups. If none is
1086    /// specified for a group the defaults will be used.
1087    #[prost(message, repeated, tag="1")]
1088    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1089    /// Specified what tracing mode to use for the tracing instance.
1090    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1091    pub tracing_mode: ::core::option::Option<i32>,
1092    /// If set, any message with log level higher than this level (inclusive) will
1093    /// be traced. Group overrides take precedence over this value.
1094    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1095    pub default_log_from_level: ::core::option::Option<i32>,
1096}
1097/// Nested message and enum types in `ProtoLogConfig`.
1098pub mod proto_log_config {
1099    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1100    #[repr(i32)]
1101    pub enum TracingMode {
1102        /// When using the DEFAULT tracing mode, only log groups and levels specified
1103        /// in the group_overrides are traced.
1104        Default = 0,
1105        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1106        /// traced, unless specified in the group_overrides.
1107        EnableAll = 1,
1108    }
1109    impl TracingMode {
1110        /// String value of the enum field names used in the ProtoBuf definition.
1111        ///
1112        /// The values are not transformed in any way and thus are considered stable
1113        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1114        pub fn as_str_name(&self) -> &'static str {
1115            match self {
1116                TracingMode::Default => "DEFAULT",
1117                TracingMode::EnableAll => "ENABLE_ALL",
1118            }
1119        }
1120    }
1121}
1122#[derive(Clone, PartialEq, ::prost::Message)]
1123pub struct ProtoLogGroup {
1124    /// The ProtoLog group name this configuration entry applies to.
1125    #[prost(string, optional, tag="1")]
1126    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1127    /// Specify the level from which to start capturing protologs.
1128    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1129    /// message will be traced.
1130    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1131    pub log_from: ::core::option::Option<i32>,
1132    /// When set to true we will collect the stacktrace for each protolog message
1133    /// in this group that we are tracing.
1134    #[prost(bool, optional, tag="3")]
1135    pub collect_stacktrace: ::core::option::Option<bool>,
1136}
1137// End of protos/perfetto/config/android/protolog_config.proto
1138
1139// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1140
1141/// Custom configuration for the "android.surfaceflinger.layers" data source.
1142#[derive(Clone, PartialEq, ::prost::Message)]
1143pub struct SurfaceFlingerLayersConfig {
1144    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1145    pub mode: ::core::option::Option<i32>,
1146    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1147    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1148}
1149/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1150pub mod surface_flinger_layers_config {
1151    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1152    #[repr(i32)]
1153    pub enum Mode {
1154        Unspecified = 0,
1155        /// Trace layers snapshots. A snapshot is taken every time a layers change
1156        /// occurs.
1157        Active = 1,
1158        /// Generate layers snapshots from the transactions kept in the
1159        /// SurfaceFlinger's internal ring buffer.
1160        /// The layers snapshots generation occurs when this data source is flushed.
1161        Generated = 2,
1162        /// Trace a single layers snapshot.
1163        Dump = 3,
1164        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1165        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1166        /// when a bugreport is taken.
1167        GeneratedBugreportOnly = 4,
1168        /// Layer snapshots are generated by ProtoVM from layer patches
1169        Protovm = 5,
1170    }
1171    impl Mode {
1172        /// String value of the enum field names used in the ProtoBuf definition.
1173        ///
1174        /// The values are not transformed in any way and thus are considered stable
1175        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1176        pub fn as_str_name(&self) -> &'static str {
1177            match self {
1178                Mode::Unspecified => "MODE_UNSPECIFIED",
1179                Mode::Active => "MODE_ACTIVE",
1180                Mode::Generated => "MODE_GENERATED",
1181                Mode::Dump => "MODE_DUMP",
1182                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1183                Mode::Protovm => "MODE_PROTOVM",
1184            }
1185        }
1186    }
1187    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1188    #[repr(i32)]
1189    pub enum TraceFlag {
1190        Unspecified = 0,
1191        Input = 2,
1192        Composition = 4,
1193        Extra = 8,
1194        Hwc = 16,
1195        Buffers = 32,
1196        VirtualDisplays = 64,
1197        /// INPUT | COMPOSITION | EXTRA
1198        All = 14,
1199    }
1200    impl TraceFlag {
1201        /// String value of the enum field names used in the ProtoBuf definition.
1202        ///
1203        /// The values are not transformed in any way and thus are considered stable
1204        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1205        pub fn as_str_name(&self) -> &'static str {
1206            match self {
1207                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1208                TraceFlag::Input => "TRACE_FLAG_INPUT",
1209                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1210                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1211                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1212                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1213                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1214                TraceFlag::All => "TRACE_FLAG_ALL",
1215            }
1216        }
1217    }
1218}
1219// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1220
1221// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1222
1223/// Custom configuration for the "android.surfaceflinger.transactions" data
1224/// source.
1225#[derive(Clone, PartialEq, ::prost::Message)]
1226pub struct SurfaceFlingerTransactionsConfig {
1227    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1228    pub mode: ::core::option::Option<i32>,
1229}
1230/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1231pub mod surface_flinger_transactions_config {
1232    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1233    #[repr(i32)]
1234    pub enum Mode {
1235        Unspecified = 0,
1236        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1237        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1238        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1239        /// initial state and the latest transactions.
1240        Continuous = 1,
1241        /// SurfaceFlinger writes the initial state and then each incoming
1242        /// transaction until the data source is stopped.
1243        Active = 2,
1244    }
1245    impl Mode {
1246        /// String value of the enum field names used in the ProtoBuf definition.
1247        ///
1248        /// The values are not transformed in any way and thus are considered stable
1249        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1250        pub fn as_str_name(&self) -> &'static str {
1251            match self {
1252                Mode::Unspecified => "MODE_UNSPECIFIED",
1253                Mode::Continuous => "MODE_CONTINUOUS",
1254                Mode::Active => "MODE_ACTIVE",
1255            }
1256        }
1257    }
1258}
1259// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1260
1261// Begin of protos/perfetto/config/android/user_list_config.proto
1262
1263/// Data source that lists details (such as version code) about users on an
1264/// Android device.
1265#[derive(Clone, PartialEq, ::prost::Message)]
1266pub struct AndroidUserListConfig {
1267    /// An allowlist of user type strings, used to control the granularity of
1268    /// user type information emitted in the trace. Exact, case-sensitive string
1269    /// matching is used.
1270    ///
1271    /// Any user type read from the device that is NOT present in the
1272    /// effective allowlist will have its type reported as
1273    /// "android.os.usertype.FILTERED".
1274    ///
1275    /// The effective allowlist is determined as follows:
1276    ///
1277    /// 1. If this 'user_type_filter' field is provided and non-empty:
1278    ///     This list itself is the effective allowlist.
1279    ///     Example TraceConfig:
1280    ///     --------------------
1281    ///     data_sources {
1282    ///         config {
1283    ///             name: "android.user_list"
1284    ///             target_buffer: 0
1285    ///             user_list_config {
1286    ///               # Only report these specific types, others become FILTERED.
1287    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1288    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1289    ///             }
1290    ///         }
1291    ///     }
1292    ///
1293    ///
1294    /// Note: This field does not support regular expressions.
1295    #[prost(string, repeated, tag="1")]
1296    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1297}
1298// End of protos/perfetto/config/android/user_list_config.proto
1299
1300// Begin of protos/perfetto/config/android/windowmanager_config.proto
1301
1302/// Custom configuration for the "android.windowmanager" data source.
1303#[derive(Clone, PartialEq, ::prost::Message)]
1304pub struct WindowManagerConfig {
1305    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1306    pub log_frequency: ::core::option::Option<i32>,
1307    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1308    pub log_level: ::core::option::Option<i32>,
1309}
1310/// Nested message and enum types in `WindowManagerConfig`.
1311pub mod window_manager_config {
1312    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1313    #[repr(i32)]
1314    pub enum LogFrequency {
1315        Unspecified = 0,
1316        /// Trace state snapshots when a frame is committed.
1317        Frame = 1,
1318        /// Trace state snapshots every time a transaction is committed.
1319        Transaction = 2,
1320        /// Trace single state snapshots when the data source is started.
1321        SingleDump = 3,
1322    }
1323    impl LogFrequency {
1324        /// String value of the enum field names used in the ProtoBuf definition.
1325        ///
1326        /// The values are not transformed in any way and thus are considered stable
1327        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1328        pub fn as_str_name(&self) -> &'static str {
1329            match self {
1330                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1331                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1332                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1333                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1334            }
1335        }
1336    }
1337    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1338    #[repr(i32)]
1339    pub enum LogLevel {
1340        Unspecified = 0,
1341        /// Logs all elements with maximum amount of information.
1342        Verbose = 1,
1343        /// Logs all elements but doesn't write all configuration data.
1344        Debug = 2,
1345        /// Logs only visible elements, with the minimum amount of performance
1346        /// overhead
1347        Critical = 3,
1348    }
1349    impl LogLevel {
1350        /// String value of the enum field names used in the ProtoBuf definition.
1351        ///
1352        /// The values are not transformed in any way and thus are considered stable
1353        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1354        pub fn as_str_name(&self) -> &'static str {
1355            match self {
1356                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1357                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1358                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1359                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1360            }
1361        }
1362    }
1363}
1364// End of protos/perfetto/config/android/windowmanager_config.proto
1365
1366// Begin of protos/perfetto/config/chrome/chrome_config.proto
1367
1368#[derive(Clone, PartialEq, ::prost::Message)]
1369pub struct ChromeConfig {
1370    #[prost(string, optional, tag="1")]
1371    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1372    /// When enabled, the data source should only fill in fields in the output that
1373    /// are not potentially privacy sensitive.
1374    #[prost(bool, optional, tag="2")]
1375    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1376    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1377    /// JSON format. Note that the trace data will still be returned as a series of
1378    /// TracePackets, but the embedded data will be JSON instead of serialized
1379    /// protobuf.
1380    #[prost(bool, optional, tag="3")]
1381    pub convert_to_legacy_json: ::core::option::Option<bool>,
1382    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1383    pub client_priority: ::core::option::Option<i32>,
1384    /// Applicable only when using legacy JSON format.
1385    /// If |json_agent_label_filter| is not empty, only data pertaining to
1386    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1387    #[prost(string, optional, tag="5")]
1388    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1389    ///   When enabled, event names should not contain package names.
1390    #[prost(bool, optional, tag="6")]
1391    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1392}
1393/// Nested message and enum types in `ChromeConfig`.
1394pub mod chrome_config {
1395    /// Priority of the tracing session client. A higher priority session may
1396    /// preempt a lower priority one in configurations where concurrent sessions
1397    /// aren't supported.
1398    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1399    #[repr(i32)]
1400    pub enum ClientPriority {
1401        Unknown = 0,
1402        Background = 1,
1403        UserInitiated = 2,
1404    }
1405    impl ClientPriority {
1406        /// String value of the enum field names used in the ProtoBuf definition.
1407        ///
1408        /// The values are not transformed in any way and thus are considered stable
1409        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1410        pub fn as_str_name(&self) -> &'static str {
1411            match self {
1412                ClientPriority::Unknown => "UNKNOWN",
1413                ClientPriority::Background => "BACKGROUND",
1414                ClientPriority::UserInitiated => "USER_INITIATED",
1415            }
1416        }
1417    }
1418}
1419// End of protos/perfetto/config/chrome/chrome_config.proto
1420
1421// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1422
1423#[derive(Clone, PartialEq, ::prost::Message)]
1424pub struct ChromiumHistogramSamplesConfig {
1425    /// List of histograms to record. If no histogram is specified, all histograms
1426    /// are recorded.
1427    #[prost(message, repeated, tag="1")]
1428    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1429    /// Default: false (i.e. histogram names are NOT filtered out by default)
1430    /// When true, histogram_name will be filtered out.
1431    #[prost(bool, optional, tag="2")]
1432    pub filter_histogram_names: ::core::option::Option<bool>,
1433}
1434/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1435pub mod chromium_histogram_samples_config {
1436    /// Records when a value within the specified bounds [min_value, max_value] is
1437    /// emitted into a Chrome histogram.
1438    #[derive(Clone, PartialEq, ::prost::Message)]
1439    pub struct HistogramSample {
1440        #[prost(string, optional, tag="1")]
1441        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1442        #[prost(int64, optional, tag="2")]
1443        pub min_value: ::core::option::Option<i64>,
1444        #[prost(int64, optional, tag="3")]
1445        pub max_value: ::core::option::Option<i64>,
1446    }
1447}
1448// End of protos/perfetto/config/chrome/histogram_samples.proto
1449
1450// Begin of protos/perfetto/config/chrome/system_metrics.proto
1451
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct ChromiumSystemMetricsConfig {
1454    /// Samples counters every X ms.
1455    #[prost(uint32, optional, tag="1")]
1456    pub sampling_interval_ms: ::core::option::Option<u32>,
1457}
1458// End of protos/perfetto/config/chrome/system_metrics.proto
1459
1460// Begin of protos/perfetto/config/chrome/v8_config.proto
1461
1462#[derive(Clone, PartialEq, ::prost::Message)]
1463pub struct V8Config {
1464    /// Whether to log the actual content of scripts (e.g. content of the JS file
1465    /// that was compiled to generate code).
1466    /// ATTENTION: This could considerably increase the size of the resuling trace
1467    ///             file.
1468    #[prost(bool, optional, tag="1")]
1469    pub log_script_sources: ::core::option::Option<bool>,
1470    /// Whether to log the generated code for jitted functions (machine code or
1471    /// bytecode).
1472    /// ATTENTION: This could considerably increase the size of the resuling trace
1473    ///             file.
1474    #[prost(bool, optional, tag="2")]
1475    pub log_instructions: ::core::option::Option<bool>,
1476}
1477// End of protos/perfetto/config/chrome/v8_config.proto
1478
1479// Begin of protos/perfetto/config/etw/etw_config.proto
1480
1481/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1482/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1483/// ns-evntrace-event_trace_properties
1484#[derive(Clone, PartialEq, ::prost::Message)]
1485pub struct EtwConfig {
1486    /// The kernel_flags determines the flags that will be used by the etw tracing
1487    /// session. These kernel flags have been built to expose the useful events
1488    /// captured from the kernel mode only.
1489    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1490    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1491    // See the list of keywords for for individual providers.
1492    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1493
1494    /// Provides events relating to the scheduler.
1495    #[prost(string, repeated, tag="2")]
1496    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1497    /// Provides events relating to the memory manager.
1498    #[prost(string, repeated, tag="3")]
1499    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1500    /// Provides events relating to file I/O.
1501    #[prost(string, repeated, tag="4")]
1502    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1503}
1504/// Nested message and enum types in `EtwConfig`.
1505pub mod etw_config {
1506    /// The KernelFlag represent list of kernel flags that we are intrested in.
1507    /// To get a more extensive list run 'xperf -providers k'.
1508    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1509    #[repr(i32)]
1510    pub enum KernelFlag {
1511        Cswitch = 0,
1512        Dispatcher = 1,
1513    }
1514    impl KernelFlag {
1515        /// String value of the enum field names used in the ProtoBuf definition.
1516        ///
1517        /// The values are not transformed in any way and thus are considered stable
1518        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1519        pub fn as_str_name(&self) -> &'static str {
1520            match self {
1521                KernelFlag::Cswitch => "CSWITCH",
1522                KernelFlag::Dispatcher => "DISPATCHER",
1523            }
1524        }
1525    }
1526}
1527// End of protos/perfetto/config/etw/etw_config.proto
1528
1529// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1530
1531#[derive(Clone, PartialEq, ::prost::Message)]
1532pub struct FrozenFtraceConfig {
1533    /// The instance name which stores the previous boot ftrace data. Required.
1534    #[prost(string, optional, tag="1")]
1535    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1536}
1537// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1538
1539// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1540
1541/// Next id: 38
1542#[derive(Clone, PartialEq, ::prost::Message)]
1543pub struct FtraceConfig {
1544    /// Ftrace events to record, example: "sched/sched_switch".
1545    #[prost(string, repeated, tag="1")]
1546    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1547    /// Android-specific event categories:
1548    #[prost(string, repeated, tag="2")]
1549    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1550    #[prost(string, repeated, tag="3")]
1551    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1552    /// Some processes can emit data through atrace or through the perfetto SDK via
1553    /// the "track_event" data source. For these categories, the SDK will be
1554    /// preferred, if possible, for this config.
1555    #[prost(string, repeated, tag="28")]
1556    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1557    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1558    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1559    /// events for convenience (and the vendor-specific events on top).
1560    /// Introduced in: perfetto v52.
1561    #[prost(bool, optional, tag="34")]
1562    pub atrace_userspace_only: ::core::option::Option<bool>,
1563    /// Size of each per-cpu kernel ftrace ring buffer.
1564    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1565    /// buffers cannot be resized without pausing recording in the kernel.
1566    #[prost(uint32, optional, tag="10")]
1567    pub buffer_size_kb: ::core::option::Option<u32>,
1568    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1569    /// implementation to choose a bigger buffer size.
1570    ///
1571    /// Most configs for perfetto v43+ should simply leave both fields unset.
1572    ///
1573    /// If you need a config compatible with a range of perfetto builds and you
1574    /// used to set a non-default buffer_size_kb, consider setting both fields.
1575    /// Example:
1576    ///    buffer_size_kb: 4096
1577    ///    buffer_size_lower_bound: true
1578    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1579    /// On v43+, buffers will be at least 4 MB.
1580    /// In both cases, neither is guaranteed if there are other concurrent
1581    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1582    /// the recording in the kernel.
1583    /// Introduced in: perfetto v43.
1584    #[prost(bool, optional, tag="27")]
1585    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1586    /// If set, specifies how often the tracing daemon reads from the kernel ring
1587    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1588    /// Leave unset unless you're fine-tuning a local config.
1589    #[prost(uint32, optional, tag="11")]
1590    pub drain_period_ms: ::core::option::Option<u32>,
1591    /// If set, the tracing daemon will read kernel ring buffers as soon as
1592    /// they're filled past this percentage of occupancy. In other words, a value
1593    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1594    /// half-full. Not guaranteed if there are multiple concurrent tracing
1595    /// sessions.
1596    /// Currently does nothing on Linux kernels below v6.9.
1597    /// Introduced in: perfetto v48.
1598    #[prost(uint32, optional, tag="29")]
1599    pub drain_buffer_percent: ::core::option::Option<u32>,
1600    #[prost(message, optional, tag="12")]
1601    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1602    #[prost(message, optional, tag="22")]
1603    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1604    /// Enables symbol name resolution against /proc/kallsyms.
1605    /// It requires that either traced_probes is running as root or that
1606    /// kptr_restrict has been manually lowered.
1607    /// It does not disclose KASLR, symbol addresses are mangled.
1608    #[prost(bool, optional, tag="13")]
1609    pub symbolize_ksyms: ::core::option::Option<bool>,
1610    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1611    pub ksyms_mem_policy: ::core::option::Option<i32>,
1612    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1613    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1614    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1615    /// The historical context for this is the following:
1616    /// - Up to Android S (12), the rss_stat was internally throttled in its
1617    ///    kernel implementation.
1618    /// - A change introduced in the kernels after S has introduced a new
1619    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1620    ///    (hence very spammy).
1621    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1622    ///    need to deal with both cases.
1623    /// For more context: go/rss-stat-throttled.
1624    #[prost(bool, optional, tag="15")]
1625    pub throttle_rss_stat: ::core::option::Option<bool>,
1626    /// If true, use self-describing proto messages when writing events not known
1627    /// at compile time (aka generic events). Each event bundle will have a set of
1628    /// serialised proto descriptors for events within that bundle.
1629    ///
1630    /// Default if unset:
1631    /// * v53+: true
1632    /// * before v53: false
1633    ///
1634    /// Added in: perfetto v50.
1635    #[prost(bool, optional, tag="32")]
1636    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1637    /// If true, avoid enabling events that aren't statically known by
1638    /// traced_probes. Otherwise, the default is to emit such events as
1639    /// GenericFtraceEvent protos.
1640    /// Prefer to keep this flag at its default. This was added for Android
1641    /// tracing, where atrace categories and/or atrace HAL requested events can
1642    /// expand to events that aren't of interest to the tracing user.
1643    /// Introduced in: Android T.
1644    #[prost(bool, optional, tag="16")]
1645    pub disable_generic_events: ::core::option::Option<bool>,
1646    /// The subset of syscalls to record. To record all syscalls, leave this unset
1647    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1648    /// * before perfetto v43, requires the config to also enable
1649    ///    raw_syscalls/sys_{enter,exit}.
1650    /// * perfetto v43+ does the right thing if you set only this field.
1651    /// Example: ["sys_read", "sys_open"].
1652    /// Introduced in: Android U.
1653    #[prost(string, repeated, tag="18")]
1654    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1655    /// If true, enable the "function_graph" kernel tracer that emits events
1656    /// whenever a kernel function is entered and exited
1657    /// (funcgraph_entry/funcgraph_exit).
1658    /// Notes on use:
1659    /// * Requires |symbolize_ksyms| for function name resolution.
1660    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1661    ///    set of functions, otherwise the event bandwidth will be too high for
1662    ///    practical use.
1663    /// * The data source might be rejected if there is already a concurrent
1664    ///    ftrace data source that does not use function graph itself, as we do not
1665    ///    support switching kernel tracers mid-trace.
1666    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1667    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1668    ///    "function_graph".
1669    /// Android:
1670    /// * Available only on debuggable builds.
1671    /// * Introduced in: Android U.
1672    #[prost(bool, optional, tag="19")]
1673    pub enable_function_graph: ::core::option::Option<bool>,
1674    /// Constrains the set of functions traced when |enable_function_graph| is
1675    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1676    /// in which case all matching functions will be traced. See kernel
1677    /// documentation on ftrace "set_ftrace_filter" file for more details.
1678    /// Android:
1679    /// * Available only on debuggable builds.
1680    /// * Introduced in: Android U.
1681    #[prost(string, repeated, tag="20")]
1682    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1683    /// If |enable_function_graph| is true, trace this set of functions *and* all
1684    /// of its callees. Supports globs. Can be set together with
1685    /// |function_filters|, in which case only callees matching the filter will be
1686    /// traced. If setting both, you most likely want all roots to also be
1687    /// included in |function_filters|.
1688    /// Android:
1689    /// * Available only on debuggable builds.
1690    /// * Introduced in: Android U.
1691    #[prost(string, repeated, tag="21")]
1692    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1693    /// If |enable_function_graph| is true, only trace the specified
1694    /// number of calls down the stack. Sets the max_graph_depth value
1695    /// in sys/kernel/tracing/
1696    ///
1697    /// Only respected for the first tracing session that enables
1698    /// function_graph tracing.
1699    ///
1700    /// Introduced in: perfetto v51.
1701    /// Supported on: Android 25Q3+.
1702    #[prost(uint32, optional, tag="33")]
1703    pub function_graph_max_depth: ::core::option::Option<u32>,
1704    /// Ftrace events to record, specific for kprobes and kretprobes
1705    #[prost(message, repeated, tag="30")]
1706    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1707    /// If true, does not clear kernel ftrace buffers when starting the trace.
1708    /// This makes sense only if this is the first ftrace data source instance
1709    /// created after the daemon has been started. Can be useful for gathering boot
1710    /// traces, if ftrace has been separately configured (e.g. via kernel
1711    /// commandline).
1712    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1713    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1714    /// anything besides ftrace. Otherwise timestamps might be skewed.
1715    #[prost(bool, optional, tag="23")]
1716    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1717    /// If true, overrides the default timestamp clock and uses a raw hardware
1718    /// based monotonic clock for getting timestamps.
1719    /// * Introduced in: Android U.
1720    #[prost(bool, optional, tag="24")]
1721    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1722    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1723    /// for event recording. Normally, this means
1724    /// `/sys/kernel/tracing/instances/$instance_name`.
1725    ///
1726    /// Names "hyp" and "hypervisor" are reserved.
1727    ///
1728    /// The instance must already exist, the tracing daemon *will not* create it
1729    /// for you as it typically doesn't have such permissions.
1730    /// Only a subset of features is guaranteed to work with non-default instances,
1731    /// at the time of writing:
1732    ///   * ftrace_events
1733    ///   * buffer_size_kb
1734    #[prost(string, optional, tag="25")]
1735    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1736    /// For perfetto developer use. If true and on a debuggable android build,
1737    /// serialise raw tracing pages that the implementation cannot parse.
1738    #[prost(bool, optional, tag="31")]
1739    pub debug_ftrace_abi: ::core::option::Option<bool>,
1740    // =================================================
1741    // Exclusive single-tenant features: HERE BE DRAGONS
1742    // =================================================
1743    // The features below are considered "advanced" and require an exclusive
1744    // tracing session (as of Android 25Q3+ and Perfetto v52).
1745    //
1746    // These features directly manipulate the kernel's global ftrace state and
1747    // are incompatible with concurrent ftrace sessions. They are only enabled
1748    // if included in the *first* ftrace data source configured. Subsequent
1749    // ftrace data sources (even those not using advanced features) will be
1750    // rejected while a session with these features is active.
1751    //
1752    // To run the session in exclusive mode, see:
1753    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1754
1755    /// Filter ftrace events by Thread ID (TID).
1756    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1757    ///
1758    /// Note: this is an exclusive feature, see:
1759    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1760    ///
1761    /// Introduced in: perfetto v52.
1762    /// Supported on: Android 25Q3+.
1763    #[prost(uint32, repeated, packed="false", tag="35")]
1764    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1765    #[prost(message, repeated, tag="36")]
1766    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1767    /// This mask restricts tracing to a specific set of CPUs using a
1768    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1769    /// 32-bit chunk of the CPU mask.
1770    ///
1771    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1772    ///    - Rightmost chunk: CPUs 0-31
1773    ///    - 2nd chunk from right: CPUs 32-63
1774    ///    - ...and so on.
1775    ///
1776    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1777    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1778    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1779    /// chunk0 to 0-31.
1780    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1781    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1782    ///
1783    /// Note: This is an exclusive feature, see:
1784    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1785    ///
1786    /// Introduced in: perfetto v52.
1787    /// Supported on: Android 25Q3+.
1788    #[prost(string, optional, tag="37")]
1789    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1790    /// No-op in perfetto v28+. Name preserved because of existing references in
1791    /// textproto configs.
1792    #[deprecated]
1793    #[prost(bool, optional, tag="14")]
1794    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1795}
1796/// Nested message and enum types in `FtraceConfig`.
1797pub mod ftrace_config {
1798    /// Configuration for compact encoding of scheduler events. When enabled (and
1799    /// recording the relevant ftrace events), specific high-volume events are
1800    /// encoded in a denser format than normal.
1801    #[derive(Clone, PartialEq, ::prost::Message)]
1802    pub struct CompactSchedConfig {
1803        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1804        /// record those events in the compact format.
1805        ///
1806        /// If the field is unset, the default is:
1807        /// * perfetto v42.0+: enabled
1808        /// * before: disabled
1809        #[prost(bool, optional, tag="1")]
1810        pub enabled: ::core::option::Option<bool>,
1811    }
1812    /// Optional filter for "ftrace/print" events.
1813    ///
1814    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1815    /// are processed in order), its `allow` field will be used as the outcome: if
1816    /// `allow` is true, the event will be included in the trace, otherwise it will
1817    /// be discarded. If an event does not match any rule, it will be allowed by
1818    /// default (a rule with an empty prefix and allow=false, disallows everything
1819    /// by default).
1820    #[derive(Clone, PartialEq, ::prost::Message)]
1821    pub struct PrintFilter {
1822        #[prost(message, repeated, tag="1")]
1823        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1824    }
1825    /// Nested message and enum types in `PrintFilter`.
1826    pub mod print_filter {
1827        #[derive(Clone, PartialEq, ::prost::Message)]
1828        pub struct Rule {
1829            #[prost(bool, optional, tag="2")]
1830            pub allow: ::core::option::Option<bool>,
1831            #[prost(oneof="rule::Match", tags="1, 3")]
1832            pub r#match: ::core::option::Option<rule::Match>,
1833        }
1834        /// Nested message and enum types in `Rule`.
1835        pub mod rule {
1836            /// Matches an atrace message of the form:
1837            /// <type>|pid|<prefix>...
1838            #[derive(Clone, PartialEq, ::prost::Message)]
1839            pub struct AtraceMessage {
1840                #[prost(string, optional, tag="1")]
1841                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1842                #[prost(string, optional, tag="2")]
1843                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1844            }
1845            #[derive(Clone, PartialEq, ::prost::Oneof)]
1846            pub enum Match {
1847                /// This rule matches if `prefix` matches exactly with the beginning of
1848                /// the "ftrace/print" "buf" field.
1849                #[prost(string, tag="1")]
1850                Prefix(::prost::alloc::string::String),
1851                /// This rule matches if the "buf" field contains an atrace-style print
1852                /// message as specified in `atrace_msg`.
1853                #[prost(message, tag="3")]
1854                AtraceMsg(AtraceMessage),
1855            }
1856        }
1857    }
1858    #[derive(Clone, PartialEq, ::prost::Message)]
1859    pub struct KprobeEvent {
1860        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1861        #[prost(string, optional, tag="1")]
1862        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1863        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1864        pub r#type: ::core::option::Option<i32>,
1865    }
1866    /// Nested message and enum types in `KprobeEvent`.
1867    pub mod kprobe_event {
1868        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1869        #[repr(i32)]
1870        pub enum KprobeType {
1871            Unknown = 0,
1872            Kprobe = 1,
1873            Kretprobe = 2,
1874            Both = 3,
1875        }
1876        impl KprobeType {
1877            /// String value of the enum field names used in the ProtoBuf definition.
1878            ///
1879            /// The values are not transformed in any way and thus are considered stable
1880            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1881            pub fn as_str_name(&self) -> &'static str {
1882                match self {
1883                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1884                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1885                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1886                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1887                }
1888            }
1889        }
1890    }
1891    /// Tracefs options to set directly in the tracefs instance. This is a very
1892    /// niche feature since almost all of the options deal with formatting textual
1893    /// output (the /trace file), which perfetto doesn't use.
1894    ///
1895    /// The options with a known use-case:
1896    /// * event-fork: when using `tids_to_trace` above, the kernel will
1897    ///    automatically add newly spawned descendant threads to the set of TIDs.
1898    ///
1899    /// Full list of options is available at
1900    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1901    ///
1902    /// Note: this is an exclusive feature, see:
1903    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1904    ///
1905    /// Introduced in: perfetto v52.
1906    /// Supported on: Android 25Q3+.
1907    #[derive(Clone, PartialEq, ::prost::Message)]
1908    pub struct TracefsOption {
1909        /// The name of the tracefs option as found in tracefs/trace_options (without
1910        /// the "no" prefix).
1911        #[prost(string, optional, tag="1")]
1912        pub name: ::core::option::Option<::prost::alloc::string::String>,
1913        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1914        pub state: ::core::option::Option<i32>,
1915    }
1916    /// Nested message and enum types in `TracefsOption`.
1917    pub mod tracefs_option {
1918        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1919        #[repr(i32)]
1920        pub enum State {
1921            Unknown = 0,
1922            Enabled = 1,
1923            Disabled = 2,
1924        }
1925        impl State {
1926            /// String value of the enum field names used in the ProtoBuf definition.
1927            ///
1928            /// The values are not transformed in any way and thus are considered stable
1929            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1930            pub fn as_str_name(&self) -> &'static str {
1931                match self {
1932                    State::Unknown => "STATE_UNKNOWN",
1933                    State::Enabled => "STATE_ENABLED",
1934                    State::Disabled => "STATE_DISABLED",
1935                }
1936            }
1937        }
1938    }
1939    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1940    /// should keep the symbol map in memory (and reuse it for future tracing
1941    /// sessions) or clear it (saving memory) and re-create it on each tracing
1942    /// session (wasting cpu and wall time).
1943    /// The tradeoff is roughly:
1944    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1945    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1946    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1947    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1948    #[repr(i32)]
1949    pub enum KsymsMemPolicy {
1950        KsymsUnspecified = 0,
1951        KsymsCleanupOnStop = 1,
1952        KsymsRetain = 2,
1953    }
1954    impl KsymsMemPolicy {
1955        /// String value of the enum field names used in the ProtoBuf definition.
1956        ///
1957        /// The values are not transformed in any way and thus are considered stable
1958        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1959        pub fn as_str_name(&self) -> &'static str {
1960            match self {
1961                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1962                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1963                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1964            }
1965        }
1966    }
1967}
1968// End of protos/perfetto/config/ftrace/ftrace_config.proto
1969
1970// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1971
1972#[derive(Clone, PartialEq, ::prost::Message)]
1973pub struct GpuCounterConfig {
1974    /// Desired sampling interval for counters.
1975    #[prost(uint64, optional, tag="1")]
1976    pub counter_period_ns: ::core::option::Option<u64>,
1977    /// List of counters to be sampled. Counter IDs correspond to the ones
1978    /// described in GpuCounterSpec in the data source descriptor.
1979    #[prost(uint32, repeated, packed="false", tag="2")]
1980    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1981    /// Sample counters by instrumenting command buffers.
1982    #[prost(bool, optional, tag="3")]
1983    pub instrumented_sampling: ::core::option::Option<bool>,
1984    /// Fix gpu clock rate during trace session.
1985    #[prost(bool, optional, tag="4")]
1986    pub fix_gpu_clock: ::core::option::Option<bool>,
1987}
1988// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1989
1990// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1991
1992#[derive(Clone, PartialEq, ::prost::Message)]
1993pub struct GpuRenderStagesConfig {
1994    /// Enable to separate the color and depth/stencil load and store stages
1995    /// into a separate stages. If disabled, the depth/stencil load and store
1996    /// stages will be combined.  Disabled by default. This option has no effect if
1997    /// Low Overhead mode is enabled.
1998    #[prost(bool, optional, tag="1")]
1999    pub full_loadstore: ::core::option::Option<bool>,
2000    /// Use the low overhead mode for traces. In this mode render stages are
2001    /// combined into a single workload stage. This provides less granular data but
2002    /// induces minimal GPU overhead. Disabled by default.
2003    #[prost(bool, optional, tag="2")]
2004    pub low_overhead: ::core::option::Option<bool>,
2005    /// Trace metrics to capture for each render stage
2006    #[prost(string, repeated, tag="3")]
2007    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2008}
2009// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
2010
2011// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
2012
2013#[derive(Clone, PartialEq, ::prost::Message)]
2014pub struct VulkanMemoryConfig {
2015    /// Tracking driver memory usage events
2016    #[prost(bool, optional, tag="1")]
2017    pub track_driver_memory_usage: ::core::option::Option<bool>,
2018    /// Tracking device memory usage events
2019    #[prost(bool, optional, tag="2")]
2020    pub track_device_memory_usage: ::core::option::Option<bool>,
2021}
2022// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
2023
2024// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
2025
2026/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2027/// systems.
2028#[derive(Clone, PartialEq, ::prost::Message)]
2029pub struct InodeFileConfig {
2030    /// How long to pause between batches.
2031    #[prost(uint32, optional, tag="1")]
2032    pub scan_interval_ms: ::core::option::Option<u32>,
2033    /// How long to wait before the first scan in order to accumulate inodes.
2034    #[prost(uint32, optional, tag="2")]
2035    pub scan_delay_ms: ::core::option::Option<u32>,
2036    /// How many inodes to scan in one batch.
2037    #[prost(uint32, optional, tag="3")]
2038    pub scan_batch_size: ::core::option::Option<u32>,
2039    /// Do not scan for inodes not found in the static map.
2040    #[prost(bool, optional, tag="4")]
2041    pub do_not_scan: ::core::option::Option<bool>,
2042    /// If non-empty, only scan inodes corresponding to block devices named in
2043    /// this list.
2044    #[prost(string, repeated, tag="5")]
2045    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2046    /// When encountering an inode belonging to a block device corresponding
2047    /// to one of the mount points in this map, scan its scan_roots instead.
2048    #[prost(message, repeated, tag="6")]
2049    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2050}
2051/// Nested message and enum types in `InodeFileConfig`.
2052pub mod inode_file_config {
2053    #[derive(Clone, PartialEq, ::prost::Message)]
2054    pub struct MountPointMappingEntry {
2055        #[prost(string, optional, tag="1")]
2056        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2057        #[prost(string, repeated, tag="2")]
2058        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2059    }
2060}
2061// End of protos/perfetto/config/inode_file/inode_file_config.proto
2062
2063// Begin of protos/perfetto/config/interceptors/console_config.proto
2064
2065#[derive(Clone, PartialEq, ::prost::Message)]
2066pub struct ConsoleConfig {
2067    #[prost(enumeration="console_config::Output", optional, tag="1")]
2068    pub output: ::core::option::Option<i32>,
2069    #[prost(bool, optional, tag="2")]
2070    pub enable_colors: ::core::option::Option<bool>,
2071}
2072/// Nested message and enum types in `ConsoleConfig`.
2073pub mod console_config {
2074    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2075    #[repr(i32)]
2076    pub enum Output {
2077        Unspecified = 0,
2078        Stdout = 1,
2079        Stderr = 2,
2080    }
2081    impl Output {
2082        /// String value of the enum field names used in the ProtoBuf definition.
2083        ///
2084        /// The values are not transformed in any way and thus are considered stable
2085        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2086        pub fn as_str_name(&self) -> &'static str {
2087            match self {
2088                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2089                Output::Stdout => "OUTPUT_STDOUT",
2090                Output::Stderr => "OUTPUT_STDERR",
2091            }
2092        }
2093    }
2094}
2095// End of protos/perfetto/config/interceptors/console_config.proto
2096
2097// Begin of protos/perfetto/config/interceptor_config.proto
2098
2099/// Configuration for trace packet interception. Used for diverting trace data to
2100/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2101/// Perfetto SDK.
2102#[derive(Clone, PartialEq, ::prost::Message)]
2103pub struct InterceptorConfig {
2104    /// Matches the name given to RegisterInterceptor().
2105    #[prost(string, optional, tag="1")]
2106    pub name: ::core::option::Option<::prost::alloc::string::String>,
2107    #[prost(message, optional, tag="100")]
2108    pub console_config: ::core::option::Option<ConsoleConfig>,
2109}
2110// End of protos/perfetto/config/interceptor_config.proto
2111
2112// Begin of protos/perfetto/config/power/android_power_config.proto
2113
2114#[derive(Clone, PartialEq, ::prost::Message)]
2115pub struct AndroidPowerConfig {
2116    #[prost(uint32, optional, tag="1")]
2117    pub battery_poll_ms: ::core::option::Option<u32>,
2118    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2119    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2120    /// Where available enables per-power-rail measurements.
2121    #[prost(bool, optional, tag="3")]
2122    pub collect_power_rails: ::core::option::Option<bool>,
2123    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2124    /// Available from Android S.
2125    #[prost(bool, optional, tag="4")]
2126    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2127    /// Provides a breakdown of time in state for various subsystems.
2128    /// Available from Android U.
2129    #[prost(bool, optional, tag="5")]
2130    pub collect_entity_state_residency: ::core::option::Option<bool>,
2131}
2132/// Nested message and enum types in `AndroidPowerConfig`.
2133pub mod android_power_config {
2134    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2135    #[repr(i32)]
2136    pub enum BatteryCounters {
2137        BatteryCounterUnspecified = 0,
2138        /// Coulomb counter.
2139        BatteryCounterCharge = 1,
2140        /// Charge (%).
2141        BatteryCounterCapacityPercent = 2,
2142        /// Instantaneous current.
2143        BatteryCounterCurrent = 3,
2144        /// Avg current.
2145        BatteryCounterCurrentAvg = 4,
2146        /// Instantaneous voltage.
2147        BatteryCounterVoltage = 5,
2148    }
2149    impl BatteryCounters {
2150        /// String value of the enum field names used in the ProtoBuf definition.
2151        ///
2152        /// The values are not transformed in any way and thus are considered stable
2153        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2154        pub fn as_str_name(&self) -> &'static str {
2155            match self {
2156                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2157                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2158                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2159                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2160                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2161                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2162            }
2163        }
2164    }
2165}
2166// End of protos/perfetto/config/power/android_power_config.proto
2167
2168// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
2169
2170/// Configuration that allows to boost the priority of the 'traced' or
2171/// 'traced_probs' processes, by changing the scheduler configuration.
2172/// Only supported on Linux and Android the boosted process must have
2173/// 'CAP_SYS_NICE' capability.
2174#[derive(Clone, PartialEq, ::prost::Message)]
2175pub struct PriorityBoostConfig {
2176    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
2177    pub policy: ::core::option::Option<i32>,
2178    #[prost(uint32, optional, tag="2")]
2179    pub priority: ::core::option::Option<u32>,
2180}
2181/// Nested message and enum types in `PriorityBoostConfig`.
2182pub mod priority_boost_config {
2183    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2184    #[repr(i32)]
2185    pub enum BoostPolicy {
2186        PolicyUnspecified = 0,
2187        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
2188        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2189        /// than default 0, 20 is the highest priority.
2190        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2191        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2192        PolicySchedOther = 1,
2193        /// The Real-time policy, Priority range: [1; 99]
2194        PolicySchedFifo = 2,
2195    }
2196    impl BoostPolicy {
2197        /// String value of the enum field names used in the ProtoBuf definition.
2198        ///
2199        /// The values are not transformed in any way and thus are considered stable
2200        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2201        pub fn as_str_name(&self) -> &'static str {
2202            match self {
2203                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
2204                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
2205                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
2206            }
2207        }
2208    }
2209}
2210// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
2211
2212/// Config for polling process-related information from /proc/pid/status and
2213/// related files on Linux.
2214///
2215/// Data source name: "linux.process_stats".
2216#[derive(Clone, PartialEq, ::prost::Message)]
2217pub struct ProcessStatsConfig {
2218    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2219    pub quirks: ::prost::alloc::vec::Vec<i32>,
2220    /// If enabled all processes will be scanned and dumped when the trace starts.
2221    #[prost(bool, optional, tag="2")]
2222    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2223    /// If enabled thread names are also recoded (this is redundant if sched_switch
2224    /// is enabled).
2225    #[prost(bool, optional, tag="3")]
2226    pub record_thread_names: ::core::option::Option<bool>,
2227    /// If > 0 samples counters (see process_stats.proto) from
2228    /// /proc/pid/status and oom_score_adj every X ms.
2229    /// This is required to be > 100ms to avoid excessive CPU usage.
2230    #[prost(uint32, optional, tag="4")]
2231    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2232    // id 5 never used
2233
2234    /// Explicit caching period during which the polling won't re-emit identical
2235    /// counter values. This is required to be either = 0 or a multiple of
2236    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2237    /// rounded down to the nearest multiple.
2238    #[prost(uint32, optional, tag="6")]
2239    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2240    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2241    /// /proc/pid/smaps_rollup.
2242    ///
2243    /// Android: does NOT work with the system daemons by default, as it requires
2244    /// running the recording process (traced_probes or tracebox) as root. It is
2245    /// possible to avoid the root requirement, but the exact steps depend on the
2246    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2247    /// check, and might be further covered by the procfs "hidepid" mount option.
2248    #[prost(bool, optional, tag="10")]
2249    pub scan_smaps_rollup: ::core::option::Option<bool>,
2250    /// If true: process descriptions will include process age (starttime in
2251    /// /proc/pid/stat).
2252    /// Introduced in: perfetto v44.
2253    #[prost(bool, optional, tag="11")]
2254    pub record_process_age: ::core::option::Option<bool>,
2255    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2256    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2257    /// Introduced in: perfetto v44.
2258    #[prost(bool, optional, tag="12")]
2259    pub record_process_runtime: ::core::option::Option<bool>,
2260    /// If true obtain per-process dmabuf resident set size from
2261    /// /proc/pid/dmabuf_rss.
2262    /// This feature is not in upstream linux, and is available only on some
2263    /// Android kernels.
2264    #[prost(bool, optional, tag="13")]
2265    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2266    /// WARNING: unmaintained and deprecated. If true this will resolve file
2267    /// descriptors for each process so these can be mapped to their actual device
2268    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2269    /// or new fds opened after initially scanning a process will not be
2270    /// recognized.
2271    #[prost(bool, optional, tag="9")]
2272    pub resolve_process_fds: ::core::option::Option<bool>,
2273}
2274/// Nested message and enum types in `ProcessStatsConfig`.
2275pub mod process_stats_config {
2276    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2277    #[repr(i32)]
2278    pub enum Quirks {
2279        Unspecified = 0,
2280        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2281        /// startup is now disabled by default and can be re-enabled using the
2282        /// |scan_all_processes_on_start| arg.
2283        DisableInitialDump = 1,
2284        /// If set, disables the special interaction with "linux.ftrace" data source,
2285        /// where the process stats rescrapes any thread id seen in the ftrace
2286        /// stream.
2287        DisableOnDemand = 2,
2288    }
2289    impl Quirks {
2290        /// String value of the enum field names used in the ProtoBuf definition.
2291        ///
2292        /// The values are not transformed in any way and thus are considered stable
2293        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2294        pub fn as_str_name(&self) -> &'static str {
2295            match self {
2296                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2297                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2298                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2299            }
2300        }
2301    }
2302}
2303// End of protos/perfetto/config/process_stats/process_stats_config.proto
2304
2305// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2306
2307/// Configuration for go/heapprofd.
2308/// Next id: 28
2309#[derive(Clone, PartialEq, ::prost::Message)]
2310pub struct HeapprofdConfig {
2311    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2312    ///
2313    /// These are:
2314    /// * All heaps if heap_sampling_intervals is empty.
2315    /// * Those profiled due to all_heaps and not named in heaps if
2316    ///    heap_sampling_intervals is not empty.
2317    /// * The implicit libc.malloc heap if heaps is empty.
2318    ///
2319    /// Set to 1 for perfect accuracy.
2320    /// Otherwise, sample every sample_interval_bytes on average.
2321    ///
2322    /// See
2323    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2324    /// for more details.
2325    ///
2326    /// BUGS
2327    /// Before Android 12, setting this to 0 would crash the target process.
2328    ///
2329    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2330    /// this field or with heap_sampling_intervals), otherwise the producer will
2331    /// not start.
2332    #[prost(uint64, optional, tag="1")]
2333    pub sampling_interval_bytes: ::core::option::Option<u64>,
2334    /// If less than the given numbers of bytes are left free in the shared
2335    /// memory buffer, increase sampling interval by a factor of two.
2336    /// Adaptive sampling is disabled when set to 0.
2337    #[prost(uint64, optional, tag="24")]
2338    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2339    /// Stop doubling the sampling_interval once the sampling interval has reached
2340    /// this value.
2341    #[prost(uint64, optional, tag="25")]
2342    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2343    /// E.g. surfaceflinger, com.android.phone
2344    /// This input is normalized in the following way: if it contains slashes,
2345    /// everything up to the last slash is discarded. If it contains "@",
2346    /// everything after the first @ is discared.
2347    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2348    /// This transformation is also applied to the processes' command lines when
2349    /// matching.
2350    #[prost(string, repeated, tag="2")]
2351    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2352    /// For watermark based triggering or local debugging.
2353    #[prost(uint64, repeated, packed="false", tag="4")]
2354    pub pid: ::prost::alloc::vec::Vec<u64>,
2355    /// Only profile target if it was installed by one of the packages given.
2356    /// Special values are:
2357    /// * @system: installed on the system partition
2358    /// * @product: installed on the product partition
2359    /// * @null: sideloaded
2360    /// Supported on Android 12+.
2361    #[prost(string, repeated, tag="26")]
2362    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2363    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2364    /// "malloc".
2365    ///
2366    /// Introduced in Android 12.
2367    #[prost(string, repeated, tag="20")]
2368    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2369    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2370    /// combination with all_heaps;
2371    ///
2372    /// Introduced in Android 12.
2373    #[prost(string, repeated, tag="27")]
2374    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2375    #[prost(bool, optional, tag="23")]
2376    pub stream_allocations: ::core::option::Option<bool>,
2377    /// If given, needs to be the same length as heaps and gives the sampling
2378    /// interval for the respective entry in heaps.
2379    ///
2380    /// Otherwise, sampling_interval_bytes is used.
2381    ///
2382    /// It is recommended to set sampling_interval_bytes to a reasonable default
2383    /// value when using this, as a value of 0 for sampling_interval_bytes will
2384    /// crash the target process before Android 12.
2385    ///
2386    /// Introduced in Android 12.
2387    ///
2388    /// All values must be non-zero or the producer will not start.
2389    #[prost(uint64, repeated, packed="false", tag="22")]
2390    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2391    /// Sample all heaps registered by target process. Introduced in Android 12.
2392    #[prost(bool, optional, tag="21")]
2393    pub all_heaps: ::core::option::Option<bool>,
2394    /// Profile all processes eligible for profiling on the system.
2395    /// See
2396    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2397    /// for which processes are eligible.
2398    ///
2399    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2400    /// will crash when trying to launch a new process as it will have an
2401    /// unexpected open socket to heapprofd.
2402    ///
2403    /// heapprofd will likely be overloaded by the amount of data for low
2404    /// sampling intervals.
2405    #[prost(bool, optional, tag="5")]
2406    pub all: ::core::option::Option<bool>,
2407    /// Do not profile processes whose anon RSS + swap < given value.
2408    /// Introduced in Android 11.
2409    #[prost(uint32, optional, tag="15")]
2410    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2411    /// Stop profile if heapprofd memory usage goes beyond the given value.
2412    /// Introduced in Android 11.
2413    #[prost(uint32, optional, tag="16")]
2414    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2415    /// Stop profile if heapprofd CPU time since start of this data-source
2416    /// goes beyond given value.
2417    /// Introduced in Android 11.
2418    #[prost(uint64, optional, tag="17")]
2419    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2420    /// Do not emit function names for mappings starting with this prefix.
2421    /// E.g. /system to not emit symbols for any system libraries.
2422    #[prost(string, repeated, tag="7")]
2423    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2424    /// Dump at a predefined interval.
2425    #[prost(message, optional, tag="6")]
2426    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2427    /// Size of the shared memory buffer between the profiled processes and
2428    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2429    /// MiB.
2430    ///
2431    /// Needs to be:
2432    /// * at least 8192,
2433    /// * a power of two,
2434    /// * a multiple of 4096.
2435    #[prost(uint64, optional, tag="8")]
2436    pub shmem_size_bytes: ::core::option::Option<u64>,
2437    /// When the shmem buffer is full, block the client instead of ending the
2438    /// trace. Use with caution as this will significantly slow down the target
2439    /// process.
2440    #[prost(bool, optional, tag="9")]
2441    pub block_client: ::core::option::Option<bool>,
2442    /// If set, stop the trace session after blocking the client for this
2443    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2444    /// Introduced in Android 11.
2445    #[prost(uint32, optional, tag="14")]
2446    pub block_client_timeout_us: ::core::option::Option<u32>,
2447    /// Do not profile processes from startup, only match already running
2448    /// processes.
2449    ///
2450    /// Can not be set at the same time as no_running.
2451    /// Introduced in Android 11.
2452    #[prost(bool, optional, tag="10")]
2453    pub no_startup: ::core::option::Option<bool>,
2454    /// Do not profile running processes. Only match processes on startup.
2455    ///
2456    /// Can not be set at the same time as no_startup.
2457    /// Introduced in Android 11.
2458    #[prost(bool, optional, tag="11")]
2459    pub no_running: ::core::option::Option<bool>,
2460    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2461    /// at the point in time when the sampled heap usage of the process was at its
2462    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2463    /// self_allocated and self_freed to not be set.
2464    /// Introduced in Android 11.
2465    #[prost(bool, optional, tag="13")]
2466    pub dump_at_max: ::core::option::Option<bool>,
2467    // FEATURE FLAGS. THERE BE DRAGONS.
2468
2469    /// Escape hatch if the session is being torn down because of a forked child
2470    /// that shares memory space, but is not correctly identified as a vforked
2471    /// child.
2472    /// Introduced in Android 11.
2473    #[prost(bool, optional, tag="18")]
2474    pub disable_fork_teardown: ::core::option::Option<bool>,
2475    /// We try to automatically detect when a target applicatation vforks but then
2476    /// does a memory allocation (or free). This auto-detection can be disabled
2477    /// with this.
2478    /// Introduced in Android 11.
2479    #[prost(bool, optional, tag="19")]
2480    pub disable_vfork_detection: ::core::option::Option<bool>,
2481}
2482/// Nested message and enum types in `HeapprofdConfig`.
2483pub mod heapprofd_config {
2484    #[derive(Clone, PartialEq, ::prost::Message)]
2485    pub struct ContinuousDumpConfig {
2486        /// ms to wait before first dump.
2487        #[prost(uint32, optional, tag="5")]
2488        pub dump_phase_ms: ::core::option::Option<u32>,
2489        /// ms to wait between following dumps.
2490        #[prost(uint32, optional, tag="6")]
2491        pub dump_interval_ms: ::core::option::Option<u32>,
2492    }
2493}
2494// End of protos/perfetto/config/profiling/heapprofd_config.proto
2495
2496// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2497
2498/// Configuration for managed app heap graph snapshots.
2499#[derive(Clone, PartialEq, ::prost::Message)]
2500pub struct JavaHprofConfig {
2501    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2502    /// comm string). The semantics of this field were changed since its original
2503    /// introduction.
2504    ///
2505    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2506    /// the profiler will attempt to match it in two possible ways:
2507    /// * if the pattern starts with a '/', then it is matched against the first
2508    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2509    ///    "/bin/echo".
2510    /// * otherwise the pattern is matched against the part of argv0
2511    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2512    ///    For example "echo" would match "/bin/echo".
2513    ///
2514    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2515    /// normalized prior to an exact string comparison. Normalization is as
2516    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2517    /// the string contains forward slashes, trim everything up to and including
2518    /// the last one.
2519    ///
2520    /// Implementation note: in either case, at most 511 characters of cmdline
2521    /// are considered.
2522    #[prost(string, repeated, tag="1")]
2523    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2524    /// For watermark based triggering or local debugging.
2525    #[prost(uint64, repeated, packed="false", tag="2")]
2526    pub pid: ::prost::alloc::vec::Vec<u64>,
2527    /// Only profile target if it was installed by one of the packages given.
2528    /// Special values are:
2529    /// * @system: installed on the system partition
2530    /// * @product: installed on the product partition
2531    /// * @null: sideloaded
2532    /// Supported on Android 12+.
2533    #[prost(string, repeated, tag="7")]
2534    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2535    /// Dump at a predefined interval.
2536    #[prost(message, optional, tag="3")]
2537    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2538    /// Do not profile processes whose anon RSS + swap < given value.
2539    #[prost(uint32, optional, tag="4")]
2540    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2541    /// Include the process' /proc/self/smaps.
2542    /// This only shows maps that:
2543    /// * start with /system
2544    /// * start with /vendor
2545    /// * start with /data/app
2546    /// * contain "extracted in memory from Y", where Y matches any of the above
2547    #[prost(bool, optional, tag="5")]
2548    pub dump_smaps: ::core::option::Option<bool>,
2549    /// Exclude objects of the following types from the profile. This can be
2550    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2551    #[prost(string, repeated, tag="6")]
2552    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2553}
2554/// Nested message and enum types in `JavaHprofConfig`.
2555pub mod java_hprof_config {
2556    /// If dump_interval_ms != 0, the following configuration is used.
2557    #[derive(Clone, PartialEq, ::prost::Message)]
2558    pub struct ContinuousDumpConfig {
2559        /// ms to wait before first continuous dump.
2560        /// A dump is always created at the beginning of the trace.
2561        #[prost(uint32, optional, tag="1")]
2562        pub dump_phase_ms: ::core::option::Option<u32>,
2563        /// ms to wait between following dumps.
2564        #[prost(uint32, optional, tag="2")]
2565        pub dump_interval_ms: ::core::option::Option<u32>,
2566        /// If true, scans all the processes to find `process_cmdline` and filter by
2567        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2568        /// S-.
2569        ///
2570        /// If false, rescans all the processes to find on every dump. Default on
2571        /// Android T+.
2572        #[prost(bool, optional, tag="3")]
2573        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2574    }
2575}
2576// End of protos/perfetto/config/profiling/java_hprof_config.proto
2577
2578// Begin of protos/perfetto/common/perf_events.proto
2579
2580#[derive(Clone, PartialEq, ::prost::Message)]
2581pub struct PerfEvents {
2582}
2583/// Nested message and enum types in `PerfEvents`.
2584pub mod perf_events {
2585    /// The primary event to count. If recording multiple events, this
2586    /// counter is the "group leader".
2587    /// Commented from the perspective of its use in |PerfEventConfig|.
2588    /// Next id: 13
2589    #[derive(Clone, PartialEq, ::prost::Message)]
2590    pub struct Timebase {
2591        /// Optional modifiers for the event. Modelled after the perftool's
2592        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2593        /// Currently supported: count scoping such as :u, :k, :uk, ...
2594        /// Modifiers can differ between the timebase and followers.
2595        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2596        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2597        /// If set, samples will be timestamped with the given clock.
2598        /// If unset, the clock is chosen by the implementation.
2599        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2600        /// used for hardware events (due to interrupt safety), for which the
2601        /// recommendation is to use one of the monotonic clocks.
2602        #[prost(enumeration="PerfClock", optional, tag="11")]
2603        pub timestamp_clock: ::core::option::Option<i32>,
2604        /// Optional arbitrary name for the event, to identify it in the parsed
2605        /// trace. Does *not* affect the profiling itself. If unset, the trace
2606        /// parser will choose a suitable name.
2607        #[prost(string, optional, tag="10")]
2608        pub name: ::core::option::Option<::prost::alloc::string::String>,
2609        /// How often to snapshot the counter, along with any follower events and
2610        /// any additional sampled data such as callstacks.
2611        ///
2612        /// This choice also controls how the readings are taken:
2613        /// * With |frequency| or |period|, samples are taken by the kernel
2614        ///    into a ring buffer. Analogous to `perf record`.
2615        /// * With |poll_period_ms|, the userspace periodically snapshots
2616        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2617        /// Prefer the sampling options unless you're recording PMUs whose
2618        /// perf drivers only support the reading mode.
2619        ///
2620        /// If unset, an implementation-defined sampling default is used.
2621        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2622        pub interval: ::core::option::Option<timebase::Interval>,
2623        /// Counting event to use as the timebase.
2624        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2625        /// which is what you usually want.
2626        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2627        pub event: ::core::option::Option<timebase::Event>,
2628    }
2629    /// Nested message and enum types in `Timebase`.
2630    pub mod timebase {
2631        /// How often to snapshot the counter, along with any follower events and
2632        /// any additional sampled data such as callstacks.
2633        ///
2634        /// This choice also controls how the readings are taken:
2635        /// * With |frequency| or |period|, samples are taken by the kernel
2636        ///    into a ring buffer. Analogous to `perf record`.
2637        /// * With |poll_period_ms|, the userspace periodically snapshots
2638        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2639        /// Prefer the sampling options unless you're recording PMUs whose
2640        /// perf drivers only support the reading mode.
2641        ///
2642        /// If unset, an implementation-defined sampling default is used.
2643        #[derive(Clone, PartialEq, ::prost::Oneof)]
2644        pub enum Interval {
2645            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2646            /// same as 1/period.
2647            /// Details: the actual sampling will still be based on a period, but the
2648            /// kernel will dynamically adjust it based on the observed event rate, to
2649            /// approximate this frequency. Works best with steady-rate events like
2650            /// timers.
2651            /// Not guaranteed to be honored as the kernel can throttle the sampling
2652            /// rate if it's too high.
2653            #[prost(uint64, tag="2")]
2654            Frequency(u64),
2655            /// Per-cpu sampling will occur every |period| counts of |event|.
2656            /// Prefer |frequency| by default, as it's easier to oversample with a
2657            /// fixed period.
2658            /// Not guaranteed to be honored as the kernel can throttle the sampling
2659            /// rate if it's too high.
2660            #[prost(uint64, tag="1")]
2661            Period(u64),
2662            /// Per-cpu values are read by the userspace every interval. If using this
2663            /// mode, only follower events are supported. Options such as
2664            /// |PerfEventConfig.CallstackSampling| are incompatible.
2665            /// The period can't be guaranteed to be exact since the readings are taken
2666            /// by userspace.
2667            #[prost(uint32, tag="6")]
2668            PollPeriodMs(u32),
2669        }
2670        /// Counting event to use as the timebase.
2671        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2672        /// which is what you usually want.
2673        #[derive(Clone, PartialEq, ::prost::Oneof)]
2674        pub enum Event {
2675            #[prost(enumeration="super::Counter", tag="4")]
2676            Counter(i32),
2677            #[prost(message, tag="3")]
2678            Tracepoint(super::Tracepoint),
2679            #[prost(message, tag="5")]
2680            RawEvent(super::RawEvent),
2681        }
2682    }
2683    #[derive(Clone, PartialEq, ::prost::Message)]
2684    pub struct Tracepoint {
2685        /// Group and name for the tracepoint, acceptable forms:
2686        /// * "sched/sched_switch"
2687        /// * "sched:sched_switch"
2688        #[prost(string, optional, tag="1")]
2689        pub name: ::core::option::Option<::prost::alloc::string::String>,
2690        /// Optional field-level filter for the tracepoint. Only events matching this
2691        /// filter will be counted (and therefore contribute to the sampling period).
2692        /// Example: "prev_pid >= 42 && next_pid == 0".
2693        /// For full syntax, see kernel documentation on "Event filtering":
2694        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2695        #[prost(string, optional, tag="2")]
2696        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2697    }
2698    /// Syscall-level description of the event, propagated to the perf_event_attr
2699    /// struct. Primarily for local use-cases, since the event availability and
2700    /// encoding is hardware-specific.
2701    #[derive(Clone, PartialEq, ::prost::Message)]
2702    pub struct RawEvent {
2703        #[prost(uint32, optional, tag="1")]
2704        pub r#type: ::core::option::Option<u32>,
2705        #[prost(uint64, optional, tag="2")]
2706        pub config: ::core::option::Option<u64>,
2707        #[prost(uint64, optional, tag="3")]
2708        pub config1: ::core::option::Option<u64>,
2709        #[prost(uint64, optional, tag="4")]
2710        pub config2: ::core::option::Option<u64>,
2711    }
2712    /// Builtin counter names from the uapi header. Commented with their perf tool
2713    /// aliases.
2714    /// TODO(rsavitski): consider generating enums for cache events (should be
2715    /// finite), and generally make this list as extensive as possible. Excluding
2716    /// things like dynamic PMUs since those don't fit into a static enum.
2717    /// Next id: 21
2718    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2719    #[repr(i32)]
2720    pub enum Counter {
2721        UnknownCounter = 0,
2722        /// cpu-clock
2723        SwCpuClock = 1,
2724        /// page-faults, faults
2725        SwPageFaults = 2,
2726        /// task-clock
2727        SwTaskClock = 3,
2728        /// context-switches, cs
2729        SwContextSwitches = 4,
2730        /// cpu-migrations, migrations
2731        SwCpuMigrations = 5,
2732        /// minor-faults
2733        SwPageFaultsMin = 6,
2734        /// major-faults
2735        SwPageFaultsMaj = 7,
2736        /// alignment-faults
2737        SwAlignmentFaults = 8,
2738        /// emulation-faults
2739        SwEmulationFaults = 9,
2740        /// dummy
2741        SwDummy = 20,
2742        /// cpu-cycles, cycles
2743        HwCpuCycles = 10,
2744        /// instructions
2745        HwInstructions = 11,
2746        /// cache-references
2747        HwCacheReferences = 12,
2748        /// cache-misses
2749        HwCacheMisses = 13,
2750        /// branch-instructions, branches
2751        HwBranchInstructions = 14,
2752        /// branch-misses
2753        HwBranchMisses = 15,
2754        /// bus-cycles
2755        HwBusCycles = 16,
2756        /// stalled-cycles-frontend, idle-cycles-frontend
2757        HwStalledCyclesFrontend = 17,
2758        /// stalled-cycles-backend, idle-cycles-backend
2759        HwStalledCyclesBackend = 18,
2760        /// ref-cycles
2761        HwRefCpuCycles = 19,
2762    }
2763    impl Counter {
2764        /// String value of the enum field names used in the ProtoBuf definition.
2765        ///
2766        /// The values are not transformed in any way and thus are considered stable
2767        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2768        pub fn as_str_name(&self) -> &'static str {
2769            match self {
2770                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2771                Counter::SwCpuClock => "SW_CPU_CLOCK",
2772                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2773                Counter::SwTaskClock => "SW_TASK_CLOCK",
2774                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2775                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2776                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2777                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2778                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2779                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2780                Counter::SwDummy => "SW_DUMMY",
2781                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2782                Counter::HwInstructions => "HW_INSTRUCTIONS",
2783                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2784                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2785                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2786                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2787                Counter::HwBusCycles => "HW_BUS_CYCLES",
2788                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2789                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2790                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2791            }
2792        }
2793    }
2794    /// Subset of clocks that is supported by perf timestamping.
2795    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2796    /// would require additions to the trace clock synchronisation logic.
2797    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2798    #[repr(i32)]
2799    pub enum PerfClock {
2800        UnknownPerfClock = 0,
2801        Realtime = 1,
2802        Monotonic = 2,
2803        MonotonicRaw = 3,
2804        Boottime = 4,
2805    }
2806    impl PerfClock {
2807        /// String value of the enum field names used in the ProtoBuf definition.
2808        ///
2809        /// The values are not transformed in any way and thus are considered stable
2810        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2811        pub fn as_str_name(&self) -> &'static str {
2812            match self {
2813                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2814                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2815                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2816                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2817                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2818            }
2819        }
2820    }
2821    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2822    #[repr(i32)]
2823    pub enum EventModifier {
2824        UnknownEventModifier = 0,
2825        /// count only while in userspace
2826        CountUserspace = 1,
2827        /// count only while in kernel
2828        CountKernel = 2,
2829        /// count only while in hypervisor
2830        CountHypervisor = 3,
2831    }
2832    impl EventModifier {
2833        /// String value of the enum field names used in the ProtoBuf definition.
2834        ///
2835        /// The values are not transformed in any way and thus are considered stable
2836        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2837        pub fn as_str_name(&self) -> &'static str {
2838            match self {
2839                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
2840                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
2841                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
2842                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
2843            }
2844        }
2845    }
2846}
2847/// Additional events associated with a leader.
2848/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
2849#[derive(Clone, PartialEq, ::prost::Message)]
2850pub struct FollowerEvent {
2851    /// Modifiers can differ between the timebase and followers.
2852    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
2853    pub modifiers: ::prost::alloc::vec::Vec<i32>,
2854    /// Optional arbitrary name for the event, to identify it in the parsed
2855    /// trace. Does *not* affect the profiling itself. If unset, the trace
2856    /// parser will choose a suitable name.
2857    #[prost(string, optional, tag="4")]
2858    pub name: ::core::option::Option<::prost::alloc::string::String>,
2859    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2860    pub event: ::core::option::Option<follower_event::Event>,
2861}
2862/// Nested message and enum types in `FollowerEvent`.
2863pub mod follower_event {
2864    #[derive(Clone, PartialEq, ::prost::Oneof)]
2865    pub enum Event {
2866        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2867        Counter(i32),
2868        #[prost(message, tag="2")]
2869        Tracepoint(super::perf_events::Tracepoint),
2870        #[prost(message, tag="3")]
2871        RawEvent(super::perf_events::RawEvent),
2872    }
2873}
2874// End of protos/perfetto/common/perf_events.proto
2875
2876// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2877
2878/// Configuration for the traced_perf profiler.
2879///
2880/// Example config for basic cpu profiling:
2881///    perf_event_config {
2882///      timebase {
2883///        frequency: 80
2884///      }
2885///      callstack_sampling {
2886///        scope {
2887///          target_cmdline: "surfaceflinger"
2888///          target_cmdline: "system_server"
2889///        }
2890///        kernel_frames: true
2891///      }
2892///    }
2893///
2894/// Next id: 21
2895#[derive(Clone, PartialEq, ::prost::Message)]
2896pub struct PerfEventConfig {
2897    /// What event to sample on, and how often.
2898    /// Defined in common/perf_events.proto.
2899    #[prost(message, optional, tag="15")]
2900    pub timebase: ::core::option::Option<perf_events::Timebase>,
2901    /// Other events associated with the leader described in the timebase.
2902    #[prost(message, repeated, tag="19")]
2903    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2904    /// If set, the profiler will sample userspace processes' callstacks at the
2905    /// interval specified by the |timebase|.
2906    /// If unset, the profiler will record only the event counts.
2907    #[prost(message, optional, tag="16")]
2908    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2909    /// List of cpu indices for counting. If empty, the default is all cpus.
2910    ///
2911    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2912    /// counter-only traces. A future change will likely reorganise the options,
2913    /// but this field will continue to be supported.
2914    ///
2915    /// Available since: perfetto v50.
2916    #[prost(uint32, repeated, packed="false", tag="20")]
2917    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2918    //
2919    // Kernel <-> userspace ring buffer options:
2920    //
2921
2922    /// How often the per-cpu ring buffers are read by the producer.
2923    /// If unset, an implementation-defined default is used.
2924    #[prost(uint32, optional, tag="8")]
2925    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2926    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2927    /// kernel. If set, must be a power of two.
2928    /// If unset, an implementation-defined default is used.
2929    #[prost(uint32, optional, tag="3")]
2930    pub ring_buffer_pages: ::core::option::Option<u32>,
2931    //
2932    // Daemon's resource usage limits:
2933    //
2934
2935    /// Drop samples if the heap memory held by the samples in the unwinder queue
2936    /// is above the given limit. This counts the memory across all concurrent data
2937    /// sources (not just this one's), and there is no fairness guarantee - the
2938    /// whole quota might be used up by a concurrent source.
2939    #[prost(uint64, optional, tag="17")]
2940    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2941    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2942    /// footprint exceeds this value.
2943    #[prost(uint32, optional, tag="13")]
2944    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2945    //
2946    // Niche options:
2947    //
2948
2949    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2950    /// sampled process. This is primarily for Android, where this lookup is
2951    /// asynchronous. As long as the producer is waiting, the associated samples
2952    /// will be kept enqueued (putting pressure on the capacity of the shared
2953    /// unwinding queue). Once a lookup for a process expires, all associated
2954    /// samples are discarded. However, if the lookup still succeeds after the
2955    /// timeout, future samples will be handled normally.
2956    /// If unset, an implementation-defined default is used.
2957    #[prost(uint32, optional, tag="9")]
2958    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2959    /// Optional period for clearing state cached by the userspace unwinder. This
2960    /// is a heavy operation that is only necessary for traces that target a wide
2961    /// set of processes, and require the memory footprint to be reset
2962    /// periodically. To effectively disable the cache clearing, set to a value
2963    /// greater than your trace duration.
2964    ///
2965    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2966    ///
2967    /// If zero or unset:
2968    /// * before perfetto v52: no cache clearing.
2969    /// * perfetto v52+: implementation chooses an infrequent default.
2970    #[prost(uint32, optional, tag="10")]
2971    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2972    /// If set, only profile target if it was installed by a package with one of
2973    /// these names. Special values:
2974    /// * "@system": installed on the system partition
2975    /// * "@product": installed on the product partition
2976    /// * "@null": sideloaded
2977    /// Supported on Android 12+.
2978    #[prost(string, repeated, tag="18")]
2979    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2980    //
2981    // Deprecated (superseded by options above):
2982    //
2983    // Do not set *any* of these fields in new configs.
2984    //
2985
2986    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2987    /// We rely on this to detect such configs.
2988    #[prost(bool, optional, tag="1")]
2989    pub all_cpus: ::core::option::Option<bool>,
2990    #[prost(uint32, optional, tag="2")]
2991    pub sampling_frequency: ::core::option::Option<u32>,
2992    #[prost(bool, optional, tag="12")]
2993    pub kernel_frames: ::core::option::Option<bool>,
2994    #[prost(int32, repeated, packed="false", tag="4")]
2995    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2996    #[prost(string, repeated, tag="5")]
2997    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2998    #[prost(int32, repeated, packed="false", tag="6")]
2999    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3000    #[prost(string, repeated, tag="7")]
3001    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3002    #[prost(uint32, optional, tag="11")]
3003    pub additional_cmdline_count: ::core::option::Option<u32>,
3004}
3005/// Nested message and enum types in `PerfEventConfig`.
3006pub mod perf_event_config {
3007    //
3008    // Sub-messages (nested for generated code namespacing).
3009    //
3010
3011    #[derive(Clone, PartialEq, ::prost::Message)]
3012    pub struct CallstackSampling {
3013        /// Defines a set of processes for which samples are retained/skipped. If
3014        /// unset, all samples are kept, but beware that it will be very heavy on the
3015        /// stack unwinder, which might start dropping samples due to overload.
3016        #[prost(message, optional, tag="1")]
3017        pub scope: ::core::option::Option<Scope>,
3018        /// If true, callstacks will include the kernel-space frames. Such frames can
3019        /// be identified by a magical "kernel" string as their mapping name.
3020        /// Requires traced_perf to be running as root, or kptr_restrict to have been
3021        /// manually unrestricted. On Android, the platform should do the right thing
3022        /// on debug builds.
3023        /// This does *not* disclose KASLR, as only the function names are emitted.
3024        #[prost(bool, optional, tag="2")]
3025        pub kernel_frames: ::core::option::Option<bool>,
3026        /// Whether to record and unwind userspace callstacks. If unset, defaults to
3027        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
3028        /// as the most common default (this defaulting is only applicable if the
3029        /// outer CallstackSampling message is explicitly set).
3030        #[prost(enumeration="UnwindMode", optional, tag="3")]
3031        pub user_frames: ::core::option::Option<i32>,
3032    }
3033    #[derive(Clone, PartialEq, ::prost::Message)]
3034    pub struct Scope {
3035        /// Process ID (TGID) allowlist. If this list is not empty, only matching
3036        /// samples will be retained. If multiple allow/deny-lists are
3037        /// specified by the config, then all of them are evaluated for each sampled
3038        /// process.
3039        #[prost(int32, repeated, packed="false", tag="1")]
3040        pub target_pid: ::prost::alloc::vec::Vec<i32>,
3041        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3042        /// comm string). The semantics of this field were changed since its original
3043        /// introduction.
3044        ///
3045        /// On Android T+ (13+), this field can specify a single wildcard (*), and
3046        /// the profiler will attempt to match it in two possible ways:
3047        /// * if the pattern starts with a '/', then it is matched against the first
3048        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3049        ///    "/bin/echo".
3050        /// * otherwise the pattern is matched against the part of argv0
3051        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3052        ///    For example "echo" would match "/bin/echo".
3053        ///
3054        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3055        /// normalized prior to an exact string comparison. Normalization is as
3056        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3057        /// the string contains forward slashes, trim everything up to and including
3058        /// the last one.
3059        ///
3060        /// Implementation note: in either case, at most 511 characters of cmdline
3061        /// are considered.
3062        #[prost(string, repeated, tag="2")]
3063        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3064        /// List of excluded pids.
3065        #[prost(int32, repeated, packed="false", tag="3")]
3066        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3067        /// List of excluded cmdlines. See description of |target_cmdline| for how
3068        /// this is handled.
3069        #[prost(string, repeated, tag="4")]
3070        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3071        // Niche features for systemwide callstacks:
3072
3073        /// Number of additional command lines to sample. Only those which are
3074        /// neither explicitly included nor excluded will be considered. Processes
3075        /// are accepted on a first come, first served basis.
3076        #[prost(uint32, optional, tag="5")]
3077        pub additional_cmdline_count: ::core::option::Option<u32>,
3078        /// If set to N, all encountered processes will be put into one of the N
3079        /// possible bins, and only one randomly-chosen bin will be selected for
3080        /// unwinding. The binning is simply "pid % N", under the assumption that
3081        /// low-order bits of pids are roughly uniformly distributed. Other explicit
3082        /// inclusions/exclusions in this |Scope| message are still respected.
3083        ///
3084        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
3085        /// values will be queryable in trace processor under the "stats" table as
3086        /// "perf_process_shard_count" and "perf_chosen_process_shard".
3087        ///
3088        /// NB: all data sources in a config that set |process_shard_count| must set
3089        /// it to the same value. The profiler will choose one bin for all those data
3090        /// sources.
3091        #[prost(uint32, optional, tag="6")]
3092        pub process_shard_count: ::core::option::Option<u32>,
3093    }
3094    /// Userspace unwinding mode. A possible future addition is kernel-unwound
3095    /// callchains for frame pointer based systems.
3096    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3097    #[repr(i32)]
3098    pub enum UnwindMode {
3099        UnwindUnknown = 0,
3100        /// Do not unwind userspace:
3101        UnwindSkip = 1,
3102        /// Use libunwindstack (default):
3103        UnwindDwarf = 2,
3104        /// Use userspace frame pointer unwinder:
3105        UnwindFramePointer = 3,
3106    }
3107    impl UnwindMode {
3108        /// String value of the enum field names used in the ProtoBuf definition.
3109        ///
3110        /// The values are not transformed in any way and thus are considered stable
3111        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3112        pub fn as_str_name(&self) -> &'static str {
3113            match self {
3114                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
3115                UnwindMode::UnwindSkip => "UNWIND_SKIP",
3116                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
3117                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
3118            }
3119        }
3120    }
3121}
3122// End of protos/perfetto/config/profiling/perf_event_config.proto
3123
3124// Begin of protos/perfetto/config/protovm/protovm_config.proto
3125
3126#[derive(Clone, PartialEq, ::prost::Message)]
3127pub struct ProtoVmConfig {
3128    #[prost(uint32, optional, tag="1")]
3129    pub memory_limit_kb: ::core::option::Option<u32>,
3130}
3131// End of protos/perfetto/config/protovm/protovm_config.proto
3132
3133// Begin of protos/perfetto/config/qnx/qnx_config.proto
3134
3135/// QnxConfig is used with trace_qnx_probes build from
3136/// <https://github.com/qnx-ports/perfetto>
3137#[derive(Clone, PartialEq, ::prost::Message)]
3138pub struct QnxConfig {
3139    /// The number of buffers that tracelog will init for the QNX trace.
3140    #[prost(uint32, optional, tag="1")]
3141    pub qnx_kernel_buffers: ::core::option::Option<u32>,
3142    /// The number of kernel buffers that tracelog will init for the QNX trace.
3143    #[prost(uint32, optional, tag="2")]
3144    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
3145    /// Flag indicating whether the QNX kernel tracing should produce wide
3146    /// events which contain additional data or fast events which are most
3147    /// concise. In fast mode we lose the priority information
3148    #[prost(bool, optional, tag="3")]
3149    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
3150    /// The number of pages initialized by default the parser's page cache.
3151    #[prost(uint32, optional, tag="4")]
3152    pub qnx_cache_pages: ::core::option::Option<u32>,
3153    /// The max pages the page cache should allocate (must be at least as big)
3154    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
3155    /// unbounded. The cache will prefer to re-use existing pages so growth will
3156    /// only happen when needed (when parser is not keeping up).
3157    #[prost(int32, optional, tag="5")]
3158    pub qnx_cache_max_pages: ::core::option::Option<i32>,
3159    /// The initial size of the the buffer used to hold the trace header values
3160    /// this dynamic buffer will grow as needed but reallocs can be avoided by
3161    /// selecting an initial size large enough to hold all the initial header
3162    /// data.
3163    #[prost(uint32, optional, tag="6")]
3164    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
3165}
3166// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
3167
3168/// This file is named 'statsd_tracing_config.proto' rather than
3169/// 'statsd_config.proto' (which would be more consistent with the other
3170/// config protos) so it doesn't show up and confuse folks looking for
3171/// the existing statsd_config.proto for configuring statsd itself.
3172/// Same for the config proto itself.
3173#[derive(Clone, PartialEq, ::prost::Message)]
3174pub struct StatsdTracingConfig {
3175    /// This is for the common case of the atom id being known in the enum AtomId.
3176    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3177    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3178    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3179    /// (e.g. non-upstream atoms that don't exist in AOSP).
3180    #[prost(int32, repeated, packed="false", tag="2")]
3181    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3182    #[prost(message, repeated, tag="3")]
3183    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3184}
3185#[derive(Clone, PartialEq, ::prost::Message)]
3186pub struct StatsdPullAtomConfig {
3187    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3188    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3189    #[prost(int32, repeated, packed="false", tag="2")]
3190    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3191    #[prost(int32, optional, tag="3")]
3192    pub pull_frequency_ms: ::core::option::Option<i32>,
3193    #[prost(string, repeated, tag="4")]
3194    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3195}
3196// End of protos/perfetto/common/sys_stats_counters.proto
3197
3198// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
3199
3200/// This file defines the configuration for the Linux /proc poller data source,
3201/// which injects counters in the trace.
3202/// Counters that are needed in the trace must be explicitly listed in the
3203/// *_counters fields. This is to avoid spamming the trace with all counters
3204/// at all times.
3205/// The sampling rate is configurable. All polling rates (*_period_ms) need
3206/// to be integer multiples of each other.
3207/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
3208/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
3209#[derive(Clone, PartialEq, ::prost::Message)]
3210pub struct SysStatsConfig {
3211    /// Polls /proc/meminfo every X ms, if non-zero.
3212    /// This is required to be > 10ms to avoid excessive CPU usage.
3213    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
3214    #[prost(uint32, optional, tag="1")]
3215    pub meminfo_period_ms: ::core::option::Option<u32>,
3216    /// If empty all known counters are reported. Otherwise, only the counters
3217    /// specified below are reported.
3218    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
3219    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
3220    /// Polls /proc/vmstat every X ms, if non-zero.
3221    /// This is required to be > 10ms to avoid excessive CPU usage.
3222    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
3223    #[prost(uint32, optional, tag="3")]
3224    pub vmstat_period_ms: ::core::option::Option<u32>,
3225    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
3226    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
3227    /// Pols /proc/stat every X ms, if non-zero.
3228    /// This is required to be > 10ms to avoid excessive CPU usage.
3229    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
3230    #[prost(uint32, optional, tag="5")]
3231    pub stat_period_ms: ::core::option::Option<u32>,
3232    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
3233    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
3234    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
3235    /// This is required to be > 10ms to avoid excessive CPU usage.
3236    /// This option can be used to record unchanging values.
3237    /// Updates from frequency changes can come from ftrace/set_clock_rate.
3238    #[prost(uint32, optional, tag="7")]
3239    pub devfreq_period_ms: ::core::option::Option<u32>,
3240    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
3241    /// This is required to be > 10ms to avoid excessive CPU usage.
3242    #[prost(uint32, optional, tag="8")]
3243    pub cpufreq_period_ms: ::core::option::Option<u32>,
3244    /// Polls /proc/buddyinfo every X ms, if non-zero.
3245    /// This is required to be > 10ms to avoid excessive CPU usage.
3246    #[prost(uint32, optional, tag="9")]
3247    pub buddyinfo_period_ms: ::core::option::Option<u32>,
3248    /// Polls /proc/diskstats every X ms, if non-zero.
3249    /// This is required to be > 10ms to avoid excessive CPU usage.
3250    #[prost(uint32, optional, tag="10")]
3251    pub diskstat_period_ms: ::core::option::Option<u32>,
3252    /// Polls /proc/pressure/* every X ms, if non-zero.
3253    /// This is required to be > 10ms to avoid excessive CPU usage.
3254    #[prost(uint32, optional, tag="11")]
3255    pub psi_period_ms: ::core::option::Option<u32>,
3256    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3257    /// This is required to be > 10ms to avoid excessive CPU usage.
3258    #[prost(uint32, optional, tag="12")]
3259    pub thermal_period_ms: ::core::option::Option<u32>,
3260    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3261    /// This is required to be > 10ms to avoid excessive CPU usage.
3262    #[prost(uint32, optional, tag="13")]
3263    pub cpuidle_period_ms: ::core::option::Option<u32>,
3264    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3265    /// This is required to be > 10ms to avoid excessive CPU usage.
3266    #[prost(uint32, optional, tag="14")]
3267    pub gpufreq_period_ms: ::core::option::Option<u32>,
3268}
3269/// Nested message and enum types in `SysStatsConfig`.
3270pub mod sys_stats_config {
3271    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3272    #[repr(i32)]
3273    pub enum StatCounters {
3274        StatUnspecified = 0,
3275        StatCpuTimes = 1,
3276        StatIrqCounts = 2,
3277        StatSoftirqCounts = 3,
3278        StatForkCount = 4,
3279    }
3280    impl StatCounters {
3281        /// String value of the enum field names used in the ProtoBuf definition.
3282        ///
3283        /// The values are not transformed in any way and thus are considered stable
3284        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3285        pub fn as_str_name(&self) -> &'static str {
3286            match self {
3287                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3288                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3289                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3290                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3291                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3292            }
3293        }
3294    }
3295}
3296// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3297
3298// Begin of protos/perfetto/config/system_info/system_info_config.proto
3299
3300/// This data-source does a one-off recording of system information when
3301/// the trace starts.
3302/// Currently this includes:
3303/// - Values of
3304/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3305/// datasource has no configuration options at present.
3306#[derive(Clone, PartialEq, ::prost::Message)]
3307pub struct SystemInfoConfig {
3308}
3309// End of protos/perfetto/config/system_info/system_info_config.proto
3310
3311// Begin of protos/perfetto/config/test_config.proto
3312
3313/// The configuration for a fake producer used in tests.
3314#[derive(Clone, PartialEq, ::prost::Message)]
3315pub struct TestConfig {
3316    /// The number of messages the fake producer should send.
3317    #[prost(uint32, optional, tag="1")]
3318    pub message_count: ::core::option::Option<u32>,
3319    /// The maximum number of messages which should be sent each second.
3320    /// The actual obserced speed may be lower if the producer is unable to
3321    /// work fast enough.
3322    /// If this is zero or unset, the producer will send as fast as possible.
3323    #[prost(uint32, optional, tag="2")]
3324    pub max_messages_per_second: ::core::option::Option<u32>,
3325    /// The seed value for a simple multiplicative congruential pseudo-random
3326    /// number sequence.
3327    #[prost(uint32, optional, tag="3")]
3328    pub seed: ::core::option::Option<u32>,
3329    /// The size of each message in bytes. Should be greater than or equal 5 to
3330    /// account for the number of bytes needed to encode the random number and a
3331    /// null byte for the string.
3332    #[prost(uint32, optional, tag="4")]
3333    pub message_size: ::core::option::Option<u32>,
3334    /// Whether the producer should send a event batch when the data source is
3335    /// is initially registered.
3336    #[prost(bool, optional, tag="5")]
3337    pub send_batch_on_register: ::core::option::Option<bool>,
3338    #[prost(message, optional, tag="6")]
3339    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3340}
3341/// Nested message and enum types in `TestConfig`.
3342pub mod test_config {
3343    #[derive(Clone, PartialEq, ::prost::Message)]
3344    pub struct DummyFields {
3345        #[prost(uint32, optional, tag="1")]
3346        pub field_uint32: ::core::option::Option<u32>,
3347        #[prost(int32, optional, tag="2")]
3348        pub field_int32: ::core::option::Option<i32>,
3349        #[prost(uint64, optional, tag="3")]
3350        pub field_uint64: ::core::option::Option<u64>,
3351        #[prost(int64, optional, tag="4")]
3352        pub field_int64: ::core::option::Option<i64>,
3353        #[prost(fixed64, optional, tag="5")]
3354        pub field_fixed64: ::core::option::Option<u64>,
3355        #[prost(sfixed64, optional, tag="6")]
3356        pub field_sfixed64: ::core::option::Option<i64>,
3357        #[prost(fixed32, optional, tag="7")]
3358        pub field_fixed32: ::core::option::Option<u32>,
3359        #[prost(sfixed32, optional, tag="8")]
3360        pub field_sfixed32: ::core::option::Option<i32>,
3361        #[prost(double, optional, tag="9")]
3362        pub field_double: ::core::option::Option<f64>,
3363        #[prost(float, optional, tag="10")]
3364        pub field_float: ::core::option::Option<f32>,
3365        #[prost(sint64, optional, tag="11")]
3366        pub field_sint64: ::core::option::Option<i64>,
3367        #[prost(sint32, optional, tag="12")]
3368        pub field_sint32: ::core::option::Option<i32>,
3369        #[prost(string, optional, tag="13")]
3370        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3371        #[prost(bytes="vec", optional, tag="14")]
3372        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3373    }
3374}
3375// End of protos/perfetto/config/test_config.proto
3376
3377// Begin of protos/perfetto/config/track_event/track_event_config.proto
3378
3379/// The following fields define the set of enabled trace categories. Each list
3380/// item is a glob.
3381///
3382/// To determine if category is enabled, it is checked against the filters in
3383/// the following order:
3384///
3385///    1. Exact matches in enabled categories.
3386///    2. Exact matches in enabled tags.
3387///    3. Exact matches in disabled categories.
3388///    4. Exact matches in disabled tags.
3389///    5. Pattern matches in enabled categories.
3390///    6. Pattern matches in enabled tags.
3391///    7. Pattern matches in disabled categories.
3392///    8. Pattern matches in disabled tags.
3393///
3394/// If none of the steps produced a match:
3395///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3396///   default.
3397///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3398///
3399/// Examples:
3400///
3401///   - To enable all non-slow/debug categories:
3402///
3403///        enabled_categories: "*"
3404///
3405///   - To enable specific categories:
3406///
3407///        disabled_categories: "*"
3408///        enabled_categories: "my_category"
3409///        enabled_categories: "my_category2"
3410///
3411///   - To enable only categories with a specific tag:
3412///
3413///        disabled_tags: "*"
3414///        enabled_tags: "my_tag"
3415///
3416#[derive(Clone, PartialEq, ::prost::Message)]
3417pub struct TrackEventConfig {
3418    /// Default: []
3419    #[prost(string, repeated, tag="1")]
3420    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3421    /// Default: []
3422    #[prost(string, repeated, tag="2")]
3423    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3424    /// Default: ["slow", "debug"]
3425    #[prost(string, repeated, tag="3")]
3426    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3427    /// Default: []
3428    #[prost(string, repeated, tag="4")]
3429    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3430    /// Default: false (i.e. enabled by default)
3431    #[prost(bool, optional, tag="5")]
3432    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3433    /// Allows to specify a custom unit different than the default (ns).
3434    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3435    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3436    /// 3000 ns = 3 us.
3437    /// Default: 1 (if unset, it should be read as 1).
3438    #[prost(uint64, optional, tag="6")]
3439    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3440    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3441    /// When true, any debug annotations provided as arguments to the
3442    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3443    /// still be emitted even if set to true.
3444    #[prost(bool, optional, tag="7")]
3445    pub filter_debug_annotations: ::core::option::Option<bool>,
3446    /// Default: false (i.e. disabled)
3447    /// When true, the SDK samples and emits the current thread time counter value
3448    /// for each event on the current thread's track. This value represents the
3449    /// total CPU time consumed by that thread since its creation.
3450    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3451    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3452    #[prost(bool, optional, tag="8")]
3453    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3454    /// When enable_thread_time_sampling is true, and this is specified, thread
3455    /// time is sampled only if the elapsed wall time >
3456    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3457    /// Effectively, this means thread time will have a leeway of
3458    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3459    #[prost(uint64, optional, tag="10")]
3460    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3461    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3462    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3463    /// out.
3464    #[prost(bool, optional, tag="9")]
3465    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3466}
3467// End of protos/perfetto/config/track_event/track_event_config.proto
3468
3469// Begin of protos/perfetto/config/data_source_config.proto
3470
3471/// The configuration that is passed to each data source when starting tracing.
3472/// Next id: 141
3473#[derive(Clone, PartialEq, ::prost::Message)]
3474pub struct DataSourceConfig {
3475    /// Data source unique name, e.g., "linux.ftrace". This must match
3476    /// the name passed by the data source when it registers (see
3477    /// RegisterDataSource()).
3478    #[prost(string, optional, tag="1")]
3479    pub name: ::core::option::Option<::prost::alloc::string::String>,
3480    /// The index of the logging buffer where TracePacket(s) will be stored.
3481    /// This field is quite subtle as it has a double semantic:
3482    /// 1) When the config is passed, this field is a 0-based index relative to the
3483    ///     buffer array in the TraceConfig and defines the mapping between data
3484    ///     sources and config. From v54 this is optional because the user can
3485    ///     instead use target_buffer_name.
3486    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3487    ///     producer, it overwrites this field with the global buffer index (which
3488    ///     depends on other tracing sessions active). This tells the producer which
3489    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3490    ///     service always sets the resolved global id, even when using
3491    ///     `target_buffer_name`.
3492    /// In hindsight we should have used two different fields given even in v0 they
3493    /// had a different semantic. But now it's too late as this would be a major
3494    /// protocol breaking change.
3495    #[prost(uint32, optional, tag="2")]
3496    pub target_buffer: ::core::option::Option<u32>,
3497    /// Alternative to |target_buffer|. References a buffer by name (as specified
3498    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3499    /// readable and less error-prone than using buffer indices.
3500    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3501    /// refer to the same buffer, otherwise the service will reject the config.
3502    /// Using both fields allows configs to work with both old and new versions
3503    /// of the tracing service. Introduced in v54.
3504    #[prost(string, optional, tag="11")]
3505    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3506    /// Set by the service to indicate the duration of the trace.
3507    /// DO NOT SET in consumer as this will be overridden by the service.
3508    #[prost(uint32, optional, tag="3")]
3509    pub trace_duration_ms: ::core::option::Option<u32>,
3510    /// If true, |trace_duration_ms| should count also time in suspend. This
3511    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3512    #[prost(bool, optional, tag="122")]
3513    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3514    /// Set by the service to indicate how long it waits after StopDataSource.
3515    /// DO NOT SET in consumer as this will be overridden by the service.
3516    #[prost(uint32, optional, tag="7")]
3517    pub stop_timeout_ms: ::core::option::Option<u32>,
3518    /// Set by the service to indicate whether this tracing session has extra
3519    /// guardrails.
3520    /// DO NOT SET in consumer as this will be overridden by the service.
3521    #[prost(bool, optional, tag="6")]
3522    pub enable_extra_guardrails: ::core::option::Option<bool>,
3523    /// Set by the service to indicate which user initiated this trace.
3524    /// DO NOT SET in consumer as this will be overridden by the service.
3525    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3526    pub session_initiator: ::core::option::Option<i32>,
3527    /// Set by the service to indicate which tracing session the data source
3528    /// belongs to. The intended use case for this is checking if two data sources,
3529    /// one of which produces metadata for the other one, belong to the same trace
3530    /// session and hence should be linked together.
3531    /// This field was introduced in Aug 2018 after Android P.
3532    /// DO NOT SET in consumer as this will be overridden by the service.
3533    #[prost(uint64, optional, tag="4")]
3534    pub tracing_session_id: ::core::option::Option<u64>,
3535    /// How to behave when the producer runs out of space in the shared memory
3536    /// buffer. This is only honored by some data sources (in the SDK, the data
3537    /// sources registered with a configurable buffer exhausted policy).
3538    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3539    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3540    #[prost(message, optional, tag="10")]
3541    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3542    // If specified, the data source requires the tracing service to process
3543    // overwritten packets (patches) using a ProtoVM instance with this config.
3544    // The ProtoVM program is specified at data source registration time through
3545    // the descriptor.
3546
3547    /// TODO(primiano): today when we enable a protovm_config, we actually accept
3548    /// that if N producers advertise M different versions of the same program we
3549    /// will create M instances of that program.
3550    /// To overcome this, we could move the program to the TraceConfig. But doing
3551    /// so would bloat the trace config size too big and create problems to statsd.
3552    /// Once the config store (b/482305876) exists we should move protovm programs
3553    /// onto that.
3554    #[prost(message, optional, tag="12")]
3555    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
3556    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3557    // data-sources and needs to be processed by the traced daemon.
3558
3559    // All data source config fields must be marked as \[lazy=true\]. This prevents
3560    // the proto-to-cpp generator from recursing into those when generating the
3561    // cpp classes and polluting tracing/core with data-source-specific classes.
3562    // Instead they are treated as opaque strings containing raw proto bytes.
3563
3564    /// Data source name: linux.ftrace
3565    #[prost(message, optional, tag="100")]
3566    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3567    /// Data source name: linux.inode_file_map
3568    #[prost(message, optional, tag="102")]
3569    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3570    /// Data source name: linux.process_stats
3571    #[prost(message, optional, tag="103")]
3572    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3573    /// Data source name: linux.sys_stats
3574    #[prost(message, optional, tag="104")]
3575    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3576    /// Data source name: android.heapprofd
3577    /// Introduced in Android 10.
3578    #[prost(message, optional, tag="105")]
3579    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3580    /// Data source name: android.java_hprof
3581    /// Introduced in Android 11.
3582    #[prost(message, optional, tag="110")]
3583    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3584    /// Data source name: android.power
3585    #[prost(message, optional, tag="106")]
3586    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3587    /// Data source name: android.log
3588    #[prost(message, optional, tag="107")]
3589    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3590    /// Data source name: gpu.counters
3591    #[prost(message, optional, tag="108")]
3592    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3593    /// Data source name: android.game_interventions
3594    #[prost(message, optional, tag="116")]
3595    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3596    /// Data source name: android.packages_list
3597    #[prost(message, optional, tag="109")]
3598    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3599    /// Data source name: linux.perf
3600    #[prost(message, optional, tag="111")]
3601    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3602    /// Data source name: vulkan.memory_tracker
3603    #[prost(message, optional, tag="112")]
3604    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3605    /// Data source name: track_event
3606    #[prost(message, optional, tag="113")]
3607    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3608    /// Data source name: android.polled_state
3609    #[prost(message, optional, tag="114")]
3610    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3611    /// Data source name: android.system_property
3612    #[prost(message, optional, tag="118")]
3613    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3614    /// Data source name: android.statsd
3615    #[prost(message, optional, tag="117")]
3616    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3617    /// Data source name: linux.system_info
3618    #[prost(message, optional, tag="119")]
3619    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3620    /// Data source name: linux.frozen_ftrace
3621    #[prost(message, optional, tag="136")]
3622    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3623    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3624    /// avoid proto serialization and de-serialization there because that would
3625    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3626    /// C++ class for it so it can pass around plain C++ objets.
3627    #[prost(message, optional, tag="101")]
3628    pub chrome_config: ::core::option::Option<ChromeConfig>,
3629    /// Data source name: code.v8.dev
3630    #[prost(message, optional, tag="127")]
3631    pub v8_config: ::core::option::Option<V8Config>,
3632    /// If an interceptor is specified here, packets for this data source will be
3633    /// rerouted to the interceptor instead of the main trace buffer. This can be
3634    /// used, for example, to write trace data into ETW or for logging trace points
3635    /// to the console.
3636    ///
3637    /// Note that interceptors are only supported by data sources registered
3638    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3639    /// traced_probes) may not support interception.
3640    #[prost(message, optional, tag="115")]
3641    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3642    /// Data source name: android.network_packets.
3643    /// Introduced in Android 14 (U).
3644    #[prost(message, optional, tag="120")]
3645    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3646    /// Data source name: android.surfaceflinger.layers
3647    #[prost(message, optional, tag="121")]
3648    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3649    /// Data source name: android.surfaceflinger.transactions
3650    #[prost(message, optional, tag="123")]
3651    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3652    /// Data source name: android.sdk_sysprop_guard
3653    /// Introduced in Android 14 (U) QPR1.
3654    #[prost(message, optional, tag="124")]
3655    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3656    /// Data source name: windows.etw
3657    #[prost(message, optional, tag="125")]
3658    pub etw_config: ::core::option::Option<EtwConfig>,
3659    /// Data source name: android.protolog
3660    #[prost(message, optional, tag="126")]
3661    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3662    /// Data source name: android.input.inputevent
3663    #[prost(message, optional, tag="128")]
3664    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3665    /// Data source name: android.pixel.modem
3666    #[prost(message, optional, tag="129")]
3667    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3668    /// Data source name: android.windowmanager
3669    #[prost(message, optional, tag="130")]
3670    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3671    /// Data source name: org.chromium.system_metrics
3672    #[prost(message, optional, tag="131")]
3673    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3674    /// Data source name: android.kernel_wakelocks
3675    #[prost(message, optional, tag="132")]
3676    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3677    /// Data source name: gpu.renderstages
3678    #[prost(message, optional, tag="133")]
3679    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3680    /// Data source name: org.chromium.histogram_samples
3681    #[prost(message, optional, tag="134")]
3682    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3683    /// Data source name: android.app_wakelocks
3684    #[prost(message, optional, tag="135")]
3685    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3686    /// Data source name: android.cpu_per_uid
3687    #[prost(message, optional, tag="137")]
3688    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3689    /// Data source name: android.user_list
3690    #[prost(message, optional, tag="138")]
3691    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3692    /// Data source name: android.inputmethod
3693    #[prost(message, optional, tag="139")]
3694    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
3695    /// Data source name: android.aflags
3696    #[prost(message, optional, tag="140")]
3697    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
3698    /// Data source name: qnx.kernel
3699    #[prost(message, optional, tag="150")]
3700    pub qnx_config: ::core::option::Option<QnxConfig>,
3701    /// This is a fallback mechanism to send a free-form text config to the
3702    /// producer. In theory this should never be needed. All the code that
3703    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3704    /// the trace config proto and propagate unknown fields. However, if anything
3705    /// in the pipeline (client or backend) ends up breaking this forward compat
3706    /// plan, this field will become the escape hatch to allow future data sources
3707    /// to get some meaningful configuration.
3708    #[prost(string, optional, tag="1000")]
3709    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3710    /// This field is only used for testing.
3711    #[prost(message, optional, tag="1001")]
3712    pub for_testing: ::core::option::Option<TestConfig>,
3713}
3714/// Nested message and enum types in `DataSourceConfig`.
3715pub mod data_source_config {
3716    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3717    #[repr(i32)]
3718    pub enum SessionInitiator {
3719        Unspecified = 0,
3720        /// This trace was initiated from a trusted system app has DUMP and
3721        /// USAGE_STATS permission. This system app is expected to not expose the
3722        /// trace to the user of the device.
3723        /// This is determined by checking the UID initiating the trace.
3724        TrustedSystem = 1,
3725    }
3726    impl SessionInitiator {
3727        /// String value of the enum field names used in the ProtoBuf definition.
3728        ///
3729        /// The values are not transformed in any way and thus are considered stable
3730        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3731        pub fn as_str_name(&self) -> &'static str {
3732            match self {
3733                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3734                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3735            }
3736        }
3737    }
3738    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3739    #[repr(i32)]
3740    pub enum BufferExhaustedPolicy {
3741        /// The data source will use its default buffer exhausted policy, specified
3742        /// by the code when the data source is registered.
3743        BufferExhaustedUnspecified = 0,
3744        /// The data source will drop packets when there's no space in the shared
3745        /// memory buffer.
3746        BufferExhaustedDrop = 1,
3747        /// The data source will wait when there's no space in the shared memory
3748        /// buffer. If there's still not space, after a few seconds, the whole
3749        /// producer process will be aborted.
3750        BufferExhaustedStallThenAbort = 2,
3751        /// The data source will wait when there's no space in the shared memory
3752        /// buffer.  If there's still not space, after a few seconds, the data source
3753        /// will drop packets.
3754        BufferExhaustedStallThenDrop = 3,
3755    }
3756    impl BufferExhaustedPolicy {
3757        /// String value of the enum field names used in the ProtoBuf definition.
3758        ///
3759        /// The values are not transformed in any way and thus are considered stable
3760        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3761        pub fn as_str_name(&self) -> &'static str {
3762            match self {
3763                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3764                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3765                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3766                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3767            }
3768        }
3769    }
3770}
3771// End of protos/perfetto/config/data_source_config.proto
3772
3773// Begin of protos/perfetto/config/trace_config.proto
3774
3775/// The overall config that is used when starting a new tracing session through
3776/// ProducerPort::StartTracing().
3777/// It contains the general config for the logging buffer(s) and the configs for
3778/// all the data source being enabled.
3779///
3780/// Next id: 47.
3781#[derive(Clone, PartialEq, ::prost::Message)]
3782pub struct TraceConfig {
3783    #[prost(message, repeated, tag="1")]
3784    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3785    #[prost(message, repeated, tag="2")]
3786    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3787    #[prost(message, optional, tag="20")]
3788    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3789    /// If specified, the trace will be stopped |duration_ms| after starting.
3790    /// This does *not* count the time the system is suspended, so we will run
3791    /// for duration_ms of system activity, not wall time.
3792    ///
3793    /// However in case of traces with triggers, see
3794    /// TriggerConfig.trigger_timeout_ms instead.
3795    #[prost(uint32, optional, tag="3")]
3796    pub duration_ms: ::core::option::Option<u32>,
3797    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3798    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3799    /// Linux/Android, no-op on other platforms. This is used when dealing with
3800    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3801    /// wall-time, making them more likely to hit device reboots (and hence loss).
3802    /// This option also changes consistently the semantic of
3803    /// TriggerConfig.stop_delay_ms.
3804    #[prost(bool, optional, tag="36")]
3805    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3806    /// This is set when --dropbox is passed to the Perfetto command line client
3807    /// and enables guardrails that limit resource usage for traces requested
3808    /// by statsd.
3809    #[prost(bool, optional, tag="4")]
3810    pub enable_extra_guardrails: ::core::option::Option<bool>,
3811    /// Reject producers that are not running under the same UID as the tracing
3812    /// service.
3813    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3814    pub lockdown_mode: ::core::option::Option<i32>,
3815    #[prost(message, repeated, tag="6")]
3816    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3817    /// Statsd-specific metadata.
3818    #[prost(message, optional, tag="7")]
3819    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3820    /// When true && |output_path| is empty, the EnableTracing() request must
3821    /// provide a file descriptor. The service will then periodically read packets
3822    /// out of the trace buffer and store it into the passed file.
3823    /// If |output_path| is not empty no fd should be passed, the service
3824    /// will create a new file and write into that (see comment below).
3825    #[prost(bool, optional, tag="8")]
3826    pub write_into_file: ::core::option::Option<bool>,
3827    /// This must point to a non-existing file. If the file exists the service
3828    /// will NOT overwrite and will fail instead as a security precaution.
3829    /// On Android, when this is used with the system traced, the path must be
3830    /// within /data/misc/perfetto-traces/ or the trace will fail.
3831    /// This option has been introduced in Android R. Before R write_into_file
3832    /// can be used only with the "pass a file descriptor over IPC" mode.
3833    #[prost(string, optional, tag="29")]
3834    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3835    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3836    /// enforced (i.e. smaller values are ignored).
3837    #[prost(uint32, optional, tag="9")]
3838    pub file_write_period_ms: ::core::option::Option<u32>,
3839    /// Optional. When non zero the periodic write stops once at most X bytes
3840    /// have been written into the file. Tracing is disabled when this limit is
3841    /// reached, even if |duration_ms| has not been reached yet.
3842    #[prost(uint64, optional, tag="10")]
3843    pub max_file_size_bytes: ::core::option::Option<u64>,
3844    #[prost(message, optional, tag="11")]
3845    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3846    /// When true, data sources are not started until an explicit call to
3847    /// StartTracing() on the consumer port. This is to support early
3848    /// initialization and fast trace triggering. This can be used only when the
3849    /// Consumer explicitly triggers the StartTracing() method.
3850    /// This should not be used in a remote trace config via statsd, doing so will
3851    /// result in a hung trace session.
3852    #[prost(bool, optional, tag="12")]
3853    pub deferred_start: ::core::option::Option<bool>,
3854    /// When set, it periodically issues a Flush() to all data source, forcing them
3855    /// to commit their data into the tracing service. This can be used for
3856    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3857    /// events in the trace in windows of X ms.
3858    ///
3859    /// Warning: Perfetto automatically handles periodic flushing so in most
3860    /// scenarios setting this field is not needed. High frequency flushing can
3861    /// significantly impact performance.
3862    #[prost(uint32, optional, tag="13")]
3863    pub flush_period_ms: ::core::option::Option<u32>,
3864    /// Wait for this long for producers to acknowledge flush requests.
3865    /// Default 5s.
3866    #[prost(uint32, optional, tag="14")]
3867    pub flush_timeout_ms: ::core::option::Option<u32>,
3868    /// Wait for this long for producers to acknowledge stop requests.
3869    /// Default 5s.
3870    #[prost(uint32, optional, tag="23")]
3871    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3872    /// Android-only. If set, sends an intent to the Traceur system app when the
3873    /// trace ends to notify it about the trace readiness.
3874    #[prost(bool, optional, tag="16")]
3875    pub notify_traceur: ::core::option::Option<bool>,
3876    /// This field was introduced in Android S.
3877    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3878    /// for being attached to a bugreport. This field effectively acts as a z-index
3879    /// for bugreports. When Android's dumpstate runs perfetto
3880    /// --save-for-bugreport, traced will pick the tracing session with the highest
3881    /// score (score <= 0 is ignored) and:
3882    /// On Android S, T:  will steal its contents, save the trace into
3883    ///      a known path and stop prematurely.
3884    /// On Android U+: will create a read-only snapshot and save that into a known
3885    ///      path, without stoppin the original tracing session.
3886    /// When this field is set the tracing session becomes eligible to be cloned
3887    /// by other UIDs.
3888    #[prost(int32, optional, tag="30")]
3889    pub bugreport_score: ::core::option::Option<i32>,
3890    /// When set, defines name of the file that will be saved under
3891    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3892    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3893    /// starting from the highest `bugreport_score`.
3894    /// Introduced in v42 / Android V.
3895    #[prost(string, optional, tag="38")]
3896    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3897    #[prost(message, optional, tag="17")]
3898    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3899    /// When this is non-empty the perfetto command line tool will ignore the rest
3900    /// of this TraceConfig and instead connect to the perfetto service as a
3901    /// producer and send these triggers, potentially stopping or starting traces
3902    /// that were previous configured to use a TriggerConfig.
3903    #[prost(string, repeated, tag="18")]
3904    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3905    #[prost(message, optional, tag="21")]
3906    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3907    /// No longer needed as we unconditionally allow tracing on user builds.
3908    #[deprecated]
3909    #[prost(bool, optional, tag="19")]
3910    pub allow_user_build_tracing: ::core::option::Option<bool>,
3911    /// If set the tracing service will ensure there is at most one tracing session
3912    /// with this key.
3913    #[prost(string, optional, tag="22")]
3914    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3915    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3916    pub compression_type: ::core::option::Option<i32>,
3917    #[prost(message, optional, tag="25")]
3918    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3919    /// Android-only. Not for general use. If specified, sets the logging to statsd
3920    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3921    /// this to enabled (if not explicitly set in the config) when specifying
3922    /// --upload.
3923    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3924    pub statsd_logging: ::core::option::Option<i32>,
3925    /// An identifier clients can use to tie this trace to other logging.
3926    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3927    /// Trace UUID. If this field is set, the tracing service will respect the
3928    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3929    /// gap-less snapshotting is not used.
3930    #[deprecated]
3931    #[prost(int64, optional, tag="27")]
3932    pub trace_uuid_msb: ::core::option::Option<i64>,
3933    #[deprecated]
3934    #[prost(int64, optional, tag="28")]
3935    pub trace_uuid_lsb: ::core::option::Option<i64>,
3936    #[prost(message, optional, tag="33")]
3937    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3938    #[prost(message, optional, tag="34")]
3939    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3940    #[prost(message, optional, tag="35")]
3941    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3942    #[prost(message, repeated, tag="39")]
3943    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3944    /// Priority boost to be applied to the traced process, when the session is
3945    /// running.
3946    #[prost(message, optional, tag="40")]
3947    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3948    /// When set to a value > 0, this tracing session will be started in
3949    /// "exclusive mode". This has the following semantics:
3950    /// - It can only be set by shell or root users.
3951    /// - A new exclusive session will only be started if its priority is strictly
3952    ///    higher than any other active tracing session.
3953    /// - If a new exclusive session is started, all other existing tracing
3954    ///    sessions (exclusive or not) are aborted.
3955    /// - While an exclusive session is active, any new non-exclusive session (or
3956    ///    any exclusive session with a lower or equal priority) will be rejected.
3957    ///
3958    /// Introduced in: perfetto v52.
3959    /// Supported on: Android 25Q3+.
3960    #[prost(uint32, optional, tag="41")]
3961    pub exclusive_prio: ::core::option::Option<u32>,
3962    /// Configures how the service should handle flushing data from producers
3963    /// before periodically writing the trace into the output file.
3964    /// Only applicable when |write_into_file| is true.
3965    ///
3966    /// By default, if |write_into_file| is set, the service periodically issues
3967    /// a Flush() to all data sources before writing buffers into the file.
3968    /// This ensures the file always contains the latest available data.
3969    ///
3970    /// Introduced in: perfetto v54.
3971    /// Supported on: Android 26Q1+.
3972    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
3973    pub write_flush_mode: ::core::option::Option<i32>,
3974    /// Whether to sync the output file to storage after each periodic write pass.
3975    /// Only applicable when |write_into_file| is true.
3976    ///
3977    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
3978    /// sync to storage on every write.
3979    ///
3980    /// Introduced in: perfetto v54.
3981    /// Supported on: Android 26Q1+.
3982    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
3983    pub fflush_post_write: ::core::option::Option<i32>,
3984    /// When true, data sources in remote producers (machines connected via
3985    /// traced_relay) will be matched by default. When false (the default), data
3986    /// sources only match the host machine. In either case, an explicit
3987    /// |DataSource.machine_name_filter| takes priority.
3988    ///
3989    /// NB: perfetto versions before v54 do not have this option and match across
3990    /// machines by default. To be compatible across this version boundary, either
3991    /// set this field to true, or set an explicit machine_name_filter on all data
3992    /// sources.
3993    ///
3994    /// Introduced in: perfetto v54.
3995    #[prost(bool, optional, tag="43")]
3996    pub trace_all_machines: ::core::option::Option<bool>,
3997    #[prost(message, repeated, tag="46")]
3998    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
3999}
4000/// Nested message and enum types in `TraceConfig`.
4001pub mod trace_config {
4002    #[derive(Clone, PartialEq, ::prost::Message)]
4003    pub struct BufferConfig {
4004        #[prost(uint32, optional, tag="1")]
4005        pub size_kb: ::core::option::Option<u32>,
4006        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
4007        pub fill_policy: ::core::option::Option<i32>,
4008        /// When true the buffer is moved (rather than copied) onto the cloned
4009        /// session, and an empty buffer of the same size is allocated in the source
4010        /// tracing session. This feature will likely get deprecated in the future.
4011        /// It been introduced mainly to support the surfaceflinger snapshot dump
4012        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
4013        /// that case we don't want to retain another in-memory copy of the buffer.
4014        #[prost(bool, optional, tag="5")]
4015        pub transfer_on_clone: ::core::option::Option<bool>,
4016        /// Used in conjunction with transfer_on_clone. When true the buffer is
4017        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
4018        /// that if the data source took too long to write the data in a previous
4019        /// clone-related flush, we don't end up with a mixture of leftovers from
4020        /// the previous write and new data.
4021        #[prost(bool, optional, tag="6")]
4022        pub clear_before_clone: ::core::option::Option<bool>,
4023        /// Optional name for this buffer. If set, data sources can reference this
4024        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
4025        /// using the buffer index. Buffer names must be unique within a tracing
4026        /// session. This provides a more human-readable and less error-prone way to
4027        /// configure which buffer a data source writes to.
4028        #[prost(string, optional, tag="7")]
4029        pub name: ::core::option::Option<::prost::alloc::string::String>,
4030        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
4031        pub experimental_mode: ::core::option::Option<i32>,
4032    }
4033    /// Nested message and enum types in `BufferConfig`.
4034    pub mod buffer_config {
4035        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4036        #[repr(i32)]
4037        pub enum FillPolicy {
4038            Unspecified = 0,
4039            /// Default behavior. The buffer operates as a conventional ring buffer.
4040            /// If the writer is faster than the reader (or if the reader reads only
4041            /// after tracing is stopped) newly written packets will overwrite old
4042            /// packets.
4043            RingBuffer = 1,
4044            /// Behaves like RING_BUFFER as long as there is space in the buffer or
4045            /// the reader catches up with the writer. As soon as the writer hits
4046            /// an unread chunk, it stops accepting new data in the buffer.
4047            Discard = 2,
4048        }
4049        impl FillPolicy {
4050            /// String value of the enum field names used in the ProtoBuf definition.
4051            ///
4052            /// The values are not transformed in any way and thus are considered stable
4053            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4054            pub fn as_str_name(&self) -> &'static str {
4055                match self {
4056                    FillPolicy::Unspecified => "UNSPECIFIED",
4057                    FillPolicy::RingBuffer => "RING_BUFFER",
4058                    FillPolicy::Discard => "DISCARD",
4059                }
4060            }
4061        }
4062        /// When true, uses the experimental TraceBufferV2 implementation for this
4063        /// buffer. This is for testing purposes only and may be removed in future
4064        /// versions.
4065        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4066        #[repr(i32)]
4067        pub enum ExperimentalMode {
4068            /// Use the default V1 implementation.
4069            ModeUnspecified = 0,
4070            /// Use TraceBufferV2.
4071            TraceBufferV2 = 1,
4072            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
4073            /// but only V1 data is returned. Comparison stats are reported to
4074            /// validate V2 returns equivalent data.
4075            TraceBufferV2ShadowMode = 2,
4076        }
4077        impl ExperimentalMode {
4078            /// String value of the enum field names used in the ProtoBuf definition.
4079            ///
4080            /// The values are not transformed in any way and thus are considered stable
4081            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4082            pub fn as_str_name(&self) -> &'static str {
4083                match self {
4084                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
4085                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
4086                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
4087                }
4088            }
4089        }
4090    }
4091    #[derive(Clone, PartialEq, ::prost::Message)]
4092    pub struct DataSource {
4093        /// Filters and data-source specific config. It contains also the unique name
4094        /// of the data source, the one passed in the  DataSourceDescriptor when they
4095        /// register on the service.
4096        #[prost(message, optional, tag="1")]
4097        pub config: ::core::option::Option<super::DataSourceConfig>,
4098        /// Optional. If multiple producers (~processes) expose the same data source
4099        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
4100        /// the data source is enabled only for producers whose names match any of
4101        /// the filters.
4102        /// |producer_name_filter| has to be an exact match, while
4103        /// |producer_name_regex_filter| is a regular expression.
4104        /// This allows to enable a data source only for specific processes.
4105        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
4106        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
4107        #[prost(string, repeated, tag="2")]
4108        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4109        #[prost(string, repeated, tag="3")]
4110        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4111        /// Filter by machine names. The name of a machine is determined by the
4112        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
4113        /// variable is not set then the
4114        /// persist.traced_relay.machine_name system property is used. If the
4115        /// sysprop isn't set or not in an Android system, then the machine name by
4116        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
4117        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
4118        /// to the host machine, which is the machine running traced.
4119        #[prost(string, repeated, tag="4")]
4120        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4121    }
4122    /// Config for disabling builtin data sources in the tracing service.
4123    #[derive(Clone, PartialEq, ::prost::Message)]
4124    pub struct BuiltinDataSource {
4125        /// Disable emitting clock timestamps into the trace.
4126        #[prost(bool, optional, tag="1")]
4127        pub disable_clock_snapshotting: ::core::option::Option<bool>,
4128        /// Disable echoing the original trace config in the trace.
4129        #[prost(bool, optional, tag="2")]
4130        pub disable_trace_config: ::core::option::Option<bool>,
4131        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
4132        #[prost(bool, optional, tag="3")]
4133        pub disable_system_info: ::core::option::Option<bool>,
4134        /// Disable emitting events for data-source state changes (e.g. the marker
4135        /// for all data sources having ACKed the start of the trace).
4136        #[prost(bool, optional, tag="4")]
4137        pub disable_service_events: ::core::option::Option<bool>,
4138        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
4139        /// also ClockSnapshot's primary_trace_clock. The configured value is written
4140        /// into the trace as part of the ClockSnapshots emitted by the service.
4141        /// Trace processor will attempt to translate packet/event timestamps from
4142        /// various data sources (and their chosen clock domains) to this domain
4143        /// during import. Added in Android R.
4144        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
4145        pub primary_trace_clock: ::core::option::Option<i32>,
4146        /// Time interval in between snapshotting of sync markers, clock snapshots,
4147        /// stats, and other periodic service-emitted events. Note that the service
4148        /// only keeps track of the first and the most recent snapshot until
4149        /// ReadBuffers() is called.
4150        #[prost(uint32, optional, tag="6")]
4151        pub snapshot_interval_ms: ::core::option::Option<u32>,
4152        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
4153        /// clock should be used for periodic snapshots of service-emitted events.
4154        /// This means, if a snapshot *should* have happened during suspend, it will
4155        /// happen immediately after the device resumes.
4156        ///
4157        /// Choosing a clock like this is done on best-effort basis; not all
4158        /// platforms (e.g. Windows) expose a clock which can be used for periodic
4159        /// tasks counting suspend. If such a clock is not available, the service
4160        /// falls back to the best-available alternative.
4161        ///
4162        /// Introduced in Android S.
4163        /// TODO(lalitm): deprecate this in T and make this the default if nothing
4164        /// crashes in S.
4165        #[prost(bool, optional, tag="7")]
4166        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
4167        /// Disables the reporting of per-trace-writer histograms in TraceStats.
4168        #[prost(bool, optional, tag="8")]
4169        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
4170        /// Disable emitting extension descriptors into the trace.
4171        #[prost(bool, optional, tag="9")]
4172        pub disable_extension_descriptors: ::core::option::Option<bool>,
4173    }
4174    #[derive(Clone, PartialEq, ::prost::Message)]
4175    pub struct ProducerConfig {
4176        /// Identifies the producer for which this config is for.
4177        #[prost(string, optional, tag="1")]
4178        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
4179        /// Specifies the preferred size of the shared memory buffer. If the size is
4180        /// larger than the max size, the max will be used. If it is smaller than
4181        /// the page size or doesn't fit pages evenly into it, it will fall back to
4182        /// the size specified by the producer or finally the default shared memory
4183        /// size.
4184        #[prost(uint32, optional, tag="2")]
4185        pub shm_size_kb: ::core::option::Option<u32>,
4186        /// Specifies the preferred size of each page in the shared memory buffer.
4187        /// Must be an integer multiple of 4K.
4188        #[prost(uint32, optional, tag="3")]
4189        pub page_size_kb: ::core::option::Option<u32>,
4190    }
4191    /// Contains statsd-specific metadata about an alert associated with the trace.
4192    #[derive(Clone, PartialEq, ::prost::Message)]
4193    pub struct StatsdMetadata {
4194        /// The identifier of the alert which triggered this trace.
4195        #[prost(int64, optional, tag="1")]
4196        pub triggering_alert_id: ::core::option::Option<i64>,
4197        /// The uid which registered the triggering configuration with statsd.
4198        #[prost(int32, optional, tag="2")]
4199        pub triggering_config_uid: ::core::option::Option<i32>,
4200        /// The identifier of the config which triggered the alert.
4201        #[prost(int64, optional, tag="3")]
4202        pub triggering_config_id: ::core::option::Option<i64>,
4203        /// The identifier of the subscription which triggered this trace.
4204        #[prost(int64, optional, tag="4")]
4205        pub triggering_subscription_id: ::core::option::Option<i64>,
4206    }
4207    /// Contains flags which override the default values of the guardrails inside
4208    /// Perfetto.
4209    #[derive(Clone, PartialEq, ::prost::Message)]
4210    pub struct GuardrailOverrides {
4211        /// Override the default limit (in bytes) for uploading data to server within
4212        /// a 24 hour period.
4213        /// On R-, this override only affected userdebug builds. Since S, it also
4214        /// affects user builds.
4215        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
4216        /// was removed from Perfetto.
4217        #[deprecated]
4218        #[prost(uint64, optional, tag="1")]
4219        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
4220        /// Overrides the guardrail for maximum trace buffer size.
4221        /// Available on U+
4222        #[prost(uint32, optional, tag="2")]
4223        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
4224    }
4225    /// Triggers allow producers to start or stop the tracing session when an event
4226    /// occurs.
4227    ///
4228    /// For example if we are tracing probabilistically, most traces will be
4229    /// uninteresting. Triggers allow us to keep only the interesting ones such as
4230    /// those traces during which the device temperature reached a certain
4231    /// threshold. In this case the producer can activate a trigger to keep
4232    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
4233    /// (START_TRACING) because it knows something is about to happen.
4234    #[derive(Clone, PartialEq, ::prost::Message)]
4235    pub struct TriggerConfig {
4236        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
4237        pub trigger_mode: ::core::option::Option<i32>,
4238        /// This flag is really a workaround for b/274931668. This is needed only
4239        /// when deploying configs to different versions of the tracing service.
4240        /// When this is set to true this has the same effect of setting trigger_mode
4241        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
4242        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
4243        /// versions of Android and fall back to STOP_TRACING on older versions where
4244        /// CLONE_SNAPSHOT did not exist.
4245        /// When using this flag, trigger_mode must be set to STOP_TRACING.
4246        #[prost(bool, optional, tag="5")]
4247        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
4248        /// A list of triggers which are related to this configuration. If ANY
4249        /// trigger is seen then an action will be performed based on |trigger_mode|.
4250        #[prost(message, repeated, tag="2")]
4251        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
4252        /// Required and must be positive if a TriggerConfig is specified. This is
4253        /// how long this TraceConfig should wait for a trigger to arrive. After this
4254        /// period of time if no trigger is seen the TracingSession will be cleaned
4255        /// up.
4256        #[prost(uint32, optional, tag="3")]
4257        pub trigger_timeout_ms: ::core::option::Option<u32>,
4258    }
4259    /// Nested message and enum types in `TriggerConfig`.
4260    pub mod trigger_config {
4261        #[derive(Clone, PartialEq, ::prost::Message)]
4262        pub struct Trigger {
4263            /// The producer must specify this name to activate the trigger.
4264            #[prost(string, optional, tag="1")]
4265            pub name: ::core::option::Option<::prost::alloc::string::String>,
4266            /// An std::regex that will match the producer that can activate this
4267            /// trigger. This is optional. If unset any producers can activate this
4268            /// trigger.
4269            #[prost(string, optional, tag="2")]
4270            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
4271            /// After a trigger is received either in START_TRACING or STOP_TRACING
4272            /// mode then the trace will end |stop_delay_ms| after triggering.
4273            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
4274            /// snapshot.
4275            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
4276            /// based on wall-clock, counting also time in suspend.
4277            #[prost(uint32, optional, tag="3")]
4278            pub stop_delay_ms: ::core::option::Option<u32>,
4279            /// Limits the number of traces this trigger can start/stop in a rolling
4280            /// 24 hour window. If this field is unset or zero, no limit is applied and
4281            /// activiation of this trigger *always* starts/stops the trace.
4282            #[prost(uint32, optional, tag="4")]
4283            pub max_per_24_h: ::core::option::Option<u32>,
4284            /// A value between 0 and 1 which encodes the probability of skipping a
4285            /// trigger with this name. This is useful for reducing the probability
4286            /// of high-frequency triggers from dominating trace finaization. If this
4287            /// field is unset or zero, the trigger will *never* be skipped. If this
4288            /// field is greater than or equal to 1, this trigger will *always* be
4289            /// skipped i.e. it will be as if this trigger was never included in the
4290            /// first place.
4291            /// This probability check is applied *before* any other limits. For
4292            /// example, if |max_per_24_h| is also set, first we will check if the
4293            /// probability bar is met and only then will we check the |max_per_24_h|
4294            /// limit.
4295            #[prost(double, optional, tag="5")]
4296            pub skip_probability: ::core::option::Option<f64>,
4297        }
4298        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4299        #[repr(i32)]
4300        pub enum TriggerMode {
4301            Unspecified = 0,
4302            /// When this mode is chosen, data sources are not started until one of the
4303            /// |triggers| are received. This supports early initialization and fast
4304            /// starting of the tracing system. On triggering, the session will then
4305            /// record for |stop_delay_ms|. However if no trigger is seen
4306            /// after |trigger_timeout_ms| the session will be stopped and no data will
4307            /// be returned.
4308            StartTracing = 1,
4309            /// When this mode is chosen, the session will be started via the normal
4310            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4311            /// the session will be stopped after |trigger_timeout_ms| and no data will
4312            /// be returned. However if triggered the trace will stop after
4313            /// |stop_delay_ms| and any data in the buffer will be returned to the
4314            /// consumer.
4315            StopTracing = 2,
4316            /// When this mode is chosen, this causes a snapshot of the current tracing
4317            /// session to be created after |stop_delay_ms| while the current tracing
4318            /// session continues undisturbed (% an extra flush). This mode can be
4319            /// used only when the tracing session is handled by the "perfetto" cmdline
4320            /// client (which is true in 90% of cases). Part of the business logic
4321            /// necessary for this behavior, and ensuing file handling, lives in
4322            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4323            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4324            /// consumer is supposed to call CloneSession() itself after the event.
4325            /// Use use_clone_snapshot_if_available=true when targeting older versions
4326            /// of perfetto.
4327            CloneSnapshot = 4,
4328        }
4329        impl TriggerMode {
4330            /// String value of the enum field names used in the ProtoBuf definition.
4331            ///
4332            /// The values are not transformed in any way and thus are considered stable
4333            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4334            pub fn as_str_name(&self) -> &'static str {
4335                match self {
4336                    TriggerMode::Unspecified => "UNSPECIFIED",
4337                    TriggerMode::StartTracing => "START_TRACING",
4338                    TriggerMode::StopTracing => "STOP_TRACING",
4339                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4340                }
4341            }
4342        }
4343    }
4344    /// Configuration for trace contents that reference earlier trace data. For
4345    /// example, a data source might intern strings, and emit packets containing
4346    /// {interned id : string} pairs. Future packets from that data source can then
4347    /// use the interned ids instead of duplicating the raw string contents. The
4348    /// trace parser will then need to use that interning table to fully interpret
4349    /// the rest of the trace.
4350    #[derive(Clone, PartialEq, ::prost::Message)]
4351    pub struct IncrementalStateConfig {
4352        /// If nonzero, notify eligible data sources to clear their incremental state
4353        /// periodically, with the given period. The notification is sent only to
4354        /// data sources that have |handles_incremental_state_clear| set in their
4355        /// DataSourceDescriptor. The notification requests that the data source
4356        /// stops referring to past trace contents. This is particularly useful when
4357        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4358        /// trace data.
4359        ///
4360        /// Warning: this time-based global clearing is likely to be removed in the
4361        /// future, to be replaced with a smarter way of sending the notifications
4362        /// only when necessary.
4363        #[prost(uint32, optional, tag="1")]
4364        pub clear_period_ms: ::core::option::Option<u32>,
4365    }
4366    /// Android-only. Not for general use. If set, saves the trace into an
4367    /// incident. This field is read by perfetto_cmd, rather than the tracing
4368    /// service. This field must be set when passing the --upload flag to
4369    /// perfetto_cmd.
4370    ///
4371    /// In this message, either:
4372    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4373    ///     must be set.
4374    ///   * |skip_incidentd| must be explicitly set to true.
4375    #[derive(Clone, PartialEq, ::prost::Message)]
4376    pub struct IncidentReportConfig {
4377        #[prost(string, optional, tag="1")]
4378        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4379        #[prost(string, optional, tag="2")]
4380        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4381        /// Level of filtering in the requested incident. See |Destination| in
4382        /// frameworks/base/core/proto/android/privacy.proto.
4383        #[prost(int32, optional, tag="3")]
4384        pub privacy_level: ::core::option::Option<i32>,
4385        /// If true, then skips saving the trace to incidentd.
4386        ///
4387        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4388        /// or when we explicitly don't want traces to go to incidentd even when they
4389        /// usually would (e.g. configs deployed using statsd but only used for
4390        /// inclusion in bugreports using |bugreport_score|).
4391        ///
4392        /// The motivation for having this flag, instead of just not setting
4393        /// |incident_report_config|, is prevent accidents where
4394        /// |incident_report_config| is omitted by mistake.
4395        #[prost(bool, optional, tag="5")]
4396        pub skip_incidentd: ::core::option::Option<bool>,
4397        /// If true, do not write the trace into dropbox (i.e. incident only).
4398        /// Otherwise, write to both dropbox and incident.
4399        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4400        #[deprecated]
4401        #[prost(bool, optional, tag="4")]
4402        pub skip_dropbox: ::core::option::Option<bool>,
4403    }
4404    /// When set applies a post-filter to the trace contents using the filter
4405    /// provided. The filter is applied at ReadBuffers() time and works both in the
4406    /// case of IPC readback and write_into_file. This filter can be generated
4407    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4408    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4409    /// design.
4410    ///
4411    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4412    /// Android T with a different field number. Updated in Android U with a new
4413    /// bytecode version which supports string filtering.
4414    ///
4415    /// =========================
4416    /// Filter bytecode.
4417    /// =========================
4418    #[derive(Clone, PartialEq, ::prost::Message)]
4419    pub struct TraceFilter {
4420        /// The bytecode as implemented in Android T.
4421        #[prost(bytes="vec", optional, tag="1")]
4422        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4423        /// The bytecode as implemented in Android U. Adds support for string
4424        /// filtering.
4425        #[prost(bytes="vec", optional, tag="2")]
4426        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4427        #[prost(message, optional, tag="3")]
4428        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4429        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4430        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4431        /// versions ignore this field; new versions apply it.
4432        ///
4433        /// The motivation for this is that adding new opcodes in a backwards
4434        /// compatible way while also minimizing config size is hard. Instead, the
4435        /// overlay mechanism allows us to "patch" specific fields in the original
4436        /// bytecode_v2 with new semantics.
4437        ///
4438        /// See RFC 0011-subset-string-filter-rules.md for more info.
4439        ///
4440        /// Note:
4441        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4442        /// markers), this overlay uses a triplet format with explicit indices:
4443        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4444        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4445        /// Entries must be sorted by (msg_index, field_id).
4446        ///
4447        /// The parser processes bytecode_v2 and this overlay simultaneously:
4448        ///   - any field not mentioned in the overlay is parsed as usual
4449        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4450        ///     with its overlay value
4451        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4452        ///     overlay, the bytecode_v2 value is ignored.
4453        ///
4454        /// Note: despite the name, this was broken in v54 (the overlay was not
4455        /// passed through to the bytecode parser). Only works in v55+.
4456        #[prost(bytes="vec", optional, tag="4")]
4457        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4458        /// String filter chain for Perfetto v54+. Rules in this chain either
4459        /// overwrite rules in string_filter_chain (if the name matches) or are
4460        /// appended (if the name doesn't match). This allows modifying existing
4461        /// rules (e.g., changing policy) without duplicating the entire chain.
4462        /// Rules without a name are always appended.
4463        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4464        /// Introduced in: Perfetto v54.
4465        #[prost(message, optional, tag="5")]
4466        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4467    }
4468    /// Nested message and enum types in `TraceFilter`.
4469    pub mod trace_filter {
4470        /// A rule specifies how strings should be filtered.
4471        #[derive(Clone, PartialEq, ::prost::Message)]
4472        pub struct StringFilterRule {
4473            /// The policy (i.e. algorithm) dictating how strings matching this rule
4474            /// should be handled.
4475            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4476            pub policy: ::core::option::Option<i32>,
4477            /// The regex pattern used to match against each string.
4478            #[prost(string, optional, tag="2")]
4479            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4480            /// The string which should appear after the tgid in atrace tracepoint
4481            /// strings.
4482            #[prost(string, optional, tag="3")]
4483            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4484            /// Optional name for the rule. When merging chains (e.g. via
4485            /// string_filter_chain_v54), rules with matching names in the newer chain
4486            /// will overwrite rules in the base chain. Rules without a name (empty or
4487            /// unset) are always treated as distinct and will be appended.
4488            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4489            /// Introduced in: Perfetto v54.
4490            #[prost(string, optional, tag="4")]
4491            pub name: ::core::option::Option<::prost::alloc::string::String>,
4492            /// The semantic types this rule applies to.
4493            ///
4494            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
4495            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
4496            /// - If non-empty, the rule applies only to fields whose semantic type
4497            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
4498            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
4499            ///
4500            /// Examples:
4501            ///    semantic_type: []           -> matches only UNSPECIFIED fields
4502            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
4503            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
4504            ///
4505            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4506            /// Introduced in: Perfetto v54.
4507            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
4508            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
4509        }
4510        /// A chain is a list of rules which string will be sequentially checked
4511        /// against.
4512        #[derive(Clone, PartialEq, ::prost::Message)]
4513        pub struct StringFilterChain {
4514            #[prost(message, repeated, tag="1")]
4515            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4516        }
4517        // =========================
4518        // String filtering
4519        // =========================
4520
4521        // The principles and terminology of string filtering is heavily inspired by
4522        // iptables. A "rule" decide how strings should be filtered. Each rule
4523        // contains a "policy" which indicates the algorithm to use for filtering.
4524        // A "chain" is a list of rules which will be sequentially checked against
4525        // each string.
4526        //
4527        // The first rule which applies to the string terminates filtering for that
4528        // string. If no rules apply, the string is left unchanged.
4529
4530        /// A policy specifies which algorithm should be used for filtering the
4531        /// string.
4532        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4533        #[repr(i32)]
4534        pub enum StringFilterPolicy {
4535            SfpUnspecified = 0,
4536            /// Tries to match the string field against |regex_pattern|. If it
4537            /// matches, all matching groups are "redacted" (i.e. replaced with a
4538            /// constant string) and filtering is terminated (i.e. no further rules are
4539            /// checked). If it doesn't match, the string is left unchanged and the
4540            /// next rule in chain is considered.
4541            SfpMatchRedactGroups = 1,
4542            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4543            /// checking the regex. Specifically, it tries to parse the string field as
4544            /// an atrace tracepoint and checks if the post-tgid field starts with
4545            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4546            /// this check succeeds.
4547            SfpAtraceMatchRedactGroups = 2,
4548            /// Tries to match the string field against |regex_pattern|. If it
4549            /// matches, filtering is terminated (i.e. no further rules are checked).
4550            /// If it doesn't match, the string is left unchanged and the next rule in
4551            /// chain is considered.
4552            SfpMatchBreak = 3,
4553            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4554            /// the regex. Specifically, it tries to parse the string field as an
4555            /// atrace tracepoint and checks if the post-tgid field starts with
4556            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4557            /// this check succeeds.
4558            SfpAtraceMatchBreak = 4,
4559            /// Tries to repeatedly search (i.e. find substrings of) the string field
4560            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4561            /// replaced with a constant string). Once there are no further matches,
4562            /// filtering is terminated (i.e. no further rules are checked).
4563            ///
4564            /// Note that this is policy is a "search" policy not a "match" policy
4565            /// unlike the above policies:
4566            ///   * Match policies require matching the full string i.e. there is an
4567            ///     implicit leading `^` and trailing `$`.
4568            ///   * Search policies perform repeated partial matching of the string
4569            ///     e.g.
4570            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4571            ///       - Pattern: `foo=(\d+)`
4572            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4573            ///     where P6O is the redaction string
4574            ///
4575            /// All of this is only performed after some pre-work where we try to parse
4576            /// the string field as an atrace tracepoint and check if the post-tgid
4577            /// field starts with |atrace_post_tgid_starts_with|.
4578            ///
4579            /// If there are no partial matches, the string is left unchanged and the
4580            /// next rule in chain is considered.
4581            SfpAtraceRepeatedSearchRedactGroups = 5,
4582        }
4583        impl StringFilterPolicy {
4584            /// String value of the enum field names used in the ProtoBuf definition.
4585            ///
4586            /// The values are not transformed in any way and thus are considered stable
4587            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4588            pub fn as_str_name(&self) -> &'static str {
4589                match self {
4590                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4591                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4592                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4593                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4594                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4595                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4596                }
4597            }
4598        }
4599    }
4600    /// Android-only. Not for general use. If set, reports the trace to the
4601    /// Android framework. This field is read by perfetto_cmd, rather than the
4602    /// tracing service. This field must be set when passing the --upload flag to
4603    /// perfetto_cmd.
4604    ///
4605    /// In this message, either:
4606    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4607    ///   * |skip_reporting| must be explicitly set to true.
4608    #[derive(Clone, PartialEq, ::prost::Message)]
4609    pub struct AndroidReportConfig {
4610        #[prost(string, optional, tag="1")]
4611        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4612        #[prost(string, optional, tag="2")]
4613        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4614        /// If true, then skips reporting the trace to Android framework.
4615        ///
4616        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4617        /// or when we explicitly don't want to report traces to the framework even
4618        /// when they usually would (e.g. configs deployed using statsd but only
4619        /// used for inclusion in bugreports using |bugreport_score|).
4620        ///
4621        /// The motivation for having this flag, instead of just not setting
4622        /// |framework_report_config|, is prevent accidents where
4623        /// |framework_report_config| is omitted by mistake.
4624        #[prost(bool, optional, tag="3")]
4625        pub skip_report: ::core::option::Option<bool>,
4626        /// If true, will direct the Android framework to read the data in trace
4627        /// file and pass it to the reporter class over a pipe instead of passing
4628        /// the file descriptor directly.
4629        ///
4630        /// This flag is needed because the Android test framework does not
4631        /// currently support priv-app helper apps (in terms of SELinux) and we
4632        /// really don't want to add an allow rule for untrusted_app to receive
4633        /// trace fds.
4634        ///
4635        /// Because of this, we instead will direct the framework to create a new
4636        /// pipe and pass this to the reporter process instead. As the pipe is
4637        /// created by the framework, we won't have any problems with SELinux
4638        /// (system_server is already allowed to pass pipe fds, even
4639        /// to untrusted apps).
4640        ///
4641        /// As the name suggests this option *MUST* only be used for testing.
4642        /// Note that the framework will reject (and drop) files which are too
4643        /// large both for simplicity and to be minimize the amount of data we
4644        /// pass to a non-priv app (note that the framework will still check
4645        /// manifest permissions even though SELinux permissions are worked around).
4646        #[prost(bool, optional, tag="4")]
4647        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4648    }
4649    /// If set, delays the start of tracing by a random duration. The duration is
4650    /// chosen from a uniform distribution between the specified minimum and
4651    /// maximum.
4652    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4653    /// not work if you communicate with traced directly over the consumer API.
4654    /// Introduced in Android T.
4655    #[derive(Clone, PartialEq, ::prost::Message)]
4656    pub struct CmdTraceStartDelay {
4657        #[prost(uint32, optional, tag="1")]
4658        pub min_delay_ms: ::core::option::Option<u32>,
4659        #[prost(uint32, optional, tag="2")]
4660        pub max_delay_ms: ::core::option::Option<u32>,
4661    }
4662    /// When non-empty, ensures that for a each semaphore named `name at most
4663    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4664    /// minimum of all values specified by this config or any already-running
4665    /// session) can be be running.
4666    ///
4667    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4668    /// and the tracing session will not be started (or elgible to start in
4669    /// the case of deferred sessions).
4670    ///
4671    /// This is easiest to explain with an example. Suppose the tracing service has
4672    /// the following active tracing sessions:
4673    ///    S1 = [{name=foo, max_other_session_count=2},
4674    ///          {name=bar, max_other_session_count=0}]
4675    ///    S2 = [{name=foo, max_other_session_count=1},
4676    ///          {name=baz, max_other_session_count=1}]
4677    ///
4678    /// Then, for a new session, the following would be the expected behaviour of
4679    /// EnableSession given the state of `session_semaphores`.
4680    ///    Q: session_semaphores = []
4681    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4682    ///       no matter the state of any other tracing session.
4683    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4684    ///    A: Allowed because both S2 and this config specify
4685    ///       max_other_session_count=1 for baz.
4686    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4687    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4688    ///       takes that slot.
4689    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4690    ///    A: Denied because S1 takes the the slot specified by both S1 and
4691    ///       this config.
4692    ///
4693    /// Introduced in 24Q3 (Android V).
4694    #[derive(Clone, PartialEq, ::prost::Message)]
4695    pub struct SessionSemaphore {
4696        /// The name of the semaphore. Acts as a unique identifier across all
4697        /// tracing sessions (including the one being started).
4698        #[prost(string, optional, tag="1")]
4699        pub name: ::core::option::Option<::prost::alloc::string::String>,
4700        /// The maximum number of *other* sesssions which specify the same semaphore
4701        /// which can be active. The minimum of this value across all tracing
4702        /// sessions and the value specified by the config is used when deciding
4703        /// whether the tracing session can be started.
4704        #[prost(uint64, optional, tag="2")]
4705        pub max_other_session_count: ::core::option::Option<u64>,
4706    }
4707    /// Allow key, value pairs to save arbitrary data about trace.
4708    #[derive(Clone, PartialEq, ::prost::Message)]
4709    pub struct Note {
4710        /// Required.
4711        #[prost(string, optional, tag="1")]
4712        pub key: ::core::option::Option<::prost::alloc::string::String>,
4713        /// Required.
4714        #[prost(string, optional, tag="2")]
4715        pub value: ::core::option::Option<::prost::alloc::string::String>,
4716    }
4717    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4718    #[repr(i32)]
4719    pub enum LockdownModeOperation {
4720        LockdownUnchanged = 0,
4721        LockdownClear = 1,
4722        LockdownSet = 2,
4723    }
4724    impl LockdownModeOperation {
4725        /// String value of the enum field names used in the ProtoBuf definition.
4726        ///
4727        /// The values are not transformed in any way and thus are considered stable
4728        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4729        pub fn as_str_name(&self) -> &'static str {
4730            match self {
4731                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4732                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4733                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4734            }
4735        }
4736    }
4737    /// Compress trace with the given method. Best effort.
4738    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4739    #[repr(i32)]
4740    pub enum CompressionType {
4741        Unspecified = 0,
4742        Deflate = 1,
4743    }
4744    impl CompressionType {
4745        /// String value of the enum field names used in the ProtoBuf definition.
4746        ///
4747        /// The values are not transformed in any way and thus are considered stable
4748        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4749        pub fn as_str_name(&self) -> &'static str {
4750            match self {
4751                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4752                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4753            }
4754        }
4755    }
4756    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4757    #[repr(i32)]
4758    pub enum StatsdLogging {
4759        Unspecified = 0,
4760        Enabled = 1,
4761        Disabled = 2,
4762    }
4763    impl StatsdLogging {
4764        /// String value of the enum field names used in the ProtoBuf definition.
4765        ///
4766        /// The values are not transformed in any way and thus are considered stable
4767        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4768        pub fn as_str_name(&self) -> &'static str {
4769            match self {
4770                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4771                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4772                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4773            }
4774        }
4775    }
4776    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4777    #[repr(i32)]
4778    pub enum WriteFlushMode {
4779        /// Same as WRITE_FLUSH_AUTO.
4780        WriteFlushUnspecified = 0,
4781        /// Default mode. The service automatically determines the flush frequency
4782        /// to balance performance and data freshness:
4783        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
4784        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
4785        ///     issued every 5s.
4786        /// 2) If file_write_period_ms > 5s:
4787        ///     A flush is issued before every periodic write into the file.
4788        WriteFlushAuto = 1,
4789        // The following modes are intended for advanced usage and not recommended
4790        // for general use.
4791
4792        /// Do not flush buffers before periodic writes into the file.
4793        /// Use this mode if you want to minimize the performance impact of flushes
4794        /// and can tolerate potentially missing the most recent data in the trace
4795        /// file until the end of the session or an explicit flush.
4796        /// When this mode is selected, |flush_period_ms| is respected.
4797        WriteFlushDisabled = 2,
4798        /// Issue a flush before every periodic write into the file.
4799        /// This ensures that each write into the file contains the most up-to-date
4800        /// data from all data sources, but may have a higher performance overhead.
4801        WriteFlushEnabled = 3,
4802    }
4803    impl WriteFlushMode {
4804        /// String value of the enum field names used in the ProtoBuf definition.
4805        ///
4806        /// The values are not transformed in any way and thus are considered stable
4807        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4808        pub fn as_str_name(&self) -> &'static str {
4809            match self {
4810                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
4811                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
4812                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
4813                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
4814            }
4815        }
4816    }
4817    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4818    #[repr(i32)]
4819    pub enum FFlushMode {
4820        /// Default: same as FFLUSH_DISABLED.
4821        FflushUnspecified = 0,
4822        /// Do not explicitly sync the file to storage after each write pass.
4823        FflushDisabled = 1,
4824        /// Explicitly sync the file to storage (via fdatasync) after each periodic
4825        /// write pass. Increases data durability at the cost of higher disk I/O
4826        /// overhead.
4827        FflushEnabled = 2,
4828    }
4829    impl FFlushMode {
4830        /// String value of the enum field names used in the ProtoBuf definition.
4831        ///
4832        /// The values are not transformed in any way and thus are considered stable
4833        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4834        pub fn as_str_name(&self) -> &'static str {
4835            match self {
4836                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
4837                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
4838                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
4839            }
4840        }
4841    }
4842}
4843// End of protos/perfetto/config/trace_config.proto
4844
4845// Begin of protos/perfetto/common/system_info.proto
4846
4847#[derive(Clone, PartialEq, ::prost::Message)]
4848pub struct Utsname {
4849    #[prost(string, optional, tag="1")]
4850    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4851    #[prost(string, optional, tag="2")]
4852    pub version: ::core::option::Option<::prost::alloc::string::String>,
4853    #[prost(string, optional, tag="3")]
4854    pub release: ::core::option::Option<::prost::alloc::string::String>,
4855    #[prost(string, optional, tag="4")]
4856    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4857}
4858/// Next id: 17
4859#[derive(Clone, PartialEq, ::prost::Message)]
4860pub struct SystemInfo {
4861    #[prost(message, optional, tag="1")]
4862    pub utsname: ::core::option::Option<Utsname>,
4863    #[prost(string, optional, tag="2")]
4864    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4865    /// The manufacturer of the product/hardware.
4866    /// Source : "ro.product.manufacturer"
4867    /// Introduced after Android W in Nov 2024 and is not supported on older
4868    /// versions.
4869    #[prost(string, optional, tag="14")]
4870    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4871    /// The SoC model from which trace is collected
4872    #[prost(string, optional, tag="9")]
4873    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4874    /// The guest SoC model from which trace is collected in case of VMs
4875    #[prost(string, optional, tag="13")]
4876    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4877    /// The hardware reversion from android device
4878    #[prost(string, optional, tag="10")]
4879    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4880    /// The storage component from android_device. This field has been introduced
4881    /// after Android W in Aug 2024 and is not supported on older versions.
4882    #[prost(string, optional, tag="11")]
4883    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4884    /// The RAM component information from android device. This field has been
4885    /// introduced after Android W in Aug 2024 and is not supported on older
4886    /// versions.
4887    #[prost(string, optional, tag="12")]
4888    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4889    /// The serial console information from android device.
4890    #[prost(string, optional, tag="15")]
4891    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4892    /// The version of traced (the same returned by `traced --version`).
4893    /// This is a human readable string with and its format varies depending on
4894    /// the build system and the repo (standalone vs AOSP).
4895    /// This is intended for human debugging only.
4896    #[prost(string, optional, tag="4")]
4897    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4898    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4899    /// Introduced in Android T.
4900    #[prost(uint64, optional, tag="5")]
4901    pub android_sdk_version: ::core::option::Option<u64>,
4902    /// Kernel page size - sysconf(_SC_PAGESIZE).
4903    #[prost(uint32, optional, tag="6")]
4904    pub page_size: ::core::option::Option<u32>,
4905    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4906    /// Might be different to the number of online cpus.
4907    /// Introduced in perfetto v44.
4908    #[prost(uint32, optional, tag="8")]
4909    pub num_cpus: ::core::option::Option<u32>,
4910    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4911    /// Introduced in v38 / Android V.
4912    #[prost(int32, optional, tag="7")]
4913    pub timezone_off_mins: ::core::option::Option<i32>,
4914    /// Ticks per second - sysconf(_SC_CLK_TCK).
4915    /// Not serialised as of perfetto v44.
4916    #[prost(int64, optional, tag="3")]
4917    pub hz: ::core::option::Option<i64>,
4918    /// The size of the system RAM in bytes.
4919    ///
4920    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
4921    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
4922    ///
4923    /// Introduced in perfetto v54 / Android 26Q1+.
4924    #[prost(uint64, optional, tag="16")]
4925    pub system_ram_bytes: ::core::option::Option<u64>,
4926}
4927// End of protos/perfetto/common/system_info.proto
4928
4929// Begin of protos/perfetto/common/trace_attributes.proto
4930
4931// Arbitrary key value pairs which can attached to a trace to provide context
4932// about any facet of the trace. This can include, what data it contains,
4933// properties of the host / machine the trace was collected on, and other
4934// interesting information about a trace.
4935// /
4936// Examples include:
4937// gradle_version = "9.0.10-alpha01"
4938// java_major_version = 24
4939// /
4940// All keys get prefixed with `trace_attribute.` in the UI and in
4941// `traceprocessor`. If there are multiple trace attribute packets that use the
4942// same key, then the latest value wins.
4943// These key value pairs show up in the `Overview` section in
4944// Perfetto UI. Additionally, these key, value pairs can also be queried using
4945// Pefetto SQL by using the following query:
4946// /
4947// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
4948
4949#[derive(Clone, PartialEq, ::prost::Message)]
4950pub struct TraceAttributes {
4951    #[prost(message, repeated, tag="1")]
4952    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
4953}
4954/// Nested message and enum types in `TraceAttributes`.
4955pub mod trace_attributes {
4956    #[derive(Clone, PartialEq, ::prost::Message)]
4957    pub struct Attribute {
4958        /// The key
4959        #[prost(string, optional, tag="1")]
4960        pub key: ::core::option::Option<::prost::alloc::string::String>,
4961        /// The value
4962        #[prost(oneof="attribute::Value", tags="2, 3")]
4963        pub value: ::core::option::Option<attribute::Value>,
4964    }
4965    /// Nested message and enum types in `Attribute`.
4966    pub mod attribute {
4967        /// The value
4968        #[derive(Clone, PartialEq, ::prost::Oneof)]
4969        pub enum Value {
4970            #[prost(int64, tag="2")]
4971            LongValue(i64),
4972            #[prost(string, tag="3")]
4973            StringValue(::prost::alloc::string::String),
4974        }
4975    }
4976}
4977// End of protos/perfetto/common/trace_attributes.proto
4978
4979// Begin of protos/perfetto/common/trace_stats.proto
4980
4981/// Statistics for the internals of the tracing service.
4982///
4983/// Next id: 19.
4984#[derive(Clone, PartialEq, ::prost::Message)]
4985pub struct TraceStats {
4986    /// Stats for the TraceBuffer(s) of the current trace session.
4987    #[prost(message, repeated, tag="1")]
4988    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4989    /// The thresholds of each the `writer_stats` histogram buckets. This is
4990    /// emitted only once as all WriterStats share the same bucket layout.
4991    /// This field has the same cardinality of the
4992    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4993    /// (The -1 is because the last overflow bucket is not reported in the _def).
4994    /// An array of values [10, 100, 1000] in the _def array means that there are
4995    /// four buckets (3 + the implicit overflow bucket):
4996    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4997    #[prost(int64, repeated, packed="false", tag="17")]
4998    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4999    #[prost(message, repeated, tag="18")]
5000    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
5001    /// Num. producers connected (whether they are involved in the current tracing
5002    /// session or not).
5003    #[prost(uint32, optional, tag="2")]
5004    pub producers_connected: ::core::option::Option<u32>,
5005    /// Num. producers ever seen for all trace sessions since startup (it's a good
5006    /// proxy for inferring num. producers crashed / killed).
5007    #[prost(uint64, optional, tag="3")]
5008    pub producers_seen: ::core::option::Option<u64>,
5009    /// Num. data sources registered for all trace sessions.
5010    #[prost(uint32, optional, tag="4")]
5011    pub data_sources_registered: ::core::option::Option<u32>,
5012    /// Num. data sources ever seen for all trace sessions since startup.
5013    #[prost(uint64, optional, tag="5")]
5014    pub data_sources_seen: ::core::option::Option<u64>,
5015    /// Num. concurrently active tracing sessions.
5016    #[prost(uint32, optional, tag="6")]
5017    pub tracing_sessions: ::core::option::Option<u32>,
5018    /// Num. buffers for all tracing session (not just the current one). This will
5019    /// be >= buffer_stats.size(), because the latter is only about the current
5020    /// session.
5021    #[prost(uint32, optional, tag="7")]
5022    pub total_buffers: ::core::option::Option<u32>,
5023    // The fields below have been introduced in Android Q.
5024
5025    /// Num. chunks that were discarded by the service before attempting to commit
5026    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5027    #[prost(uint64, optional, tag="8")]
5028    pub chunks_discarded: ::core::option::Option<u64>,
5029    /// Num. patches that were discarded by the service before attempting to apply
5030    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5031    #[prost(uint64, optional, tag="9")]
5032    pub patches_discarded: ::core::option::Option<u64>,
5033    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
5034    /// is a bug in the producer.
5035    #[prost(uint64, optional, tag="10")]
5036    pub invalid_packets: ::core::option::Option<u64>,
5037    #[prost(message, optional, tag="11")]
5038    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
5039    /// Count of Flush() requests (either from the Consumer, or self-induced
5040    /// periodic flushes). The final Flush() is also included in the count.
5041    #[prost(uint64, optional, tag="12")]
5042    pub flushes_requested: ::core::option::Option<u64>,
5043    /// The count of the Flush() requests that were completed successfully.
5044    /// In a well behaving trace this should always be == `flush_requests`.
5045    #[prost(uint64, optional, tag="13")]
5046    pub flushes_succeeded: ::core::option::Option<u64>,
5047    /// The count of the Flush() requests that failed (in most timed out).
5048    /// In a well behaving trace this should always be == 0.
5049    #[prost(uint64, optional, tag="14")]
5050    pub flushes_failed: ::core::option::Option<u64>,
5051    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
5052    pub final_flush_outcome: ::core::option::Option<i32>,
5053}
5054/// Nested message and enum types in `TraceStats`.
5055pub mod trace_stats {
5056    /// From TraceBuffer::Stats.
5057    ///
5058    /// Next id: 22.
5059    #[derive(Clone, PartialEq, ::prost::Message)]
5060    pub struct BufferStats {
5061        /// Size of the circular buffer in bytes.
5062        #[prost(uint64, optional, tag="12")]
5063        pub buffer_size: ::core::option::Option<u64>,
5064        /// Num. bytes written into the circular buffer, including chunk headers.
5065        #[prost(uint64, optional, tag="1")]
5066        pub bytes_written: ::core::option::Option<u64>,
5067        /// Num. bytes overwritten before they have been read (i.e. loss of data).
5068        #[prost(uint64, optional, tag="13")]
5069        pub bytes_overwritten: ::core::option::Option<u64>,
5070        /// Total size of chunks that were fully read from the circular buffer by the
5071        /// consumer. This may not be equal to |bytes_written| either in the middle
5072        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
5073        /// size of the chunks read from the buffer, including chunk headers, which
5074        /// will be different from the total size of packets returned to the
5075        /// consumer.
5076        ///
5077        /// The current utilization of the trace buffer (mid-tracing) can be obtained
5078        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
5079        /// adding the difference of |padding_bytes_written| and
5080        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
5081        /// Note that this represents the total size of buffered data in the buffer,
5082        /// yet this data may be spread non-contiguously through the buffer and may
5083        /// be overridden before the utilization reaches 100%.
5084        #[prost(uint64, optional, tag="14")]
5085        pub bytes_read: ::core::option::Option<u64>,
5086        /// Num. bytes that were allocated as padding between chunks in the circular
5087        /// buffer.
5088        #[prost(uint64, optional, tag="15")]
5089        pub padding_bytes_written: ::core::option::Option<u64>,
5090        /// Num. of padding bytes that were removed from the circular buffer when
5091        /// they were overwritten.
5092        ///
5093        /// The difference between |padding_bytes_written| and
5094        /// |padding_bytes_cleared| denotes the total size of padding currently
5095        /// present in the buffer.
5096        #[prost(uint64, optional, tag="16")]
5097        pub padding_bytes_cleared: ::core::option::Option<u64>,
5098        /// Num. chunks (!= packets) written into the buffer.
5099        #[prost(uint64, optional, tag="2")]
5100        pub chunks_written: ::core::option::Option<u64>,
5101        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
5102        /// the same chunk with additional packets appended to the end.
5103        #[prost(uint64, optional, tag="10")]
5104        pub chunks_rewritten: ::core::option::Option<u64>,
5105        /// Num. chunks overwritten before they have been read (i.e. loss of data).
5106        #[prost(uint64, optional, tag="3")]
5107        pub chunks_overwritten: ::core::option::Option<u64>,
5108        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
5109        /// is configured with FillPolicy == DISCARD.
5110        #[prost(uint64, optional, tag="18")]
5111        pub chunks_discarded: ::core::option::Option<u64>,
5112        /// Num. chunks (!= packets) that were fully read from the circular buffer by
5113        /// the consumer. This may not be equal to |chunks_written| either in the
5114        /// middle of tracing, or if |chunks_overwritten| is non-zero.
5115        #[prost(uint64, optional, tag="17")]
5116        pub chunks_read: ::core::option::Option<u64>,
5117        /// Num. chunks that were committed out of order.
5118        #[prost(uint64, optional, tag="11")]
5119        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
5120        /// Num. times the ring buffer wrapped around.
5121        #[prost(uint64, optional, tag="4")]
5122        pub write_wrap_count: ::core::option::Option<u64>,
5123        /// Num. out-of-band (OOB) patches that succeeded.
5124        #[prost(uint64, optional, tag="5")]
5125        pub patches_succeeded: ::core::option::Option<u64>,
5126        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
5127        #[prost(uint64, optional, tag="6")]
5128        pub patches_failed: ::core::option::Option<u64>,
5129        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
5130        /// successful packet read.
5131        #[prost(uint64, optional, tag="7")]
5132        pub readaheads_succeeded: ::core::option::Option<u64>,
5133        /// Num. readaheads aborted because of missing chunks in the sequence stream.
5134        /// Note that a small number > 0 is totally expected: occasionally, when
5135        /// issuing a read, the very last packet in a sequence might be incomplete
5136        /// (because the producer is still writing it while we read). The read will
5137        /// stop at that point, for that sequence, increasing this counter.
5138        #[prost(uint64, optional, tag="8")]
5139        pub readaheads_failed: ::core::option::Option<u64>,
5140        /// Num. of violations of the SharedMemoryABI found while writing or reading
5141        /// the buffer. This is an indication of either a bug in the producer(s) or
5142        /// malicious producer(s).
5143        #[prost(uint64, optional, tag="9")]
5144        pub abi_violations: ::core::option::Option<u64>,
5145        // The fields below have been introduced in Android R.
5146
5147        /// Num. of times the service detected packet loss on a trace writer
5148        /// sequence. This is usually caused by exhaustion of available chunks in the
5149        /// writer process's SMB. Note that this relies on the client's TraceWriter
5150        /// indicating this loss to the service -- packets lost for other reasons are
5151        /// not reflected in this stat.
5152        #[prost(uint64, optional, tag="19")]
5153        pub trace_writer_packet_loss: ::core::option::Option<u64>,
5154        #[prost(message, optional, tag="21")]
5155        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
5156    }
5157    /// Nested message and enum types in `BufferStats`.
5158    pub mod buffer_stats {
5159        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
5160        /// Only populated when the buffer is configured with shadow mode.
5161        #[derive(Clone, PartialEq, ::prost::Message)]
5162        pub struct ShadowBufferStats {
5163            /// Total num. packets read. This is not affected by capping of the hasher
5164            /// to 32K elements.
5165            #[prost(uint64, optional, tag="1")]
5166            pub packets_seen: ::core::option::Option<u64>,
5167            // The stats below are keps only for 32k packets. After reading 32K
5168            // packets hashes are randomly evicted and that might lead to slightly
5169            // inconsistent results.
5170
5171            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
5172            #[prost(uint64, optional, tag="2")]
5173            pub packets_in_both: ::core::option::Option<u64>,
5174            /// Num. packets found only in V1 buffer but not in V2.
5175            #[prost(uint64, optional, tag="3")]
5176            pub packets_only_v1: ::core::option::Option<u64>,
5177            /// Num. packets found only in V2 buffer but not in V1.
5178            #[prost(uint64, optional, tag="4")]
5179            pub packets_only_v2: ::core::option::Option<u64>,
5180            /// Num. patch operations attempted.
5181            #[prost(uint64, optional, tag="5")]
5182            pub patches_attempted: ::core::option::Option<u64>,
5183            /// Num. patches that succeeded on V1 buffer.
5184            #[prost(uint64, optional, tag="6")]
5185            pub v1_patches_succeeded: ::core::option::Option<u64>,
5186            /// Num. patches that succeeded on V2 buffer.
5187            #[prost(uint64, optional, tag="7")]
5188            pub v2_patches_succeeded: ::core::option::Option<u64>,
5189            /// This is to distinguish the updated calculations after fixing the
5190            /// hashes. This field is either empty or "2"
5191            #[prost(uint32, optional, tag="8")]
5192            pub stats_version: ::core::option::Option<u32>,
5193        }
5194    }
5195    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
5196    /// visible as a unique sequence ID in the trace.
5197    #[derive(Clone, PartialEq, ::prost::Message)]
5198    pub struct WriterStats {
5199        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
5200        /// correlate the stats with the actual packet types.
5201        #[prost(uint64, optional, tag="1")]
5202        pub sequence_id: ::core::option::Option<u64>,
5203        /// The buffer index (0..N, as defined in the TraceConfig).
5204        #[prost(uint32, optional, tag="4")]
5205        pub buffer: ::core::option::Option<u32>,
5206        /// These two arrays have the same cardinality and match the cardinality of
5207        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
5208        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
5209        /// for each bucket.
5210        #[prost(uint64, repeated, tag="2")]
5211        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
5212        #[prost(int64, repeated, tag="3")]
5213        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
5214    }
5215    /// This is set only when the TraceConfig specifies a TraceFilter.
5216    #[derive(Clone, PartialEq, ::prost::Message)]
5217    pub struct FilterStats {
5218        #[prost(uint64, optional, tag="1")]
5219        pub input_packets: ::core::option::Option<u64>,
5220        #[prost(uint64, optional, tag="2")]
5221        pub input_bytes: ::core::option::Option<u64>,
5222        #[prost(uint64, optional, tag="3")]
5223        pub output_bytes: ::core::option::Option<u64>,
5224        #[prost(uint64, optional, tag="4")]
5225        pub errors: ::core::option::Option<u64>,
5226        #[prost(uint64, optional, tag="5")]
5227        pub time_taken_ns: ::core::option::Option<u64>,
5228        /// The number of bytes discarded by the filter (i.e. output - input).
5229        /// The array has one entry for each buffer defined in the config (unless no
5230        /// packets for that buffer were seen and hence filtered).
5231        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
5232        /// (output_bytes - input_bytes) because the filter might also discard
5233        /// server-generated synthetic packets, that have no buffer index.
5234        #[prost(uint64, repeated, packed="false", tag="20")]
5235        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
5236    }
5237    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5238    #[repr(i32)]
5239    pub enum FinalFlushOutcome {
5240        FinalFlushUnspecified = 0,
5241        FinalFlushSucceeded = 1,
5242        FinalFlushFailed = 2,
5243    }
5244    impl FinalFlushOutcome {
5245        /// String value of the enum field names used in the ProtoBuf definition.
5246        ///
5247        /// The values are not transformed in any way and thus are considered stable
5248        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5249        pub fn as_str_name(&self) -> &'static str {
5250            match self {
5251                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
5252                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
5253                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
5254            }
5255        }
5256    }
5257}
5258// End of protos/perfetto/common/trace_stats.proto
5259
5260// Begin of protos/perfetto/trace/android/android_aflags.proto
5261
5262/// Android aconfig flags (aflags).
5263/// This message captures a snapshot of the state of aconfig flags on the device.
5264/// Keep in sync with:
5265/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
5266#[derive(Clone, PartialEq, ::prost::Message)]
5267pub struct AndroidAflags {
5268    /// A collection of flags.
5269    #[prost(message, repeated, tag="1")]
5270    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
5271    /// A human-readable error logged if aflags processing fails.
5272    /// This is a perfetto specific field used to help debugging.
5273    #[prost(string, optional, tag="2")]
5274    pub error: ::core::option::Option<::prost::alloc::string::String>,
5275}
5276/// Nested message and enum types in `AndroidAflags`.
5277pub mod android_aflags {
5278    /// Representation of an aconfig flag and its metadata.
5279    #[derive(Clone, PartialEq, ::prost::Message)]
5280    pub struct Flag {
5281        #[prost(string, optional, tag="1")]
5282        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
5283        #[prost(string, optional, tag="2")]
5284        pub name: ::core::option::Option<::prost::alloc::string::String>,
5285        /// The aconfig package (e.g. "com.android.foo"). These are system-level
5286        /// identifiers and not privacy-impacting.
5287        #[prost(string, optional, tag="3")]
5288        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
5289        /// The container where the flag lives (e.g. "system", "vendor", or mainline
5290        /// module name).
5291        #[prost(string, optional, tag="4")]
5292        pub container: ::core::option::Option<::prost::alloc::string::String>,
5293        /// The flag value as a string to support different future data types.
5294        #[prost(string, optional, tag="5")]
5295        pub value: ::core::option::Option<::prost::alloc::string::String>,
5296        /// The value that will be applied after the next reboot, if different from
5297        /// the current value.
5298        #[prost(string, optional, tag="6")]
5299        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
5300        #[prost(enumeration="FlagPermission", optional, tag="7")]
5301        pub permission: ::core::option::Option<i32>,
5302        #[prost(enumeration="ValuePickedFrom", optional, tag="8")]
5303        pub value_picked_from: ::core::option::Option<i32>,
5304        #[prost(enumeration="FlagStorageBackend", optional, tag="9")]
5305        pub storage_backend: ::core::option::Option<i32>,
5306    }
5307    /// Whether a flag can be modified at runtime.
5308    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5309    #[repr(i32)]
5310    pub enum FlagPermission {
5311        Unspecified = 0,
5312        ReadOnly = 1,
5313        ReadWrite = 2,
5314    }
5315    impl FlagPermission {
5316        /// String value of the enum field names used in the ProtoBuf definition.
5317        ///
5318        /// The values are not transformed in any way and thus are considered stable
5319        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5320        pub fn as_str_name(&self) -> &'static str {
5321            match self {
5322                FlagPermission::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
5323                FlagPermission::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
5324                FlagPermission::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
5325            }
5326        }
5327    }
5328    /// The source of the current flag value.
5329    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5330    #[repr(i32)]
5331    pub enum ValuePickedFrom {
5332        Unspecified = 0,
5333        /// The value is the build-time default.
5334        Default = 1,
5335        /// The value comes from a server-side override.
5336        Server = 2,
5337        /// The value comes from a local override on the device.
5338        Local = 3,
5339    }
5340    impl ValuePickedFrom {
5341        /// String value of the enum field names used in the ProtoBuf definition.
5342        ///
5343        /// The values are not transformed in any way and thus are considered stable
5344        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5345        pub fn as_str_name(&self) -> &'static str {
5346            match self {
5347                ValuePickedFrom::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
5348                ValuePickedFrom::Default => "VALUE_PICKED_FROM_DEFAULT",
5349                ValuePickedFrom::Server => "VALUE_PICKED_FROM_SERVER",
5350                ValuePickedFrom::Local => "VALUE_PICKED_FROM_LOCAL",
5351            }
5352        }
5353    }
5354    /// The underlying storage mechanism for the flag.
5355    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5356    #[repr(i32)]
5357    pub enum FlagStorageBackend {
5358        Unspecified = 0,
5359        None = 1,
5360        Aconfigd = 2,
5361        DeviceConfig = 3,
5362    }
5363    impl FlagStorageBackend {
5364        /// String value of the enum field names used in the ProtoBuf definition.
5365        ///
5366        /// The values are not transformed in any way and thus are considered stable
5367        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5368        pub fn as_str_name(&self) -> &'static str {
5369            match self {
5370                FlagStorageBackend::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
5371                FlagStorageBackend::None => "FLAG_STORAGE_BACKEND_NONE",
5372                FlagStorageBackend::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
5373                FlagStorageBackend::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
5374            }
5375        }
5376    }
5377}
5378// End of protos/perfetto/trace/android/android_aflags.proto
5379
5380// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
5381
5382#[derive(Clone, PartialEq, ::prost::Message)]
5383pub struct AndroidGameInterventionList {
5384    #[prost(message, repeated, tag="1")]
5385    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
5386    /// True when at least one error occurred when parsing
5387    /// game_mode_intervention.list
5388    #[prost(bool, optional, tag="2")]
5389    pub parse_error: ::core::option::Option<bool>,
5390    /// Failed to open / read game_mode_intervention.list
5391    #[prost(bool, optional, tag="3")]
5392    pub read_error: ::core::option::Option<bool>,
5393}
5394/// Nested message and enum types in `AndroidGameInterventionList`.
5395pub mod android_game_intervention_list {
5396    #[derive(Clone, PartialEq, ::prost::Message)]
5397    pub struct GameModeInfo {
5398        #[prost(uint32, optional, tag="1")]
5399        pub mode: ::core::option::Option<u32>,
5400        #[prost(bool, optional, tag="2")]
5401        pub use_angle: ::core::option::Option<bool>,
5402        #[prost(float, optional, tag="3")]
5403        pub resolution_downscale: ::core::option::Option<f32>,
5404        #[prost(float, optional, tag="4")]
5405        pub fps: ::core::option::Option<f32>,
5406    }
5407    #[derive(Clone, PartialEq, ::prost::Message)]
5408    pub struct GamePackageInfo {
5409        #[prost(string, optional, tag="1")]
5410        pub name: ::core::option::Option<::prost::alloc::string::String>,
5411        #[prost(uint64, optional, tag="2")]
5412        pub uid: ::core::option::Option<u64>,
5413        #[prost(uint32, optional, tag="3")]
5414        pub current_mode: ::core::option::Option<u32>,
5415        #[prost(message, repeated, tag="4")]
5416        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
5417    }
5418}
5419// End of protos/perfetto/trace/android/android_game_intervention_list.proto
5420
5421// Begin of protos/perfetto/trace/android/android_log.proto
5422
5423#[derive(Clone, PartialEq, ::prost::Message)]
5424pub struct AndroidLogPacket {
5425    #[prost(message, repeated, tag="1")]
5426    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
5427    #[prost(message, optional, tag="2")]
5428    pub stats: ::core::option::Option<android_log_packet::Stats>,
5429}
5430/// Nested message and enum types in `AndroidLogPacket`.
5431pub mod android_log_packet {
5432    #[derive(Clone, PartialEq, ::prost::Message)]
5433    pub struct LogEvent {
5434        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
5435        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
5436        pub log_id: ::core::option::Option<i32>,
5437        /// PID (TGID), TID and UID of the task that emitted the event.
5438        #[prost(int32, optional, tag="2")]
5439        pub pid: ::core::option::Option<i32>,
5440        #[prost(int32, optional, tag="3")]
5441        pub tid: ::core::option::Option<i32>,
5442        #[prost(int32, optional, tag="4")]
5443        pub uid: ::core::option::Option<i32>,
5444        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
5445        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
5446        /// processor will take care of realigning clocks using the ClockSnapshot(s).
5447        #[prost(uint64, optional, tag="5")]
5448        pub timestamp: ::core::option::Option<u64>,
5449        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
5450        /// the second column of /system/etc/event-log-tags. For all other events,
5451        /// |tag| is the app-specified argument passed to __android_log_write().
5452        #[prost(string, optional, tag="6")]
5453        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5454        /// Empty when log_id == LID_EVENTS.
5455        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
5456        pub prio: ::core::option::Option<i32>,
5457        /// Empty when log_id == LID_EVENTS.
5458        #[prost(string, optional, tag="8")]
5459        pub message: ::core::option::Option<::prost::alloc::string::String>,
5460        /// Only populated when log_id == LID_EVENTS.
5461        #[prost(message, repeated, tag="9")]
5462        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
5463    }
5464    /// Nested message and enum types in `LogEvent`.
5465    pub mod log_event {
5466        #[derive(Clone, PartialEq, ::prost::Message)]
5467        pub struct Arg {
5468            #[prost(string, optional, tag="1")]
5469            pub name: ::core::option::Option<::prost::alloc::string::String>,
5470            #[prost(oneof="arg::Value", tags="2, 3, 4")]
5471            pub value: ::core::option::Option<arg::Value>,
5472        }
5473        /// Nested message and enum types in `Arg`.
5474        pub mod arg {
5475            #[derive(Clone, PartialEq, ::prost::Oneof)]
5476            pub enum Value {
5477                #[prost(int64, tag="2")]
5478                IntValue(i64),
5479                #[prost(float, tag="3")]
5480                FloatValue(f32),
5481                #[prost(string, tag="4")]
5482                StringValue(::prost::alloc::string::String),
5483            }
5484        }
5485    }
5486    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
5487    /// absolute counters since the beginning of the lifetime of the tracing
5488    /// session and NOT relative to the previous Stats snapshot).
5489    #[derive(Clone, PartialEq, ::prost::Message)]
5490    pub struct Stats {
5491        /// Total number of log events seen, including errors and skipped entries
5492        /// (num of events stored in the trace = total - failed - skipped).
5493        #[prost(uint64, optional, tag="1")]
5494        pub num_total: ::core::option::Option<u64>,
5495        /// Parser failures.
5496        #[prost(uint64, optional, tag="2")]
5497        pub num_failed: ::core::option::Option<u64>,
5498        /// Messages skipped due to filters.
5499        #[prost(uint64, optional, tag="3")]
5500        pub num_skipped: ::core::option::Option<u64>,
5501    }
5502}
5503// End of protos/perfetto/trace/android/android_log.proto
5504
5505// Begin of protos/perfetto/trace/android/android_system_property.proto
5506
5507#[derive(Clone, PartialEq, ::prost::Message)]
5508pub struct AndroidSystemProperty {
5509    #[prost(message, repeated, tag="1")]
5510    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
5511}
5512/// Nested message and enum types in `AndroidSystemProperty`.
5513pub mod android_system_property {
5514    #[derive(Clone, PartialEq, ::prost::Message)]
5515    pub struct PropertyValue {
5516        #[prost(string, optional, tag="1")]
5517        pub name: ::core::option::Option<::prost::alloc::string::String>,
5518        #[prost(string, optional, tag="2")]
5519        pub value: ::core::option::Option<::prost::alloc::string::String>,
5520    }
5521}
5522// End of protos/perfetto/trace/android/android_system_property.proto
5523
5524// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
5525
5526/// AppWakelockInfo describes the time-independent properties of a wakelock, such
5527/// as the owning package or wakelock tag. This is interned to reduce trace size.
5528/// Event bundles refer to interned wakelock info by the iid.
5529#[derive(Clone, PartialEq, ::prost::Message)]
5530pub struct AppWakelockInfo {
5531    /// The interned id of this wakelock.
5532    #[prost(int32, optional, tag="1")]
5533    pub iid: ::core::option::Option<i32>,
5534    /// The app-provided tag of the wakelock.
5535    #[prost(string, optional, tag="2")]
5536    pub tag: ::core::option::Option<::prost::alloc::string::String>,
5537    /// The wakelock flags (such as partial vs full).
5538    #[prost(int32, optional, tag="3")]
5539    pub flags: ::core::option::Option<i32>,
5540    /// The pid that created the wakelock.
5541    #[prost(int32, optional, tag="4")]
5542    pub owner_pid: ::core::option::Option<i32>,
5543    /// The uid that created the wakelock.
5544    #[prost(int32, optional, tag="5")]
5545    pub owner_uid: ::core::option::Option<i32>,
5546    /// The uid of the work source root (if present).
5547    #[prost(int32, optional, tag="6")]
5548    pub work_uid: ::core::option::Option<i32>,
5549}
5550/// AppWakelockBundle describes one or more wakelock events. Events are written
5551/// in two paired array, such that the details for event i are in intern_id\[i\]
5552/// and encoded_ts\[i\].
5553#[derive(Clone, PartialEq, ::prost::Message)]
5554pub struct AppWakelockBundle {
5555    /// The interned id for the WakelockInfo of the event.
5556    #[prost(uint32, repeated, tag="1")]
5557    pub intern_id: ::prost::alloc::vec::Vec<u32>,
5558    /// The timestamp and event type, encoded as:
5559    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
5560    #[prost(uint64, repeated, tag="2")]
5561    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
5562    /// For writing single packets (mainly by tokenization).
5563    #[prost(message, optional, tag="3")]
5564    pub info: ::core::option::Option<AppWakelockInfo>,
5565    #[prost(bool, optional, tag="4")]
5566    pub acquired: ::core::option::Option<bool>,
5567}
5568/// Trace event for bluetooth
5569#[derive(Clone, PartialEq, ::prost::Message)]
5570pub struct BluetoothTraceEvent {
5571    /// Packet type and direction
5572    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
5573    pub packet_type: ::core::option::Option<i32>,
5574    /// Total count of the packets collected during the collection interval
5575    #[prost(uint32, optional, tag="2")]
5576    pub count: ::core::option::Option<u32>,
5577    /// Total cumulative length of the packets collected during the collection
5578    /// interval
5579    #[prost(uint32, optional, tag="3")]
5580    pub length: ::core::option::Option<u32>,
5581    /// The collection interval in nanoseconds. This is the duration between the
5582    /// first and last packets collected.
5583    #[prost(uint32, optional, tag="4")]
5584    pub duration: ::core::option::Option<u32>,
5585    /// In case of CMD type, further breakdown of the type of command
5586    #[prost(uint32, optional, tag="5")]
5587    pub op_code: ::core::option::Option<u32>,
5588    /// In the case of EVT type, further breakdown of the type of event
5589    #[prost(uint32, optional, tag="6")]
5590    pub event_code: ::core::option::Option<u32>,
5591    /// When applicable for EVT type, further breakdown of event type into specific
5592    /// subevent
5593    #[prost(uint32, optional, tag="7")]
5594    pub subevent_code: ::core::option::Option<u32>,
5595    /// Associated handle for the bluetooth packet
5596    #[prost(uint32, optional, tag="8")]
5597    pub connection_handle: ::core::option::Option<u32>,
5598}
5599// End of protos/perfetto/trace/android/bluetooth_trace.proto
5600
5601// Begin of protos/perfetto/trace/android/camera_event.proto
5602
5603/// A profiling event corresponding to a single camera frame. This message
5604/// collects important details and timestamps involved in producing a single
5605/// camera frame.
5606/// Next ID: 17
5607#[derive(Clone, PartialEq, ::prost::Message)]
5608pub struct AndroidCameraFrameEvent {
5609    /// Identifier for the CameraCaptureSession this frame originates from. See:
5610    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5611    #[prost(uint64, optional, tag="1")]
5612    pub session_id: ::core::option::Option<u64>,
5613    /// Identifier for the camera sensor that is the source of this frame. This may
5614    /// be either a physical or logical camera (up to vendor interpretation).
5615    #[prost(uint32, optional, tag="2")]
5616    pub camera_id: ::core::option::Option<u32>,
5617    /// The frame number identifying this frame on this camera.
5618    #[prost(int64, optional, tag="3")]
5619    pub frame_number: ::core::option::Option<i64>,
5620    /// Identifier for the CaptureRequest. See:
5621    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
5622    ///
5623    /// If multiple cameras are streaming simultaneously, the request_id may be
5624    /// used to identify which frames were captured in service of the same request.
5625    #[prost(int64, optional, tag="4")]
5626    pub request_id: ::core::option::Option<i64>,
5627    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
5628    /// received by the camera HAL pipeline. Note that this request may wait for
5629    /// some time before processing actually begins. See also
5630    /// request_processing_started_ns.
5631    #[prost(int64, optional, tag="5")]
5632    pub request_received_ns: ::core::option::Option<i64>,
5633    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
5634    /// processing by the camera HAL pipeline. This is the time at which the
5635    /// pipeline actually begins to work on the request.
5636    #[prost(int64, optional, tag="6")]
5637    pub request_processing_started_ns: ::core::option::Option<i64>,
5638    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
5639    #[prost(int64, optional, tag="7")]
5640    pub start_of_exposure_ns: ::core::option::Option<i64>,
5641    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
5642    /// event.
5643    #[prost(int64, optional, tag="8")]
5644    pub start_of_frame_ns: ::core::option::Option<i64>,
5645    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
5646    /// for the frame.
5647    #[prost(int64, optional, tag="9")]
5648    pub responses_all_sent_ns: ::core::option::Option<i64>,
5649    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
5650    pub capture_result_status: ::core::option::Option<i32>,
5651    /// The number of sensor frames that were skipped between this frame and the
5652    /// previous frame. Under normal operation, this should be zero. Any number
5653    /// greater than zero indicates dropped sensor frames.
5654    #[prost(int32, optional, tag="11")]
5655    pub skipped_sensor_frames: ::core::option::Option<i32>,
5656    /// The value of CONTROL_CAPTURE_INTENT. See:
5657    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
5658    #[prost(int32, optional, tag="12")]
5659    pub capture_intent: ::core::option::Option<i32>,
5660    /// The number of streams in the capture request.
5661    #[prost(int32, optional, tag="13")]
5662    pub num_streams: ::core::option::Option<i32>,
5663    #[prost(message, repeated, tag="14")]
5664    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
5665    /// These fields capture vendor-specific additions to this proto message. In
5666    /// practice `vendor_data` typically contains a serialized message of the
5667    /// vendor's design, and `vendor_data_version` is incremented each time there
5668    /// is a backwards incompatible change made to the message.
5669    #[prost(int32, optional, tag="15")]
5670    pub vendor_data_version: ::core::option::Option<i32>,
5671    #[prost(bytes="vec", optional, tag="16")]
5672    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5673}
5674/// Nested message and enum types in `AndroidCameraFrameEvent`.
5675pub mod android_camera_frame_event {
5676    /// A profiling event corresponding to a single node processing within the
5677    /// camera pipeline. Intuitively this corresponds to a single stage of
5678    /// processing to produce a camera frame. Next ID: 6
5679    #[derive(Clone, PartialEq, ::prost::Message)]
5680    pub struct CameraNodeProcessingDetails {
5681        #[prost(int64, optional, tag="1")]
5682        pub node_id: ::core::option::Option<i64>,
5683        /// The timestamp at which node processing begins to run.
5684        #[prost(int64, optional, tag="2")]
5685        pub start_processing_ns: ::core::option::Option<i64>,
5686        /// The timestamp at which node processing finishes running.
5687        #[prost(int64, optional, tag="3")]
5688        pub end_processing_ns: ::core::option::Option<i64>,
5689        /// The delay between inputs becoming ready and the node actually beginning
5690        /// to run.
5691        #[prost(int64, optional, tag="4")]
5692        pub scheduling_latency_ns: ::core::option::Option<i64>,
5693    }
5694    /// The error status, if any, reported to the camera framework. Any status
5695    /// other than STATUS_OK indicates a dropped frame.
5696    /// Next Enum: 6
5697    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5698    #[repr(i32)]
5699    pub enum CaptureResultStatus {
5700        StatusUnspecified = 0,
5701        StatusOk = 1,
5702        /// Early metadata was returned to the camera framework with an error.
5703        StatusEarlyMetadataError = 2,
5704        /// Final metadata was returned to the camera framework with an error.
5705        StatusFinalMetadataError = 3,
5706        /// One or more buffers were returned to the camera framework with an error.
5707        StatusBufferError = 4,
5708        /// The frame was dropped as a result of a flush operation.
5709        StatusFlushError = 5,
5710    }
5711    impl CaptureResultStatus {
5712        /// String value of the enum field names used in the ProtoBuf definition.
5713        ///
5714        /// The values are not transformed in any way and thus are considered stable
5715        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5716        pub fn as_str_name(&self) -> &'static str {
5717            match self {
5718                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5719                CaptureResultStatus::StatusOk => "STATUS_OK",
5720                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5721                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5722                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5723                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5724            }
5725        }
5726    }
5727}
5728/// A profiling event that may be emitted periodically (i.e., at a slower rate
5729/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5730/// session-specific values.
5731#[derive(Clone, PartialEq, ::prost::Message)]
5732pub struct AndroidCameraSessionStats {
5733    /// Identifier for the CameraCaptureSession this frame originates from. See:
5734    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5735    #[prost(uint64, optional, tag="1")]
5736    pub session_id: ::core::option::Option<u64>,
5737    #[prost(message, optional, tag="2")]
5738    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5739}
5740/// Nested message and enum types in `AndroidCameraSessionStats`.
5741pub mod android_camera_session_stats {
5742    /// Although vendor implementations may vary, camera pipeline processing is
5743    /// typically arranged into a directed graph-like structure. This message is
5744    /// used to record that graph.
5745    #[derive(Clone, PartialEq, ::prost::Message)]
5746    pub struct CameraGraph {
5747        #[prost(message, repeated, tag="1")]
5748        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5749        #[prost(message, repeated, tag="2")]
5750        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5751    }
5752    /// Nested message and enum types in `CameraGraph`.
5753    pub mod camera_graph {
5754        #[derive(Clone, PartialEq, ::prost::Message)]
5755        pub struct CameraNode {
5756            #[prost(int64, optional, tag="1")]
5757            pub node_id: ::core::option::Option<i64>,
5758            /// A list of inputs consumed by this node.
5759            #[prost(int64, repeated, packed="false", tag="2")]
5760            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5761            /// A list of outputs produced by this node.
5762            #[prost(int64, repeated, packed="false", tag="3")]
5763            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5764            /// These fields capture vendor-specific additions to this proto message.
5765            /// In practice `vendor_data` typically contains a serialized message of
5766            /// the vendor's design, and `vendor_data_version` is incremented each time
5767            /// there is a backwards incompatible change made to the message.
5768            #[prost(int32, optional, tag="4")]
5769            pub vendor_data_version: ::core::option::Option<i32>,
5770            #[prost(bytes="vec", optional, tag="5")]
5771            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5772        }
5773        /// An adjacency list describing connections between CameraNodes, mapping
5774        /// nodes and their outputs to other nodes that consume them as inputs.
5775        #[derive(Clone, PartialEq, ::prost::Message)]
5776        pub struct CameraEdge {
5777            /// The pair of IDs identifying the node and output connected by this edge.
5778            #[prost(int64, optional, tag="1")]
5779            pub output_node_id: ::core::option::Option<i64>,
5780            #[prost(int64, optional, tag="2")]
5781            pub output_id: ::core::option::Option<i64>,
5782            /// The pair of IDs identifying the node and input connected by this edge.
5783            #[prost(int64, optional, tag="3")]
5784            pub input_node_id: ::core::option::Option<i64>,
5785            #[prost(int64, optional, tag="4")]
5786            pub input_id: ::core::option::Option<i64>,
5787            /// These fields capture vendor-specific additions to this proto message.
5788            /// In practice `vendor_data` typically contains a serialized message of
5789            /// the vendor's design, and `vendor_data_version` is incremented each time
5790            /// there is a backwards incompatible change made to the message.
5791            #[prost(int32, optional, tag="5")]
5792            pub vendor_data_version: ::core::option::Option<i32>,
5793            #[prost(bytes="vec", optional, tag="6")]
5794            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5795        }
5796    }
5797}
5798// End of protos/perfetto/trace/android/camera_event.proto
5799
5800// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5801
5802#[derive(Clone, PartialEq, ::prost::Message)]
5803pub struct CpuPerUidData {
5804    /// Number of clusters in the device. This will only be filled in the first
5805    /// packet in a sequence.
5806    #[prost(uint32, optional, tag="1")]
5807    pub cluster_count: ::core::option::Option<u32>,
5808    /// The UIDs for which we have data in this packet.
5809    #[prost(uint32, repeated, tag="2")]
5810    pub uid: ::prost::alloc::vec::Vec<u32>,
5811    /// List of times for {UID, cluster} tuples. This will be cluster_count
5812    /// times as long as the UID list.
5813    ///
5814    /// Ordered like:
5815    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5816    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5817    ///
5818    /// Each value is an absolute count for the first packet in a sequence, and a
5819    /// delta thereafter. UIDs for which all clusters have a zero delta are
5820    /// omitted; a single non-zero value for any cluster for a UID will cause
5821    /// values for all clusters to be recorded.
5822    #[prost(uint64, repeated, tag="3")]
5823    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5824}
5825// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5826
5827// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5828
5829/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5830/// Used in comparing the expected timeline of a frame to the actual timeline.
5831/// Key terms:
5832///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5833///     2) SurfaceFrame - represents App's work on its frame
5834///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5835/// SurfaceFlinger composites frames from many apps together, so
5836///     One DisplayFrame can map to N SurfaceFrame(s)
5837/// This relationship can be reconstructed by using
5838///     DisplayFrame.token = SurfaceFrame.display_frame_token
5839#[derive(Clone, PartialEq, ::prost::Message)]
5840pub struct FrameTimelineEvent {
5841    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5842    pub event: ::core::option::Option<frame_timeline_event::Event>,
5843}
5844/// Nested message and enum types in `FrameTimelineEvent`.
5845pub mod frame_timeline_event {
5846    /// Indicates the start of expected timeline slice for SurfaceFrames.
5847    #[derive(Clone, PartialEq, ::prost::Message)]
5848    pub struct ExpectedSurfaceFrameStart {
5849        /// Cookie used to correlate between the start and end messages of the same
5850        /// frame. Since all values except the ts are same for start and end, cookie
5851        /// helps in preventing redundant data transmission.
5852        /// The same cookie is used only by start and end messages of a single frame
5853        /// and is otherwise unique.
5854        #[prost(int64, optional, tag="1")]
5855        pub cookie: ::core::option::Option<i64>,
5856        /// Token received by the app for its work. Can be shared between multiple
5857        /// layers of the same app (example: pip mode).
5858        #[prost(int64, optional, tag="2")]
5859        pub token: ::core::option::Option<i64>,
5860        /// The corresponding DisplayFrame token is required to link the App's work
5861        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5862        /// DisplayFrame.
5863        /// this.display_frame_token = DisplayFrame.token
5864        #[prost(int64, optional, tag="3")]
5865        pub display_frame_token: ::core::option::Option<i64>,
5866        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5867        /// the respective process track group.
5868        #[prost(int32, optional, tag="4")]
5869        pub pid: ::core::option::Option<i32>,
5870        #[prost(string, optional, tag="5")]
5871        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5872    }
5873    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5874    /// includes the jank information.
5875    #[derive(Clone, PartialEq, ::prost::Message)]
5876    pub struct ActualSurfaceFrameStart {
5877        /// Cookie used to correlate between the start and end messages of the same
5878        /// frame. Since all values except the ts are same for start and end, cookie
5879        /// helps in preventing redundant data transmission.
5880        /// The same cookie is used only by start and end messages of a single frame
5881        /// and is otherwise unique.
5882        #[prost(int64, optional, tag="1")]
5883        pub cookie: ::core::option::Option<i64>,
5884        /// Token received by the app for its work. Can be shared between multiple
5885        /// layers of the same app (example: pip mode).
5886        #[prost(int64, optional, tag="2")]
5887        pub token: ::core::option::Option<i64>,
5888        /// The corresponding DisplayFrame token is required to link the App's work
5889        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5890        /// DisplayFrame.
5891        /// this.display_frame_token = DisplayFrame.token
5892        #[prost(int64, optional, tag="3")]
5893        pub display_frame_token: ::core::option::Option<i64>,
5894        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5895        /// the respective process track group.
5896        #[prost(int32, optional, tag="4")]
5897        pub pid: ::core::option::Option<i32>,
5898        #[prost(string, optional, tag="5")]
5899        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5900        #[prost(enumeration="PresentType", optional, tag="6")]
5901        pub present_type: ::core::option::Option<i32>,
5902        #[prost(bool, optional, tag="7")]
5903        pub on_time_finish: ::core::option::Option<bool>,
5904        #[prost(bool, optional, tag="8")]
5905        pub gpu_composition: ::core::option::Option<bool>,
5906        /// A bitmask of JankType. More than one reason can be attributed to a janky
5907        /// frame.
5908        #[prost(int32, optional, tag="9")]
5909        pub jank_type: ::core::option::Option<i32>,
5910        #[prost(enumeration="PredictionType", optional, tag="10")]
5911        pub prediction_type: ::core::option::Option<i32>,
5912        #[prost(bool, optional, tag="11")]
5913        pub is_buffer: ::core::option::Option<bool>,
5914        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5915        pub jank_severity_type: ::core::option::Option<i32>,
5916        #[prost(float, optional, tag="13")]
5917        pub present_delay_millis: ::core::option::Option<f32>,
5918        #[prost(float, optional, tag="14")]
5919        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5920        #[prost(float, optional, tag="15")]
5921        pub jank_severity_score: ::core::option::Option<f32>,
5922        /// experimental value for jank_type. Do not consider in jank analysis.
5923        #[prost(int32, optional, tag="16")]
5924        pub jank_type_experimental: ::core::option::Option<i32>,
5925        /// experimental value for present_type. Do not consider in jank analysis.
5926        #[prost(enumeration="PresentType", optional, tag="17")]
5927        pub present_type_experimental: ::core::option::Option<i32>,
5928        /// jank metadata information (for debug).
5929        #[prost(float, optional, tag="18")]
5930        pub jank_debug_metadata: ::core::option::Option<f32>,
5931        #[prost(enumeration="actual_surface_frame_start::LatchedFenceState", optional, tag="19")]
5932        pub latched_fence_state: ::core::option::Option<i32>,
5933    }
5934    /// Nested message and enum types in `ActualSurfaceFrameStart`.
5935    pub mod actual_surface_frame_start {
5936        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5937        #[repr(i32)]
5938        pub enum LatchedFenceState {
5939            LatchedUnknown = 0,
5940            LatchedSignaled = 1,
5941            LatchedUnsignaled = 2,
5942            LatchedDelayedLatchUnsignaled = 3,
5943        }
5944        impl LatchedFenceState {
5945            /// String value of the enum field names used in the ProtoBuf definition.
5946            ///
5947            /// The values are not transformed in any way and thus are considered stable
5948            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5949            pub fn as_str_name(&self) -> &'static str {
5950                match self {
5951                    LatchedFenceState::LatchedUnknown => "LATCHED_UNKNOWN",
5952                    LatchedFenceState::LatchedSignaled => "LATCHED_SIGNALED",
5953                    LatchedFenceState::LatchedUnsignaled => "LATCHED_UNSIGNALED",
5954                    LatchedFenceState::LatchedDelayedLatchUnsignaled => "LATCHED_DELAYED_LATCH_UNSIGNALED",
5955                }
5956            }
5957        }
5958    }
5959    /// Indicates the start of expected timeline slice for DisplayFrames.
5960    #[derive(Clone, PartialEq, ::prost::Message)]
5961    pub struct ExpectedDisplayFrameStart {
5962        /// Cookie used to correlate between the start and end messages of the same
5963        /// frame. Since all values except the ts are same for start and end, cookie
5964        /// helps in preventing redundant data transmission.
5965        /// The same cookie is used only by start and end messages of a single frame
5966        /// and is otherwise unique.
5967        #[prost(int64, optional, tag="1")]
5968        pub cookie: ::core::option::Option<i64>,
5969        /// Token received by SurfaceFlinger for its work
5970        /// this.token = SurfaceFrame.display_frame_token
5971        #[prost(int64, optional, tag="2")]
5972        pub token: ::core::option::Option<i64>,
5973        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5974        /// inside the SurfaceFlinger process group.
5975        #[prost(int32, optional, tag="3")]
5976        pub pid: ::core::option::Option<i32>,
5977    }
5978    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5979    /// includes the jank information.
5980    #[derive(Clone, PartialEq, ::prost::Message)]
5981    pub struct ActualDisplayFrameStart {
5982        /// Cookie used to correlate between the start and end messages of the same
5983        /// frame. Since all values except the ts are same for start and end, cookie
5984        /// helps in preventing redundant data transmission.
5985        /// The same cookie is used only by start and end messages of a single frame
5986        /// and is otherwise unique.
5987        #[prost(int64, optional, tag="1")]
5988        pub cookie: ::core::option::Option<i64>,
5989        /// Token received by SurfaceFlinger for its work
5990        /// this.token = SurfaceFrame.display_frame_token
5991        #[prost(int64, optional, tag="2")]
5992        pub token: ::core::option::Option<i64>,
5993        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5994        /// inside the SurfaceFlinger process group.
5995        #[prost(int32, optional, tag="3")]
5996        pub pid: ::core::option::Option<i32>,
5997        #[prost(enumeration="PresentType", optional, tag="4")]
5998        pub present_type: ::core::option::Option<i32>,
5999        #[prost(bool, optional, tag="5")]
6000        pub on_time_finish: ::core::option::Option<bool>,
6001        #[prost(bool, optional, tag="6")]
6002        pub gpu_composition: ::core::option::Option<bool>,
6003        /// A bitmask of JankType. More than one reason can be attributed to a janky
6004        /// frame.
6005        #[prost(int32, optional, tag="7")]
6006        pub jank_type: ::core::option::Option<i32>,
6007        #[prost(enumeration="PredictionType", optional, tag="8")]
6008        pub prediction_type: ::core::option::Option<i32>,
6009        #[prost(enumeration="JankSeverityType", optional, tag="9")]
6010        pub jank_severity_type: ::core::option::Option<i32>,
6011        #[prost(float, optional, tag="10")]
6012        pub present_delay_millis: ::core::option::Option<f32>,
6013        #[prost(float, optional, tag="11")]
6014        pub jank_severity_score: ::core::option::Option<f32>,
6015        /// experimental value for jank_type. Do not consider in jank analysis.
6016        #[prost(int32, optional, tag="12")]
6017        pub jank_type_experimental: ::core::option::Option<i32>,
6018        /// experimental value for present_type. Do not consider in jank analysis.
6019        #[prost(enumeration="PresentType", optional, tag="13")]
6020        pub present_type_experimental: ::core::option::Option<i32>,
6021        /// jank metadata information (for debug).
6022        #[prost(float, optional, tag="14")]
6023        pub jank_debug_metadata: ::core::option::Option<f32>,
6024        #[prost(int64, optional, tag="15")]
6025        pub latched_unsignaled_count: ::core::option::Option<i64>,
6026        #[prost(int64, optional, tag="16")]
6027        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
6028    }
6029    /// FrameEnd just sends the cookie to indicate that the corresponding
6030    /// <display/surface>frame slice's end.
6031    #[derive(Clone, PartialEq, ::prost::Message)]
6032    pub struct FrameEnd {
6033        #[prost(int64, optional, tag="1")]
6034        pub cookie: ::core::option::Option<i64>,
6035    }
6036    /// Specifies the reason(s) most likely to have caused the jank.
6037    /// Used as a bitmask.
6038    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6039    #[repr(i32)]
6040    pub enum JankType {
6041        JankUnspecified = 0,
6042        JankNone = 1,
6043        JankSfScheduling = 2,
6044        JankPredictionError = 4,
6045        JankDisplayHal = 8,
6046        JankSfCpuDeadlineMissed = 16,
6047        JankSfGpuDeadlineMissed = 32,
6048        JankAppDeadlineMissed = 64,
6049        JankBufferStuffing = 128,
6050        JankUnknown = 256,
6051        JankSfStuffing = 512,
6052        JankDropped = 1024,
6053        JankNonAnimating = 2048,
6054        JankAppResyncedJitter = 4096,
6055        JankDisplayNotOn = 8192,
6056        JankDisplayModeChangeInProgress = 16384,
6057        JankDisplayPowerModeChangeInProgress = 32768,
6058    }
6059    impl JankType {
6060        /// String value of the enum field names used in the ProtoBuf definition.
6061        ///
6062        /// The values are not transformed in any way and thus are considered stable
6063        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6064        pub fn as_str_name(&self) -> &'static str {
6065            match self {
6066                JankType::JankUnspecified => "JANK_UNSPECIFIED",
6067                JankType::JankNone => "JANK_NONE",
6068                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
6069                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
6070                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
6071                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
6072                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
6073                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
6074                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
6075                JankType::JankUnknown => "JANK_UNKNOWN",
6076                JankType::JankSfStuffing => "JANK_SF_STUFFING",
6077                JankType::JankDropped => "JANK_DROPPED",
6078                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
6079                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
6080                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
6081                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
6082                JankType::JankDisplayPowerModeChangeInProgress => "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS",
6083            }
6084        }
6085    }
6086    /// Specifies the severity of a jank.
6087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6088    #[repr(i32)]
6089    pub enum JankSeverityType {
6090        SeverityUnknown = 0,
6091        SeverityNone = 1,
6092        SeverityPartial = 2,
6093        SeverityFull = 3,
6094    }
6095    impl JankSeverityType {
6096        /// String value of the enum field names used in the ProtoBuf definition.
6097        ///
6098        /// The values are not transformed in any way and thus are considered stable
6099        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6100        pub fn as_str_name(&self) -> &'static str {
6101            match self {
6102                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
6103                JankSeverityType::SeverityNone => "SEVERITY_NONE",
6104                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
6105                JankSeverityType::SeverityFull => "SEVERITY_FULL",
6106            }
6107        }
6108    }
6109    /// Specifies how a frame was presented on screen w.r.t. timing.
6110    /// Can be different for SurfaceFrame and DisplayFrame.
6111    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6112    #[repr(i32)]
6113    pub enum PresentType {
6114        PresentUnspecified = 0,
6115        PresentOnTime = 1,
6116        PresentLate = 2,
6117        PresentEarly = 3,
6118        PresentDropped = 4,
6119        PresentUnknown = 5,
6120    }
6121    impl PresentType {
6122        /// String value of the enum field names used in the ProtoBuf definition.
6123        ///
6124        /// The values are not transformed in any way and thus are considered stable
6125        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6126        pub fn as_str_name(&self) -> &'static str {
6127            match self {
6128                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
6129                PresentType::PresentOnTime => "PRESENT_ON_TIME",
6130                PresentType::PresentLate => "PRESENT_LATE",
6131                PresentType::PresentEarly => "PRESENT_EARLY",
6132                PresentType::PresentDropped => "PRESENT_DROPPED",
6133                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
6134            }
6135        }
6136    }
6137    /// Specifies if the predictions for the frame are still valid, expired or
6138    /// unknown.
6139    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6140    #[repr(i32)]
6141    pub enum PredictionType {
6142        PredictionUnspecified = 0,
6143        PredictionValid = 1,
6144        PredictionExpired = 2,
6145        PredictionUnknown = 3,
6146    }
6147    impl PredictionType {
6148        /// String value of the enum field names used in the ProtoBuf definition.
6149        ///
6150        /// The values are not transformed in any way and thus are considered stable
6151        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6152        pub fn as_str_name(&self) -> &'static str {
6153            match self {
6154                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
6155                PredictionType::PredictionValid => "PREDICTION_VALID",
6156                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
6157                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
6158            }
6159        }
6160    }
6161    #[derive(Clone, PartialEq, ::prost::Oneof)]
6162    pub enum Event {
6163        #[prost(message, tag="1")]
6164        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
6165        #[prost(message, tag="2")]
6166        ActualDisplayFrameStart(ActualDisplayFrameStart),
6167        #[prost(message, tag="3")]
6168        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
6169        #[prost(message, tag="4")]
6170        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
6171        #[prost(message, tag="5")]
6172        FrameEnd(FrameEnd),
6173    }
6174}
6175// End of protos/perfetto/trace/android/frame_timeline_event.proto
6176
6177// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
6178
6179/// Generated by Android's GpuService.
6180#[derive(Clone, PartialEq, ::prost::Message)]
6181pub struct GpuMemTotalEvent {
6182    #[prost(uint32, optional, tag="1")]
6183    pub gpu_id: ::core::option::Option<u32>,
6184    #[prost(uint32, optional, tag="2")]
6185    pub pid: ::core::option::Option<u32>,
6186    #[prost(uint64, optional, tag="3")]
6187    pub size: ::core::option::Option<u64>,
6188}
6189// End of protos/perfetto/trace/android/gpu_mem_event.proto
6190
6191// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
6192
6193/// Generated by Android's SurfaceFlinger.
6194#[derive(Clone, PartialEq, ::prost::Message)]
6195pub struct GraphicsFrameEvent {
6196    #[prost(message, optional, tag="1")]
6197    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
6198}
6199/// Nested message and enum types in `GraphicsFrameEvent`.
6200pub mod graphics_frame_event {
6201    #[derive(Clone, PartialEq, ::prost::Message)]
6202    pub struct BufferEvent {
6203        #[prost(uint32, optional, tag="1")]
6204        pub frame_number: ::core::option::Option<u32>,
6205        #[prost(enumeration="BufferEventType", optional, tag="2")]
6206        pub r#type: ::core::option::Option<i32>,
6207        #[prost(string, optional, tag="3")]
6208        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6209        /// If no duration is set, the event is an instant event.
6210        #[prost(uint64, optional, tag="4")]
6211        pub duration_ns: ::core::option::Option<u64>,
6212        /// Unique buffer identifier.
6213        #[prost(uint32, optional, tag="5")]
6214        pub buffer_id: ::core::option::Option<u32>,
6215    }
6216    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6217    #[repr(i32)]
6218    pub enum BufferEventType {
6219        Unspecified = 0,
6220        Dequeue = 1,
6221        Queue = 2,
6222        Post = 3,
6223        AcquireFence = 4,
6224        Latch = 5,
6225        /// HWC will compose this buffer
6226        HwcCompositionQueued = 6,
6227        /// renderEngine composition
6228        FallbackComposition = 7,
6229        PresentFence = 8,
6230        ReleaseFence = 9,
6231        Modify = 10,
6232        Detach = 11,
6233        Attach = 12,
6234        Cancel = 13,
6235    }
6236    impl BufferEventType {
6237        /// String value of the enum field names used in the ProtoBuf definition.
6238        ///
6239        /// The values are not transformed in any way and thus are considered stable
6240        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6241        pub fn as_str_name(&self) -> &'static str {
6242            match self {
6243                BufferEventType::Unspecified => "UNSPECIFIED",
6244                BufferEventType::Dequeue => "DEQUEUE",
6245                BufferEventType::Queue => "QUEUE",
6246                BufferEventType::Post => "POST",
6247                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
6248                BufferEventType::Latch => "LATCH",
6249                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
6250                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
6251                BufferEventType::PresentFence => "PRESENT_FENCE",
6252                BufferEventType::ReleaseFence => "RELEASE_FENCE",
6253                BufferEventType::Modify => "MODIFY",
6254                BufferEventType::Detach => "DETACH",
6255                BufferEventType::Attach => "ATTACH",
6256                BufferEventType::Cancel => "CANCEL",
6257            }
6258        }
6259    }
6260}
6261// End of protos/perfetto/trace/android/graphics_frame_event.proto
6262
6263// Begin of protos/perfetto/trace/android/initial_display_state.proto
6264
6265#[derive(Clone, PartialEq, ::prost::Message)]
6266pub struct InitialDisplayState {
6267    /// Same values as android.view.Display.STATE_*
6268    #[prost(int32, optional, tag="1")]
6269    pub display_state: ::core::option::Option<i32>,
6270    #[prost(double, optional, tag="2")]
6271    pub brightness: ::core::option::Option<f64>,
6272}
6273// End of protos/perfetto/trace/android/initial_display_state.proto
6274
6275// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
6276
6277#[derive(Clone, PartialEq, ::prost::Message)]
6278pub struct KernelWakelockData {
6279    /// This is only emitted when we encounter new wakelocks.
6280    #[prost(message, repeated, tag="1")]
6281    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
6282    /// Interning id.
6283    #[prost(uint32, repeated, tag="2")]
6284    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
6285    /// If we interned the wakelock name in this packet, this is the total time
6286    /// the wakelock has been held.
6287    /// If not, it's a delta from the last time we saw it.
6288    #[prost(uint64, repeated, tag="3")]
6289    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
6290    #[prost(uint64, optional, tag="4")]
6291    pub error_flags: ::core::option::Option<u64>,
6292}
6293/// Nested message and enum types in `KernelWakelockData`.
6294pub mod kernel_wakelock_data {
6295    #[derive(Clone, PartialEq, ::prost::Message)]
6296    pub struct Wakelock {
6297        /// Interning id.
6298        #[prost(uint32, optional, tag="1")]
6299        pub wakelock_id: ::core::option::Option<u32>,
6300        /// Name of the wakelock.
6301        #[prost(string, optional, tag="2")]
6302        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
6303        /// Type of the wakelock. We record data about both true kernel wakelocks
6304        /// and "native" wakelocks which are taken in userspace but are more
6305        /// conceptually similar to kernel wakelocks than normal userspace ones.
6306        #[prost(enumeration="wakelock::Type", optional, tag="3")]
6307        pub wakelock_type: ::core::option::Option<i32>,
6308    }
6309    /// Nested message and enum types in `Wakelock`.
6310    pub mod wakelock {
6311        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6312        #[repr(i32)]
6313        pub enum Type {
6314            WakelockTypeUnknown = 0,
6315            WakelockTypeKernel = 1,
6316            WakelockTypeNative = 2,
6317        }
6318        impl Type {
6319            /// String value of the enum field names used in the ProtoBuf definition.
6320            ///
6321            /// The values are not transformed in any way and thus are considered stable
6322            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6323            pub fn as_str_name(&self) -> &'static str {
6324                match self {
6325                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
6326                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
6327                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
6328                }
6329            }
6330        }
6331    }
6332}
6333/// NetworkPacketEvent records the details of a single packet sent or received
6334/// on the network (in Linux kernel terminology, one sk_buff struct).
6335#[derive(Clone, PartialEq, ::prost::Message)]
6336pub struct NetworkPacketEvent {
6337    /// The direction traffic is flowing for this event.
6338    #[prost(enumeration="TrafficDirection", optional, tag="1")]
6339    pub direction: ::core::option::Option<i32>,
6340    /// The name of the network interface if available (e.g. 'rmnet0').
6341    #[prost(string, optional, tag="2")]
6342    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
6343    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
6344    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
6345    /// NetworkPacketContext.
6346    #[prost(uint32, optional, tag="3")]
6347    pub length: ::core::option::Option<u32>,
6348    /// The Linux user id associated with the packet's socket.
6349    #[prost(uint32, optional, tag="4")]
6350    pub uid: ::core::option::Option<u32>,
6351    /// The Android network tag associated with the packet's socket.
6352    #[prost(uint32, optional, tag="5")]
6353    pub tag: ::core::option::Option<u32>,
6354    /// The packet's IP protocol (TCP=6, UDP=17, etc).
6355    #[prost(uint32, optional, tag="6")]
6356    pub ip_proto: ::core::option::Option<u32>,
6357    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
6358    #[prost(uint32, optional, tag="7")]
6359    pub tcp_flags: ::core::option::Option<u32>,
6360    /// The local udp/tcp port of the packet.
6361    #[prost(uint32, optional, tag="8")]
6362    pub local_port: ::core::option::Option<u32>,
6363    /// The remote udp/tcp port of the packet.
6364    #[prost(uint32, optional, tag="9")]
6365    pub remote_port: ::core::option::Option<u32>,
6366    /// The 1-byte ICMP type identifier.
6367    #[prost(uint32, optional, tag="10")]
6368    pub icmp_type: ::core::option::Option<u32>,
6369    /// The 1-byte ICMP code identifier.
6370    #[prost(uint32, optional, tag="11")]
6371    pub icmp_code: ::core::option::Option<u32>,
6372}
6373/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
6374#[derive(Clone, PartialEq, ::prost::Message)]
6375pub struct NetworkPacketBundle {
6376    /// The timestamp of the i-th packet encoded as the nanoseconds since the
6377    /// enclosing TracePacket's timestamp.
6378    #[prost(uint64, repeated, tag="3")]
6379    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
6380    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
6381    #[prost(uint32, repeated, tag="4")]
6382    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
6383    /// Total number of packets in the bundle (when above aggregation_threshold).
6384    #[prost(uint32, optional, tag="5")]
6385    pub total_packets: ::core::option::Option<u32>,
6386    /// Duration between first and last packet (when above aggregation_threshold).
6387    #[prost(uint64, optional, tag="6")]
6388    pub total_duration: ::core::option::Option<u64>,
6389    /// Total packet length in bytes (when above aggregation_threshold).
6390    #[prost(uint64, optional, tag="7")]
6391    pub total_length: ::core::option::Option<u64>,
6392    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
6393    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
6394}
6395/// Nested message and enum types in `NetworkPacketBundle`.
6396pub mod network_packet_bundle {
6397    #[derive(Clone, PartialEq, ::prost::Oneof)]
6398    pub enum PacketContext {
6399        /// The intern id for looking up the associated packet context.
6400        #[prost(uint64, tag="1")]
6401        Iid(u64),
6402        /// The inlined context for events in this bundle.
6403        #[prost(message, tag="2")]
6404        Ctx(super::NetworkPacketEvent),
6405    }
6406}
6407/// An internable packet context.
6408#[derive(Clone, PartialEq, ::prost::Message)]
6409pub struct NetworkPacketContext {
6410    #[prost(uint64, optional, tag="1")]
6411    pub iid: ::core::option::Option<u64>,
6412    #[prost(message, optional, tag="2")]
6413    pub ctx: ::core::option::Option<NetworkPacketEvent>,
6414}
6415// End of protos/perfetto/trace/android/network_trace.proto
6416
6417// Begin of protos/perfetto/trace/android/packages_list.proto
6418
6419#[derive(Clone, PartialEq, ::prost::Message)]
6420pub struct PackagesList {
6421    #[prost(message, repeated, tag="1")]
6422    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
6423    /// At least one error occurred parsing the packages.list.
6424    #[prost(bool, optional, tag="2")]
6425    pub parse_error: ::core::option::Option<bool>,
6426    /// Failed to open / read packages.list.
6427    #[prost(bool, optional, tag="3")]
6428    pub read_error: ::core::option::Option<bool>,
6429}
6430/// Nested message and enum types in `PackagesList`.
6431pub mod packages_list {
6432    #[derive(Clone, PartialEq, ::prost::Message)]
6433    pub struct PackageInfo {
6434        #[prost(string, optional, tag="1")]
6435        pub name: ::core::option::Option<::prost::alloc::string::String>,
6436        #[prost(uint64, optional, tag="2")]
6437        pub uid: ::core::option::Option<u64>,
6438        #[prost(bool, optional, tag="3")]
6439        pub debuggable: ::core::option::Option<bool>,
6440        #[prost(bool, optional, tag="4")]
6441        pub profileable_from_shell: ::core::option::Option<bool>,
6442        #[prost(int64, optional, tag="5")]
6443        pub version_code: ::core::option::Option<i64>,
6444    }
6445}
6446// End of protos/perfetto/trace/android/packages_list.proto
6447
6448// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
6449
6450#[derive(Clone, PartialEq, ::prost::Message)]
6451pub struct PixelModemEvents {
6452    /// Pigweed-format dehydrated events.
6453    #[prost(bytes="vec", repeated, tag="1")]
6454    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6455    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
6456    /// timestamp is the absolute timestamp of the first event. Subsequent
6457    /// timestamps are deltas from the previous timestamp.
6458    /// The nth entry from `events` gets the nth entry here.
6459    #[prost(uint64, repeated, packed="false", tag="2")]
6460    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
6461}
6462/// NB: this is not emitted in the trace but can be prepended later.
6463#[derive(Clone, PartialEq, ::prost::Message)]
6464pub struct PixelModemTokenDatabase {
6465    /// Pigweed-format database to allow event rehydration.
6466    #[prost(bytes="vec", optional, tag="1")]
6467    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6468}
6469// End of protos/perfetto/trace/android/pixel_modem_events.proto
6470
6471// Begin of protos/perfetto/trace/android/protolog.proto
6472
6473/// represents a single log entry 
6474#[derive(Clone, PartialEq, ::prost::Message)]
6475pub struct ProtoLogMessage {
6476    /// log statement identifier, created from message string and log level. 
6477    #[prost(fixed64, optional, tag="1")]
6478    pub message_id: ::core::option::Option<u64>,
6479    /// string parameters passed to the log call that have been interned. 
6480    #[prost(uint32, repeated, packed="false", tag="2")]
6481    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
6482    /// integer parameters passed to the log call. 
6483    #[prost(sint64, repeated, packed="false", tag="3")]
6484    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
6485    /// floating point parameters passed to the log call. 
6486    #[prost(double, repeated, packed="false", tag="4")]
6487    pub double_params: ::prost::alloc::vec::Vec<f64>,
6488    /// boolean parameters passed to the log call. 
6489    #[prost(int32, repeated, packed="false", tag="5")]
6490    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
6491    /// id of the interned stacktrace string
6492    /// (only dumped if explicitly confuigured to do so)
6493    #[prost(uint32, optional, tag="6")]
6494    pub stacktrace_iid: ::core::option::Option<u32>,
6495}
6496/// contains all the data required to fully decode the protolog messages 
6497#[derive(Clone, PartialEq, ::prost::Message)]
6498pub struct ProtoLogViewerConfig {
6499    #[prost(message, repeated, tag="1")]
6500    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
6501    #[prost(message, repeated, tag="2")]
6502    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
6503}
6504/// Nested message and enum types in `ProtoLogViewerConfig`.
6505pub mod proto_log_viewer_config {
6506    #[derive(Clone, PartialEq, ::prost::Message)]
6507    pub struct MessageData {
6508        /// the id of the message that is logged in a ProtoLogMessage
6509        #[prost(fixed64, optional, tag="1")]
6510        pub message_id: ::core::option::Option<u64>,
6511        /// the string representation of the message
6512        #[prost(string, optional, tag="2")]
6513        pub message: ::core::option::Option<::prost::alloc::string::String>,
6514        /// the level of the message
6515        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
6516        pub level: ::core::option::Option<i32>,
6517        /// the id of the log group this message belongs to
6518        #[prost(uint32, optional, tag="4")]
6519        pub group_id: ::core::option::Option<u32>,
6520        /// path to the file where the message was logged
6521        #[prost(string, optional, tag="5")]
6522        pub location: ::core::option::Option<::prost::alloc::string::String>,
6523    }
6524    /// information about a ProtoLog log group 
6525    #[derive(Clone, PartialEq, ::prost::Message)]
6526    pub struct Group {
6527        #[prost(uint32, optional, tag="1")]
6528        pub id: ::core::option::Option<u32>,
6529        #[prost(string, optional, tag="2")]
6530        pub name: ::core::option::Option<::prost::alloc::string::String>,
6531        #[prost(string, optional, tag="3")]
6532        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6533    }
6534}
6535// End of protos/perfetto/trace/android/protolog.proto
6536
6537// Begin of protos/perfetto/trace/android/graphics/rect.proto
6538
6539#[derive(Clone, PartialEq, ::prost::Message)]
6540pub struct RectProto {
6541    #[prost(int32, optional, tag="1")]
6542    pub left: ::core::option::Option<i32>,
6543    #[prost(int32, optional, tag="2")]
6544    pub top: ::core::option::Option<i32>,
6545    #[prost(int32, optional, tag="3")]
6546    pub right: ::core::option::Option<i32>,
6547    #[prost(int32, optional, tag="4")]
6548    pub bottom: ::core::option::Option<i32>,
6549}
6550// End of protos/perfetto/trace/android/graphics/rect.proto
6551
6552// Begin of protos/perfetto/trace/android/shell_transition.proto
6553
6554/// ShellTransition messages record information about the shell transitions in
6555/// the system. This is used to track the animations that are created and execute
6556/// through the shell transition system.
6557#[derive(Clone, PartialEq, ::prost::Message)]
6558pub struct ShellTransition {
6559    /// The unique identifier of the transition.
6560    #[prost(int32, optional, tag="1")]
6561    pub id: ::core::option::Option<i32>,
6562    /// The time the transition was created on the WM side
6563    /// (using SystemClock.elapsedRealtimeNanos())
6564    #[prost(int64, optional, tag="2")]
6565    pub create_time_ns: ::core::option::Option<i64>,
6566    /// The time the transition was sent from the WM side to shell
6567    /// (using SystemClock.elapsedRealtimeNanos())
6568    #[prost(int64, optional, tag="3")]
6569    pub send_time_ns: ::core::option::Option<i64>,
6570    /// The time the transition was dispatched by shell to execute
6571    /// (using SystemClock.elapsedRealtimeNanos())
6572    #[prost(int64, optional, tag="4")]
6573    pub dispatch_time_ns: ::core::option::Option<i64>,
6574    /// If the transition merge was accepted by the transition handler, this
6575    /// contains the time the transition was merged into transition with id
6576    /// `merge_target`.
6577    /// (using SystemClock.elapsedRealtimeNanos())
6578    #[prost(int64, optional, tag="5")]
6579    pub merge_time_ns: ::core::option::Option<i64>,
6580    /// The time shell proposed the transition should be merged to the transition
6581    /// handler into transition with id `merge_target`.
6582    /// (using SystemClock.elapsedRealtimeNanos()).
6583    #[prost(int64, optional, tag="6")]
6584    pub merge_request_time_ns: ::core::option::Option<i64>,
6585    /// If the transition was aborted on the shell side, this is the time that
6586    /// occurred.
6587    /// (using SystemClock.elapsedRealtimeNanos())
6588    #[prost(int64, optional, tag="7")]
6589    pub shell_abort_time_ns: ::core::option::Option<i64>,
6590    /// If the transition was aborted on the wm side, this is the time that
6591    /// occurred.
6592    /// (using SystemClock.elapsedRealtimeNanos())
6593    #[prost(int64, optional, tag="8")]
6594    pub wm_abort_time_ns: ::core::option::Option<i64>,
6595    /// The time WM considers the transition to be complete.
6596    /// (using SystemClock.elapsedRealtimeNanos())
6597    #[prost(int64, optional, tag="9")]
6598    pub finish_time_ns: ::core::option::Option<i64>,
6599    /// The id of the transaction that WM proposed to use as the starting
6600    /// transaction. It contains all the layer changes required to setup the
6601    /// transition and should be executed right at the start of the transition
6602    /// by the transition handler.
6603    #[prost(uint64, optional, tag="10")]
6604    pub start_transaction_id: ::core::option::Option<u64>,
6605    /// The if of the transaction that WM proposed to use as the finish
6606    /// transaction. It contains all the layer changes required to set the final
6607    /// state of the transition.
6608    #[prost(uint64, optional, tag="11")]
6609    pub finish_transaction_id: ::core::option::Option<u64>,
6610    /// The id of the handler that executed the transition. A HandlerMappings
6611    /// message in the trace will contain the mapping of id to a string
6612    /// representation of the handler.
6613    #[prost(int32, optional, tag="12")]
6614    pub handler: ::core::option::Option<i32>,
6615    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
6616    #[prost(int32, optional, tag="13")]
6617    pub r#type: ::core::option::Option<i32>,
6618    /// The list of changes that are part of this transition.
6619    #[prost(message, repeated, tag="14")]
6620    pub changes: ::prost::alloc::vec::Vec<shell_transition::Change>,
6621    /// The id of the transition we have requested to merge or have merged this
6622    /// transition into.
6623    #[prost(int32, optional, tag="15")]
6624    pub merge_target: ::core::option::Option<i32>,
6625    /// The flags set on this transition.
6626    #[prost(int32, optional, tag="16")]
6627    pub flags: ::core::option::Option<i32>,
6628    /// The time the starting window was removed. Tracked because this can
6629    /// happen after the transition finishes, but the app may not yet be visible
6630    /// until the starting window is removed. So in a sense the transition is not
6631    /// finished until the starting window is removed. (b/284302118)
6632    /// (using SystemClock.elapsedRealtimeNanos())
6633    #[prost(int64, optional, tag="17")]
6634    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
6635}
6636/// Nested message and enum types in `ShellTransition`.
6637pub mod shell_transition {
6638    /// Contains the information about the windows changed in a transition.
6639    #[derive(Clone, PartialEq, ::prost::Message)]
6640    pub struct Change {
6641        /// The transition mode of this change (e.g. TO_FRONT, CLOSE...)
6642        #[prost(int32, optional, tag="1")]
6643        pub mode: ::core::option::Option<i32>,
6644        /// The layer id of this change.
6645        #[prost(int32, optional, tag="2")]
6646        pub layer_id: ::core::option::Option<i32>,
6647        /// The window id of this change.
6648        #[prost(int32, optional, tag="3")]
6649        pub window_id: ::core::option::Option<i32>,
6650        /// The flags set on this change.
6651        #[prost(int32, optional, tag="4")]
6652        pub flags: ::core::option::Option<i32>,
6653        /// The display id the change is transitioning on before the transition.
6654        #[prost(int32, optional, tag="5")]
6655        pub start_display_id: ::core::option::Option<i32>,
6656        /// The display id the change is transitioning on after the transition.
6657        #[prost(int32, optional, tag="6")]
6658        pub end_display_id: ::core::option::Option<i32>,
6659        /// The rotation of the change before the transition.
6660        #[prost(int32, optional, tag="7")]
6661        pub start_rotation: ::core::option::Option<i32>,
6662        /// The rotation of the change after the transition.
6663        #[prost(int32, optional, tag="8")]
6664        pub end_rotation: ::core::option::Option<i32>,
6665        /// The absolute screen bounds of the change before the transition.
6666        #[prost(message, optional, tag="9")]
6667        pub start_absolute_bounds: ::core::option::Option<super::RectProto>,
6668        /// The absolute screen bounds of the change after the transition.
6669        #[prost(message, optional, tag="10")]
6670        pub end_absolute_bounds: ::core::option::Option<super::RectProto>,
6671    }
6672}
6673/// Contains mappings from handler ids to string representation of the handlers.
6674#[derive(Clone, PartialEq, ::prost::Message)]
6675pub struct ShellHandlerMappings {
6676    #[prost(message, repeated, tag="1")]
6677    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
6678}
6679#[derive(Clone, PartialEq, ::prost::Message)]
6680pub struct ShellHandlerMapping {
6681    /// The id of the handler used in the ShellTransition message.
6682    #[prost(int32, optional, tag="1")]
6683    pub id: ::core::option::Option<i32>,
6684    /// A human readable and meaningful string representation of the handler.
6685    #[prost(string, optional, tag="2")]
6686    pub name: ::core::option::Option<::prost::alloc::string::String>,
6687}
6688// End of protos/perfetto/trace/android/shell_transition.proto
6689
6690// Begin of protos/perfetto/trace/android/graphics/corner_radii.proto
6691
6692#[derive(Clone, PartialEq, ::prost::Message)]
6693pub struct CornerRadiiProto {
6694    #[prost(float, optional, tag="1")]
6695    pub tl: ::core::option::Option<f32>,
6696    #[prost(float, optional, tag="2")]
6697    pub tr: ::core::option::Option<f32>,
6698    #[prost(float, optional, tag="3")]
6699    pub bl: ::core::option::Option<f32>,
6700    #[prost(float, optional, tag="4")]
6701    pub br: ::core::option::Option<f32>,
6702}
6703// End of protos/perfetto/trace/android/graphics/corner_radii.proto
6704
6705// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
6706
6707#[derive(Clone, PartialEq, ::prost::Message)]
6708pub struct RegionProto {
6709    #[prost(message, repeated, tag="2")]
6710    pub rect: ::prost::alloc::vec::Vec<RectProto>,
6711}
6712#[derive(Clone, PartialEq, ::prost::Message)]
6713pub struct SizeProto {
6714    #[prost(int32, optional, tag="1")]
6715    pub w: ::core::option::Option<i32>,
6716    #[prost(int32, optional, tag="2")]
6717    pub h: ::core::option::Option<i32>,
6718}
6719#[derive(Clone, PartialEq, ::prost::Message)]
6720pub struct TransformProto {
6721    #[prost(float, optional, tag="1")]
6722    pub dsdx: ::core::option::Option<f32>,
6723    #[prost(float, optional, tag="2")]
6724    pub dtdx: ::core::option::Option<f32>,
6725    #[prost(float, optional, tag="3")]
6726    pub dsdy: ::core::option::Option<f32>,
6727    #[prost(float, optional, tag="4")]
6728    pub dtdy: ::core::option::Option<f32>,
6729    #[prost(int32, optional, tag="5")]
6730    pub r#type: ::core::option::Option<i32>,
6731}
6732#[derive(Clone, PartialEq, ::prost::Message)]
6733pub struct ColorProto {
6734    #[prost(float, optional, tag="1")]
6735    pub r: ::core::option::Option<f32>,
6736    #[prost(float, optional, tag="2")]
6737    pub g: ::core::option::Option<f32>,
6738    #[prost(float, optional, tag="3")]
6739    pub b: ::core::option::Option<f32>,
6740    #[prost(float, optional, tag="4")]
6741    pub a: ::core::option::Option<f32>,
6742}
6743#[derive(Clone, PartialEq, ::prost::Message)]
6744pub struct InputWindowInfoProto {
6745    #[prost(uint32, optional, tag="1")]
6746    pub layout_params_flags: ::core::option::Option<u32>,
6747    #[prost(int32, optional, tag="2")]
6748    pub layout_params_type: ::core::option::Option<i32>,
6749    #[prost(message, optional, tag="3")]
6750    pub frame: ::core::option::Option<RectProto>,
6751    #[prost(message, optional, tag="4")]
6752    pub touchable_region: ::core::option::Option<RegionProto>,
6753    #[prost(int32, optional, tag="5")]
6754    pub surface_inset: ::core::option::Option<i32>,
6755    #[prost(bool, optional, tag="6")]
6756    pub visible: ::core::option::Option<bool>,
6757    #[deprecated]
6758    #[prost(bool, optional, tag="7")]
6759    pub can_receive_keys: ::core::option::Option<bool>,
6760    #[prost(bool, optional, tag="8")]
6761    pub focusable: ::core::option::Option<bool>,
6762    #[prost(bool, optional, tag="9")]
6763    pub has_wallpaper: ::core::option::Option<bool>,
6764    #[prost(float, optional, tag="10")]
6765    pub global_scale_factor: ::core::option::Option<f32>,
6766    #[deprecated]
6767    #[prost(float, optional, tag="11")]
6768    pub window_x_scale: ::core::option::Option<f32>,
6769    #[deprecated]
6770    #[prost(float, optional, tag="12")]
6771    pub window_y_scale: ::core::option::Option<f32>,
6772    #[prost(int32, optional, tag="13")]
6773    pub crop_layer_id: ::core::option::Option<i32>,
6774    #[prost(bool, optional, tag="14")]
6775    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6776    #[prost(message, optional, tag="15")]
6777    pub touchable_region_crop: ::core::option::Option<RectProto>,
6778    #[prost(message, optional, tag="16")]
6779    pub transform: ::core::option::Option<TransformProto>,
6780    #[prost(uint32, optional, tag="17")]
6781    pub input_config: ::core::option::Option<u32>,
6782}
6783#[derive(Clone, PartialEq, ::prost::Message)]
6784pub struct BlurRegion {
6785    #[prost(uint32, optional, tag="1")]
6786    pub blur_radius: ::core::option::Option<u32>,
6787    #[deprecated]
6788    #[prost(uint32, optional, tag="2")]
6789    pub corner_radius_tl: ::core::option::Option<u32>,
6790    #[deprecated]
6791    #[prost(uint32, optional, tag="3")]
6792    pub corner_radius_tr: ::core::option::Option<u32>,
6793    #[deprecated]
6794    #[prost(uint32, optional, tag="4")]
6795    pub corner_radius_bl: ::core::option::Option<u32>,
6796    #[deprecated]
6797    #[prost(float, optional, tag="5")]
6798    pub corner_radius_br: ::core::option::Option<f32>,
6799    #[prost(float, optional, tag="11")]
6800    pub corner_radius_tlx: ::core::option::Option<f32>,
6801    #[prost(float, optional, tag="12")]
6802    pub corner_radius_tly: ::core::option::Option<f32>,
6803    #[prost(float, optional, tag="13")]
6804    pub corner_radius_trx: ::core::option::Option<f32>,
6805    #[prost(float, optional, tag="14")]
6806    pub corner_radius_try: ::core::option::Option<f32>,
6807    #[prost(float, optional, tag="15")]
6808    pub corner_radius_blx: ::core::option::Option<f32>,
6809    #[prost(float, optional, tag="16")]
6810    pub corner_radius_bly: ::core::option::Option<f32>,
6811    #[prost(float, optional, tag="17")]
6812    pub corner_radius_brx: ::core::option::Option<f32>,
6813    #[prost(float, optional, tag="18")]
6814    pub corner_radius_bry: ::core::option::Option<f32>,
6815    #[prost(float, optional, tag="6")]
6816    pub alpha: ::core::option::Option<f32>,
6817    #[prost(int32, optional, tag="7")]
6818    pub left: ::core::option::Option<i32>,
6819    #[prost(int32, optional, tag="8")]
6820    pub top: ::core::option::Option<i32>,
6821    #[prost(int32, optional, tag="9")]
6822    pub right: ::core::option::Option<i32>,
6823    #[prost(int32, optional, tag="10")]
6824    pub bottom: ::core::option::Option<i32>,
6825}
6826#[derive(Clone, PartialEq, ::prost::Message)]
6827pub struct ColorTransformProto {
6828    /// This will be a 4x4 matrix of float values
6829    #[prost(float, repeated, tag="1")]
6830    pub val: ::prost::alloc::vec::Vec<f32>,
6831}
6832#[derive(Clone, PartialEq, ::prost::Message)]
6833pub struct BoxShadowSettings {
6834    #[prost(message, repeated, tag="1")]
6835    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6836}
6837/// Nested message and enum types in `BoxShadowSettings`.
6838pub mod box_shadow_settings {
6839    #[derive(Clone, PartialEq, ::prost::Message)]
6840    pub struct BoxShadowParams {
6841        #[prost(float, optional, tag="1")]
6842        pub blur_radius: ::core::option::Option<f32>,
6843        #[prost(float, optional, tag="2")]
6844        pub spread_radius: ::core::option::Option<f32>,
6845        #[prost(int32, optional, tag="3")]
6846        pub color: ::core::option::Option<i32>,
6847        #[prost(float, optional, tag="4")]
6848        pub offset_x: ::core::option::Option<f32>,
6849        #[prost(float, optional, tag="5")]
6850        pub offset_y: ::core::option::Option<f32>,
6851    }
6852}
6853#[derive(Clone, PartialEq, ::prost::Message)]
6854pub struct BorderSettings {
6855    #[prost(float, optional, tag="1")]
6856    pub stroke_width: ::core::option::Option<f32>,
6857    #[prost(int32, optional, tag="2")]
6858    pub color: ::core::option::Option<i32>,
6859}
6860// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6861
6862/// Message used by Winscope to process legacy trace files.
6863/// Represents a file full of surface flinger trace entries.
6864/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6865/// (.LYRTRACE), such that they can be easily identified.
6866#[derive(Clone, PartialEq, ::prost::Message)]
6867pub struct LayersTraceFileProto {
6868    /// Must be the first field, set to value in MagicNumber
6869    #[prost(fixed64, optional, tag="1")]
6870    pub magic_number: ::core::option::Option<u64>,
6871    #[prost(message, repeated, tag="2")]
6872    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6873    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6874    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6875    /// systemTime(SYSTEM_TIME_MONOTONIC)
6876    #[prost(fixed64, optional, tag="3")]
6877    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6878}
6879/// Nested message and enum types in `LayersTraceFileProto`.
6880pub mod layers_trace_file_proto {
6881    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6882    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6883    /// and there's no nice way to put 64bit constants into .proto files.
6884    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6885    #[repr(i32)]
6886    pub enum MagicNumber {
6887        Invalid = 0,
6888        /// LYRT (little-endian ASCII)
6889        L = 1414682956,
6890        /// RACE (little-endian ASCII)
6891        H = 1162035538,
6892    }
6893    impl MagicNumber {
6894        /// String value of the enum field names used in the ProtoBuf definition.
6895        ///
6896        /// The values are not transformed in any way and thus are considered stable
6897        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6898        pub fn as_str_name(&self) -> &'static str {
6899            match self {
6900                MagicNumber::Invalid => "INVALID",
6901                MagicNumber::L => "MAGIC_NUMBER_L",
6902                MagicNumber::H => "MAGIC_NUMBER_H",
6903            }
6904        }
6905    }
6906}
6907#[derive(Clone, PartialEq, ::prost::Message)]
6908pub struct LayersSnapshotProto {
6909    /// elapsed realtime in nanos since boot of when this entry was logged
6910    #[prost(sfixed64, optional, tag="1")]
6911    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6912    /// SurfaceFlinger's stage where the snapshot was triggered.
6913    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6914    #[prost(string, optional, tag="2")]
6915    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6916    #[prost(message, optional, tag="3")]
6917    pub layers: ::core::option::Option<LayersProto>,
6918    /// Blob for the current HWC information for all layers, reported by dumpsys.
6919    /// Example:
6920    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6921    #[prost(string, optional, tag="4")]
6922    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6923    /// Excludes state sent during composition like visible region and composition
6924    /// type.
6925    #[prost(bool, optional, tag="5")]
6926    pub excludes_composition_state: ::core::option::Option<bool>,
6927    /// Number of missed entries since the last entry was recorded.
6928    #[prost(uint32, optional, tag="6")]
6929    pub missed_entries: ::core::option::Option<u32>,
6930    #[prost(message, repeated, tag="7")]
6931    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6932    #[prost(int64, optional, tag="8")]
6933    pub vsync_id: ::core::option::Option<i64>,
6934}
6935/// ProtoVM Patch Proto
6936/// Merged by ProtoVM into LayersSnapshotProto
6937#[derive(Clone, PartialEq, ::prost::Message)]
6938pub struct LayersPatchProto {
6939    /// Layers that have been modified or added in this patch.
6940    #[prost(message, repeated, tag="1")]
6941    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6942    /// Displays that have been modified or added in this patch.
6943    #[prost(message, repeated, tag="2")]
6944    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6945    /// IDs of layers that have been deleted.
6946    #[prost(int32, repeated, packed="false", tag="3")]
6947    pub deleted_layer_ids: ::prost::alloc::vec::Vec<i32>,
6948    /// IDs of displays that have been deleted.
6949    #[prost(uint64, repeated, packed="false", tag="4")]
6950    pub deleted_display_ids: ::prost::alloc::vec::Vec<u64>,
6951    /// elapsed realtime in nanos since boot of when this entry was logged
6952    #[prost(sfixed64, optional, tag="5")]
6953    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6954    /// SurfaceFlinger's stage where the snapshot was triggered.
6955    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6956    #[prost(string, optional, tag="6")]
6957    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6958    /// Blob for the current HWC information for all layers, reported by dumpsys.
6959    #[prost(string, optional, tag="7")]
6960    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6961    /// Excludes state sent during composition like visible region and composition
6962    /// type.
6963    #[prost(bool, optional, tag="8")]
6964    pub excludes_composition_state: ::core::option::Option<bool>,
6965    /// Number of missed entries since the last entry was recorded.
6966    #[prost(uint32, optional, tag="9")]
6967    pub missed_entries: ::core::option::Option<u32>,
6968    /// VSync ID associated with this patch.
6969    #[prost(int64, optional, tag="10")]
6970    pub vsync_id: ::core::option::Option<i64>,
6971}
6972/// Contains a list of all layers.
6973#[derive(Clone, PartialEq, ::prost::Message)]
6974pub struct LayersProto {
6975    #[prost(message, repeated, tag="1")]
6976    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6977}
6978#[derive(Clone, PartialEq, ::prost::Message)]
6979pub struct DisplayProto {
6980    #[prost(uint64, optional, tag="1")]
6981    pub id: ::core::option::Option<u64>,
6982    /// Display descriptor, e.g. "Built-In Screen"
6983    #[prost(string, optional, tag="2")]
6984    pub name: ::core::option::Option<::prost::alloc::string::String>,
6985    #[prost(uint32, optional, tag="3")]
6986    pub layer_stack: ::core::option::Option<u32>,
6987    #[prost(message, optional, tag="4")]
6988    pub size: ::core::option::Option<SizeProto>,
6989    #[prost(message, optional, tag="5")]
6990    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6991    #[prost(message, optional, tag="6")]
6992    pub transform: ::core::option::Option<TransformProto>,
6993    #[prost(bool, optional, tag="7")]
6994    pub is_virtual: ::core::option::Option<bool>,
6995    #[prost(double, optional, tag="8")]
6996    pub dpi_x: ::core::option::Option<f64>,
6997    #[prost(double, optional, tag="9")]
6998    pub dpi_y: ::core::option::Option<f64>,
6999}
7000/// Information about each layer.
7001#[derive(Clone, PartialEq, ::prost::Message)]
7002pub struct LayerProto {
7003    /// unique id per layer.
7004    #[prost(int32, optional, tag="1")]
7005    pub id: ::core::option::Option<i32>,
7006    /// unique name per layer.
7007    /// Example: "Wallpaper".
7008    #[prost(string, optional, tag="2")]
7009    pub name: ::core::option::Option<::prost::alloc::string::String>,
7010    /// list of children this layer may have. May be empty.
7011    #[prost(int32, repeated, tag="3")]
7012    pub children: ::prost::alloc::vec::Vec<i32>,
7013    /// list of layers that are z order relative to this layer.
7014    #[prost(int32, repeated, tag="4")]
7015    pub relatives: ::prost::alloc::vec::Vec<i32>,
7016    /// The type of layer.
7017    /// Examples: "ContainerLayer", "BufferStateLayer".
7018    #[prost(string, optional, tag="5")]
7019    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7020    #[prost(message, optional, tag="6")]
7021    pub transparent_region: ::core::option::Option<RegionProto>,
7022    #[prost(message, optional, tag="7")]
7023    pub visible_region: ::core::option::Option<RegionProto>,
7024    #[prost(message, optional, tag="8")]
7025    pub damage_region: ::core::option::Option<RegionProto>,
7026    #[prost(uint32, optional, tag="9")]
7027    pub layer_stack: ::core::option::Option<u32>,
7028    /// The layer's z order. Can be z order in layer stack, relative to parent,
7029    /// or relative to another layer specified in zOrderRelative.
7030    #[prost(int32, optional, tag="10")]
7031    pub z: ::core::option::Option<i32>,
7032    /// The layer's position on the display.
7033    #[prost(message, optional, tag="11")]
7034    pub position: ::core::option::Option<PositionProto>,
7035    /// The layer's requested position.
7036    #[prost(message, optional, tag="12")]
7037    pub requested_position: ::core::option::Option<PositionProto>,
7038    /// The layer's size.
7039    #[prost(message, optional, tag="13")]
7040    pub size: ::core::option::Option<SizeProto>,
7041    /// The layer's crop in its own bounds.
7042    #[prost(message, optional, tag="14")]
7043    pub crop: ::core::option::Option<RectProto>,
7044    /// The layer's crop in its parent's bounds.
7045    #[deprecated]
7046    #[prost(message, optional, tag="15")]
7047    pub final_crop: ::core::option::Option<RectProto>,
7048    #[prost(bool, optional, tag="16")]
7049    pub is_opaque: ::core::option::Option<bool>,
7050    #[prost(bool, optional, tag="17")]
7051    pub invalidate: ::core::option::Option<bool>,
7052    /// Composition states's dataspace.
7053    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
7054    /// See full enum in
7055    /// frameworks/native/libs/nativewindow/include/android/data_space.h
7056    #[prost(string, optional, tag="18")]
7057    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
7058    /// Buffer's pixel format
7059    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
7060    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
7061    #[prost(string, optional, tag="19")]
7062    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
7063    /// The layer's actual color.
7064    #[prost(message, optional, tag="20")]
7065    pub color: ::core::option::Option<ColorProto>,
7066    /// The layer's requested color.
7067    #[prost(message, optional, tag="21")]
7068    pub requested_color: ::core::option::Option<ColorProto>,
7069    /// Can be any combination of
7070    ///     hidden = 0x01
7071    ///     opaque = 0x02,
7072    ///     secure = 0x80,
7073    #[prost(uint32, optional, tag="22")]
7074    pub flags: ::core::option::Option<u32>,
7075    /// The layer's actual transform
7076    #[prost(message, optional, tag="23")]
7077    pub transform: ::core::option::Option<TransformProto>,
7078    /// The layer's requested transform.
7079    #[prost(message, optional, tag="24")]
7080    pub requested_transform: ::core::option::Option<TransformProto>,
7081    /// The parent layer. This value can be null if there is no parent.
7082    #[prost(int32, optional, tag="25")]
7083    pub parent: ::core::option::Option<i32>,
7084    /// The layer that this layer has a z order relative to. This value can be
7085    /// null.
7086    #[prost(int32, optional, tag="26")]
7087    pub z_order_relative_of: ::core::option::Option<i32>,
7088    /// This value can be null if there's nothing to draw.
7089    #[prost(message, optional, tag="27")]
7090    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
7091    /// The number of frames available.
7092    #[prost(int32, optional, tag="28")]
7093    pub queued_frames: ::core::option::Option<i32>,
7094    #[prost(bool, optional, tag="29")]
7095    pub refresh_pending: ::core::option::Option<bool>,
7096    /// The layer's composer backend destination frame
7097    #[prost(message, optional, tag="30")]
7098    pub hwc_frame: ::core::option::Option<RectProto>,
7099    /// The layer's composer backend source crop
7100    #[prost(message, optional, tag="31")]
7101    pub hwc_crop: ::core::option::Option<FloatRectProto>,
7102    /// The layer's composer backend transform
7103    #[prost(int32, optional, tag="32")]
7104    pub hwc_transform: ::core::option::Option<i32>,
7105    #[deprecated]
7106    #[prost(int32, optional, tag="33")]
7107    pub window_type: ::core::option::Option<i32>,
7108    #[deprecated]
7109    #[prost(int32, optional, tag="34")]
7110    pub app_id: ::core::option::Option<i32>,
7111    /// The layer's composition type
7112    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
7113    pub hwc_composition_type: ::core::option::Option<i32>,
7114    /// If it's a buffer layer, indicate if the content is protected
7115    #[prost(bool, optional, tag="36")]
7116    pub is_protected: ::core::option::Option<bool>,
7117    /// Current frame number being rendered.
7118    #[prost(uint64, optional, tag="37")]
7119    pub curr_frame: ::core::option::Option<u64>,
7120    /// A list of barriers that the layer is waiting to update state.
7121    #[prost(message, repeated, tag="38")]
7122    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
7123    /// If active_buffer is not null, record its transform.
7124    #[prost(message, optional, tag="39")]
7125    pub buffer_transform: ::core::option::Option<TransformProto>,
7126    #[prost(int32, optional, tag="40")]
7127    pub effective_scaling_mode: ::core::option::Option<i32>,
7128    /// Layer's corner radius
7129    #[deprecated]
7130    #[prost(float, optional, tag="41")]
7131    pub corner_radius: ::core::option::Option<f32>,
7132    /// Metadata map. May be empty.
7133    #[prost(map="int32, bytes", tag="42")]
7134    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::vec::Vec<u8>>,
7135    #[prost(message, optional, tag="43")]
7136    pub effective_transform: ::core::option::Option<TransformProto>,
7137    #[prost(message, optional, tag="44")]
7138    pub source_bounds: ::core::option::Option<FloatRectProto>,
7139    #[prost(message, optional, tag="45")]
7140    pub bounds: ::core::option::Option<FloatRectProto>,
7141    #[prost(message, optional, tag="46")]
7142    pub screen_bounds: ::core::option::Option<FloatRectProto>,
7143    #[prost(message, optional, tag="47")]
7144    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
7145    /// Crop used to draw the rounded corner.
7146    #[prost(message, optional, tag="48")]
7147    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
7148    /// length of the shadow to draw around the layer, it may be set on the
7149    /// layer or set by a parent layer.
7150    #[prost(float, optional, tag="49")]
7151    pub shadow_radius: ::core::option::Option<f32>,
7152    #[prost(message, optional, tag="50")]
7153    pub color_transform: ::core::option::Option<ColorTransformProto>,
7154    #[prost(bool, optional, tag="51")]
7155    pub is_relative_of: ::core::option::Option<bool>,
7156    /// Layer's background blur radius in pixels.
7157    #[prost(int32, optional, tag="52")]
7158    pub background_blur_radius: ::core::option::Option<i32>,
7159    #[prost(uint32, optional, tag="53")]
7160    pub owner_uid: ::core::option::Option<u32>,
7161    /// Regions of a layer, where blur should be applied.
7162    #[prost(message, repeated, tag="54")]
7163    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7164    #[prost(bool, optional, tag="55")]
7165    pub is_trusted_overlay: ::core::option::Option<bool>,
7166    /// Corner radius explicitly set on layer rather than inherited
7167    #[deprecated]
7168    #[prost(float, optional, tag="56")]
7169    pub requested_corner_radius: ::core::option::Option<f32>,
7170    #[prost(message, optional, tag="57")]
7171    pub destination_frame: ::core::option::Option<RectProto>,
7172    #[prost(uint32, optional, tag="58")]
7173    pub original_id: ::core::option::Option<u32>,
7174    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
7175    pub trusted_overlay: ::core::option::Option<i32>,
7176    /// Layer's scale during background blur, relative to 1.0f=100%
7177    #[prost(float, optional, tag="60")]
7178    pub background_blur_scale: ::core::option::Option<f32>,
7179    /// Layer's corner radius.
7180    #[prost(message, optional, tag="61")]
7181    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
7182    /// Corner radius explicitly set on layer rather than inherited
7183    #[prost(message, optional, tag="62")]
7184    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
7185    /// Corner radius explicity set as drawn by client
7186    #[prost(message, optional, tag="63")]
7187    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
7188    /// Priority value of the layer set by the system.
7189    #[prost(int32, optional, tag="64")]
7190    pub system_content_priority: ::core::option::Option<i32>,
7191    /// Settings which specify how shadows should be drawn for a layer.
7192    #[prost(message, optional, tag="65")]
7193    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7194    /// Settings which specify how an outline should be drawn for a layer.
7195    #[prost(message, optional, tag="66")]
7196    pub border_settings: ::core::option::Option<BorderSettings>,
7197    /// "True" corner radii of the layer computed by SurfaceFlinger.
7198    #[prost(message, optional, tag="67")]
7199    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
7200    /// Reported corner radii of the layer.
7201    #[prost(message, optional, tag="68")]
7202    pub reported_radii: ::core::option::Option<CornerRadiiProto>,
7203    /// Flag indicating if client-drawn radii are disabled.
7204    #[prost(bool, optional, tag="69")]
7205    pub disable_client_drawn_radii: ::core::option::Option<bool>,
7206}
7207#[derive(Clone, PartialEq, ::prost::Message)]
7208pub struct PositionProto {
7209    #[prost(float, optional, tag="1")]
7210    pub x: ::core::option::Option<f32>,
7211    #[prost(float, optional, tag="2")]
7212    pub y: ::core::option::Option<f32>,
7213}
7214#[derive(Clone, PartialEq, ::prost::Message)]
7215pub struct FloatRectProto {
7216    #[prost(float, optional, tag="1")]
7217    pub left: ::core::option::Option<f32>,
7218    #[prost(float, optional, tag="2")]
7219    pub top: ::core::option::Option<f32>,
7220    #[prost(float, optional, tag="3")]
7221    pub right: ::core::option::Option<f32>,
7222    #[prost(float, optional, tag="4")]
7223    pub bottom: ::core::option::Option<f32>,
7224}
7225#[derive(Clone, PartialEq, ::prost::Message)]
7226pub struct ActiveBufferProto {
7227    #[prost(uint32, optional, tag="1")]
7228    pub width: ::core::option::Option<u32>,
7229    #[prost(uint32, optional, tag="2")]
7230    pub height: ::core::option::Option<u32>,
7231    #[prost(uint32, optional, tag="3")]
7232    pub stride: ::core::option::Option<u32>,
7233    #[prost(int32, optional, tag="4")]
7234    pub format: ::core::option::Option<i32>,
7235    #[prost(uint64, optional, tag="5")]
7236    pub usage: ::core::option::Option<u64>,
7237}
7238#[derive(Clone, PartialEq, ::prost::Message)]
7239pub struct BarrierLayerProto {
7240    /// layer id the barrier is waiting on.
7241    #[prost(int32, optional, tag="1")]
7242    pub id: ::core::option::Option<i32>,
7243    /// frame number the barrier is waiting on.
7244    #[prost(uint64, optional, tag="2")]
7245    pub frame_number: ::core::option::Option<u64>,
7246}
7247// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
7248
7249// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7250
7251/// Message used by Winscope to process legacy trace files.
7252/// Represents a file full of surface flinger transactions.
7253/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
7254/// (.TNXTRACE), such that they can be easily identified.
7255#[derive(Clone, PartialEq, ::prost::Message)]
7256pub struct TransactionTraceFile {
7257    /// Must be the first field, set to value in MagicNumber
7258    #[prost(fixed64, optional, tag="1")]
7259    pub magic_number: ::core::option::Option<u64>,
7260    #[prost(message, repeated, tag="2")]
7261    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
7262    /// offset between real-time clock and elapsed time clock in nanoseconds.
7263    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
7264    /// systemTime(SYSTEM_TIME_MONOTONIC)
7265    #[prost(fixed64, optional, tag="3")]
7266    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
7267    #[prost(uint32, optional, tag="4")]
7268    pub version: ::core::option::Option<u32>,
7269}
7270/// Nested message and enum types in `TransactionTraceFile`.
7271pub mod transaction_trace_file {
7272    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
7273    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
7274    /// and there's no nice way to put 64bit constants into .proto files.
7275    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7276    #[repr(i32)]
7277    pub enum MagicNumber {
7278        Invalid = 0,
7279        /// TNXT (little-endian ASCII)
7280        L = 1415073364,
7281        /// RACE (little-endian ASCII)
7282        H = 1162035538,
7283    }
7284    impl MagicNumber {
7285        /// String value of the enum field names used in the ProtoBuf definition.
7286        ///
7287        /// The values are not transformed in any way and thus are considered stable
7288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7289        pub fn as_str_name(&self) -> &'static str {
7290            match self {
7291                MagicNumber::Invalid => "INVALID",
7292                MagicNumber::L => "MAGIC_NUMBER_L",
7293                MagicNumber::H => "MAGIC_NUMBER_H",
7294            }
7295        }
7296    }
7297}
7298#[derive(Clone, PartialEq, ::prost::Message)]
7299pub struct TransactionTraceEntry {
7300    #[prost(int64, optional, tag="1")]
7301    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
7302    #[prost(int64, optional, tag="2")]
7303    pub vsync_id: ::core::option::Option<i64>,
7304    #[prost(message, repeated, tag="3")]
7305    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
7306    #[prost(message, repeated, tag="4")]
7307    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
7308    #[prost(uint32, repeated, packed="false", tag="5")]
7309    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
7310    #[prost(message, repeated, tag="6")]
7311    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
7312    #[prost(int32, repeated, packed="false", tag="7")]
7313    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
7314    #[prost(uint32, repeated, packed="false", tag="8")]
7315    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
7316    #[prost(bool, optional, tag="9")]
7317    pub displays_changed: ::core::option::Option<bool>,
7318    #[prost(message, repeated, tag="10")]
7319    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
7320}
7321#[derive(Clone, PartialEq, ::prost::Message)]
7322pub struct DisplayInfo {
7323    #[prost(uint32, optional, tag="1")]
7324    pub layer_stack: ::core::option::Option<u32>,
7325    #[prost(int32, optional, tag="2")]
7326    pub display_id: ::core::option::Option<i32>,
7327    #[prost(int32, optional, tag="3")]
7328    pub logical_width: ::core::option::Option<i32>,
7329    #[prost(int32, optional, tag="4")]
7330    pub logical_height: ::core::option::Option<i32>,
7331    #[prost(message, optional, tag="5")]
7332    pub transform_inverse: ::core::option::Option<Transform>,
7333    #[prost(message, optional, tag="6")]
7334    pub transform: ::core::option::Option<Transform>,
7335    #[prost(bool, optional, tag="7")]
7336    pub receives_input: ::core::option::Option<bool>,
7337    #[prost(bool, optional, tag="8")]
7338    pub is_secure: ::core::option::Option<bool>,
7339    #[prost(bool, optional, tag="9")]
7340    pub is_primary: ::core::option::Option<bool>,
7341    #[prost(bool, optional, tag="10")]
7342    pub is_virtual: ::core::option::Option<bool>,
7343    #[prost(int32, optional, tag="11")]
7344    pub rotation_flags: ::core::option::Option<i32>,
7345    #[prost(int32, optional, tag="12")]
7346    pub transform_hint: ::core::option::Option<i32>,
7347}
7348#[derive(Clone, PartialEq, ::prost::Message)]
7349pub struct LayerCreationArgs {
7350    #[prost(uint32, optional, tag="1")]
7351    pub layer_id: ::core::option::Option<u32>,
7352    #[prost(string, optional, tag="2")]
7353    pub name: ::core::option::Option<::prost::alloc::string::String>,
7354    #[prost(uint32, optional, tag="3")]
7355    pub flags: ::core::option::Option<u32>,
7356    #[prost(uint32, optional, tag="4")]
7357    pub parent_id: ::core::option::Option<u32>,
7358    #[prost(uint32, optional, tag="5")]
7359    pub mirror_from_id: ::core::option::Option<u32>,
7360    #[prost(bool, optional, tag="6")]
7361    pub add_to_root: ::core::option::Option<bool>,
7362    #[prost(uint32, optional, tag="7")]
7363    pub layer_stack_to_mirror: ::core::option::Option<u32>,
7364}
7365#[derive(Clone, PartialEq, ::prost::Message)]
7366pub struct Transform {
7367    #[prost(float, optional, tag="1")]
7368    pub dsdx: ::core::option::Option<f32>,
7369    #[prost(float, optional, tag="2")]
7370    pub dtdx: ::core::option::Option<f32>,
7371    #[prost(float, optional, tag="3")]
7372    pub dtdy: ::core::option::Option<f32>,
7373    #[prost(float, optional, tag="4")]
7374    pub dsdy: ::core::option::Option<f32>,
7375    #[prost(float, optional, tag="5")]
7376    pub tx: ::core::option::Option<f32>,
7377    #[prost(float, optional, tag="6")]
7378    pub ty: ::core::option::Option<f32>,
7379}
7380#[derive(Clone, PartialEq, ::prost::Message)]
7381pub struct TransactionBarrier {
7382    #[prost(string, optional, tag="1")]
7383    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
7384    #[prost(uint32, optional, tag="2")]
7385    pub kind: ::core::option::Option<u32>,
7386}
7387#[derive(Clone, PartialEq, ::prost::Message)]
7388pub struct TransactionState {
7389    #[prost(int32, optional, tag="1")]
7390    pub pid: ::core::option::Option<i32>,
7391    #[prost(int32, optional, tag="2")]
7392    pub uid: ::core::option::Option<i32>,
7393    #[prost(int64, optional, tag="3")]
7394    pub vsync_id: ::core::option::Option<i64>,
7395    #[prost(int32, optional, tag="4")]
7396    pub input_event_id: ::core::option::Option<i32>,
7397    #[prost(int64, optional, tag="5")]
7398    pub post_time: ::core::option::Option<i64>,
7399    #[prost(uint64, optional, tag="6")]
7400    pub transaction_id: ::core::option::Option<u64>,
7401    #[prost(message, repeated, tag="7")]
7402    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
7403    #[prost(message, repeated, tag="8")]
7404    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
7405    #[prost(uint64, repeated, packed="false", tag="9")]
7406    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
7407    #[prost(uint64, optional, tag="10")]
7408    pub apply_token: ::core::option::Option<u64>,
7409    #[prost(message, repeated, tag="11")]
7410    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
7411}
7412/// Keep insync with layer_state_t
7413#[derive(Clone, PartialEq, ::prost::Message)]
7414pub struct LayerState {
7415    #[prost(uint32, optional, tag="1")]
7416    pub layer_id: ::core::option::Option<u32>,
7417    #[prost(uint64, optional, tag="2")]
7418    pub what: ::core::option::Option<u64>,
7419    #[prost(float, optional, tag="3")]
7420    pub x: ::core::option::Option<f32>,
7421    #[prost(float, optional, tag="4")]
7422    pub y: ::core::option::Option<f32>,
7423    #[prost(int32, optional, tag="5")]
7424    pub z: ::core::option::Option<i32>,
7425    #[prost(uint32, optional, tag="6")]
7426    pub w: ::core::option::Option<u32>,
7427    #[prost(uint32, optional, tag="7")]
7428    pub h: ::core::option::Option<u32>,
7429    #[prost(uint32, optional, tag="8")]
7430    pub layer_stack: ::core::option::Option<u32>,
7431    #[prost(uint32, optional, tag="9")]
7432    pub flags: ::core::option::Option<u32>,
7433    #[prost(uint32, optional, tag="10")]
7434    pub mask: ::core::option::Option<u32>,
7435    #[prost(message, optional, tag="11")]
7436    pub matrix: ::core::option::Option<layer_state::Matrix22>,
7437    #[deprecated]
7438    #[prost(float, optional, tag="12")]
7439    pub corner_radius: ::core::option::Option<f32>,
7440    #[prost(uint32, optional, tag="13")]
7441    pub background_blur_radius: ::core::option::Option<u32>,
7442    #[prost(uint32, optional, tag="14")]
7443    pub parent_id: ::core::option::Option<u32>,
7444    #[prost(uint32, optional, tag="15")]
7445    pub relative_parent_id: ::core::option::Option<u32>,
7446    #[prost(float, optional, tag="16")]
7447    pub alpha: ::core::option::Option<f32>,
7448    #[prost(message, optional, tag="17")]
7449    pub color: ::core::option::Option<layer_state::Color3>,
7450    #[prost(message, optional, tag="18")]
7451    pub transparent_region: ::core::option::Option<RegionProto>,
7452    #[prost(uint32, optional, tag="19")]
7453    pub transform: ::core::option::Option<u32>,
7454    #[prost(bool, optional, tag="20")]
7455    pub transform_to_display_inverse: ::core::option::Option<bool>,
7456    #[prost(message, optional, tag="21")]
7457    pub crop: ::core::option::Option<RectProto>,
7458    #[prost(message, optional, tag="22")]
7459    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
7460    #[prost(int32, optional, tag="23")]
7461    pub api: ::core::option::Option<i32>,
7462    #[prost(bool, optional, tag="24")]
7463    pub has_sideband_stream: ::core::option::Option<bool>,
7464    #[prost(message, optional, tag="25")]
7465    pub color_transform: ::core::option::Option<ColorTransformProto>,
7466    #[prost(message, repeated, tag="26")]
7467    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7468    #[prost(message, optional, tag="27")]
7469    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
7470    #[prost(float, optional, tag="28")]
7471    pub bg_color_alpha: ::core::option::Option<f32>,
7472    #[prost(int32, optional, tag="29")]
7473    pub bg_color_dataspace: ::core::option::Option<i32>,
7474    #[prost(bool, optional, tag="30")]
7475    pub color_space_agnostic: ::core::option::Option<bool>,
7476    #[prost(float, optional, tag="31")]
7477    pub shadow_radius: ::core::option::Option<f32>,
7478    #[prost(int32, optional, tag="32")]
7479    pub frame_rate_selection_priority: ::core::option::Option<i32>,
7480    #[prost(float, optional, tag="33")]
7481    pub frame_rate: ::core::option::Option<f32>,
7482    #[prost(int32, optional, tag="34")]
7483    pub frame_rate_compatibility: ::core::option::Option<i32>,
7484    #[prost(int32, optional, tag="35")]
7485    pub change_frame_rate_strategy: ::core::option::Option<i32>,
7486    #[prost(uint32, optional, tag="36")]
7487    pub fixed_transform_hint: ::core::option::Option<u32>,
7488    #[prost(uint64, optional, tag="37")]
7489    pub frame_number: ::core::option::Option<u64>,
7490    #[prost(bool, optional, tag="38")]
7491    pub auto_refresh: ::core::option::Option<bool>,
7492    /// unused
7493    #[prost(bool, optional, tag="39")]
7494    pub is_trusted_overlay: ::core::option::Option<bool>,
7495    #[prost(message, optional, tag="40")]
7496    pub buffer_crop: ::core::option::Option<RectProto>,
7497    #[prost(message, optional, tag="41")]
7498    pub destination_frame: ::core::option::Option<RectProto>,
7499    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
7500    pub drop_input_mode: ::core::option::Option<i32>,
7501    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
7502    pub trusted_overlay: ::core::option::Option<i32>,
7503    #[prost(float, optional, tag="44")]
7504    pub background_blur_scale: ::core::option::Option<f32>,
7505    #[prost(message, optional, tag="45")]
7506    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7507    #[prost(message, optional, tag="46")]
7508    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7509    #[prost(int32, optional, tag="47")]
7510    pub system_content_priority: ::core::option::Option<i32>,
7511    #[prost(message, optional, tag="48")]
7512    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7513    #[prost(message, optional, tag="49")]
7514    pub border_settings: ::core::option::Option<BorderSettings>,
7515}
7516/// Nested message and enum types in `LayerState`.
7517pub mod layer_state {
7518    #[derive(Clone, PartialEq, ::prost::Message)]
7519    pub struct Matrix22 {
7520        #[prost(float, optional, tag="1")]
7521        pub dsdx: ::core::option::Option<f32>,
7522        #[prost(float, optional, tag="2")]
7523        pub dtdx: ::core::option::Option<f32>,
7524        #[prost(float, optional, tag="3")]
7525        pub dtdy: ::core::option::Option<f32>,
7526        #[prost(float, optional, tag="4")]
7527        pub dsdy: ::core::option::Option<f32>,
7528    }
7529    #[derive(Clone, PartialEq, ::prost::Message)]
7530    pub struct CornerRadii {
7531        #[prost(float, optional, tag="1")]
7532        pub tl: ::core::option::Option<f32>,
7533        #[prost(float, optional, tag="2")]
7534        pub tr: ::core::option::Option<f32>,
7535        #[prost(float, optional, tag="3")]
7536        pub bl: ::core::option::Option<f32>,
7537        #[prost(float, optional, tag="4")]
7538        pub br: ::core::option::Option<f32>,
7539    }
7540    #[derive(Clone, PartialEq, ::prost::Message)]
7541    pub struct Color3 {
7542        #[prost(float, optional, tag="1")]
7543        pub r: ::core::option::Option<f32>,
7544        #[prost(float, optional, tag="2")]
7545        pub g: ::core::option::Option<f32>,
7546        #[prost(float, optional, tag="3")]
7547        pub b: ::core::option::Option<f32>,
7548    }
7549    #[derive(Clone, PartialEq, ::prost::Message)]
7550    pub struct BufferData {
7551        #[prost(uint64, optional, tag="1")]
7552        pub buffer_id: ::core::option::Option<u64>,
7553        #[prost(uint32, optional, tag="2")]
7554        pub width: ::core::option::Option<u32>,
7555        #[prost(uint32, optional, tag="3")]
7556        pub height: ::core::option::Option<u32>,
7557        #[prost(uint64, optional, tag="4")]
7558        pub frame_number: ::core::option::Option<u64>,
7559        #[prost(uint32, optional, tag="5")]
7560        pub flags: ::core::option::Option<u32>,
7561        #[prost(uint64, optional, tag="6")]
7562        pub cached_buffer_id: ::core::option::Option<u64>,
7563        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
7564        pub pixel_format: ::core::option::Option<i32>,
7565        #[prost(uint64, optional, tag="8")]
7566        pub usage: ::core::option::Option<u64>,
7567    }
7568    /// Nested message and enum types in `BufferData`.
7569    pub mod buffer_data {
7570        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7571        #[repr(i32)]
7572        pub enum BufferDataChange {
7573            None = 0,
7574            FenceChanged = 1,
7575            FrameNumberChanged = 2,
7576            CachedBufferChanged = 4,
7577        }
7578        impl BufferDataChange {
7579            /// String value of the enum field names used in the ProtoBuf definition.
7580            ///
7581            /// The values are not transformed in any way and thus are considered stable
7582            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7583            pub fn as_str_name(&self) -> &'static str {
7584                match self {
7585                    BufferDataChange::None => "BufferDataChangeNone",
7586                    BufferDataChange::FenceChanged => "fenceChanged",
7587                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
7588                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
7589                }
7590            }
7591        }
7592        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7593        #[repr(i32)]
7594        pub enum PixelFormat {
7595            Unknown = 0,
7596            Custom = -4,
7597            Translucent = -3,
7598            Transparent = -2,
7599            Opaque = -1,
7600            Rgba8888 = 1,
7601            Rgbx8888 = 2,
7602            Rgb888 = 3,
7603            Rgb565 = 4,
7604            Bgra8888 = 5,
7605            Rgba5551 = 6,
7606            Rgba4444 = 7,
7607            RgbaFp16 = 22,
7608            Rgba1010102 = 43,
7609            R8 = 56,
7610        }
7611        impl PixelFormat {
7612            /// String value of the enum field names used in the ProtoBuf definition.
7613            ///
7614            /// The values are not transformed in any way and thus are considered stable
7615            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7616            pub fn as_str_name(&self) -> &'static str {
7617                match self {
7618                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
7619                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
7620                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
7621                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
7622                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
7623                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
7624                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
7625                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
7626                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
7627                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
7628                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
7629                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
7630                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
7631                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
7632                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
7633                }
7634            }
7635        }
7636    }
7637    #[derive(Clone, PartialEq, ::prost::Message)]
7638    pub struct WindowInfo {
7639        #[prost(uint32, optional, tag="1")]
7640        pub layout_params_flags: ::core::option::Option<u32>,
7641        #[prost(int32, optional, tag="2")]
7642        pub layout_params_type: ::core::option::Option<i32>,
7643        #[prost(message, optional, tag="3")]
7644        pub touchable_region: ::core::option::Option<super::RegionProto>,
7645        #[prost(int32, optional, tag="4")]
7646        pub surface_inset: ::core::option::Option<i32>,
7647        /// unused
7648        #[prost(bool, optional, tag="5")]
7649        pub focusable: ::core::option::Option<bool>,
7650        /// unused
7651        #[prost(bool, optional, tag="6")]
7652        pub has_wallpaper: ::core::option::Option<bool>,
7653        #[prost(float, optional, tag="7")]
7654        pub global_scale_factor: ::core::option::Option<f32>,
7655        #[prost(uint32, optional, tag="8")]
7656        pub crop_layer_id: ::core::option::Option<u32>,
7657        #[prost(bool, optional, tag="9")]
7658        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
7659        #[prost(message, optional, tag="10")]
7660        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
7661        #[prost(message, optional, tag="11")]
7662        pub transform: ::core::option::Option<super::Transform>,
7663        #[prost(uint32, optional, tag="12")]
7664        pub input_config: ::core::option::Option<u32>,
7665    }
7666    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
7667    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
7668    /// enums have to be 32 bits and there's no nice way to put 64bit constants
7669    /// into .proto files.
7670    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7671    #[repr(i32)]
7672    pub enum ChangesLsb {
7673        EChangesLsbNone = 0,
7674        EPositionChanged = 1,
7675        ELayerChanged = 2,
7676        /// unused = 0x00000004;
7677        EAlphaChanged = 8,
7678        EMatrixChanged = 16,
7679        ETransparentRegionChanged = 32,
7680        EFlagsChanged = 64,
7681        ELayerStackChanged = 128,
7682        EReleaseBufferListenerChanged = 1024,
7683        EShadowRadiusChanged = 2048,
7684        EBufferCropChanged = 8192,
7685        ERelativeLayerChanged = 16384,
7686        EReparent = 32768,
7687        EColorChanged = 65536,
7688        EBufferTransformChanged = 262144,
7689        ETransformToDisplayInverseChanged = 524288,
7690        ECropChanged = 1048576,
7691        EBufferChanged = 2097152,
7692        EAcquireFenceChanged = 4194304,
7693        EDataspaceChanged = 8388608,
7694        EHdrMetadataChanged = 16777216,
7695        ESurfaceDamageRegionChanged = 33554432,
7696        EApiChanged = 67108864,
7697        ESidebandStreamChanged = 134217728,
7698        EColorTransformChanged = 268435456,
7699        EHasListenerCallbacksChanged = 536870912,
7700        EInputInfoChanged = 1073741824,
7701        /// 0x80000000; (proto stores enums as signed int)
7702        ECornerRadiusChanged = -2147483648,
7703    }
7704    impl ChangesLsb {
7705        /// String value of the enum field names used in the ProtoBuf definition.
7706        ///
7707        /// The values are not transformed in any way and thus are considered stable
7708        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7709        pub fn as_str_name(&self) -> &'static str {
7710            match self {
7711                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
7712                ChangesLsb::EPositionChanged => "ePositionChanged",
7713                ChangesLsb::ELayerChanged => "eLayerChanged",
7714                ChangesLsb::EAlphaChanged => "eAlphaChanged",
7715                ChangesLsb::EMatrixChanged => "eMatrixChanged",
7716                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
7717                ChangesLsb::EFlagsChanged => "eFlagsChanged",
7718                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
7719                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
7720                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
7721                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
7722                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
7723                ChangesLsb::EReparent => "eReparent",
7724                ChangesLsb::EColorChanged => "eColorChanged",
7725                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
7726                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
7727                ChangesLsb::ECropChanged => "eCropChanged",
7728                ChangesLsb::EBufferChanged => "eBufferChanged",
7729                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
7730                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
7731                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
7732                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
7733                ChangesLsb::EApiChanged => "eApiChanged",
7734                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
7735                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
7736                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
7737                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
7738                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
7739            }
7740        }
7741    }
7742    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7743    #[repr(i32)]
7744    pub enum ChangesMsb {
7745        EChangesMsbNone = 0,
7746        EDestinationFrameChanged = 1,
7747        ECachedBufferChanged = 2,
7748        EBackgroundColorChanged = 4,
7749        EMetadataChanged = 8,
7750        EColorSpaceAgnosticChanged = 16,
7751        EFrameRateSelectionPriority = 32,
7752        EFrameRateChanged = 64,
7753        EBackgroundBlurRadiusChanged = 128,
7754        EProducerDisconnect = 256,
7755        EFixedTransformHintChanged = 512,
7756        EFrameNumberChanged = 1024,
7757        EBlurRegionsChanged = 2048,
7758        EAutoRefreshChanged = 4096,
7759        EStretchChanged = 8192,
7760        ETrustedOverlayChanged = 16384,
7761        EDropInputModeChanged = 32768,
7762        EClientDrawnCornerRadiusChanged = 65536,
7763        ESystemContentPriorityChanged = 131072,
7764        EBoxShadowSettingsChanged = 262144,
7765        EBorderSettingsChanged = 524288,
7766    }
7767    impl ChangesMsb {
7768        /// String value of the enum field names used in the ProtoBuf definition.
7769        ///
7770        /// The values are not transformed in any way and thus are considered stable
7771        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7772        pub fn as_str_name(&self) -> &'static str {
7773            match self {
7774                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
7775                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
7776                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
7777                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
7778                ChangesMsb::EMetadataChanged => "eMetadataChanged",
7779                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
7780                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
7781                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
7782                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
7783                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
7784                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
7785                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
7786                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
7787                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
7788                ChangesMsb::EStretchChanged => "eStretchChanged",
7789                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
7790                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
7791                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
7792                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
7793                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
7794                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
7795            }
7796        }
7797    }
7798    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7799    #[repr(i32)]
7800    pub enum Flags {
7801        EFlagsNone = 0,
7802        ELayerHidden = 1,
7803        ELayerOpaque = 2,
7804        ELayerSkipScreenshot = 64,
7805        ELayerSecure = 128,
7806        EEnableBackpressure = 256,
7807        ELayerIsDisplayDecoration = 512,
7808    }
7809    impl Flags {
7810        /// String value of the enum field names used in the ProtoBuf definition.
7811        ///
7812        /// The values are not transformed in any way and thus are considered stable
7813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7814        pub fn as_str_name(&self) -> &'static str {
7815            match self {
7816                Flags::EFlagsNone => "eFlagsNone",
7817                Flags::ELayerHidden => "eLayerHidden",
7818                Flags::ELayerOpaque => "eLayerOpaque",
7819                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
7820                Flags::ELayerSecure => "eLayerSecure",
7821                Flags::EEnableBackpressure => "eEnableBackpressure",
7822                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7823            }
7824        }
7825    }
7826    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7827    #[repr(i32)]
7828    pub enum DropInputMode {
7829        None = 0,
7830        All = 1,
7831        Obscured = 2,
7832    }
7833    impl DropInputMode {
7834        /// String value of the enum field names used in the ProtoBuf definition.
7835        ///
7836        /// The values are not transformed in any way and thus are considered stable
7837        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7838        pub fn as_str_name(&self) -> &'static str {
7839            match self {
7840                DropInputMode::None => "NONE",
7841                DropInputMode::All => "ALL",
7842                DropInputMode::Obscured => "OBSCURED",
7843            }
7844        }
7845    }
7846}
7847#[derive(Clone, PartialEq, ::prost::Message)]
7848pub struct DisplayState {
7849    #[prost(int32, optional, tag="1")]
7850    pub id: ::core::option::Option<i32>,
7851    #[prost(uint32, optional, tag="2")]
7852    pub what: ::core::option::Option<u32>,
7853    #[prost(uint32, optional, tag="3")]
7854    pub flags: ::core::option::Option<u32>,
7855    #[prost(uint32, optional, tag="4")]
7856    pub layer_stack: ::core::option::Option<u32>,
7857    #[prost(uint32, optional, tag="5")]
7858    pub orientation: ::core::option::Option<u32>,
7859    #[prost(message, optional, tag="6")]
7860    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7861    #[prost(message, optional, tag="7")]
7862    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7863    #[prost(uint32, optional, tag="8")]
7864    pub width: ::core::option::Option<u32>,
7865    #[prost(uint32, optional, tag="9")]
7866    pub height: ::core::option::Option<u32>,
7867}
7868/// Nested message and enum types in `DisplayState`.
7869pub mod display_state {
7870    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7871    #[repr(i32)]
7872    pub enum Changes {
7873        EChangesNone = 0,
7874        ESurfaceChanged = 1,
7875        ELayerStackChanged = 2,
7876        EDisplayProjectionChanged = 4,
7877        EDisplaySizeChanged = 8,
7878        EFlagsChanged = 16,
7879    }
7880    impl Changes {
7881        /// String value of the enum field names used in the ProtoBuf definition.
7882        ///
7883        /// The values are not transformed in any way and thus are considered stable
7884        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7885        pub fn as_str_name(&self) -> &'static str {
7886            match self {
7887                Changes::EChangesNone => "eChangesNone",
7888                Changes::ESurfaceChanged => "eSurfaceChanged",
7889                Changes::ELayerStackChanged => "eLayerStackChanged",
7890                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7891                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7892                Changes::EFlagsChanged => "eFlagsChanged",
7893            }
7894        }
7895    }
7896}
7897// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7898
7899// Begin of protos/perfetto/trace/android/user_list.proto
7900
7901#[derive(Clone, PartialEq, ::prost::Message)]
7902pub struct AndroidUserList {
7903    #[prost(message, repeated, tag="1")]
7904    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7905    /// Error number
7906    #[prost(int32, optional, tag="2")]
7907    pub error: ::core::option::Option<i32>,
7908}
7909/// Nested message and enum types in `AndroidUserList`.
7910pub mod android_user_list {
7911    #[derive(Clone, PartialEq, ::prost::Message)]
7912    pub struct UserInfo {
7913        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7914        #[prost(string, optional, tag="1")]
7915        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7916        #[prost(int32, optional, tag="2")]
7917        pub uid: ::core::option::Option<i32>,
7918    }
7919}
7920// End of protos/perfetto/trace/android/user_list.proto
7921
7922// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7923
7924#[derive(Clone, PartialEq, ::prost::Message)]
7925pub struct WinscopeExtensions {
7926}
7927// End of protos/perfetto/trace/android/winscope_extensions.proto
7928
7929// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7930
7931/// This message is not intended to be written by the chrome on the device.
7932/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7933/// part of the trace that's written by the telemetry tracing agent).
7934#[derive(Clone, PartialEq, ::prost::Message)]
7935pub struct ChromeBenchmarkMetadata {
7936    /// Time when the benchmark execution started (host unixtime in microseconds).
7937    #[prost(int64, optional, tag="1")]
7938    pub benchmark_start_time_us: ::core::option::Option<i64>,
7939    /// Time when this particular story was run (host unixtime in microseconds).
7940    #[prost(int64, optional, tag="2")]
7941    pub story_run_time_us: ::core::option::Option<i64>,
7942    /// Name of benchmark.
7943    #[prost(string, optional, tag="3")]
7944    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7945    /// Description of benchmark.
7946    #[prost(string, optional, tag="4")]
7947    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7948    /// Optional label.
7949    #[prost(string, optional, tag="5")]
7950    pub label: ::core::option::Option<::prost::alloc::string::String>,
7951    /// Name of story.
7952    #[prost(string, optional, tag="6")]
7953    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7954    /// List of story tags.
7955    #[prost(string, repeated, tag="7")]
7956    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7957    /// Index of the story run (>0 if the same story was run several times).
7958    #[prost(int32, optional, tag="8")]
7959    pub story_run_index: ::core::option::Option<i32>,
7960    /// Whether this run failed.
7961    #[prost(bool, optional, tag="9")]
7962    pub had_failures: ::core::option::Option<bool>,
7963}
7964// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7965
7966// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7967
7968/// Metadata for chrome traces.
7969#[derive(Clone, PartialEq, ::prost::Message)]
7970pub struct ChromeMetadataPacket {
7971    #[prost(message, optional, tag="1")]
7972    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7973    /// Version code of Chrome used by Android's Play Store. This field is only set
7974    /// on Android.
7975    #[prost(int32, optional, tag="2")]
7976    pub chrome_version_code: ::core::option::Option<i32>,
7977    /// Comma separated list of enabled categories for tracing. The list of
7978    /// possible category strings are listed in code
7979    /// base/trace_event/builtin_categories.h.
7980    #[prost(string, optional, tag="3")]
7981    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7982    /// List of Finch study/groups that apply to this trace.
7983    #[prost(message, repeated, tag="4")]
7984    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7985    /// The package name of the app which is being traced. This field is only set
7986    /// on Android.
7987    #[prost(string, optional, tag="5")]
7988    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7989    /// A version number string for Chrome. This matches
7990    /// SystemProfileProto::app_version.
7991    #[prost(string, optional, tag="6")]
7992    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
7993    /// This matches SystemProfileProto::channel.
7994    #[prost(uint32, optional, tag="7")]
7995    pub channel: ::core::option::Option<u32>,
7996    /// The user's operating system. This matches SystemProfileProto::OS::name.
7997    #[prost(string, optional, tag="8")]
7998    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
7999}
8000/// Nested message and enum types in `ChromeMetadataPacket`.
8001pub mod chrome_metadata_packet {
8002    /// Finch name and group based on the ActiveGroupId.
8003    #[derive(Clone, PartialEq, ::prost::Message)]
8004    pub struct FinchHash {
8005        #[prost(uint32, optional, tag="1")]
8006        pub name: ::core::option::Option<u32>,
8007        #[prost(uint32, optional, tag="2")]
8008        pub group: ::core::option::Option<u32>,
8009    }
8010}
8011/// Metadata related to background tracing scenarios, states and triggers.
8012#[derive(Clone, PartialEq, ::prost::Message)]
8013pub struct BackgroundTracingMetadata {
8014    /// Specifies the rule that caused the trace to be uploaded.
8015    #[prost(message, optional, tag="1")]
8016    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
8017    /// List of all active triggers in current session, when trace was triggered.
8018    #[prost(message, repeated, tag="2")]
8019    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
8020    /// Hash of the scenario name.
8021    #[prost(fixed32, optional, tag="3")]
8022    pub scenario_name_hash: ::core::option::Option<u32>,
8023}
8024/// Nested message and enum types in `BackgroundTracingMetadata`.
8025pub mod background_tracing_metadata {
8026    /// Information about a trigger rule defined in the experiment config.
8027    #[derive(Clone, PartialEq, ::prost::Message)]
8028    pub struct TriggerRule {
8029        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
8030        pub trigger_type: ::core::option::Option<i32>,
8031        #[prost(message, optional, tag="2")]
8032        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
8033        #[prost(message, optional, tag="3")]
8034        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
8035        /// Hash of the rule name.
8036        #[prost(fixed32, optional, tag="4")]
8037        pub name_hash: ::core::option::Option<u32>,
8038    }
8039    /// Nested message and enum types in `TriggerRule`.
8040    pub mod trigger_rule {
8041        /// Configuration of histogram trigger.
8042        #[derive(Clone, PartialEq, ::prost::Message)]
8043        pub struct HistogramRule {
8044            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
8045            #[prost(fixed64, optional, tag="1")]
8046            pub histogram_name_hash: ::core::option::Option<u64>,
8047            /// Range of values of the histogram that activates trigger.
8048            #[prost(int64, optional, tag="2")]
8049            pub histogram_min_trigger: ::core::option::Option<i64>,
8050            #[prost(int64, optional, tag="3")]
8051            pub histogram_max_trigger: ::core::option::Option<i64>,
8052        }
8053        /// Configuration of named trigger.
8054        #[derive(Clone, PartialEq, ::prost::Message)]
8055        pub struct NamedRule {
8056            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
8057            pub event_type: ::core::option::Option<i32>,
8058            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
8059            /// content-trigger that actually fired.
8060            #[prost(fixed64, optional, tag="2")]
8061            pub content_trigger_name_hash: ::core::option::Option<u64>,
8062        }
8063        /// Nested message and enum types in `NamedRule`.
8064        pub mod named_rule {
8065            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8066            #[repr(i32)]
8067            pub enum EventType {
8068                Unspecified = 0,
8069                SessionRestore = 1,
8070                Navigation = 2,
8071                Startup = 3,
8072                ReachedCode = 4,
8073                ContentTrigger = 5,
8074                TestRule = 1000,
8075            }
8076            impl EventType {
8077                /// String value of the enum field names used in the ProtoBuf definition.
8078                ///
8079                /// The values are not transformed in any way and thus are considered stable
8080                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8081                pub fn as_str_name(&self) -> &'static str {
8082                    match self {
8083                        EventType::Unspecified => "UNSPECIFIED",
8084                        EventType::SessionRestore => "SESSION_RESTORE",
8085                        EventType::Navigation => "NAVIGATION",
8086                        EventType::Startup => "STARTUP",
8087                        EventType::ReachedCode => "REACHED_CODE",
8088                        EventType::ContentTrigger => "CONTENT_TRIGGER",
8089                        EventType::TestRule => "TEST_RULE",
8090                    }
8091                }
8092            }
8093        }
8094        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8095        #[repr(i32)]
8096        pub enum TriggerType {
8097            TriggerUnspecified = 0,
8098            /// Traces are triggered by specific range of values of an UMA histogram.
8099            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
8100            /// Traces are triggered by specific named events in chromium codebase,
8101            /// like "second-update-failure".
8102            MonitorAndDumpWhenTriggerNamed = 2,
8103        }
8104        impl TriggerType {
8105            /// String value of the enum field names used in the ProtoBuf definition.
8106            ///
8107            /// The values are not transformed in any way and thus are considered stable
8108            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8109            pub fn as_str_name(&self) -> &'static str {
8110                match self {
8111                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
8112                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
8113                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
8114                }
8115            }
8116        }
8117    }
8118}
8119// End of protos/perfetto/trace/chrome/chrome_metadata.proto
8120
8121// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
8122
8123#[derive(Clone, PartialEq, ::prost::Message)]
8124pub struct ChromeTracedValue {
8125    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
8126    pub nested_type: ::core::option::Option<i32>,
8127    #[prost(string, repeated, tag="2")]
8128    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8129    #[prost(message, repeated, tag="3")]
8130    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8131    #[prost(message, repeated, tag="4")]
8132    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8133    #[prost(int32, optional, tag="5")]
8134    pub int_value: ::core::option::Option<i32>,
8135    #[prost(double, optional, tag="6")]
8136    pub double_value: ::core::option::Option<f64>,
8137    #[prost(bool, optional, tag="7")]
8138    pub bool_value: ::core::option::Option<bool>,
8139    #[prost(string, optional, tag="8")]
8140    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
8141}
8142/// Nested message and enum types in `ChromeTracedValue`.
8143pub mod chrome_traced_value {
8144    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8145    #[repr(i32)]
8146    pub enum NestedType {
8147        Dict = 0,
8148        Array = 1,
8149    }
8150    impl NestedType {
8151        /// String value of the enum field names used in the ProtoBuf definition.
8152        ///
8153        /// The values are not transformed in any way and thus are considered stable
8154        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8155        pub fn as_str_name(&self) -> &'static str {
8156            match self {
8157                NestedType::Dict => "DICT",
8158                NestedType::Array => "ARRAY",
8159            }
8160        }
8161    }
8162}
8163#[derive(Clone, PartialEq, ::prost::Message)]
8164pub struct ChromeStringTableEntry {
8165    #[prost(string, optional, tag="1")]
8166    pub value: ::core::option::Option<::prost::alloc::string::String>,
8167    #[prost(int32, optional, tag="2")]
8168    pub index: ::core::option::Option<i32>,
8169}
8170/// Deprecated, use TrackEvent protos instead.
8171#[derive(Clone, PartialEq, ::prost::Message)]
8172pub struct ChromeTraceEvent {
8173    #[prost(string, optional, tag="1")]
8174    pub name: ::core::option::Option<::prost::alloc::string::String>,
8175    #[prost(int64, optional, tag="2")]
8176    pub timestamp: ::core::option::Option<i64>,
8177    #[prost(int32, optional, tag="3")]
8178    pub phase: ::core::option::Option<i32>,
8179    #[prost(int32, optional, tag="4")]
8180    pub thread_id: ::core::option::Option<i32>,
8181    #[prost(int64, optional, tag="5")]
8182    pub duration: ::core::option::Option<i64>,
8183    #[prost(int64, optional, tag="6")]
8184    pub thread_duration: ::core::option::Option<i64>,
8185    #[prost(string, optional, tag="7")]
8186    pub scope: ::core::option::Option<::prost::alloc::string::String>,
8187    #[prost(uint64, optional, tag="8")]
8188    pub id: ::core::option::Option<u64>,
8189    #[prost(uint32, optional, tag="9")]
8190    pub flags: ::core::option::Option<u32>,
8191    #[prost(string, optional, tag="10")]
8192    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
8193    #[prost(int32, optional, tag="11")]
8194    pub process_id: ::core::option::Option<i32>,
8195    #[prost(int64, optional, tag="12")]
8196    pub thread_timestamp: ::core::option::Option<i64>,
8197    #[prost(uint64, optional, tag="13")]
8198    pub bind_id: ::core::option::Option<u64>,
8199    #[prost(message, repeated, tag="14")]
8200    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
8201    /// Takes precedence over respectively |name| and
8202    /// |category_group_name_index| if set,
8203    /// and are indices into |string_table|.
8204    #[prost(uint32, optional, tag="15")]
8205    pub name_index: ::core::option::Option<u32>,
8206    #[prost(uint32, optional, tag="16")]
8207    pub category_group_name_index: ::core::option::Option<u32>,
8208}
8209/// Nested message and enum types in `ChromeTraceEvent`.
8210pub mod chrome_trace_event {
8211    #[derive(Clone, PartialEq, ::prost::Message)]
8212    pub struct Arg {
8213        #[prost(string, optional, tag="1")]
8214        pub name: ::core::option::Option<::prost::alloc::string::String>,
8215        /// Takes precedence over |name| if set,
8216        /// and is an index into |string_table|.
8217        #[prost(uint32, optional, tag="9")]
8218        pub name_index: ::core::option::Option<u32>,
8219        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
8220        pub value: ::core::option::Option<arg::Value>,
8221    }
8222    /// Nested message and enum types in `Arg`.
8223    pub mod arg {
8224        #[derive(Clone, PartialEq, ::prost::Oneof)]
8225        pub enum Value {
8226            #[prost(bool, tag="2")]
8227            BoolValue(bool),
8228            #[prost(uint64, tag="3")]
8229            UintValue(u64),
8230            #[prost(int64, tag="4")]
8231            IntValue(i64),
8232            #[prost(double, tag="5")]
8233            DoubleValue(f64),
8234            #[prost(string, tag="6")]
8235            StringValue(::prost::alloc::string::String),
8236            /// Pointers are stored in a separate type as the JSON output treats them
8237            /// differently from other uint64 values.
8238            #[prost(uint64, tag="7")]
8239            PointerValue(u64),
8240            #[prost(string, tag="8")]
8241            JsonValue(::prost::alloc::string::String),
8242            #[prost(message, tag="10")]
8243            TracedValue(super::super::ChromeTracedValue),
8244        }
8245    }
8246}
8247#[derive(Clone, PartialEq, ::prost::Message)]
8248pub struct ChromeMetadata {
8249    #[prost(string, optional, tag="1")]
8250    pub name: ::core::option::Option<::prost::alloc::string::String>,
8251    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
8252    pub value: ::core::option::Option<chrome_metadata::Value>,
8253}
8254/// Nested message and enum types in `ChromeMetadata`.
8255pub mod chrome_metadata {
8256    #[derive(Clone, PartialEq, ::prost::Oneof)]
8257    pub enum Value {
8258        #[prost(string, tag="2")]
8259        StringValue(::prost::alloc::string::String),
8260        #[prost(bool, tag="3")]
8261        BoolValue(bool),
8262        #[prost(int64, tag="4")]
8263        IntValue(i64),
8264        #[prost(string, tag="5")]
8265        JsonValue(::prost::alloc::string::String),
8266    }
8267}
8268/// Subtraces produced in legacy json format by Chrome tracing agents not yet
8269/// updated to support the new binary format, e.g. ETW and CrOS ARC.
8270/// TODO(eseckler): Update these agents to become perfetto producers.
8271#[derive(Clone, PartialEq, ::prost::Message)]
8272pub struct ChromeLegacyJsonTrace {
8273    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
8274    pub r#type: ::core::option::Option<i32>,
8275    #[prost(string, optional, tag="2")]
8276    pub data: ::core::option::Option<::prost::alloc::string::String>,
8277}
8278/// Nested message and enum types in `ChromeLegacyJsonTrace`.
8279pub mod chrome_legacy_json_trace {
8280    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8281    #[repr(i32)]
8282    pub enum TraceType {
8283        UserTrace = 0,
8284        /// Deprecated.
8285        SystemTrace = 1,
8286    }
8287    impl TraceType {
8288        /// String value of the enum field names used in the ProtoBuf definition.
8289        ///
8290        /// The values are not transformed in any way and thus are considered stable
8291        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8292        pub fn as_str_name(&self) -> &'static str {
8293            match self {
8294                TraceType::UserTrace => "USER_TRACE",
8295                TraceType::SystemTrace => "SYSTEM_TRACE",
8296            }
8297        }
8298    }
8299}
8300#[derive(Clone, PartialEq, ::prost::Message)]
8301pub struct ChromeEventBundle {
8302    /// Deprecated, use TrackEvent protos instead.
8303    #[deprecated]
8304    #[prost(message, repeated, tag="1")]
8305    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
8306    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
8307    /// which contains typed fields.
8308    #[prost(message, repeated, tag="2")]
8309    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
8310    /// ftrace output from CrOS and Cast system tracing agents.
8311    /// TODO(eseckler): Replace system traces with native perfetto service.
8312    #[prost(string, repeated, tag="4")]
8313    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8314    #[prost(message, repeated, tag="5")]
8315    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
8316    /// Contents of a string table that's valid for
8317    /// the whole ChromeEventBundle entry.
8318    #[deprecated]
8319    #[prost(message, repeated, tag="3")]
8320    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
8321}
8322// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
8323
8324// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
8325
8326/// Information about a specific trigger during a background tracing scenario
8327/// Associated packet timestamps are useful to delimitate a scenario range in a
8328/// trace. Triggers are also useful for filtering traces.
8329#[derive(Clone, PartialEq, ::prost::Message)]
8330pub struct ChromeTrigger {
8331    /// Name of the trigger which was received.
8332    #[prost(string, optional, tag="1")]
8333    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8334    /// SHA1 hash of the trigger name.
8335    #[prost(fixed32, optional, tag="2")]
8336    pub trigger_name_hash: ::core::option::Option<u32>,
8337    /// Flow id which should terminate on this trigger.
8338    #[prost(fixed64, optional, tag="3")]
8339    pub flow_id: ::core::option::Option<u64>,
8340}
8341// End of protos/perfetto/trace/chrome/chrome_trigger.proto
8342
8343// Begin of protos/perfetto/trace/chrome/v8.proto
8344
8345// These are the protos for the V8 data source.
8346//
8347// All events are associated to a V8 isolate instance. There can be multiple
8348// instances associated to a given thread, although this is rare.
8349//
8350// Generated code in V8 is allocated in the V8 heap (in a special executeable
8351// section), this means that code can be garbage collected (when no longer used)
8352// or can be moved around (e.g. during heap compactation). This means that a
8353// given callsite might correspond to function `A` at one point in time and to
8354// function `B` later on.
8355// In addition V8 code has various levels of optimization, so a function might
8356// have multiple associated code snippets.
8357//
8358// V8 does not track code deletion, so we have to indirectly infer it by
8359// detecting code overlaps, if a newer code creation event overlaps with older
8360// code we need to asume that the old code was deleted. Code moves are logged,
8361// and there is an event to track those.
8362
8363/// Strings used by V8 can have different encodings, instead of coverting to a
8364/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8365/// "raw" string and do the convestion at trace ingestion time.
8366///
8367/// ATTENTION: There is some overhead in using a message (as opossed to having
8368/// the `oneof encoded_string`` direcly embedded in the message), so use this
8369/// message in places were these extra bytes don't matter that much.
8370/// Next id: 5
8371#[derive(Clone, PartialEq, ::prost::Message)]
8372pub struct V8String {
8373    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
8374    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8375}
8376/// Nested message and enum types in `V8String`.
8377pub mod v8_string {
8378    #[derive(Clone, PartialEq, ::prost::Oneof)]
8379    pub enum EncodedString {
8380        /// ISO/IEC 8859-1:1998 encoding aka latin1
8381        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8382        #[prost(bytes, tag="1")]
8383        Latin1(::prost::alloc::vec::Vec<u8>),
8384        /// UTF-16 Little Endian Encoding
8385        #[prost(bytes, tag="2")]
8386        Utf16Le(::prost::alloc::vec::Vec<u8>),
8387        /// UTF-16 Big Endian Encoding
8388        #[prost(bytes, tag="3")]
8389        Utf16Be(::prost::alloc::vec::Vec<u8>),
8390    }
8391}
8392/// Interned version of V8String
8393#[derive(Clone, PartialEq, ::prost::Message)]
8394pub struct InternedV8String {
8395    #[prost(uint64, optional, tag="1")]
8396    pub iid: ::core::option::Option<u64>,
8397    /// We inline the fields in V8String here to save some bytes in the serialized
8398    /// proto format. Interning is about saving bytes so this makes sense here.
8399    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
8400    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8401}
8402/// Nested message and enum types in `InternedV8String`.
8403pub mod interned_v8_string {
8404    /// We inline the fields in V8String here to save some bytes in the serialized
8405    /// proto format. Interning is about saving bytes so this makes sense here.
8406    #[derive(Clone, PartialEq, ::prost::Oneof)]
8407    pub enum EncodedString {
8408        /// ISO/IEC 8859-1:1998 encoding aka latin1
8409        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8410        #[prost(bytes, tag="2")]
8411        Latin1(::prost::alloc::vec::Vec<u8>),
8412        /// UTF-16 Little Endian Encoding
8413        #[prost(bytes, tag="3")]
8414        Utf16Le(::prost::alloc::vec::Vec<u8>),
8415        /// UTF-16 Big Endian Encoding
8416        #[prost(bytes, tag="4")]
8417        Utf16Be(::prost::alloc::vec::Vec<u8>),
8418    }
8419}
8420/// Represents a script that was compiled to generate code. Some V8 code is
8421/// generated out of scripts and will reference a V8Script other types of code
8422/// will not (e.g. builtins).
8423#[derive(Clone, PartialEq, ::prost::Message)]
8424pub struct InternedV8JsScript {
8425    #[prost(uint64, optional, tag="1")]
8426    pub iid: ::core::option::Option<u64>,
8427    /// Unique in a given isolate
8428    #[prost(int32, optional, tag="2")]
8429    pub script_id: ::core::option::Option<i32>,
8430    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
8431    pub r#type: ::core::option::Option<i32>,
8432    #[prost(message, optional, tag="4")]
8433    pub name: ::core::option::Option<V8String>,
8434    /// Actual source of the script
8435    #[prost(message, optional, tag="5")]
8436    pub source: ::core::option::Option<V8String>,
8437}
8438/// Nested message and enum types in `InternedV8JsScript`.
8439pub mod interned_v8_js_script {
8440    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8441    #[repr(i32)]
8442    pub enum Type {
8443        Unknown = 0,
8444        Normal = 1,
8445        Eval = 2,
8446        Module = 3,
8447        Native = 4,
8448        Extension = 5,
8449        Inspector = 6,
8450    }
8451    impl Type {
8452        /// String value of the enum field names used in the ProtoBuf definition.
8453        ///
8454        /// The values are not transformed in any way and thus are considered stable
8455        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8456        pub fn as_str_name(&self) -> &'static str {
8457            match self {
8458                Type::Unknown => "TYPE_UNKNOWN",
8459                Type::Normal => "TYPE_NORMAL",
8460                Type::Eval => "TYPE_EVAL",
8461                Type::Module => "TYPE_MODULE",
8462                Type::Native => "TYPE_NATIVE",
8463                Type::Extension => "TYPE_EXTENSION",
8464                Type::Inspector => "TYPE_INSPECTOR",
8465            }
8466        }
8467    }
8468}
8469#[derive(Clone, PartialEq, ::prost::Message)]
8470pub struct InternedV8WasmScript {
8471    #[prost(uint64, optional, tag="1")]
8472    pub iid: ::core::option::Option<u64>,
8473    /// Unique in a given isolate
8474    #[prost(int32, optional, tag="2")]
8475    pub script_id: ::core::option::Option<i32>,
8476    #[prost(string, optional, tag="3")]
8477    pub url: ::core::option::Option<::prost::alloc::string::String>,
8478    /// Raw transferred wasm native module wire bytes.
8479    #[prost(bytes="vec", optional, tag="4")]
8480    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8481}
8482#[derive(Clone, PartialEq, ::prost::Message)]
8483pub struct InternedV8JsFunction {
8484    #[prost(uint64, optional, tag="1")]
8485    pub iid: ::core::option::Option<u64>,
8486    #[prost(uint64, optional, tag="2")]
8487    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8488    #[prost(uint64, optional, tag="3")]
8489    pub v8_js_script_iid: ::core::option::Option<u64>,
8490    #[prost(bool, optional, tag="4")]
8491    pub is_toplevel: ::core::option::Option<bool>,
8492    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
8493    pub kind: ::core::option::Option<i32>,
8494    /// Where in the script source this function is defined. This is counted in
8495    /// bytes not characters.
8496    #[prost(uint32, optional, tag="6")]
8497    pub byte_offset: ::core::option::Option<u32>,
8498    #[prost(uint32, optional, tag="7")]
8499    pub line: ::core::option::Option<u32>,
8500    #[prost(uint32, optional, tag="8")]
8501    pub column: ::core::option::Option<u32>,
8502}
8503/// Nested message and enum types in `InternedV8JsFunction`.
8504pub mod interned_v8_js_function {
8505    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8506    #[repr(i32)]
8507    pub enum Kind {
8508        Unknown = 0,
8509        NormalFunction = 1,
8510        Module = 2,
8511        AsyncModule = 3,
8512        BaseConstructor = 4,
8513        DefaultBaseConstructor = 5,
8514        DefaultDerivedConstructor = 6,
8515        DerivedConstructor = 7,
8516        GetterFunction = 8,
8517        StaticGetterFunction = 9,
8518        SetterFunction = 10,
8519        StaticSetterFunction = 11,
8520        ArrowFunction = 12,
8521        AsyncArrowFunction = 13,
8522        AsyncFunction = 14,
8523        AsyncConciseMethod = 15,
8524        StaticAsyncConciseMethod = 16,
8525        AsyncConciseGeneratorMethod = 17,
8526        StaticAsyncConciseGeneratorMethod = 18,
8527        AsyncGeneratorFunction = 19,
8528        GeneratorFunction = 20,
8529        ConciseGeneratorMethod = 21,
8530        StaticConciseGeneratorMethod = 22,
8531        ConciseMethod = 23,
8532        StaticConciseMethod = 24,
8533        ClassMembersInitializerFunction = 25,
8534        ClassStaticInitializerFunction = 26,
8535        Invalid = 27,
8536    }
8537    impl Kind {
8538        /// String value of the enum field names used in the ProtoBuf definition.
8539        ///
8540        /// The values are not transformed in any way and thus are considered stable
8541        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8542        pub fn as_str_name(&self) -> &'static str {
8543            match self {
8544                Kind::Unknown => "KIND_UNKNOWN",
8545                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
8546                Kind::Module => "KIND_MODULE",
8547                Kind::AsyncModule => "KIND_ASYNC_MODULE",
8548                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8549                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8550                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8551                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8552                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
8553                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8554                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
8555                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8556                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
8557                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8558                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
8559                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8560                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8561                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
8562                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
8563                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8564                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8565                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8566                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
8567                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
8568                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8569                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
8570                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
8571                Kind::Invalid => "KIND_INVALID",
8572            }
8573        }
8574    }
8575}
8576/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8577/// engine.
8578#[derive(Clone, PartialEq, ::prost::Message)]
8579pub struct InternedV8Isolate {
8580    #[prost(uint64, optional, tag="1")]
8581    pub iid: ::core::option::Option<u64>,
8582    #[prost(uint32, optional, tag="2")]
8583    pub pid: ::core::option::Option<u32>,
8584    /// Process unique isolate id.
8585    #[prost(int32, optional, tag="3")]
8586    pub isolate_id: ::core::option::Option<i32>,
8587    #[prost(message, optional, tag="4")]
8588    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8589    /// The embedded blob holds code for built in functions that are precompiled in
8590    /// the V8 library.
8591    #[prost(uint64, optional, tag="5")]
8592    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8593    #[prost(uint64, optional, tag="6")]
8594    pub embedded_blob_code_size: ::core::option::Option<u64>,
8595}
8596/// Nested message and enum types in `InternedV8Isolate`.
8597pub mod interned_v8_isolate {
8598    /// A code range is a virtual memory cage that may contain executable code.
8599    /// Depending on the Isolate settings the Isolate might have one or not.
8600    /// See:
8601    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8602    /// If the isolate defines code range this will be tracked here.
8603    #[derive(Clone, PartialEq, ::prost::Message)]
8604    pub struct CodeRange {
8605        #[prost(uint64, optional, tag="1")]
8606        pub base_address: ::core::option::Option<u64>,
8607        #[prost(uint64, optional, tag="2")]
8608        pub size: ::core::option::Option<u64>,
8609        /// Used when short builtin calls are enabled, where embedded builtins are
8610        /// copied into the CodeRange so calls can be nearer.
8611        #[prost(uint64, optional, tag="3")]
8612        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8613        /// Whether this code range is shared with other Isolates in the same process
8614        #[prost(bool, optional, tag="4")]
8615        pub is_process_wide: ::core::option::Option<bool>,
8616    }
8617}
8618#[derive(Clone, PartialEq, ::prost::Message)]
8619pub struct V8JsCode {
8620    #[prost(uint64, optional, tag="1")]
8621    pub v8_isolate_iid: ::core::option::Option<u64>,
8622    #[prost(uint32, optional, tag="2")]
8623    pub tid: ::core::option::Option<u32>,
8624    #[prost(uint64, optional, tag="3")]
8625    pub v8_js_function_iid: ::core::option::Option<u64>,
8626    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
8627    pub tier: ::core::option::Option<i32>,
8628    #[prost(uint64, optional, tag="5")]
8629    pub instruction_start: ::core::option::Option<u64>,
8630    #[prost(uint64, optional, tag="6")]
8631    pub instruction_size_bytes: ::core::option::Option<u64>,
8632    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
8633    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8634    #[prost(oneof="v8_js_code::SourceMap", tags="9, 10, 11")]
8635    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8636}
8637/// Nested message and enum types in `V8JsCode`.
8638pub mod v8_js_code {
8639    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8640    #[repr(i32)]
8641    pub enum Tier {
8642        Unknown = 0,
8643        Ignition = 1,
8644        Sparkplug = 2,
8645        Maglev = 3,
8646        Turboshaft = 4,
8647        Turbofan = 5,
8648    }
8649    impl Tier {
8650        /// String value of the enum field names used in the ProtoBuf definition.
8651        ///
8652        /// The values are not transformed in any way and thus are considered stable
8653        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8654        pub fn as_str_name(&self) -> &'static str {
8655            match self {
8656                Tier::Unknown => "TIER_UNKNOWN",
8657                Tier::Ignition => "TIER_IGNITION",
8658                Tier::Sparkplug => "TIER_SPARKPLUG",
8659                Tier::Maglev => "TIER_MAGLEV",
8660                Tier::Turboshaft => "TIER_TURBOSHAFT",
8661                Tier::Turbofan => "TIER_TURBOFAN",
8662            }
8663        }
8664    }
8665    #[derive(Clone, PartialEq, ::prost::Oneof)]
8666    pub enum Instructions {
8667        #[prost(bytes, tag="7")]
8668        MachineCode(::prost::alloc::vec::Vec<u8>),
8669        #[prost(bytes, tag="8")]
8670        Bytecode(::prost::alloc::vec::Vec<u8>),
8671    }
8672    #[derive(Clone, PartialEq, ::prost::Oneof)]
8673    pub enum SourceMap {
8674        /// For Ignition / bytecode:
8675        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8676        ///     related js function)
8677        #[prost(bytes, tag="9")]
8678        SourcePositions(::prost::alloc::vec::Vec<u8>),
8679        /// For Sparkplug code:
8680        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8681        ///     ignition code object for the same js-function.
8682        #[prost(bytes, tag="10")]
8683        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8684        /// For optimized code:
8685        /// - Maps machine-code-ranges to bytecode ranges in various
8686        ///    ignition code objects (inlining might happen from multiple functions)
8687        #[prost(bytes, tag="11")]
8688        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8689    }
8690}
8691#[derive(Clone, PartialEq, ::prost::Message)]
8692pub struct V8InternalCode {
8693    #[prost(uint64, optional, tag="1")]
8694    pub v8_isolate_iid: ::core::option::Option<u64>,
8695    #[prost(uint32, optional, tag="2")]
8696    pub tid: ::core::option::Option<u32>,
8697    #[prost(string, optional, tag="3")]
8698    pub name: ::core::option::Option<::prost::alloc::string::String>,
8699    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
8700    pub r#type: ::core::option::Option<i32>,
8701    #[prost(int32, optional, tag="5")]
8702    pub builtin_id: ::core::option::Option<i32>,
8703    #[prost(uint64, optional, tag="6")]
8704    pub instruction_start: ::core::option::Option<u64>,
8705    #[prost(uint64, optional, tag="7")]
8706    pub instruction_size_bytes: ::core::option::Option<u64>,
8707    #[prost(bytes="vec", optional, tag="8")]
8708    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8709}
8710/// Nested message and enum types in `V8InternalCode`.
8711pub mod v8_internal_code {
8712    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8713    #[repr(i32)]
8714    pub enum Type {
8715        Unknown = 0,
8716        BytecodeHandler = 1,
8717        ForTesting = 2,
8718        Builtin = 3,
8719        WasmFunction = 4,
8720        WasmToCapiFunction = 5,
8721        WasmToJsFunction = 6,
8722        JsToWasmFunction = 7,
8723        JsToJsFunction = 8,
8724        CWasmEntry = 9,
8725    }
8726    impl Type {
8727        /// String value of the enum field names used in the ProtoBuf definition.
8728        ///
8729        /// The values are not transformed in any way and thus are considered stable
8730        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8731        pub fn as_str_name(&self) -> &'static str {
8732            match self {
8733                Type::Unknown => "TYPE_UNKNOWN",
8734                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8735                Type::ForTesting => "TYPE_FOR_TESTING",
8736                Type::Builtin => "TYPE_BUILTIN",
8737                Type::WasmFunction => "TYPE_WASM_FUNCTION",
8738                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8739                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8740                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8741                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8742                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
8743            }
8744        }
8745    }
8746}
8747#[derive(Clone, PartialEq, ::prost::Message)]
8748pub struct V8WasmCode {
8749    #[prost(uint64, optional, tag="1")]
8750    pub v8_isolate_iid: ::core::option::Option<u64>,
8751    #[prost(uint32, optional, tag="2")]
8752    pub tid: ::core::option::Option<u32>,
8753    #[prost(uint64, optional, tag="3")]
8754    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8755    #[prost(string, optional, tag="4")]
8756    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8757    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
8758    pub tier: ::core::option::Option<i32>,
8759    #[prost(int32, optional, tag="6")]
8760    pub code_offset_in_module: ::core::option::Option<i32>,
8761    #[prost(uint64, optional, tag="7")]
8762    pub instruction_start: ::core::option::Option<u64>,
8763    #[prost(uint64, optional, tag="8")]
8764    pub instruction_size_bytes: ::core::option::Option<u64>,
8765    #[prost(bytes="vec", optional, tag="9")]
8766    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8767}
8768/// Nested message and enum types in `V8WasmCode`.
8769pub mod v8_wasm_code {
8770    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8771    #[repr(i32)]
8772    pub enum Tier {
8773        Unknown = 0,
8774        Liftoff = 1,
8775        Turbofan = 2,
8776    }
8777    impl Tier {
8778        /// String value of the enum field names used in the ProtoBuf definition.
8779        ///
8780        /// The values are not transformed in any way and thus are considered stable
8781        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8782        pub fn as_str_name(&self) -> &'static str {
8783            match self {
8784                Tier::Unknown => "TIER_UNKNOWN",
8785                Tier::Liftoff => "TIER_LIFTOFF",
8786                Tier::Turbofan => "TIER_TURBOFAN",
8787            }
8788        }
8789    }
8790}
8791#[derive(Clone, PartialEq, ::prost::Message)]
8792pub struct V8RegExpCode {
8793    #[prost(uint64, optional, tag="1")]
8794    pub v8_isolate_iid: ::core::option::Option<u64>,
8795    #[prost(uint32, optional, tag="2")]
8796    pub tid: ::core::option::Option<u32>,
8797    #[prost(message, optional, tag="3")]
8798    pub pattern: ::core::option::Option<V8String>,
8799    #[prost(uint64, optional, tag="4")]
8800    pub instruction_start: ::core::option::Option<u64>,
8801    #[prost(uint64, optional, tag="5")]
8802    pub instruction_size_bytes: ::core::option::Option<u64>,
8803    #[prost(bytes="vec", optional, tag="6")]
8804    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8805}
8806/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8807/// memory by V8's GC.
8808#[derive(Clone, PartialEq, ::prost::Message)]
8809pub struct V8CodeMove {
8810    #[prost(uint64, optional, tag="1")]
8811    pub isolate_iid: ::core::option::Option<u64>,
8812    #[prost(uint32, optional, tag="2")]
8813    pub tid: ::core::option::Option<u32>,
8814    #[prost(uint64, optional, tag="3")]
8815    pub from_instruction_start_address: ::core::option::Option<u64>,
8816    #[prost(uint64, optional, tag="4")]
8817    pub to_instruction_start_address: ::core::option::Option<u64>,
8818    #[prost(uint64, optional, tag="5")]
8819    pub instruction_size_bytes: ::core::option::Option<u64>,
8820    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
8821    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8822}
8823/// Nested message and enum types in `V8CodeMove`.
8824pub mod v8_code_move {
8825    #[derive(Clone, PartialEq, ::prost::Oneof)]
8826    pub enum ToInstructions {
8827        #[prost(bytes, tag="6")]
8828        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8829        #[prost(bytes, tag="7")]
8830        ToBytecode(::prost::alloc::vec::Vec<u8>),
8831    }
8832}
8833#[derive(Clone, PartialEq, ::prost::Message)]
8834pub struct V8CodeDefaults {
8835    #[prost(uint32, optional, tag="1")]
8836    pub tid: ::core::option::Option<u32>,
8837}
8838// End of protos/perfetto/trace/chrome/v8.proto
8839
8840// Begin of protos/perfetto/trace/clock_snapshot.proto
8841
8842/// A snapshot of clock readings to allow for trace alignment.
8843#[derive(Clone, PartialEq, ::prost::Message)]
8844pub struct ClockSnapshot {
8845    #[prost(message, repeated, tag="1")]
8846    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8847    /// The authoritative clock domain for the trace. When set, this definitively
8848    /// overrides the trace time clock. If not set, the trace time clock remains
8849    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8850    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8851    /// snapshots). Trace processor will attempt to translate packet/event
8852    /// timestamps from various data sources (and their chosen clock domains) to
8853    /// this domain during import.
8854    #[prost(enumeration="BuiltinClock", optional, tag="2")]
8855    pub primary_trace_clock: ::core::option::Option<i32>,
8856}
8857/// Nested message and enum types in `ClockSnapshot`.
8858pub mod clock_snapshot {
8859    #[derive(Clone, PartialEq, ::prost::Message)]
8860    pub struct Clock {
8861        /// Clock IDs have the following semantic:
8862        /// [1, 63]:    Builtin types, see BuiltinClock from
8863        ///              ../common/builtin_clock.proto.
8864        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8865        ///              are only valid within the same |trusted_packet_sequence_id|
8866        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8867        ///              that emitted the clock snapshot).
8868        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8869        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8870        #[prost(uint32, optional, tag="1")]
8871        pub clock_id: ::core::option::Option<u32>,
8872        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8873        /// unit_multiplier_ns field below.
8874        #[prost(uint64, optional, tag="2")]
8875        pub timestamp: ::core::option::Option<u64>,
8876        /// When true each TracePacket's timestamp should be interpreted as a delta
8877        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8878        /// the same packet_sequence_id. Should only be used for user-defined
8879        /// sequence-local clocks. The first packet timestamp after each
8880        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8881        /// the ClockSnapshot.
8882        #[prost(bool, optional, tag="3")]
8883        pub is_incremental: ::core::option::Option<bool>,
8884        /// Allows to specify a custom unit different than the default (ns) for this
8885        /// clock domain.
8886        ///
8887        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8888        ///    as 3000 ns = 3 us.
8889        /// * All snapshots for the same clock within a trace need to use the same
8890        ///    unit.
8891        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8892        #[prost(uint64, optional, tag="4")]
8893        pub unit_multiplier_ns: ::core::option::Option<u64>,
8894    }
8895    /// Nested message and enum types in `Clock`.
8896    pub mod clock {
8897        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8898        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8899        #[repr(i32)]
8900        pub enum BuiltinClocks {
8901            Unknown = 0,
8902            Realtime = 1,
8903            RealtimeCoarse = 2,
8904            Monotonic = 3,
8905            MonotonicCoarse = 4,
8906            MonotonicRaw = 5,
8907            Boottime = 6,
8908            BuiltinClockMaxId = 63,
8909        }
8910        impl BuiltinClocks {
8911            /// String value of the enum field names used in the ProtoBuf definition.
8912            ///
8913            /// The values are not transformed in any way and thus are considered stable
8914            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8915            pub fn as_str_name(&self) -> &'static str {
8916                match self {
8917                    BuiltinClocks::Unknown => "UNKNOWN",
8918                    BuiltinClocks::Realtime => "REALTIME",
8919                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8920                    BuiltinClocks::Monotonic => "MONOTONIC",
8921                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8922                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8923                    BuiltinClocks::Boottime => "BOOTTIME",
8924                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8925                }
8926            }
8927        }
8928    }
8929}
8930// End of protos/perfetto/trace/clock_snapshot.proto
8931
8932// Begin of protos/perfetto/trace/etw/etw.proto
8933
8934/// Proto definition based on the Thread_v2 CSwitch class definition
8935/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8936#[derive(Clone, PartialEq, ::prost::Message)]
8937pub struct CSwitchEtwEvent {
8938    /// New thread ID after the switch.
8939    #[prost(uint32, optional, tag="1")]
8940    pub new_thread_id: ::core::option::Option<u32>,
8941    /// Previous thread ID.
8942    #[prost(uint32, optional, tag="2")]
8943    pub old_thread_id: ::core::option::Option<u32>,
8944    /// Thread priority of the new thread.
8945    #[prost(sint32, optional, tag="3")]
8946    pub new_thread_priority: ::core::option::Option<i32>,
8947    /// Thread priority of the previous thread.
8948    #[prost(sint32, optional, tag="4")]
8949    pub old_thread_priority: ::core::option::Option<i32>,
8950    /// The index of the C-state that was last used by the processor. A value of 0
8951    /// represents the lightest idle state with higher values representing deeper
8952    /// C-states.
8953    #[prost(uint32, optional, tag="5")]
8954    pub previous_c_state: ::core::option::Option<u32>,
8955    /// Ideal wait time of the previous thread.
8956    #[prost(sint32, optional, tag="9")]
8957    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8958    /// Wait time for the new thread.
8959    #[prost(uint32, optional, tag="10")]
8960    pub new_thread_wait_time: ::core::option::Option<u32>,
8961    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8962    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8963    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8964    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8965    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8966    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8967}
8968/// Nested message and enum types in `CSwitchEtwEvent`.
8969pub mod c_switch_etw_event {
8970    /// Wait reason for the previous thread. The ordering is important as based on
8971    /// the OldThreadWaitReason definition from the link above. The following are
8972    /// the possible values:
8973    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8974    #[repr(i32)]
8975    pub enum OldThreadWaitReason {
8976        Executive = 0,
8977        FreePage = 1,
8978        PageIn = 2,
8979        PoolAllocation = 3,
8980        DelayExecution = 4,
8981        Suspend = 5,
8982        UserRequest = 6,
8983        WrExecutive = 7,
8984        WrFreePage = 8,
8985        WrPageIn = 9,
8986        WrPoolAllocation = 10,
8987        WrDelayExecution = 11,
8988        WrSuspended = 12,
8989        WrUserRequest = 13,
8990        WrEventPair = 14,
8991        WrQueue = 15,
8992        WrLpcReceiver = 16,
8993        WrLpcReply = 17,
8994        WrVirtualMemory = 18,
8995        WrPageOut = 19,
8996        WrRendezVous = 20,
8997        WrKeyedEvent = 21,
8998        WrTerminated = 22,
8999        WrProcessInSwap = 23,
9000        WrCpuRateControl = 24,
9001        WrCalloutStack = 25,
9002        WrKernel = 26,
9003        WrResource = 27,
9004        WrPushLock = 28,
9005        WrMutex = 29,
9006        WrQuantumEnd = 30,
9007        WrDispatchInt = 31,
9008        WrPreempted = 32,
9009        WrYieldExecution = 33,
9010        WrFastMutex = 34,
9011        WrGuardMutex = 35,
9012        WrRundown = 36,
9013        MaximumWaitReason = 37,
9014    }
9015    impl OldThreadWaitReason {
9016        /// String value of the enum field names used in the ProtoBuf definition.
9017        ///
9018        /// The values are not transformed in any way and thus are considered stable
9019        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9020        pub fn as_str_name(&self) -> &'static str {
9021            match self {
9022                OldThreadWaitReason::Executive => "EXECUTIVE",
9023                OldThreadWaitReason::FreePage => "FREE_PAGE",
9024                OldThreadWaitReason::PageIn => "PAGE_IN",
9025                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
9026                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
9027                OldThreadWaitReason::Suspend => "SUSPEND",
9028                OldThreadWaitReason::UserRequest => "USER_REQUEST",
9029                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
9030                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
9031                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
9032                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
9033                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
9034                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
9035                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
9036                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
9037                OldThreadWaitReason::WrQueue => "WR_QUEUE",
9038                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
9039                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
9040                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
9041                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
9042                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
9043                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
9044                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
9045                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
9046                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
9047                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
9048                OldThreadWaitReason::WrKernel => "WR_KERNEL",
9049                OldThreadWaitReason::WrResource => "WR_RESOURCE",
9050                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
9051                OldThreadWaitReason::WrMutex => "WR_MUTEX",
9052                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
9053                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
9054                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
9055                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
9056                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
9057                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
9058                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
9059                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
9060            }
9061        }
9062    }
9063    /// Wait mode for the previous thread. The ordering is important as based on
9064    /// the OldThreadWaitMode definition from the link above. The following are the
9065    /// possible values:
9066    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9067    #[repr(i32)]
9068    pub enum OldThreadWaitMode {
9069        KernelMode = 0,
9070        UserMode = 1,
9071    }
9072    impl OldThreadWaitMode {
9073        /// String value of the enum field names used in the ProtoBuf definition.
9074        ///
9075        /// The values are not transformed in any way and thus are considered stable
9076        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9077        pub fn as_str_name(&self) -> &'static str {
9078            match self {
9079                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
9080                OldThreadWaitMode::UserMode => "USER_MODE",
9081            }
9082        }
9083    }
9084    /// State of the previous thread. The ordering is important as based on the
9085    /// OldThreadState definition from the link above. The following are the
9086    /// possible state values:
9087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9088    #[repr(i32)]
9089    pub enum OldThreadState {
9090        Initialized = 0,
9091        Ready = 1,
9092        Running = 2,
9093        Standby = 3,
9094        Terminated = 4,
9095        Waiting = 5,
9096        Transition = 6,
9097        DeferredReady = 7,
9098    }
9099    impl OldThreadState {
9100        /// String value of the enum field names used in the ProtoBuf definition.
9101        ///
9102        /// The values are not transformed in any way and thus are considered stable
9103        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9104        pub fn as_str_name(&self) -> &'static str {
9105            match self {
9106                OldThreadState::Initialized => "INITIALIZED",
9107                OldThreadState::Ready => "READY",
9108                OldThreadState::Running => "RUNNING",
9109                OldThreadState::Standby => "STANDBY",
9110                OldThreadState::Terminated => "TERMINATED",
9111                OldThreadState::Waiting => "WAITING",
9112                OldThreadState::Transition => "TRANSITION",
9113                OldThreadState::DeferredReady => "DEFERRED_READY",
9114            }
9115        }
9116    }
9117    #[derive(Clone, PartialEq, ::prost::Oneof)]
9118    pub enum OldThreadWaitReasonEnumOrInt {
9119        #[prost(enumeration="OldThreadWaitReason", tag="6")]
9120        OldThreadWaitReason(i32),
9121        #[prost(int32, tag="11")]
9122        OldThreadWaitReasonInt(i32),
9123    }
9124    #[derive(Clone, PartialEq, ::prost::Oneof)]
9125    pub enum OldThreadWaitModeEnumOrInt {
9126        #[prost(enumeration="OldThreadWaitMode", tag="7")]
9127        OldThreadWaitMode(i32),
9128        #[prost(int32, tag="12")]
9129        OldThreadWaitModeInt(i32),
9130    }
9131    #[derive(Clone, PartialEq, ::prost::Oneof)]
9132    pub enum OldThreadStateEnumOrInt {
9133        #[prost(enumeration="OldThreadState", tag="8")]
9134        OldThreadState(i32),
9135        #[prost(sint32, tag="13")]
9136        OldThreadStateInt(i32),
9137    }
9138}
9139/// Proto definition based on the Thread_v2 CSwitch class definition
9140/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
9141#[derive(Clone, PartialEq, ::prost::Message)]
9142pub struct ReadyThreadEtwEvent {
9143    /// The thread identifier of the thread being readied for execution.
9144    #[prost(uint32, optional, tag="1")]
9145    pub t_thread_id: ::core::option::Option<u32>,
9146    ///   The value by which the priority is being adjusted.
9147    #[prost(sint32, optional, tag="3")]
9148    pub adjust_increment: ::core::option::Option<i32>,
9149    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
9150    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
9151    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
9152    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
9153}
9154/// Nested message and enum types in `ReadyThreadEtwEvent`.
9155pub mod ready_thread_etw_event {
9156    /// The reason for the priority boost. The ordering is important as based on
9157    /// the AdjustReason definition from the link above.
9158    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9159    #[repr(i32)]
9160    pub enum AdjustReason {
9161        IgnoreTheIncrement = 0,
9162        /// Apply the increment, which will decay incrementally at the end of each
9163        /// quantum.
9164        ApplyIncrement = 1,
9165        /// Apply the increment as a boost that will decay in its entirety at quantum
9166        /// (typically for priority donation).
9167        ApplyIncrementBoost = 2,
9168    }
9169    impl AdjustReason {
9170        /// String value of the enum field names used in the ProtoBuf definition.
9171        ///
9172        /// The values are not transformed in any way and thus are considered stable
9173        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9174        pub fn as_str_name(&self) -> &'static str {
9175            match self {
9176                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
9177                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
9178                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
9179            }
9180        }
9181    }
9182    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9183    #[repr(i32)]
9184    pub enum TraceFlag {
9185        Unspecified = 0,
9186        /// The thread has been readied from DPC (deferred procedure call).
9187        ThreadReadied = 1,
9188        /// The kernel stack is currently swapped out.
9189        KernelStackSwappedOut = 2,
9190        /// The process address space is swapped out.
9191        ProcessAddressSwappedOut = 4,
9192    }
9193    impl TraceFlag {
9194        /// String value of the enum field names used in the ProtoBuf definition.
9195        ///
9196        /// The values are not transformed in any way and thus are considered stable
9197        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9198        pub fn as_str_name(&self) -> &'static str {
9199            match self {
9200                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
9201                TraceFlag::ThreadReadied => "THREAD_READIED",
9202                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
9203                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
9204            }
9205        }
9206    }
9207    #[derive(Clone, PartialEq, ::prost::Oneof)]
9208    pub enum AdjustReasonEnumOrInt {
9209        #[prost(enumeration="AdjustReason", tag="2")]
9210        AdjustReason(i32),
9211        #[prost(int32, tag="5")]
9212        AdjustReasonInt(i32),
9213    }
9214    #[derive(Clone, PartialEq, ::prost::Oneof)]
9215    pub enum FlagEnumOrInt {
9216        #[prost(enumeration="TraceFlag", tag="4")]
9217        Flag(i32),
9218        #[prost(int32, tag="6")]
9219        FlagInt(i32),
9220    }
9221}
9222/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
9223/// on local traces using tracerpt:
9224/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
9225#[derive(Clone, PartialEq, ::prost::Message)]
9226pub struct MemInfoEtwEvent {
9227    /// Number of memory priorities on the system.
9228    #[prost(uint32, optional, tag="1")]
9229    pub priority_levels: ::core::option::Option<u32>,
9230    /// Number of pages in the zero list.
9231    #[prost(uint64, optional, tag="2")]
9232    pub zero_page_count: ::core::option::Option<u64>,
9233    /// Number of pages in the free list.
9234    #[prost(uint64, optional, tag="3")]
9235    pub free_page_count: ::core::option::Option<u64>,
9236    /// Number of pages in the modified list.
9237    #[prost(uint64, optional, tag="4")]
9238    pub modified_page_count: ::core::option::Option<u64>,
9239    /// Number of modified non-paged pool pages.
9240    #[prost(uint64, optional, tag="5")]
9241    pub modified_no_write_page_count: ::core::option::Option<u64>,
9242    /// Number of bad pages.
9243    #[prost(uint64, optional, tag="6")]
9244    pub bad_page_count: ::core::option::Option<u64>,
9245    /// Number of standby pages by memory priority.
9246    #[prost(uint64, repeated, packed="false", tag="7")]
9247    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
9248    /// Number of repurposed pages by memory priority.
9249    #[prost(uint64, repeated, packed="false", tag="8")]
9250    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9251    /// Modified paged pages.
9252    #[prost(uint64, optional, tag="9")]
9253    pub modified_page_count_page_file: ::core::option::Option<u64>,
9254    /// Pool page counts.
9255    #[prost(uint64, optional, tag="10")]
9256    pub paged_pool_page_count: ::core::option::Option<u64>,
9257    #[prost(uint64, optional, tag="11")]
9258    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9259    /// Memory Descriptor List page count.
9260    #[prost(uint64, optional, tag="12")]
9261    pub mdl_page_count: ::core::option::Option<u64>,
9262    /// Commit weight.
9263    #[prost(uint64, optional, tag="13")]
9264    pub commit_page_count: ::core::option::Option<u64>,
9265}
9266/// Proto definition based on the `FileIo_Create` class definition.
9267#[derive(Clone, PartialEq, ::prost::Message)]
9268pub struct FileIoCreateEtwEvent {
9269    #[prost(uint64, optional, tag="1")]
9270    pub irp_ptr: ::core::option::Option<u64>,
9271    #[prost(uint64, optional, tag="2")]
9272    pub file_object: ::core::option::Option<u64>,
9273    #[prost(uint32, optional, tag="3")]
9274    pub ttid: ::core::option::Option<u32>,
9275    #[prost(uint32, optional, tag="4")]
9276    pub create_options: ::core::option::Option<u32>,
9277    #[prost(uint32, optional, tag="5")]
9278    pub file_attributes: ::core::option::Option<u32>,
9279    #[prost(uint32, optional, tag="6")]
9280    pub share_access: ::core::option::Option<u32>,
9281    #[prost(string, optional, tag="7")]
9282    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9283}
9284/// Proto definition based on the `FileIo_DirEnum` class definition.
9285#[derive(Clone, PartialEq, ::prost::Message)]
9286pub struct FileIoDirEnumEtwEvent {
9287    #[prost(uint64, optional, tag="1")]
9288    pub irp_ptr: ::core::option::Option<u64>,
9289    #[prost(uint64, optional, tag="2")]
9290    pub file_object: ::core::option::Option<u64>,
9291    #[prost(uint64, optional, tag="3")]
9292    pub file_key: ::core::option::Option<u64>,
9293    #[prost(uint32, optional, tag="4")]
9294    pub ttid: ::core::option::Option<u32>,
9295    #[prost(uint32, optional, tag="5")]
9296    pub length: ::core::option::Option<u32>,
9297    #[prost(uint32, optional, tag="6")]
9298    pub info_class: ::core::option::Option<u32>,
9299    #[prost(uint32, optional, tag="7")]
9300    pub file_index: ::core::option::Option<u32>,
9301    #[prost(string, optional, tag="8")]
9302    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9303    #[prost(uint32, optional, tag="9")]
9304    pub opcode: ::core::option::Option<u32>,
9305}
9306/// Proto definition based on the `FileIo_Info` class definition.
9307#[derive(Clone, PartialEq, ::prost::Message)]
9308pub struct FileIoInfoEtwEvent {
9309    #[prost(uint64, optional, tag="1")]
9310    pub irp_ptr: ::core::option::Option<u64>,
9311    #[prost(uint64, optional, tag="2")]
9312    pub file_object: ::core::option::Option<u64>,
9313    #[prost(uint64, optional, tag="3")]
9314    pub file_key: ::core::option::Option<u64>,
9315    #[prost(uint64, optional, tag="4")]
9316    pub extra_info: ::core::option::Option<u64>,
9317    #[prost(uint32, optional, tag="5")]
9318    pub ttid: ::core::option::Option<u32>,
9319    #[prost(uint32, optional, tag="6")]
9320    pub info_class: ::core::option::Option<u32>,
9321    #[prost(uint32, optional, tag="7")]
9322    pub opcode: ::core::option::Option<u32>,
9323}
9324/// Proto definition based on the `FileIo_ReadWrite` class definition.
9325#[derive(Clone, PartialEq, ::prost::Message)]
9326pub struct FileIoReadWriteEtwEvent {
9327    #[prost(uint64, optional, tag="1")]
9328    pub offset: ::core::option::Option<u64>,
9329    #[prost(uint64, optional, tag="2")]
9330    pub irp_ptr: ::core::option::Option<u64>,
9331    #[prost(uint64, optional, tag="3")]
9332    pub file_object: ::core::option::Option<u64>,
9333    #[prost(uint64, optional, tag="4")]
9334    pub file_key: ::core::option::Option<u64>,
9335    #[prost(uint32, optional, tag="5")]
9336    pub ttid: ::core::option::Option<u32>,
9337    #[prost(uint32, optional, tag="6")]
9338    pub io_size: ::core::option::Option<u32>,
9339    #[prost(uint32, optional, tag="7")]
9340    pub io_flags: ::core::option::Option<u32>,
9341    #[prost(uint32, optional, tag="8")]
9342    pub opcode: ::core::option::Option<u32>,
9343}
9344/// Proto definition based on the `FileIo_SimpleOp` class definition.
9345#[derive(Clone, PartialEq, ::prost::Message)]
9346pub struct FileIoSimpleOpEtwEvent {
9347    #[prost(uint64, optional, tag="1")]
9348    pub irp_ptr: ::core::option::Option<u64>,
9349    #[prost(uint64, optional, tag="2")]
9350    pub file_object: ::core::option::Option<u64>,
9351    #[prost(uint64, optional, tag="3")]
9352    pub file_key: ::core::option::Option<u64>,
9353    #[prost(uint32, optional, tag="4")]
9354    pub ttid: ::core::option::Option<u32>,
9355    #[prost(uint32, optional, tag="5")]
9356    pub opcode: ::core::option::Option<u32>,
9357}
9358/// Proto definition based on the `FileIo_OpEnd` class definition.
9359#[derive(Clone, PartialEq, ::prost::Message)]
9360pub struct FileIoOpEndEtwEvent {
9361    #[prost(uint64, optional, tag="1")]
9362    pub irp_ptr: ::core::option::Option<u64>,
9363    #[prost(uint64, optional, tag="2")]
9364    pub extra_info: ::core::option::Option<u64>,
9365    #[prost(uint32, optional, tag="3")]
9366    pub nt_status: ::core::option::Option<u32>,
9367}
9368// End of protos/perfetto/trace/etw/etw.proto
9369
9370// Begin of protos/perfetto/trace/etw/etw_event.proto
9371
9372#[derive(Clone, PartialEq, ::prost::Message)]
9373pub struct EtwTraceEvent {
9374    #[prost(uint64, optional, tag="1")]
9375    pub timestamp: ::core::option::Option<u64>,
9376    #[prost(uint32, optional, tag="4")]
9377    pub cpu: ::core::option::Option<u32>,
9378    #[prost(uint32, optional, tag="5")]
9379    pub thread_id: ::core::option::Option<u32>,
9380    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
9381    pub event: ::core::option::Option<etw_trace_event::Event>,
9382}
9383/// Nested message and enum types in `EtwTraceEvent`.
9384pub mod etw_trace_event {
9385    #[derive(Clone, PartialEq, ::prost::Oneof)]
9386    pub enum Event {
9387        #[prost(message, tag="2")]
9388        CSwitch(super::CSwitchEtwEvent),
9389        #[prost(message, tag="3")]
9390        ReadyThread(super::ReadyThreadEtwEvent),
9391        #[prost(message, tag="6")]
9392        MemInfo(super::MemInfoEtwEvent),
9393        #[prost(message, tag="7")]
9394        FileIoCreate(super::FileIoCreateEtwEvent),
9395        #[prost(message, tag="8")]
9396        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9397        #[prost(message, tag="9")]
9398        FileIoInfo(super::FileIoInfoEtwEvent),
9399        #[prost(message, tag="10")]
9400        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9401        #[prost(message, tag="11")]
9402        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9403        #[prost(message, tag="12")]
9404        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9405    }
9406}
9407// End of protos/perfetto/trace/etw/etw_event.proto
9408
9409// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
9410
9411/// The result of tracing one or more etw event uses per-processor buffers where
9412/// an in-use buffer is assigned to each processor at all times. Therefore,
9413/// collecting multiple events they should already be synchronized.
9414#[derive(Clone, PartialEq, ::prost::Message)]
9415pub struct EtwTraceEventBundle {
9416    #[prost(uint32, optional, tag="1")]
9417    pub cpu: ::core::option::Option<u32>,
9418    #[prost(message, repeated, tag="2")]
9419    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9420}
9421// Begin of protos/perfetto/trace/evdev.proto
9422
9423/// Records an event in the evdev protocol, as used by Linux and some other *nix
9424/// kernels to report events from human interface devices.
9425///
9426/// Next ID: 5
9427#[derive(Clone, PartialEq, ::prost::Message)]
9428pub struct EvdevEvent {
9429    /// The device's unique ID number. This need not be the number of its
9430    /// /dev/input/event node.
9431    #[prost(uint32, optional, tag="1")]
9432    pub device_id: ::core::option::Option<u32>,
9433    #[prost(oneof="evdev_event::Event", tags="2, 3, 4")]
9434    pub event: ::core::option::Option<evdev_event::Event>,
9435}
9436/// Nested message and enum types in `EvdevEvent`.
9437pub mod evdev_event {
9438    /// Proto version of Linux's struct input_event. The meaning of types and codes
9439    /// are described in the Linux kernel documentation at
9440    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
9441    ///
9442    /// Next ID: 5
9443    #[derive(Clone, PartialEq, ::prost::Message)]
9444    pub struct InputEvent {
9445        /// The monotonic timestamp at which the event occurred, as reported by the
9446        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
9447        /// since the previous event.
9448        #[prost(uint64, optional, tag="1")]
9449        pub kernel_timestamp: ::core::option::Option<u64>,
9450        /// The code grouping for this event, used to distinguish signals, absolute
9451        /// and relative axis changes, and other types of event.
9452        #[prost(uint32, optional, tag="2")]
9453        pub r#type: ::core::option::Option<u32>,
9454        /// The precise type of the event, such as the axis code for absolute and
9455        /// relative events.
9456        #[prost(uint32, optional, tag="3")]
9457        pub code: ::core::option::Option<u32>,
9458        /// The new value of the axis described by type and code.
9459        #[prost(sint32, optional, tag="4")]
9460        pub value: ::core::option::Option<i32>,
9461    }
9462    /// Describes an evdev device being added to the system.
9463    ///
9464    /// Next ID: 2
9465    #[derive(Clone, PartialEq, ::prost::Message)]
9466    pub struct DeviceAddition {
9467        #[prost(message, optional, tag="1")]
9468        pub device: ::core::option::Option<super::EvdevDevice>,
9469    }
9470    /// Describes an evdev device being removed from the system.
9471    ///
9472    /// Next ID: 1
9473    ///
9474    /// Empty — we don't need to record any data other than the device ID for
9475    /// this event type.
9476    #[derive(Clone, PartialEq, ::prost::Message)]
9477    pub struct DeviceRemoval {
9478    }
9479    #[derive(Clone, PartialEq, ::prost::Oneof)]
9480    pub enum Event {
9481        #[prost(message, tag="2")]
9482        InputEvent(InputEvent),
9483        #[prost(message, tag="3")]
9484        AddEvent(DeviceAddition),
9485        #[prost(message, tag="4")]
9486        RemoveEvent(DeviceRemoval),
9487    }
9488}
9489/// The properties of an input device that don't change during the time that it's
9490/// connected, as well as the current values for all of its axes.
9491///
9492/// Next ID: 13
9493#[derive(Clone, PartialEq, ::prost::Message)]
9494pub struct EvdevDevice {
9495    /// The device's unique ID number. This need not be the number of its
9496    /// /dev/input/event node.
9497    #[prost(uint32, optional, tag="1")]
9498    pub device_id: ::core::option::Option<u32>,
9499    /// The number of the evdev device (i.e. from its /dev/input/eventX node path).
9500    #[prost(uint32, optional, tag="2")]
9501    pub device_num: ::core::option::Option<u32>,
9502    /// The device's name.
9503    #[prost(string, optional, tag="3")]
9504    pub name: ::core::option::Option<::prost::alloc::string::String>,
9505    /// The physical path to the device in the system hierarchy.
9506    #[prost(string, optional, tag="4")]
9507    pub phys: ::core::option::Option<::prost::alloc::string::String>,
9508    /// The unique identification code for the device (if it has one).
9509    #[prost(string, optional, tag="5")]
9510    pub uniq: ::core::option::Option<::prost::alloc::string::String>,
9511    /// The device's ID numbers.
9512    #[prost(message, optional, tag="6")]
9513    pub id: ::core::option::Option<evdev_device::Identifier>,
9514    /// A map of information for each of the device's absolute axes. Keys are the
9515    /// Linux ABS_* constants.
9516    #[prost(map="uint32, message", tag="7")]
9517    pub absolute_axis_infos: ::std::collections::HashMap<u32, evdev_device::AbsInfo>,
9518    /// Bitmask specifying which types of events the device declares.
9519    #[prost(bytes="vec", optional, tag="8")]
9520    pub ev_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9521    /// A map of bitmasks specifying which axes of each type the device declares.
9522    /// Keys are the Linux EV_* constants.
9523    #[prost(map="uint32, bytes", tag="9")]
9524    pub event_type_bitmasks: ::std::collections::HashMap<u32, ::prost::alloc::vec::Vec<u8>>,
9525    /// Bitmask of properties declared by the device.
9526    #[prost(bytes="vec", optional, tag="10")]
9527    pub prop_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9528    /// Current states of device axes.
9529    ///
9530    /// The keys are the Linux event type constants (e.g. EV_KEY, EV_ABS, etc.). We
9531    /// don't need to keep track of states for all axis types, only KEY, SW, LED,
9532    /// and ABS, so only those will have entries in this map. States for ABS_MT_*
9533    /// axes (which have multiple slots) will be kept in abs_mt_states instead.
9534    #[prost(map="uint32, message", tag="11")]
9535    pub axis_states: ::std::collections::HashMap<u32, evdev_device::AxisMap>,
9536    /// Current states of ABS_MT_* axes other than ABS_MT_SLOT. The keys are the
9537    /// ABS axis codes.
9538    #[prost(map="uint32, message", tag="12")]
9539    pub abs_mt_states: ::std::collections::HashMap<u32, evdev_device::SlotValuesMap>,
9540}
9541/// Nested message and enum types in `EvdevDevice`.
9542pub mod evdev_device {
9543    /// Proto version of Linux's struct input_id. Although uint32s are used for the
9544    /// fields, the kernel uses 16-bit ints so values will be less than 2^16.
9545    ///
9546    /// Next ID: 5
9547    #[derive(Clone, PartialEq, ::prost::Message)]
9548    pub struct Identifier {
9549        /// The bus that the device is connected to. Values will be one of Linux's
9550        /// BUS_* constants.
9551        #[prost(uint32, optional, tag="1")]
9552        pub bustype: ::core::option::Option<u32>,
9553        /// A number identifying the vendor of the device. Often a USB or Bluetooth
9554        /// vendor ID, but not always.
9555        #[prost(uint32, optional, tag="2")]
9556        pub vendor: ::core::option::Option<u32>,
9557        #[prost(uint32, optional, tag="3")]
9558        pub product: ::core::option::Option<u32>,
9559        #[prost(uint32, optional, tag="4")]
9560        pub version: ::core::option::Option<u32>,
9561    }
9562    /// Proto version of Linux's struct input_absinfo, excluding the value field
9563    /// (which is tracked elsewhere).
9564    ///
9565    /// Next ID: 6
9566    #[derive(Clone, PartialEq, ::prost::Message)]
9567    pub struct AbsInfo {
9568        #[prost(sint32, optional, tag="1")]
9569        pub minimum: ::core::option::Option<i32>,
9570        #[prost(sint32, optional, tag="2")]
9571        pub maximum: ::core::option::Option<i32>,
9572        #[prost(int32, optional, tag="3")]
9573        pub fuzz: ::core::option::Option<i32>,
9574        #[prost(int32, optional, tag="4")]
9575        pub flat: ::core::option::Option<i32>,
9576        #[prost(int32, optional, tag="5")]
9577        pub resolution: ::core::option::Option<i32>,
9578    }
9579    /// Contains the current values of all axes of a particular type (e.g. EV_ABS,
9580    /// EV_KEY, etc.).
9581    ///
9582    /// Next ID: 2
9583    #[derive(Clone, PartialEq, ::prost::Message)]
9584    pub struct AxisMap {
9585        /// Current values of all axes, other than ABS_MT_* axes (which have multiple
9586        /// slots), which are kept in abs_mt_states instead.
9587        ///
9588        /// The keys are the Linux axis codes, e.g. ABS_* for absolute axes. If there
9589        /// is no entry for a particular axis, assume that its value is 0.
9590        #[prost(map="uint32, sint32", tag="1")]
9591        pub axis_states: ::std::collections::HashMap<u32, i32>,
9592    }
9593    /// Contains the current values of a single ABS_MT_* axis across all of its
9594    /// slots.
9595    ///
9596    /// Next ID: 2
9597    #[derive(Clone, PartialEq, ::prost::Message)]
9598    pub struct SlotValuesMap {
9599        /// Current values for all slots.
9600        ///
9601        /// The keys are the slot numbers. If there is no entry for a particular
9602        /// slot, assume that its value is 0.
9603        #[prost(map="uint32, sint32", tag="1")]
9604        pub slot_values: ::std::collections::HashMap<u32, i32>,
9605    }
9606}
9607// End of protos/perfetto/trace/evdev.proto
9608
9609// Begin of protos/perfetto/common/descriptor.proto
9610
9611/// The protocol compiler can output a FileDescriptorSet containing the .proto
9612/// files it parses.
9613#[derive(Clone, PartialEq, ::prost::Message)]
9614pub struct FileDescriptorSet {
9615    #[prost(message, repeated, tag="1")]
9616    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9617}
9618/// Describes a complete .proto file.
9619#[derive(Clone, PartialEq, ::prost::Message)]
9620pub struct FileDescriptorProto {
9621    /// file name, relative to root of source tree
9622    #[prost(string, optional, tag="1")]
9623    pub name: ::core::option::Option<::prost::alloc::string::String>,
9624    /// e.g. "foo", "foo.bar", etc.
9625    #[prost(string, optional, tag="2")]
9626    pub package: ::core::option::Option<::prost::alloc::string::String>,
9627    /// Names of files imported by this file.
9628    #[prost(string, repeated, tag="3")]
9629    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9630    /// Indexes of the public imported files in the dependency list above.
9631    #[prost(int32, repeated, packed="false", tag="10")]
9632    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9633    /// Indexes of the weak imported files in the dependency list.
9634    /// For Google-internal migration only. Do not use.
9635    #[prost(int32, repeated, packed="false", tag="11")]
9636    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9637    /// All top-level definitions in this file.
9638    #[prost(message, repeated, tag="4")]
9639    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9640    #[prost(message, repeated, tag="5")]
9641    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9642    #[prost(message, repeated, tag="7")]
9643    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9644}
9645/// Describes a message type.
9646#[derive(Clone, PartialEq, ::prost::Message)]
9647pub struct DescriptorProto {
9648    #[prost(string, optional, tag="1")]
9649    pub name: ::core::option::Option<::prost::alloc::string::String>,
9650    #[prost(message, repeated, tag="2")]
9651    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9652    #[prost(message, repeated, tag="6")]
9653    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9654    #[prost(message, repeated, tag="3")]
9655    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9656    #[prost(message, repeated, tag="4")]
9657    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9658    #[prost(message, repeated, tag="8")]
9659    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9660    #[prost(message, repeated, tag="9")]
9661    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9662    /// Reserved field names, which may not be used by fields in the same message.
9663    /// A given name may only be reserved once.
9664    #[prost(string, repeated, tag="10")]
9665    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9666}
9667/// Nested message and enum types in `DescriptorProto`.
9668pub mod descriptor_proto {
9669    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9670    /// fields or extension ranges in the same message. Reserved ranges may
9671    /// not overlap.
9672    #[derive(Clone, PartialEq, ::prost::Message)]
9673    pub struct ReservedRange {
9674        /// Inclusive.
9675        #[prost(int32, optional, tag="1")]
9676        pub start: ::core::option::Option<i32>,
9677        /// Exclusive.
9678        #[prost(int32, optional, tag="2")]
9679        pub end: ::core::option::Option<i32>,
9680    }
9681}
9682/// A message representing a option the parser does not recognize. This only
9683/// appears in options protos created by the compiler::Parser class.
9684/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9685/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9686/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9687/// in them.
9688#[derive(Clone, PartialEq, ::prost::Message)]
9689pub struct UninterpretedOption {
9690    #[prost(message, repeated, tag="2")]
9691    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9692    /// The value of the uninterpreted option, in whatever type the tokenizer
9693    /// identified it as during parsing. Exactly one of these should be set.
9694    #[prost(string, optional, tag="3")]
9695    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9696    #[prost(uint64, optional, tag="4")]
9697    pub positive_int_value: ::core::option::Option<u64>,
9698    #[prost(int64, optional, tag="5")]
9699    pub negative_int_value: ::core::option::Option<i64>,
9700    #[prost(double, optional, tag="6")]
9701    pub double_value: ::core::option::Option<f64>,
9702    #[prost(bytes="vec", optional, tag="7")]
9703    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9704    #[prost(string, optional, tag="8")]
9705    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9706}
9707/// Nested message and enum types in `UninterpretedOption`.
9708pub mod uninterpreted_option {
9709    /// The name of the uninterpreted option.  Each string represents a segment in
9710    /// a dot-separated name.  is_extension is true iff a segment represents an
9711    /// extension (denoted with parentheses in options specs in .proto files).
9712    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
9713    /// "foo.(bar.baz).moo".
9714    #[derive(Clone, PartialEq, ::prost::Message)]
9715    pub struct NamePart {
9716        #[prost(string, optional, tag="1")]
9717        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9718        #[prost(bool, optional, tag="2")]
9719        pub is_extension: ::core::option::Option<bool>,
9720    }
9721}
9722#[derive(Clone, PartialEq, ::prost::Message)]
9723pub struct FieldOptions {
9724    /// The packed option can be enabled for repeated primitive fields to enable
9725    /// a more efficient representation on the wire. Rather than repeatedly
9726    /// writing the tag and type for each element, the entire array is encoded as
9727    /// a single length-delimited blob. In proto3, only explicit setting it to
9728    /// false will avoid using packed encoding.
9729    #[prost(bool, optional, tag="2")]
9730    pub packed: ::core::option::Option<bool>,
9731    /// The parser stores options it doesn't recognize here. See above.
9732    #[prost(message, repeated, tag="999")]
9733    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9734}
9735/// Describes a field within a message.
9736#[derive(Clone, PartialEq, ::prost::Message)]
9737pub struct FieldDescriptorProto {
9738    #[prost(string, optional, tag="1")]
9739    pub name: ::core::option::Option<::prost::alloc::string::String>,
9740    #[prost(int32, optional, tag="3")]
9741    pub number: ::core::option::Option<i32>,
9742    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
9743    pub label: ::core::option::Option<i32>,
9744    /// If type_name is set, this need not be set.  If both this and type_name
9745    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9746    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
9747    pub r#type: ::core::option::Option<i32>,
9748    /// For message and enum types, this is the name of the type.  If the name
9749    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9750    /// rules are used to find the type (i.e. first the nested types within this
9751    /// message are searched, then within the parent, on up to the root
9752    /// namespace).
9753    #[prost(string, optional, tag="6")]
9754    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9755    /// For extensions, this is the name of the type being extended.  It is
9756    /// resolved in the same manner as type_name.
9757    #[prost(string, optional, tag="2")]
9758    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9759    /// For numeric types, contains the original text representation of the value.
9760    /// For booleans, "true" or "false".
9761    /// For strings, contains the default text contents (not escaped in any way).
9762    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9763    /// TODO(kenton):  Base-64 encode?
9764    #[prost(string, optional, tag="7")]
9765    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9766    #[prost(message, optional, tag="8")]
9767    pub options: ::core::option::Option<FieldOptions>,
9768    /// If set, gives the index of a oneof in the containing type's oneof_decl
9769    /// list.  This field is a member of that oneof.
9770    #[prost(int32, optional, tag="9")]
9771    pub oneof_index: ::core::option::Option<i32>,
9772}
9773/// Nested message and enum types in `FieldDescriptorProto`.
9774pub mod field_descriptor_proto {
9775    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9776    #[repr(i32)]
9777    pub enum Type {
9778        /// 0 is reserved for errors.
9779        /// Order is weird for historical reasons.
9780        Double = 1,
9781        Float = 2,
9782        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9783        /// negative values are likely.
9784        Int64 = 3,
9785        Uint64 = 4,
9786        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9787        /// negative values are likely.
9788        Int32 = 5,
9789        Fixed64 = 6,
9790        Fixed32 = 7,
9791        Bool = 8,
9792        String = 9,
9793        /// Tag-delimited aggregate.
9794        /// Group type is deprecated and not supported in proto3. However, Proto3
9795        /// implementations should still be able to parse the group wire format and
9796        /// treat group fields as unknown fields.
9797        Group = 10,
9798        /// Length-delimited aggregate.
9799        Message = 11,
9800        /// New in version 2.
9801        Bytes = 12,
9802        Uint32 = 13,
9803        Enum = 14,
9804        Sfixed32 = 15,
9805        Sfixed64 = 16,
9806        /// Uses ZigZag encoding.
9807        Sint32 = 17,
9808        /// Uses ZigZag encoding.
9809        Sint64 = 18,
9810    }
9811    impl Type {
9812        /// String value of the enum field names used in the ProtoBuf definition.
9813        ///
9814        /// The values are not transformed in any way and thus are considered stable
9815        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9816        pub fn as_str_name(&self) -> &'static str {
9817            match self {
9818                Type::Double => "TYPE_DOUBLE",
9819                Type::Float => "TYPE_FLOAT",
9820                Type::Int64 => "TYPE_INT64",
9821                Type::Uint64 => "TYPE_UINT64",
9822                Type::Int32 => "TYPE_INT32",
9823                Type::Fixed64 => "TYPE_FIXED64",
9824                Type::Fixed32 => "TYPE_FIXED32",
9825                Type::Bool => "TYPE_BOOL",
9826                Type::String => "TYPE_STRING",
9827                Type::Group => "TYPE_GROUP",
9828                Type::Message => "TYPE_MESSAGE",
9829                Type::Bytes => "TYPE_BYTES",
9830                Type::Uint32 => "TYPE_UINT32",
9831                Type::Enum => "TYPE_ENUM",
9832                Type::Sfixed32 => "TYPE_SFIXED32",
9833                Type::Sfixed64 => "TYPE_SFIXED64",
9834                Type::Sint32 => "TYPE_SINT32",
9835                Type::Sint64 => "TYPE_SINT64",
9836            }
9837        }
9838    }
9839    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9840    #[repr(i32)]
9841    pub enum Label {
9842        /// 0 is reserved for errors
9843        Optional = 1,
9844        Required = 2,
9845        Repeated = 3,
9846    }
9847    impl Label {
9848        /// String value of the enum field names used in the ProtoBuf definition.
9849        ///
9850        /// The values are not transformed in any way and thus are considered stable
9851        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9852        pub fn as_str_name(&self) -> &'static str {
9853            match self {
9854                Label::Optional => "LABEL_OPTIONAL",
9855                Label::Required => "LABEL_REQUIRED",
9856                Label::Repeated => "LABEL_REPEATED",
9857            }
9858        }
9859    }
9860}
9861/// Describes a oneof.
9862#[derive(Clone, PartialEq, ::prost::Message)]
9863pub struct OneofDescriptorProto {
9864    #[prost(string, optional, tag="1")]
9865    pub name: ::core::option::Option<::prost::alloc::string::String>,
9866    #[prost(message, optional, tag="2")]
9867    pub options: ::core::option::Option<OneofOptions>,
9868}
9869/// Describes an enum type.
9870#[derive(Clone, PartialEq, ::prost::Message)]
9871pub struct EnumDescriptorProto {
9872    #[prost(string, optional, tag="1")]
9873    pub name: ::core::option::Option<::prost::alloc::string::String>,
9874    #[prost(message, repeated, tag="2")]
9875    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9876    /// Reserved enum value names, which may not be reused. A given name may only
9877    /// be reserved once.
9878    #[prost(string, repeated, tag="5")]
9879    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9880}
9881/// Describes a value within an enum.
9882#[derive(Clone, PartialEq, ::prost::Message)]
9883pub struct EnumValueDescriptorProto {
9884    #[prost(string, optional, tag="1")]
9885    pub name: ::core::option::Option<::prost::alloc::string::String>,
9886    #[prost(int32, optional, tag="2")]
9887    pub number: ::core::option::Option<i32>,
9888}
9889#[derive(Clone, PartialEq, ::prost::Message)]
9890pub struct OneofOptions {
9891}
9892// End of protos/perfetto/common/descriptor.proto
9893
9894// Begin of protos/perfetto/trace/extension_descriptor.proto
9895
9896/// This message contains descriptors used to parse extension fields of
9897/// TrackEvent.
9898///
9899/// See docs/design-docs/extensions.md for more details.
9900#[derive(Clone, PartialEq, ::prost::Message)]
9901pub struct ExtensionDescriptor {
9902    /// Optional, for debugging only. The file name or path of the descriptor
9903    /// source. Can be omitted without affecting functionality.
9904    #[prost(string, optional, tag="3")]
9905    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9906    #[prost(oneof="extension_descriptor::Descriptor", tags="1, 2")]
9907    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9908}
9909/// Nested message and enum types in `ExtensionDescriptor`.
9910pub mod extension_descriptor {
9911    #[derive(Clone, PartialEq, ::prost::Oneof)]
9912    pub enum Descriptor {
9913        #[prost(message, tag="1")]
9914        ExtensionSet(super::FileDescriptorSet),
9915        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9916        /// service on Android to emit pre-compressed descriptor files from
9917        /// /etc/tracing_descriptors.gz without decompressing them first.
9918        #[prost(bytes, tag="2")]
9919        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9920    }
9921}
9922// End of protos/perfetto/trace/extension_descriptor.proto
9923
9924// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
9925
9926/// Represents the mapping between inode numbers in a block device and their path
9927/// on the filesystem
9928#[derive(Clone, PartialEq, ::prost::Message)]
9929pub struct InodeFileMap {
9930    #[prost(uint64, optional, tag="1")]
9931    pub block_device_id: ::core::option::Option<u64>,
9932    /// The mount points of the block device, e.g. \["system"\].
9933    #[prost(string, repeated, tag="2")]
9934    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9935    /// The list of all the entries from the block device
9936    #[prost(message, repeated, tag="3")]
9937    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9938}
9939/// Nested message and enum types in `InodeFileMap`.
9940pub mod inode_file_map {
9941    /// Representation of Entry
9942    #[derive(Clone, PartialEq, ::prost::Message)]
9943    pub struct Entry {
9944        #[prost(uint64, optional, tag="1")]
9945        pub inode_number: ::core::option::Option<u64>,
9946        /// The path to the file, e.g. "etc/file.xml"
9947        /// List of strings for multiple hardlinks
9948        #[prost(string, repeated, tag="2")]
9949        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9950        #[prost(enumeration="entry::Type", optional, tag="3")]
9951        pub r#type: ::core::option::Option<i32>,
9952    }
9953    /// Nested message and enum types in `Entry`.
9954    pub mod entry {
9955        /// The file type
9956        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9957        #[repr(i32)]
9958        pub enum Type {
9959            Unknown = 0,
9960            File = 1,
9961            Directory = 2,
9962        }
9963        impl Type {
9964            /// String value of the enum field names used in the ProtoBuf definition.
9965            ///
9966            /// The values are not transformed in any way and thus are considered stable
9967            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9968            pub fn as_str_name(&self) -> &'static str {
9969                match self {
9970                    Type::Unknown => "UNKNOWN",
9971                    Type::File => "FILE",
9972                    Type::Directory => "DIRECTORY",
9973                }
9974            }
9975        }
9976    }
9977}
9978// End of protos/perfetto/trace/filesystem/inode_file_map.proto
9979
9980// Begin of protos/perfetto/trace/ftrace/android_fs.proto
9981
9982#[derive(Clone, PartialEq, ::prost::Message)]
9983pub struct AndroidFsDatareadEndFtraceEvent {
9984    #[prost(int32, optional, tag="1")]
9985    pub bytes: ::core::option::Option<i32>,
9986    #[prost(uint64, optional, tag="2")]
9987    pub ino: ::core::option::Option<u64>,
9988    #[prost(int64, optional, tag="3")]
9989    pub offset: ::core::option::Option<i64>,
9990}
9991#[derive(Clone, PartialEq, ::prost::Message)]
9992pub struct AndroidFsDatareadStartFtraceEvent {
9993    #[prost(int32, optional, tag="1")]
9994    pub bytes: ::core::option::Option<i32>,
9995    #[prost(string, optional, tag="2")]
9996    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9997    #[prost(int64, optional, tag="3")]
9998    pub i_size: ::core::option::Option<i64>,
9999    #[prost(uint64, optional, tag="4")]
10000    pub ino: ::core::option::Option<u64>,
10001    #[prost(int64, optional, tag="5")]
10002    pub offset: ::core::option::Option<i64>,
10003    #[prost(string, optional, tag="6")]
10004    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10005    #[prost(int32, optional, tag="7")]
10006    pub pid: ::core::option::Option<i32>,
10007}
10008#[derive(Clone, PartialEq, ::prost::Message)]
10009pub struct AndroidFsDatawriteEndFtraceEvent {
10010    #[prost(int32, optional, tag="1")]
10011    pub bytes: ::core::option::Option<i32>,
10012    #[prost(uint64, optional, tag="2")]
10013    pub ino: ::core::option::Option<u64>,
10014    #[prost(int64, optional, tag="3")]
10015    pub offset: ::core::option::Option<i64>,
10016}
10017#[derive(Clone, PartialEq, ::prost::Message)]
10018pub struct AndroidFsDatawriteStartFtraceEvent {
10019    #[prost(int32, optional, tag="1")]
10020    pub bytes: ::core::option::Option<i32>,
10021    #[prost(string, optional, tag="2")]
10022    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10023    #[prost(int64, optional, tag="3")]
10024    pub i_size: ::core::option::Option<i64>,
10025    #[prost(uint64, optional, tag="4")]
10026    pub ino: ::core::option::Option<u64>,
10027    #[prost(int64, optional, tag="5")]
10028    pub offset: ::core::option::Option<i64>,
10029    #[prost(string, optional, tag="6")]
10030    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10031    #[prost(int32, optional, tag="7")]
10032    pub pid: ::core::option::Option<i32>,
10033}
10034#[derive(Clone, PartialEq, ::prost::Message)]
10035pub struct AndroidFsFsyncEndFtraceEvent {
10036    #[prost(int32, optional, tag="1")]
10037    pub bytes: ::core::option::Option<i32>,
10038    #[prost(uint64, optional, tag="2")]
10039    pub ino: ::core::option::Option<u64>,
10040    #[prost(int64, optional, tag="3")]
10041    pub offset: ::core::option::Option<i64>,
10042}
10043#[derive(Clone, PartialEq, ::prost::Message)]
10044pub struct AndroidFsFsyncStartFtraceEvent {
10045    #[prost(string, optional, tag="1")]
10046    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10047    #[prost(int64, optional, tag="2")]
10048    pub i_size: ::core::option::Option<i64>,
10049    #[prost(uint64, optional, tag="3")]
10050    pub ino: ::core::option::Option<u64>,
10051    #[prost(string, optional, tag="4")]
10052    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10053    #[prost(int32, optional, tag="5")]
10054    pub pid: ::core::option::Option<i32>,
10055}
10056// End of protos/perfetto/trace/ftrace/android_fs.proto
10057
10058// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
10059
10060#[derive(Clone, PartialEq, ::prost::Message)]
10061pub struct BclIrqTriggerFtraceEvent {
10062    #[prost(int32, optional, tag="1")]
10063    pub id: ::core::option::Option<i32>,
10064    #[prost(int32, optional, tag="2")]
10065    pub throttle: ::core::option::Option<i32>,
10066    #[prost(int32, optional, tag="3")]
10067    pub cpu0_limit: ::core::option::Option<i32>,
10068    #[prost(int32, optional, tag="4")]
10069    pub cpu1_limit: ::core::option::Option<i32>,
10070    #[prost(int32, optional, tag="5")]
10071    pub cpu2_limit: ::core::option::Option<i32>,
10072    #[prost(int32, optional, tag="6")]
10073    pub tpu_limit: ::core::option::Option<i32>,
10074    #[prost(int32, optional, tag="7")]
10075    pub gpu_limit: ::core::option::Option<i32>,
10076    #[prost(int32, optional, tag="8")]
10077    pub voltage: ::core::option::Option<i32>,
10078    #[prost(int32, optional, tag="9")]
10079    pub capacity: ::core::option::Option<i32>,
10080}
10081// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
10082
10083// Begin of protos/perfetto/trace/ftrace/binder.proto
10084
10085#[derive(Clone, PartialEq, ::prost::Message)]
10086pub struct BinderTransactionFtraceEvent {
10087    #[prost(int32, optional, tag="1")]
10088    pub debug_id: ::core::option::Option<i32>,
10089    #[prost(int32, optional, tag="2")]
10090    pub target_node: ::core::option::Option<i32>,
10091    #[prost(int32, optional, tag="3")]
10092    pub to_proc: ::core::option::Option<i32>,
10093    #[prost(int32, optional, tag="4")]
10094    pub to_thread: ::core::option::Option<i32>,
10095    #[prost(int32, optional, tag="5")]
10096    pub reply: ::core::option::Option<i32>,
10097    #[prost(uint32, optional, tag="6")]
10098    pub code: ::core::option::Option<u32>,
10099    #[prost(uint32, optional, tag="7")]
10100    pub flags: ::core::option::Option<u32>,
10101}
10102#[derive(Clone, PartialEq, ::prost::Message)]
10103pub struct BinderTransactionReceivedFtraceEvent {
10104    #[prost(int32, optional, tag="1")]
10105    pub debug_id: ::core::option::Option<i32>,
10106}
10107#[derive(Clone, PartialEq, ::prost::Message)]
10108pub struct BinderSetPriorityFtraceEvent {
10109    #[prost(int32, optional, tag="1")]
10110    pub proc: ::core::option::Option<i32>,
10111    #[prost(int32, optional, tag="2")]
10112    pub thread: ::core::option::Option<i32>,
10113    #[prost(uint32, optional, tag="3")]
10114    pub old_prio: ::core::option::Option<u32>,
10115    #[prost(uint32, optional, tag="4")]
10116    pub new_prio: ::core::option::Option<u32>,
10117    #[prost(uint32, optional, tag="5")]
10118    pub desired_prio: ::core::option::Option<u32>,
10119}
10120#[derive(Clone, PartialEq, ::prost::Message)]
10121pub struct BinderLockFtraceEvent {
10122    #[prost(string, optional, tag="1")]
10123    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10124}
10125#[derive(Clone, PartialEq, ::prost::Message)]
10126pub struct BinderLockedFtraceEvent {
10127    #[prost(string, optional, tag="1")]
10128    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10129}
10130#[derive(Clone, PartialEq, ::prost::Message)]
10131pub struct BinderUnlockFtraceEvent {
10132    #[prost(string, optional, tag="1")]
10133    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10134}
10135#[derive(Clone, PartialEq, ::prost::Message)]
10136pub struct BinderTransactionAllocBufFtraceEvent {
10137    #[prost(uint64, optional, tag="1")]
10138    pub data_size: ::core::option::Option<u64>,
10139    #[prost(int32, optional, tag="2")]
10140    pub debug_id: ::core::option::Option<i32>,
10141    #[prost(uint64, optional, tag="3")]
10142    pub offsets_size: ::core::option::Option<u64>,
10143    #[prost(uint64, optional, tag="4")]
10144    pub extra_buffers_size: ::core::option::Option<u64>,
10145}
10146#[derive(Clone, PartialEq, ::prost::Message)]
10147pub struct BinderCommandFtraceEvent {
10148    #[prost(uint32, optional, tag="1")]
10149    pub cmd: ::core::option::Option<u32>,
10150}
10151#[derive(Clone, PartialEq, ::prost::Message)]
10152pub struct BinderReturnFtraceEvent {
10153    #[prost(uint32, optional, tag="1")]
10154    pub cmd: ::core::option::Option<u32>,
10155}
10156// End of protos/perfetto/trace/ftrace/binder.proto
10157
10158// Begin of protos/perfetto/trace/ftrace/block.proto
10159
10160#[derive(Clone, PartialEq, ::prost::Message)]
10161pub struct BlockRqIssueFtraceEvent {
10162    #[prost(uint64, optional, tag="1")]
10163    pub dev: ::core::option::Option<u64>,
10164    #[prost(uint64, optional, tag="2")]
10165    pub sector: ::core::option::Option<u64>,
10166    #[prost(uint32, optional, tag="3")]
10167    pub nr_sector: ::core::option::Option<u32>,
10168    #[prost(uint32, optional, tag="4")]
10169    pub bytes: ::core::option::Option<u32>,
10170    #[prost(string, optional, tag="5")]
10171    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10172    #[prost(string, optional, tag="6")]
10173    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10174    #[prost(string, optional, tag="7")]
10175    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10176}
10177#[derive(Clone, PartialEq, ::prost::Message)]
10178pub struct BlockBioBackmergeFtraceEvent {
10179    #[prost(uint64, optional, tag="1")]
10180    pub dev: ::core::option::Option<u64>,
10181    #[prost(uint64, optional, tag="2")]
10182    pub sector: ::core::option::Option<u64>,
10183    #[prost(uint32, optional, tag="3")]
10184    pub nr_sector: ::core::option::Option<u32>,
10185    #[prost(string, optional, tag="4")]
10186    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10187    #[prost(string, optional, tag="5")]
10188    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10189}
10190#[derive(Clone, PartialEq, ::prost::Message)]
10191pub struct BlockBioBounceFtraceEvent {
10192    #[prost(uint64, optional, tag="1")]
10193    pub dev: ::core::option::Option<u64>,
10194    #[prost(uint64, optional, tag="2")]
10195    pub sector: ::core::option::Option<u64>,
10196    #[prost(uint32, optional, tag="3")]
10197    pub nr_sector: ::core::option::Option<u32>,
10198    #[prost(string, optional, tag="4")]
10199    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10200    #[prost(string, optional, tag="5")]
10201    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10202}
10203#[derive(Clone, PartialEq, ::prost::Message)]
10204pub struct BlockBioCompleteFtraceEvent {
10205    #[prost(uint64, optional, tag="1")]
10206    pub dev: ::core::option::Option<u64>,
10207    #[prost(uint64, optional, tag="2")]
10208    pub sector: ::core::option::Option<u64>,
10209    #[prost(uint32, optional, tag="3")]
10210    pub nr_sector: ::core::option::Option<u32>,
10211    #[prost(int32, optional, tag="4")]
10212    pub error: ::core::option::Option<i32>,
10213    #[prost(string, optional, tag="5")]
10214    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10215}
10216#[derive(Clone, PartialEq, ::prost::Message)]
10217pub struct BlockBioFrontmergeFtraceEvent {
10218    #[prost(uint64, optional, tag="1")]
10219    pub dev: ::core::option::Option<u64>,
10220    #[prost(uint64, optional, tag="2")]
10221    pub sector: ::core::option::Option<u64>,
10222    #[prost(uint32, optional, tag="3")]
10223    pub nr_sector: ::core::option::Option<u32>,
10224    #[prost(string, optional, tag="4")]
10225    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10226    #[prost(string, optional, tag="5")]
10227    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10228}
10229#[derive(Clone, PartialEq, ::prost::Message)]
10230pub struct BlockBioQueueFtraceEvent {
10231    #[prost(uint64, optional, tag="1")]
10232    pub dev: ::core::option::Option<u64>,
10233    #[prost(uint64, optional, tag="2")]
10234    pub sector: ::core::option::Option<u64>,
10235    #[prost(uint32, optional, tag="3")]
10236    pub nr_sector: ::core::option::Option<u32>,
10237    #[prost(string, optional, tag="4")]
10238    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10239    #[prost(string, optional, tag="5")]
10240    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10241}
10242#[derive(Clone, PartialEq, ::prost::Message)]
10243pub struct BlockBioRemapFtraceEvent {
10244    #[prost(uint64, optional, tag="1")]
10245    pub dev: ::core::option::Option<u64>,
10246    #[prost(uint64, optional, tag="2")]
10247    pub sector: ::core::option::Option<u64>,
10248    #[prost(uint32, optional, tag="3")]
10249    pub nr_sector: ::core::option::Option<u32>,
10250    #[prost(uint64, optional, tag="4")]
10251    pub old_dev: ::core::option::Option<u64>,
10252    #[prost(uint64, optional, tag="5")]
10253    pub old_sector: ::core::option::Option<u64>,
10254    #[prost(string, optional, tag="6")]
10255    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10256}
10257#[derive(Clone, PartialEq, ::prost::Message)]
10258pub struct BlockDirtyBufferFtraceEvent {
10259    #[prost(uint64, optional, tag="1")]
10260    pub dev: ::core::option::Option<u64>,
10261    #[prost(uint64, optional, tag="2")]
10262    pub sector: ::core::option::Option<u64>,
10263    #[prost(uint64, optional, tag="3")]
10264    pub size: ::core::option::Option<u64>,
10265}
10266#[derive(Clone, PartialEq, ::prost::Message)]
10267pub struct BlockGetrqFtraceEvent {
10268    #[prost(uint64, optional, tag="1")]
10269    pub dev: ::core::option::Option<u64>,
10270    #[prost(uint64, optional, tag="2")]
10271    pub sector: ::core::option::Option<u64>,
10272    #[prost(uint32, optional, tag="3")]
10273    pub nr_sector: ::core::option::Option<u32>,
10274    #[prost(string, optional, tag="4")]
10275    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10276    #[prost(string, optional, tag="5")]
10277    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10278}
10279#[derive(Clone, PartialEq, ::prost::Message)]
10280pub struct BlockPlugFtraceEvent {
10281    #[prost(string, optional, tag="1")]
10282    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10283}
10284#[derive(Clone, PartialEq, ::prost::Message)]
10285pub struct BlockRqAbortFtraceEvent {
10286    #[prost(uint64, optional, tag="1")]
10287    pub dev: ::core::option::Option<u64>,
10288    #[prost(uint64, optional, tag="2")]
10289    pub sector: ::core::option::Option<u64>,
10290    #[prost(uint32, optional, tag="3")]
10291    pub nr_sector: ::core::option::Option<u32>,
10292    #[prost(int32, optional, tag="4")]
10293    pub errors: ::core::option::Option<i32>,
10294    #[prost(string, optional, tag="5")]
10295    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10296    #[prost(string, optional, tag="6")]
10297    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10298}
10299#[derive(Clone, PartialEq, ::prost::Message)]
10300pub struct BlockRqCompleteFtraceEvent {
10301    #[prost(uint64, optional, tag="1")]
10302    pub dev: ::core::option::Option<u64>,
10303    #[prost(uint64, optional, tag="2")]
10304    pub sector: ::core::option::Option<u64>,
10305    #[prost(uint32, optional, tag="3")]
10306    pub nr_sector: ::core::option::Option<u32>,
10307    #[prost(int32, optional, tag="4")]
10308    pub errors: ::core::option::Option<i32>,
10309    #[prost(string, optional, tag="5")]
10310    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10311    #[prost(string, optional, tag="6")]
10312    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10313    #[prost(int32, optional, tag="7")]
10314    pub error: ::core::option::Option<i32>,
10315}
10316#[derive(Clone, PartialEq, ::prost::Message)]
10317pub struct BlockRqInsertFtraceEvent {
10318    #[prost(uint64, optional, tag="1")]
10319    pub dev: ::core::option::Option<u64>,
10320    #[prost(uint64, optional, tag="2")]
10321    pub sector: ::core::option::Option<u64>,
10322    #[prost(uint32, optional, tag="3")]
10323    pub nr_sector: ::core::option::Option<u32>,
10324    #[prost(uint32, optional, tag="4")]
10325    pub bytes: ::core::option::Option<u32>,
10326    #[prost(string, optional, tag="5")]
10327    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10328    #[prost(string, optional, tag="6")]
10329    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10330    #[prost(string, optional, tag="7")]
10331    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10332}
10333#[derive(Clone, PartialEq, ::prost::Message)]
10334pub struct BlockRqRemapFtraceEvent {
10335    #[prost(uint64, optional, tag="1")]
10336    pub dev: ::core::option::Option<u64>,
10337    #[prost(uint64, optional, tag="2")]
10338    pub sector: ::core::option::Option<u64>,
10339    #[prost(uint32, optional, tag="3")]
10340    pub nr_sector: ::core::option::Option<u32>,
10341    #[prost(uint64, optional, tag="4")]
10342    pub old_dev: ::core::option::Option<u64>,
10343    #[prost(uint64, optional, tag="5")]
10344    pub old_sector: ::core::option::Option<u64>,
10345    #[prost(uint32, optional, tag="6")]
10346    pub nr_bios: ::core::option::Option<u32>,
10347    #[prost(string, optional, tag="7")]
10348    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10349}
10350#[derive(Clone, PartialEq, ::prost::Message)]
10351pub struct BlockRqRequeueFtraceEvent {
10352    #[prost(uint64, optional, tag="1")]
10353    pub dev: ::core::option::Option<u64>,
10354    #[prost(uint64, optional, tag="2")]
10355    pub sector: ::core::option::Option<u64>,
10356    #[prost(uint32, optional, tag="3")]
10357    pub nr_sector: ::core::option::Option<u32>,
10358    #[prost(int32, optional, tag="4")]
10359    pub errors: ::core::option::Option<i32>,
10360    #[prost(string, optional, tag="5")]
10361    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10362    #[prost(string, optional, tag="6")]
10363    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10364}
10365#[derive(Clone, PartialEq, ::prost::Message)]
10366pub struct BlockSleeprqFtraceEvent {
10367    #[prost(uint64, optional, tag="1")]
10368    pub dev: ::core::option::Option<u64>,
10369    #[prost(uint64, optional, tag="2")]
10370    pub sector: ::core::option::Option<u64>,
10371    #[prost(uint32, optional, tag="3")]
10372    pub nr_sector: ::core::option::Option<u32>,
10373    #[prost(string, optional, tag="4")]
10374    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10375    #[prost(string, optional, tag="5")]
10376    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10377}
10378#[derive(Clone, PartialEq, ::prost::Message)]
10379pub struct BlockSplitFtraceEvent {
10380    #[prost(uint64, optional, tag="1")]
10381    pub dev: ::core::option::Option<u64>,
10382    #[prost(uint64, optional, tag="2")]
10383    pub sector: ::core::option::Option<u64>,
10384    #[prost(uint64, optional, tag="3")]
10385    pub new_sector: ::core::option::Option<u64>,
10386    #[prost(string, optional, tag="4")]
10387    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10388    #[prost(string, optional, tag="5")]
10389    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10390}
10391#[derive(Clone, PartialEq, ::prost::Message)]
10392pub struct BlockTouchBufferFtraceEvent {
10393    #[prost(uint64, optional, tag="1")]
10394    pub dev: ::core::option::Option<u64>,
10395    #[prost(uint64, optional, tag="2")]
10396    pub sector: ::core::option::Option<u64>,
10397    #[prost(uint64, optional, tag="3")]
10398    pub size: ::core::option::Option<u64>,
10399}
10400#[derive(Clone, PartialEq, ::prost::Message)]
10401pub struct BlockUnplugFtraceEvent {
10402    #[prost(int32, optional, tag="1")]
10403    pub nr_rq: ::core::option::Option<i32>,
10404    #[prost(string, optional, tag="2")]
10405    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10406}
10407#[derive(Clone, PartialEq, ::prost::Message)]
10408pub struct BlockIoStartFtraceEvent {
10409    #[prost(uint64, optional, tag="1")]
10410    pub dev: ::core::option::Option<u64>,
10411    #[prost(uint64, optional, tag="2")]
10412    pub sector: ::core::option::Option<u64>,
10413    #[prost(uint32, optional, tag="3")]
10414    pub nr_sector: ::core::option::Option<u32>,
10415    #[prost(uint32, optional, tag="4")]
10416    pub bytes: ::core::option::Option<u32>,
10417    #[prost(uint32, optional, tag="5")]
10418    pub ioprio: ::core::option::Option<u32>,
10419    #[prost(string, optional, tag="6")]
10420    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10421    #[prost(string, optional, tag="7")]
10422    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10423    #[prost(string, optional, tag="8")]
10424    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10425}
10426#[derive(Clone, PartialEq, ::prost::Message)]
10427pub struct BlockIoDoneFtraceEvent {
10428    #[prost(uint64, optional, tag="1")]
10429    pub dev: ::core::option::Option<u64>,
10430    #[prost(uint64, optional, tag="2")]
10431    pub sector: ::core::option::Option<u64>,
10432    #[prost(uint32, optional, tag="3")]
10433    pub nr_sector: ::core::option::Option<u32>,
10434    #[prost(uint32, optional, tag="4")]
10435    pub bytes: ::core::option::Option<u32>,
10436    #[prost(uint32, optional, tag="5")]
10437    pub ioprio: ::core::option::Option<u32>,
10438    #[prost(string, optional, tag="6")]
10439    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10440    #[prost(string, optional, tag="7")]
10441    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10442    #[prost(string, optional, tag="8")]
10443    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10444}
10445// End of protos/perfetto/trace/ftrace/block.proto
10446
10447// Begin of protos/perfetto/trace/ftrace/cgroup.proto
10448
10449#[derive(Clone, PartialEq, ::prost::Message)]
10450pub struct CgroupAttachTaskFtraceEvent {
10451    #[prost(int32, optional, tag="1")]
10452    pub dst_root: ::core::option::Option<i32>,
10453    #[prost(int32, optional, tag="2")]
10454    pub dst_id: ::core::option::Option<i32>,
10455    #[prost(int32, optional, tag="3")]
10456    pub pid: ::core::option::Option<i32>,
10457    #[prost(string, optional, tag="4")]
10458    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10459    #[prost(string, optional, tag="5")]
10460    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10461    #[prost(int32, optional, tag="6")]
10462    pub dst_level: ::core::option::Option<i32>,
10463    #[prost(string, optional, tag="7")]
10464    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10465}
10466#[derive(Clone, PartialEq, ::prost::Message)]
10467pub struct CgroupMkdirFtraceEvent {
10468    #[prost(int32, optional, tag="1")]
10469    pub root: ::core::option::Option<i32>,
10470    #[prost(int32, optional, tag="2")]
10471    pub id: ::core::option::Option<i32>,
10472    #[prost(string, optional, tag="3")]
10473    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10474    #[prost(int32, optional, tag="4")]
10475    pub level: ::core::option::Option<i32>,
10476    #[prost(string, optional, tag="5")]
10477    pub path: ::core::option::Option<::prost::alloc::string::String>,
10478}
10479#[derive(Clone, PartialEq, ::prost::Message)]
10480pub struct CgroupRemountFtraceEvent {
10481    #[prost(int32, optional, tag="1")]
10482    pub root: ::core::option::Option<i32>,
10483    #[prost(uint32, optional, tag="2")]
10484    pub ss_mask: ::core::option::Option<u32>,
10485    #[prost(string, optional, tag="3")]
10486    pub name: ::core::option::Option<::prost::alloc::string::String>,
10487}
10488#[derive(Clone, PartialEq, ::prost::Message)]
10489pub struct CgroupRmdirFtraceEvent {
10490    #[prost(int32, optional, tag="1")]
10491    pub root: ::core::option::Option<i32>,
10492    #[prost(int32, optional, tag="2")]
10493    pub id: ::core::option::Option<i32>,
10494    #[prost(string, optional, tag="3")]
10495    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10496    #[prost(int32, optional, tag="4")]
10497    pub level: ::core::option::Option<i32>,
10498    #[prost(string, optional, tag="5")]
10499    pub path: ::core::option::Option<::prost::alloc::string::String>,
10500}
10501#[derive(Clone, PartialEq, ::prost::Message)]
10502pub struct CgroupTransferTasksFtraceEvent {
10503    #[prost(int32, optional, tag="1")]
10504    pub dst_root: ::core::option::Option<i32>,
10505    #[prost(int32, optional, tag="2")]
10506    pub dst_id: ::core::option::Option<i32>,
10507    #[prost(int32, optional, tag="3")]
10508    pub pid: ::core::option::Option<i32>,
10509    #[prost(string, optional, tag="4")]
10510    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10511    #[prost(string, optional, tag="5")]
10512    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10513    #[prost(int32, optional, tag="6")]
10514    pub dst_level: ::core::option::Option<i32>,
10515    #[prost(string, optional, tag="7")]
10516    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10517}
10518#[derive(Clone, PartialEq, ::prost::Message)]
10519pub struct CgroupDestroyRootFtraceEvent {
10520    #[prost(int32, optional, tag="1")]
10521    pub root: ::core::option::Option<i32>,
10522    #[prost(uint32, optional, tag="2")]
10523    pub ss_mask: ::core::option::Option<u32>,
10524    #[prost(string, optional, tag="3")]
10525    pub name: ::core::option::Option<::prost::alloc::string::String>,
10526}
10527#[derive(Clone, PartialEq, ::prost::Message)]
10528pub struct CgroupReleaseFtraceEvent {
10529    #[prost(int32, optional, tag="1")]
10530    pub root: ::core::option::Option<i32>,
10531    #[prost(int32, optional, tag="2")]
10532    pub id: ::core::option::Option<i32>,
10533    #[prost(string, optional, tag="3")]
10534    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10535    #[prost(int32, optional, tag="4")]
10536    pub level: ::core::option::Option<i32>,
10537    #[prost(string, optional, tag="5")]
10538    pub path: ::core::option::Option<::prost::alloc::string::String>,
10539}
10540#[derive(Clone, PartialEq, ::prost::Message)]
10541pub struct CgroupRenameFtraceEvent {
10542    #[prost(int32, optional, tag="1")]
10543    pub root: ::core::option::Option<i32>,
10544    #[prost(int32, optional, tag="2")]
10545    pub id: ::core::option::Option<i32>,
10546    #[prost(string, optional, tag="3")]
10547    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10548    #[prost(int32, optional, tag="4")]
10549    pub level: ::core::option::Option<i32>,
10550    #[prost(string, optional, tag="5")]
10551    pub path: ::core::option::Option<::prost::alloc::string::String>,
10552}
10553#[derive(Clone, PartialEq, ::prost::Message)]
10554pub struct CgroupSetupRootFtraceEvent {
10555    #[prost(int32, optional, tag="1")]
10556    pub root: ::core::option::Option<i32>,
10557    #[prost(uint32, optional, tag="2")]
10558    pub ss_mask: ::core::option::Option<u32>,
10559    #[prost(string, optional, tag="3")]
10560    pub name: ::core::option::Option<::prost::alloc::string::String>,
10561}
10562// End of protos/perfetto/trace/ftrace/cgroup.proto
10563
10564// Begin of protos/perfetto/trace/ftrace/clk.proto
10565
10566#[derive(Clone, PartialEq, ::prost::Message)]
10567pub struct ClkEnableFtraceEvent {
10568    #[prost(string, optional, tag="1")]
10569    pub name: ::core::option::Option<::prost::alloc::string::String>,
10570}
10571#[derive(Clone, PartialEq, ::prost::Message)]
10572pub struct ClkDisableFtraceEvent {
10573    #[prost(string, optional, tag="1")]
10574    pub name: ::core::option::Option<::prost::alloc::string::String>,
10575}
10576#[derive(Clone, PartialEq, ::prost::Message)]
10577pub struct ClkSetRateFtraceEvent {
10578    #[prost(string, optional, tag="1")]
10579    pub name: ::core::option::Option<::prost::alloc::string::String>,
10580    #[prost(uint64, optional, tag="2")]
10581    pub rate: ::core::option::Option<u64>,
10582}
10583// End of protos/perfetto/trace/ftrace/clk.proto
10584
10585// Begin of protos/perfetto/trace/ftrace/cma.proto
10586
10587#[derive(Clone, PartialEq, ::prost::Message)]
10588pub struct CmaAllocStartFtraceEvent {
10589    #[prost(uint32, optional, tag="1")]
10590    pub align: ::core::option::Option<u32>,
10591    #[prost(uint32, optional, tag="2")]
10592    pub count: ::core::option::Option<u32>,
10593    #[prost(string, optional, tag="3")]
10594    pub name: ::core::option::Option<::prost::alloc::string::String>,
10595}
10596#[derive(Clone, PartialEq, ::prost::Message)]
10597pub struct CmaAllocInfoFtraceEvent {
10598    #[prost(uint32, optional, tag="1")]
10599    pub align: ::core::option::Option<u32>,
10600    #[prost(uint32, optional, tag="2")]
10601    pub count: ::core::option::Option<u32>,
10602    #[prost(uint32, optional, tag="3")]
10603    pub err_iso: ::core::option::Option<u32>,
10604    #[prost(uint32, optional, tag="4")]
10605    pub err_mig: ::core::option::Option<u32>,
10606    #[prost(uint32, optional, tag="5")]
10607    pub err_test: ::core::option::Option<u32>,
10608    #[prost(string, optional, tag="6")]
10609    pub name: ::core::option::Option<::prost::alloc::string::String>,
10610    #[prost(uint64, optional, tag="7")]
10611    pub nr_mapped: ::core::option::Option<u64>,
10612    #[prost(uint64, optional, tag="8")]
10613    pub nr_migrated: ::core::option::Option<u64>,
10614    #[prost(uint64, optional, tag="9")]
10615    pub nr_reclaimed: ::core::option::Option<u64>,
10616    #[prost(uint64, optional, tag="10")]
10617    pub pfn: ::core::option::Option<u64>,
10618}
10619#[derive(Clone, PartialEq, ::prost::Message)]
10620pub struct CmaAllocFinishFtraceEvent {
10621    #[prost(string, optional, tag="1")]
10622    pub name: ::core::option::Option<::prost::alloc::string::String>,
10623    #[prost(uint64, optional, tag="2")]
10624    pub pfn: ::core::option::Option<u64>,
10625    #[prost(uint64, optional, tag="3")]
10626    pub page: ::core::option::Option<u64>,
10627    #[prost(uint64, optional, tag="4")]
10628    pub count: ::core::option::Option<u64>,
10629    #[prost(uint32, optional, tag="5")]
10630    pub align: ::core::option::Option<u32>,
10631    #[prost(int32, optional, tag="6")]
10632    pub errorno: ::core::option::Option<i32>,
10633}
10634// End of protos/perfetto/trace/ftrace/cma.proto
10635
10636// Begin of protos/perfetto/trace/ftrace/compaction.proto
10637
10638#[derive(Clone, PartialEq, ::prost::Message)]
10639pub struct MmCompactionBeginFtraceEvent {
10640    #[prost(uint64, optional, tag="1")]
10641    pub zone_start: ::core::option::Option<u64>,
10642    #[prost(uint64, optional, tag="2")]
10643    pub migrate_pfn: ::core::option::Option<u64>,
10644    #[prost(uint64, optional, tag="3")]
10645    pub free_pfn: ::core::option::Option<u64>,
10646    #[prost(uint64, optional, tag="4")]
10647    pub zone_end: ::core::option::Option<u64>,
10648    #[prost(uint32, optional, tag="5")]
10649    pub sync: ::core::option::Option<u32>,
10650}
10651#[derive(Clone, PartialEq, ::prost::Message)]
10652pub struct MmCompactionDeferCompactionFtraceEvent {
10653    #[prost(int32, optional, tag="1")]
10654    pub nid: ::core::option::Option<i32>,
10655    #[prost(uint32, optional, tag="2")]
10656    pub idx: ::core::option::Option<u32>,
10657    #[prost(int32, optional, tag="3")]
10658    pub order: ::core::option::Option<i32>,
10659    #[prost(uint32, optional, tag="4")]
10660    pub considered: ::core::option::Option<u32>,
10661    #[prost(uint32, optional, tag="5")]
10662    pub defer_shift: ::core::option::Option<u32>,
10663    #[prost(int32, optional, tag="6")]
10664    pub order_failed: ::core::option::Option<i32>,
10665}
10666#[derive(Clone, PartialEq, ::prost::Message)]
10667pub struct MmCompactionDeferredFtraceEvent {
10668    #[prost(int32, optional, tag="1")]
10669    pub nid: ::core::option::Option<i32>,
10670    #[prost(uint32, optional, tag="2")]
10671    pub idx: ::core::option::Option<u32>,
10672    #[prost(int32, optional, tag="3")]
10673    pub order: ::core::option::Option<i32>,
10674    #[prost(uint32, optional, tag="4")]
10675    pub considered: ::core::option::Option<u32>,
10676    #[prost(uint32, optional, tag="5")]
10677    pub defer_shift: ::core::option::Option<u32>,
10678    #[prost(int32, optional, tag="6")]
10679    pub order_failed: ::core::option::Option<i32>,
10680}
10681#[derive(Clone, PartialEq, ::prost::Message)]
10682pub struct MmCompactionDeferResetFtraceEvent {
10683    #[prost(int32, optional, tag="1")]
10684    pub nid: ::core::option::Option<i32>,
10685    #[prost(uint32, optional, tag="2")]
10686    pub idx: ::core::option::Option<u32>,
10687    #[prost(int32, optional, tag="3")]
10688    pub order: ::core::option::Option<i32>,
10689    #[prost(uint32, optional, tag="4")]
10690    pub considered: ::core::option::Option<u32>,
10691    #[prost(uint32, optional, tag="5")]
10692    pub defer_shift: ::core::option::Option<u32>,
10693    #[prost(int32, optional, tag="6")]
10694    pub order_failed: ::core::option::Option<i32>,
10695}
10696#[derive(Clone, PartialEq, ::prost::Message)]
10697pub struct MmCompactionEndFtraceEvent {
10698    #[prost(uint64, optional, tag="1")]
10699    pub zone_start: ::core::option::Option<u64>,
10700    #[prost(uint64, optional, tag="2")]
10701    pub migrate_pfn: ::core::option::Option<u64>,
10702    #[prost(uint64, optional, tag="3")]
10703    pub free_pfn: ::core::option::Option<u64>,
10704    #[prost(uint64, optional, tag="4")]
10705    pub zone_end: ::core::option::Option<u64>,
10706    #[prost(uint32, optional, tag="5")]
10707    pub sync: ::core::option::Option<u32>,
10708    #[prost(int32, optional, tag="6")]
10709    pub status: ::core::option::Option<i32>,
10710}
10711#[derive(Clone, PartialEq, ::prost::Message)]
10712pub struct MmCompactionFinishedFtraceEvent {
10713    #[prost(int32, optional, tag="1")]
10714    pub nid: ::core::option::Option<i32>,
10715    #[prost(uint32, optional, tag="2")]
10716    pub idx: ::core::option::Option<u32>,
10717    #[prost(int32, optional, tag="3")]
10718    pub order: ::core::option::Option<i32>,
10719    #[prost(int32, optional, tag="4")]
10720    pub ret: ::core::option::Option<i32>,
10721}
10722#[derive(Clone, PartialEq, ::prost::Message)]
10723pub struct MmCompactionIsolateFreepagesFtraceEvent {
10724    #[prost(uint64, optional, tag="1")]
10725    pub start_pfn: ::core::option::Option<u64>,
10726    #[prost(uint64, optional, tag="2")]
10727    pub end_pfn: ::core::option::Option<u64>,
10728    #[prost(uint64, optional, tag="3")]
10729    pub nr_scanned: ::core::option::Option<u64>,
10730    #[prost(uint64, optional, tag="4")]
10731    pub nr_taken: ::core::option::Option<u64>,
10732}
10733#[derive(Clone, PartialEq, ::prost::Message)]
10734pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10735    #[prost(uint64, optional, tag="1")]
10736    pub start_pfn: ::core::option::Option<u64>,
10737    #[prost(uint64, optional, tag="2")]
10738    pub end_pfn: ::core::option::Option<u64>,
10739    #[prost(uint64, optional, tag="3")]
10740    pub nr_scanned: ::core::option::Option<u64>,
10741    #[prost(uint64, optional, tag="4")]
10742    pub nr_taken: ::core::option::Option<u64>,
10743}
10744#[derive(Clone, PartialEq, ::prost::Message)]
10745pub struct MmCompactionKcompactdSleepFtraceEvent {
10746    #[prost(int32, optional, tag="1")]
10747    pub nid: ::core::option::Option<i32>,
10748}
10749#[derive(Clone, PartialEq, ::prost::Message)]
10750pub struct MmCompactionKcompactdWakeFtraceEvent {
10751    #[prost(int32, optional, tag="1")]
10752    pub nid: ::core::option::Option<i32>,
10753    #[prost(int32, optional, tag="2")]
10754    pub order: ::core::option::Option<i32>,
10755    #[prost(uint32, optional, tag="3")]
10756    pub classzone_idx: ::core::option::Option<u32>,
10757    #[prost(uint32, optional, tag="4")]
10758    pub highest_zoneidx: ::core::option::Option<u32>,
10759}
10760#[derive(Clone, PartialEq, ::prost::Message)]
10761pub struct MmCompactionMigratepagesFtraceEvent {
10762    #[prost(uint64, optional, tag="1")]
10763    pub nr_migrated: ::core::option::Option<u64>,
10764    #[prost(uint64, optional, tag="2")]
10765    pub nr_failed: ::core::option::Option<u64>,
10766}
10767#[derive(Clone, PartialEq, ::prost::Message)]
10768pub struct MmCompactionSuitableFtraceEvent {
10769    #[prost(int32, optional, tag="1")]
10770    pub nid: ::core::option::Option<i32>,
10771    #[prost(uint32, optional, tag="2")]
10772    pub idx: ::core::option::Option<u32>,
10773    #[prost(int32, optional, tag="3")]
10774    pub order: ::core::option::Option<i32>,
10775    #[prost(int32, optional, tag="4")]
10776    pub ret: ::core::option::Option<i32>,
10777}
10778#[derive(Clone, PartialEq, ::prost::Message)]
10779pub struct MmCompactionTryToCompactPagesFtraceEvent {
10780    #[prost(int32, optional, tag="1")]
10781    pub order: ::core::option::Option<i32>,
10782    #[prost(uint32, optional, tag="2")]
10783    pub gfp_mask: ::core::option::Option<u32>,
10784    #[prost(uint32, optional, tag="3")]
10785    pub mode: ::core::option::Option<u32>,
10786    #[prost(int32, optional, tag="4")]
10787    pub prio: ::core::option::Option<i32>,
10788}
10789#[derive(Clone, PartialEq, ::prost::Message)]
10790pub struct MmCompactionWakeupKcompactdFtraceEvent {
10791    #[prost(int32, optional, tag="1")]
10792    pub nid: ::core::option::Option<i32>,
10793    #[prost(int32, optional, tag="2")]
10794    pub order: ::core::option::Option<i32>,
10795    #[prost(uint32, optional, tag="3")]
10796    pub classzone_idx: ::core::option::Option<u32>,
10797    #[prost(uint32, optional, tag="4")]
10798    pub highest_zoneidx: ::core::option::Option<u32>,
10799}
10800// End of protos/perfetto/trace/ftrace/compaction.proto
10801
10802// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
10803
10804#[derive(Clone, PartialEq, ::prost::Message)]
10805pub struct ParamSetValueCpmFtraceEvent {
10806    #[prost(string, optional, tag="1")]
10807    pub body: ::core::option::Option<::prost::alloc::string::String>,
10808    #[prost(uint32, optional, tag="2")]
10809    pub value: ::core::option::Option<u32>,
10810    #[prost(int64, optional, tag="3")]
10811    pub timestamp: ::core::option::Option<i64>,
10812}
10813// End of protos/perfetto/trace/ftrace/cpm_trace.proto
10814
10815// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
10816
10817#[derive(Clone, PartialEq, ::prost::Message)]
10818pub struct CpuhpExitFtraceEvent {
10819    #[prost(uint32, optional, tag="1")]
10820    pub cpu: ::core::option::Option<u32>,
10821    #[prost(int32, optional, tag="2")]
10822    pub idx: ::core::option::Option<i32>,
10823    #[prost(int32, optional, tag="3")]
10824    pub ret: ::core::option::Option<i32>,
10825    #[prost(int32, optional, tag="4")]
10826    pub state: ::core::option::Option<i32>,
10827}
10828#[derive(Clone, PartialEq, ::prost::Message)]
10829pub struct CpuhpMultiEnterFtraceEvent {
10830    #[prost(uint32, optional, tag="1")]
10831    pub cpu: ::core::option::Option<u32>,
10832    #[prost(uint64, optional, tag="2")]
10833    pub fun: ::core::option::Option<u64>,
10834    #[prost(int32, optional, tag="3")]
10835    pub idx: ::core::option::Option<i32>,
10836    #[prost(int32, optional, tag="4")]
10837    pub target: ::core::option::Option<i32>,
10838}
10839#[derive(Clone, PartialEq, ::prost::Message)]
10840pub struct CpuhpEnterFtraceEvent {
10841    #[prost(uint32, optional, tag="1")]
10842    pub cpu: ::core::option::Option<u32>,
10843    #[prost(uint64, optional, tag="2")]
10844    pub fun: ::core::option::Option<u64>,
10845    #[prost(int32, optional, tag="3")]
10846    pub idx: ::core::option::Option<i32>,
10847    #[prost(int32, optional, tag="4")]
10848    pub target: ::core::option::Option<i32>,
10849}
10850#[derive(Clone, PartialEq, ::prost::Message)]
10851pub struct CpuhpLatencyFtraceEvent {
10852    #[prost(uint32, optional, tag="1")]
10853    pub cpu: ::core::option::Option<u32>,
10854    #[prost(int32, optional, tag="2")]
10855    pub ret: ::core::option::Option<i32>,
10856    #[prost(uint32, optional, tag="3")]
10857    pub state: ::core::option::Option<u32>,
10858    #[prost(uint64, optional, tag="4")]
10859    pub time: ::core::option::Option<u64>,
10860}
10861#[derive(Clone, PartialEq, ::prost::Message)]
10862pub struct CpuhpPauseFtraceEvent {
10863    #[prost(uint32, optional, tag="1")]
10864    pub active_cpus: ::core::option::Option<u32>,
10865    #[prost(uint32, optional, tag="2")]
10866    pub cpus: ::core::option::Option<u32>,
10867    #[prost(uint32, optional, tag="3")]
10868    pub pause: ::core::option::Option<u32>,
10869    #[prost(uint32, optional, tag="4")]
10870    pub time: ::core::option::Option<u32>,
10871}
10872// End of protos/perfetto/trace/ftrace/cpuhp.proto
10873
10874// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
10875
10876#[derive(Clone, PartialEq, ::prost::Message)]
10877pub struct CrosEcSensorhubDataFtraceEvent {
10878    #[prost(int64, optional, tag="1")]
10879    pub current_time: ::core::option::Option<i64>,
10880    #[prost(int64, optional, tag="2")]
10881    pub current_timestamp: ::core::option::Option<i64>,
10882    #[prost(int64, optional, tag="3")]
10883    pub delta: ::core::option::Option<i64>,
10884    #[prost(uint32, optional, tag="4")]
10885    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10886    #[prost(uint32, optional, tag="5")]
10887    pub ec_sensor_num: ::core::option::Option<u32>,
10888    #[prost(int64, optional, tag="6")]
10889    pub fifo_timestamp: ::core::option::Option<i64>,
10890}
10891// End of protos/perfetto/trace/ftrace/cros_ec.proto
10892
10893// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
10894
10895#[derive(Clone, PartialEq, ::prost::Message)]
10896pub struct DcvshFreqFtraceEvent {
10897    #[prost(uint64, optional, tag="1")]
10898    pub cpu: ::core::option::Option<u64>,
10899    #[prost(uint64, optional, tag="2")]
10900    pub freq: ::core::option::Option<u64>,
10901}
10902// End of protos/perfetto/trace/ftrace/dcvsh.proto
10903
10904// Begin of protos/perfetto/trace/ftrace/devfreq.proto
10905
10906#[derive(Clone, PartialEq, ::prost::Message)]
10907pub struct DevfreqFrequencyFtraceEvent {
10908    #[prost(string, optional, tag="1")]
10909    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10910    #[prost(uint64, optional, tag="2")]
10911    pub freq: ::core::option::Option<u64>,
10912    #[prost(uint64, optional, tag="3")]
10913    pub prev_freq: ::core::option::Option<u64>,
10914    #[prost(uint64, optional, tag="4")]
10915    pub busy_time: ::core::option::Option<u64>,
10916    #[prost(uint64, optional, tag="5")]
10917    pub total_time: ::core::option::Option<u64>,
10918}
10919// End of protos/perfetto/trace/ftrace/devfreq.proto
10920
10921// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
10922
10923#[derive(Clone, PartialEq, ::prost::Message)]
10924pub struct DmaFenceInitFtraceEvent {
10925    #[prost(uint32, optional, tag="1")]
10926    pub context: ::core::option::Option<u32>,
10927    #[prost(string, optional, tag="2")]
10928    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10929    #[prost(uint32, optional, tag="3")]
10930    pub seqno: ::core::option::Option<u32>,
10931    #[prost(string, optional, tag="4")]
10932    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10933}
10934#[derive(Clone, PartialEq, ::prost::Message)]
10935pub struct DmaFenceEmitFtraceEvent {
10936    #[prost(uint32, optional, tag="1")]
10937    pub context: ::core::option::Option<u32>,
10938    #[prost(string, optional, tag="2")]
10939    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10940    #[prost(uint32, optional, tag="3")]
10941    pub seqno: ::core::option::Option<u32>,
10942    #[prost(string, optional, tag="4")]
10943    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10944}
10945#[derive(Clone, PartialEq, ::prost::Message)]
10946pub struct DmaFenceSignaledFtraceEvent {
10947    #[prost(uint32, optional, tag="1")]
10948    pub context: ::core::option::Option<u32>,
10949    #[prost(string, optional, tag="2")]
10950    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10951    #[prost(uint32, optional, tag="3")]
10952    pub seqno: ::core::option::Option<u32>,
10953    #[prost(string, optional, tag="4")]
10954    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10955}
10956#[derive(Clone, PartialEq, ::prost::Message)]
10957pub struct DmaFenceWaitStartFtraceEvent {
10958    #[prost(uint32, optional, tag="1")]
10959    pub context: ::core::option::Option<u32>,
10960    #[prost(string, optional, tag="2")]
10961    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10962    #[prost(uint32, optional, tag="3")]
10963    pub seqno: ::core::option::Option<u32>,
10964    #[prost(string, optional, tag="4")]
10965    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10966}
10967#[derive(Clone, PartialEq, ::prost::Message)]
10968pub struct DmaFenceWaitEndFtraceEvent {
10969    #[prost(uint32, optional, tag="1")]
10970    pub context: ::core::option::Option<u32>,
10971    #[prost(string, optional, tag="2")]
10972    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10973    #[prost(uint32, optional, tag="3")]
10974    pub seqno: ::core::option::Option<u32>,
10975    #[prost(string, optional, tag="4")]
10976    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10977}
10978// End of protos/perfetto/trace/ftrace/dma_fence.proto
10979
10980// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10981
10982#[derive(Clone, PartialEq, ::prost::Message)]
10983pub struct DmaHeapStatFtraceEvent {
10984    #[prost(uint64, optional, tag="1")]
10985    pub inode: ::core::option::Option<u64>,
10986    #[prost(int64, optional, tag="2")]
10987    pub len: ::core::option::Option<i64>,
10988    #[prost(uint64, optional, tag="3")]
10989    pub total_allocated: ::core::option::Option<u64>,
10990}
10991// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10992
10993// Begin of protos/perfetto/trace/ftrace/dpu.proto
10994
10995#[derive(Clone, PartialEq, ::prost::Message)]
10996pub struct DpuTracingMarkWriteFtraceEvent {
10997    #[prost(int32, optional, tag="1")]
10998    pub pid: ::core::option::Option<i32>,
10999    #[prost(string, optional, tag="2")]
11000    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
11001    #[prost(uint32, optional, tag="3")]
11002    pub trace_begin: ::core::option::Option<u32>,
11003    #[prost(string, optional, tag="4")]
11004    pub name: ::core::option::Option<::prost::alloc::string::String>,
11005    #[prost(uint32, optional, tag="5")]
11006    pub r#type: ::core::option::Option<u32>,
11007    #[prost(int32, optional, tag="6")]
11008    pub value: ::core::option::Option<i32>,
11009}
11010#[derive(Clone, PartialEq, ::prost::Message)]
11011pub struct DpuDsiCmdFifoStatusFtraceEvent {
11012    #[prost(uint32, optional, tag="1")]
11013    pub header: ::core::option::Option<u32>,
11014    #[prost(uint32, optional, tag="2")]
11015    pub payload: ::core::option::Option<u32>,
11016}
11017#[derive(Clone, PartialEq, ::prost::Message)]
11018pub struct DpuDsiRxFtraceEvent {
11019    #[prost(uint32, optional, tag="1")]
11020    pub cmd: ::core::option::Option<u32>,
11021    #[prost(bytes="vec", optional, tag="3")]
11022    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11023}
11024#[derive(Clone, PartialEq, ::prost::Message)]
11025pub struct DpuDsiTxFtraceEvent {
11026    #[prost(uint32, optional, tag="1")]
11027    pub r#type: ::core::option::Option<u32>,
11028    #[prost(uint32, optional, tag="3")]
11029    pub last: ::core::option::Option<u32>,
11030    #[prost(uint32, optional, tag="4")]
11031    pub delay_ms: ::core::option::Option<u32>,
11032    #[prost(bytes="vec", optional, tag="5")]
11033    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11034}
11035#[derive(Clone, PartialEq, ::prost::Message)]
11036pub struct DpuDispDpuUnderrunFtraceEvent {
11037    #[prost(int32, optional, tag="1")]
11038    pub id: ::core::option::Option<i32>,
11039    #[prost(int32, optional, tag="2")]
11040    pub frames_pending: ::core::option::Option<i32>,
11041    #[prost(int32, optional, tag="3")]
11042    pub vsync_count: ::core::option::Option<i32>,
11043}
11044#[derive(Clone, PartialEq, ::prost::Message)]
11045pub struct DpuDispVblankIrqEnableFtraceEvent {
11046    #[prost(int32, optional, tag="1")]
11047    pub id: ::core::option::Option<i32>,
11048    #[prost(int32, optional, tag="2")]
11049    pub output_id: ::core::option::Option<i32>,
11050    #[prost(int32, optional, tag="3")]
11051    pub enable: ::core::option::Option<i32>,
11052}
11053#[derive(Clone, PartialEq, ::prost::Message)]
11054pub struct DpuDispFrameDoneTimeoutFtraceEvent {
11055    #[prost(int32, optional, tag="1")]
11056    pub display_id: ::core::option::Option<i32>,
11057    #[prost(uint32, optional, tag="2")]
11058    pub output_id: ::core::option::Option<u32>,
11059    #[prost(int32, optional, tag="3")]
11060    pub frames_pending: ::core::option::Option<i32>,
11061    #[prost(int32, optional, tag="4")]
11062    pub te_count: ::core::option::Option<i32>,
11063    #[prost(uint32, optional, tag="5")]
11064    pub during_disable: ::core::option::Option<u32>,
11065}
11066#[derive(Clone, PartialEq, ::prost::Message)]
11067pub struct DpuDispFrameStartTimeoutFtraceEvent {
11068    #[prost(int32, optional, tag="1")]
11069    pub display_id: ::core::option::Option<i32>,
11070    #[prost(uint32, optional, tag="2")]
11071    pub output_id: ::core::option::Option<u32>,
11072    #[prost(int32, optional, tag="3")]
11073    pub frames_pending: ::core::option::Option<i32>,
11074    #[prost(int32, optional, tag="4")]
11075    pub te_count: ::core::option::Option<i32>,
11076}
11077// End of protos/perfetto/trace/ftrace/dpu.proto
11078
11079// Begin of protos/perfetto/trace/ftrace/drm.proto
11080
11081#[derive(Clone, PartialEq, ::prost::Message)]
11082pub struct DrmVblankEventFtraceEvent {
11083    #[prost(int32, optional, tag="1")]
11084    pub crtc: ::core::option::Option<i32>,
11085    #[prost(uint32, optional, tag="2")]
11086    pub high_prec: ::core::option::Option<u32>,
11087    #[prost(uint32, optional, tag="3")]
11088    pub seq: ::core::option::Option<u32>,
11089    #[prost(int64, optional, tag="4")]
11090    pub time: ::core::option::Option<i64>,
11091}
11092#[derive(Clone, PartialEq, ::prost::Message)]
11093pub struct DrmVblankEventDeliveredFtraceEvent {
11094    #[prost(int32, optional, tag="1")]
11095    pub crtc: ::core::option::Option<i32>,
11096    #[prost(uint64, optional, tag="2")]
11097    pub file: ::core::option::Option<u64>,
11098    #[prost(uint32, optional, tag="3")]
11099    pub seq: ::core::option::Option<u32>,
11100}
11101// End of protos/perfetto/trace/ftrace/drm.proto
11102
11103// Begin of protos/perfetto/trace/ftrace/dwc3.proto
11104
11105#[derive(Clone, PartialEq, ::prost::Message)]
11106pub struct Dwc3AllocRequestFtraceEvent {
11107    #[prost(string, optional, tag="1")]
11108    pub name: ::core::option::Option<::prost::alloc::string::String>,
11109    #[prost(uint64, optional, tag="2")]
11110    pub req: ::core::option::Option<u64>,
11111    #[prost(uint32, optional, tag="3")]
11112    pub actual: ::core::option::Option<u32>,
11113    #[prost(uint32, optional, tag="4")]
11114    pub length: ::core::option::Option<u32>,
11115    #[prost(int32, optional, tag="5")]
11116    pub status: ::core::option::Option<i32>,
11117    #[prost(int32, optional, tag="6")]
11118    pub zero: ::core::option::Option<i32>,
11119    #[prost(int32, optional, tag="7")]
11120    pub short_not_ok: ::core::option::Option<i32>,
11121    #[prost(int32, optional, tag="8")]
11122    pub no_interrupt: ::core::option::Option<i32>,
11123}
11124#[derive(Clone, PartialEq, ::prost::Message)]
11125pub struct Dwc3CompleteTrbFtraceEvent {
11126    #[prost(string, optional, tag="1")]
11127    pub name: ::core::option::Option<::prost::alloc::string::String>,
11128    #[prost(uint64, optional, tag="2")]
11129    pub trb: ::core::option::Option<u64>,
11130    #[prost(uint32, optional, tag="3")]
11131    pub allocated: ::core::option::Option<u32>,
11132    #[prost(uint32, optional, tag="4")]
11133    pub queued: ::core::option::Option<u32>,
11134    #[prost(uint32, optional, tag="5")]
11135    pub bpl: ::core::option::Option<u32>,
11136    #[prost(uint32, optional, tag="6")]
11137    pub bph: ::core::option::Option<u32>,
11138    #[prost(uint32, optional, tag="7")]
11139    pub size: ::core::option::Option<u32>,
11140    #[prost(uint32, optional, tag="8")]
11141    pub ctrl: ::core::option::Option<u32>,
11142    #[prost(uint32, optional, tag="9")]
11143    pub r#type: ::core::option::Option<u32>,
11144    #[prost(uint32, optional, tag="10")]
11145    pub enqueue: ::core::option::Option<u32>,
11146    #[prost(uint32, optional, tag="11")]
11147    pub dequeue: ::core::option::Option<u32>,
11148}
11149#[derive(Clone, PartialEq, ::prost::Message)]
11150pub struct Dwc3CtrlReqFtraceEvent {
11151    #[prost(uint32, optional, tag="1")]
11152    pub b_request_type: ::core::option::Option<u32>,
11153    #[prost(uint32, optional, tag="2")]
11154    pub b_request: ::core::option::Option<u32>,
11155    #[prost(uint32, optional, tag="3")]
11156    pub w_value: ::core::option::Option<u32>,
11157    #[prost(uint32, optional, tag="4")]
11158    pub w_index: ::core::option::Option<u32>,
11159    #[prost(uint32, optional, tag="5")]
11160    pub w_length: ::core::option::Option<u32>,
11161    #[prost(string, optional, tag="6")]
11162    pub str: ::core::option::Option<::prost::alloc::string::String>,
11163}
11164#[derive(Clone, PartialEq, ::prost::Message)]
11165pub struct Dwc3EpDequeueFtraceEvent {
11166    #[prost(string, optional, tag="1")]
11167    pub name: ::core::option::Option<::prost::alloc::string::String>,
11168    #[prost(uint64, optional, tag="2")]
11169    pub req: ::core::option::Option<u64>,
11170    #[prost(uint32, optional, tag="3")]
11171    pub actual: ::core::option::Option<u32>,
11172    #[prost(uint32, optional, tag="4")]
11173    pub length: ::core::option::Option<u32>,
11174    #[prost(int32, optional, tag="5")]
11175    pub status: ::core::option::Option<i32>,
11176    #[prost(int32, optional, tag="6")]
11177    pub zero: ::core::option::Option<i32>,
11178    #[prost(int32, optional, tag="7")]
11179    pub short_not_ok: ::core::option::Option<i32>,
11180    #[prost(int32, optional, tag="8")]
11181    pub no_interrupt: ::core::option::Option<i32>,
11182}
11183#[derive(Clone, PartialEq, ::prost::Message)]
11184pub struct Dwc3EpQueueFtraceEvent {
11185    #[prost(string, optional, tag="1")]
11186    pub name: ::core::option::Option<::prost::alloc::string::String>,
11187    #[prost(uint64, optional, tag="2")]
11188    pub req: ::core::option::Option<u64>,
11189    #[prost(uint32, optional, tag="3")]
11190    pub actual: ::core::option::Option<u32>,
11191    #[prost(uint32, optional, tag="4")]
11192    pub length: ::core::option::Option<u32>,
11193    #[prost(int32, optional, tag="5")]
11194    pub status: ::core::option::Option<i32>,
11195    #[prost(int32, optional, tag="6")]
11196    pub zero: ::core::option::Option<i32>,
11197    #[prost(int32, optional, tag="7")]
11198    pub short_not_ok: ::core::option::Option<i32>,
11199    #[prost(int32, optional, tag="8")]
11200    pub no_interrupt: ::core::option::Option<i32>,
11201}
11202#[derive(Clone, PartialEq, ::prost::Message)]
11203pub struct Dwc3EventFtraceEvent {
11204    #[prost(uint32, optional, tag="1")]
11205    pub event: ::core::option::Option<u32>,
11206    #[prost(uint32, optional, tag="2")]
11207    pub ep0state: ::core::option::Option<u32>,
11208    #[prost(string, optional, tag="3")]
11209    pub str: ::core::option::Option<::prost::alloc::string::String>,
11210}
11211#[derive(Clone, PartialEq, ::prost::Message)]
11212pub struct Dwc3FreeRequestFtraceEvent {
11213    #[prost(string, optional, tag="1")]
11214    pub name: ::core::option::Option<::prost::alloc::string::String>,
11215    #[prost(uint64, optional, tag="2")]
11216    pub req: ::core::option::Option<u64>,
11217    #[prost(uint32, optional, tag="3")]
11218    pub actual: ::core::option::Option<u32>,
11219    #[prost(uint32, optional, tag="4")]
11220    pub length: ::core::option::Option<u32>,
11221    #[prost(int32, optional, tag="5")]
11222    pub status: ::core::option::Option<i32>,
11223    #[prost(int32, optional, tag="6")]
11224    pub zero: ::core::option::Option<i32>,
11225    #[prost(int32, optional, tag="7")]
11226    pub short_not_ok: ::core::option::Option<i32>,
11227    #[prost(int32, optional, tag="8")]
11228    pub no_interrupt: ::core::option::Option<i32>,
11229}
11230#[derive(Clone, PartialEq, ::prost::Message)]
11231pub struct Dwc3GadgetEpCmdFtraceEvent {
11232    #[prost(string, optional, tag="1")]
11233    pub name: ::core::option::Option<::prost::alloc::string::String>,
11234    #[prost(uint32, optional, tag="2")]
11235    pub cmd: ::core::option::Option<u32>,
11236    #[prost(uint32, optional, tag="3")]
11237    pub param0: ::core::option::Option<u32>,
11238    #[prost(uint32, optional, tag="4")]
11239    pub param1: ::core::option::Option<u32>,
11240    #[prost(uint32, optional, tag="5")]
11241    pub param2: ::core::option::Option<u32>,
11242    #[prost(int32, optional, tag="6")]
11243    pub cmd_status: ::core::option::Option<i32>,
11244}
11245#[derive(Clone, PartialEq, ::prost::Message)]
11246pub struct Dwc3GadgetEpDisableFtraceEvent {
11247    #[prost(string, optional, tag="1")]
11248    pub name: ::core::option::Option<::prost::alloc::string::String>,
11249    #[prost(uint32, optional, tag="2")]
11250    pub maxpacket: ::core::option::Option<u32>,
11251    #[prost(uint32, optional, tag="3")]
11252    pub maxpacket_limit: ::core::option::Option<u32>,
11253    #[prost(uint32, optional, tag="4")]
11254    pub max_streams: ::core::option::Option<u32>,
11255    #[prost(uint32, optional, tag="5")]
11256    pub maxburst: ::core::option::Option<u32>,
11257    #[prost(uint32, optional, tag="6")]
11258    pub flags: ::core::option::Option<u32>,
11259    #[prost(uint32, optional, tag="7")]
11260    pub direction: ::core::option::Option<u32>,
11261    #[prost(uint32, optional, tag="8")]
11262    pub trb_enqueue: ::core::option::Option<u32>,
11263    #[prost(uint32, optional, tag="9")]
11264    pub trb_dequeue: ::core::option::Option<u32>,
11265}
11266#[derive(Clone, PartialEq, ::prost::Message)]
11267pub struct Dwc3GadgetEpEnableFtraceEvent {
11268    #[prost(string, optional, tag="1")]
11269    pub name: ::core::option::Option<::prost::alloc::string::String>,
11270    #[prost(uint32, optional, tag="2")]
11271    pub maxpacket: ::core::option::Option<u32>,
11272    #[prost(uint32, optional, tag="3")]
11273    pub maxpacket_limit: ::core::option::Option<u32>,
11274    #[prost(uint32, optional, tag="4")]
11275    pub max_streams: ::core::option::Option<u32>,
11276    #[prost(uint32, optional, tag="5")]
11277    pub maxburst: ::core::option::Option<u32>,
11278    #[prost(uint32, optional, tag="6")]
11279    pub flags: ::core::option::Option<u32>,
11280    #[prost(uint32, optional, tag="7")]
11281    pub direction: ::core::option::Option<u32>,
11282    #[prost(uint32, optional, tag="8")]
11283    pub trb_enqueue: ::core::option::Option<u32>,
11284    #[prost(uint32, optional, tag="9")]
11285    pub trb_dequeue: ::core::option::Option<u32>,
11286}
11287#[derive(Clone, PartialEq, ::prost::Message)]
11288pub struct Dwc3GadgetGenericCmdFtraceEvent {
11289    #[prost(uint32, optional, tag="1")]
11290    pub cmd: ::core::option::Option<u32>,
11291    #[prost(uint32, optional, tag="2")]
11292    pub param: ::core::option::Option<u32>,
11293    #[prost(int32, optional, tag="3")]
11294    pub status: ::core::option::Option<i32>,
11295}
11296#[derive(Clone, PartialEq, ::prost::Message)]
11297pub struct Dwc3GadgetGivebackFtraceEvent {
11298    #[prost(string, optional, tag="1")]
11299    pub name: ::core::option::Option<::prost::alloc::string::String>,
11300    #[prost(uint64, optional, tag="2")]
11301    pub req: ::core::option::Option<u64>,
11302    #[prost(uint32, optional, tag="3")]
11303    pub actual: ::core::option::Option<u32>,
11304    #[prost(uint32, optional, tag="4")]
11305    pub length: ::core::option::Option<u32>,
11306    #[prost(int32, optional, tag="5")]
11307    pub status: ::core::option::Option<i32>,
11308    #[prost(int32, optional, tag="6")]
11309    pub zero: ::core::option::Option<i32>,
11310    #[prost(int32, optional, tag="7")]
11311    pub short_not_ok: ::core::option::Option<i32>,
11312    #[prost(int32, optional, tag="8")]
11313    pub no_interrupt: ::core::option::Option<i32>,
11314}
11315#[derive(Clone, PartialEq, ::prost::Message)]
11316pub struct Dwc3PrepareTrbFtraceEvent {
11317    #[prost(string, optional, tag="1")]
11318    pub name: ::core::option::Option<::prost::alloc::string::String>,
11319    #[prost(uint64, optional, tag="2")]
11320    pub trb: ::core::option::Option<u64>,
11321    #[prost(uint32, optional, tag="3")]
11322    pub allocated: ::core::option::Option<u32>,
11323    #[prost(uint32, optional, tag="4")]
11324    pub queued: ::core::option::Option<u32>,
11325    #[prost(uint32, optional, tag="5")]
11326    pub bpl: ::core::option::Option<u32>,
11327    #[prost(uint32, optional, tag="6")]
11328    pub bph: ::core::option::Option<u32>,
11329    #[prost(uint32, optional, tag="7")]
11330    pub size: ::core::option::Option<u32>,
11331    #[prost(uint32, optional, tag="8")]
11332    pub ctrl: ::core::option::Option<u32>,
11333    #[prost(uint32, optional, tag="9")]
11334    pub r#type: ::core::option::Option<u32>,
11335    #[prost(uint32, optional, tag="10")]
11336    pub enqueue: ::core::option::Option<u32>,
11337    #[prost(uint32, optional, tag="11")]
11338    pub dequeue: ::core::option::Option<u32>,
11339}
11340#[derive(Clone, PartialEq, ::prost::Message)]
11341pub struct Dwc3ReadlFtraceEvent {
11342    #[prost(uint64, optional, tag="1")]
11343    pub base: ::core::option::Option<u64>,
11344    #[prost(uint32, optional, tag="2")]
11345    pub offset: ::core::option::Option<u32>,
11346    #[prost(uint32, optional, tag="3")]
11347    pub value: ::core::option::Option<u32>,
11348    #[prost(string, optional, tag="4")]
11349    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11350}
11351#[derive(Clone, PartialEq, ::prost::Message)]
11352pub struct Dwc3WritelFtraceEvent {
11353    #[prost(uint64, optional, tag="1")]
11354    pub base: ::core::option::Option<u64>,
11355    #[prost(uint32, optional, tag="2")]
11356    pub offset: ::core::option::Option<u32>,
11357    #[prost(uint32, optional, tag="3")]
11358    pub value: ::core::option::Option<u32>,
11359    #[prost(string, optional, tag="4")]
11360    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11361}
11362// End of protos/perfetto/trace/ftrace/dwc3.proto
11363
11364// Begin of protos/perfetto/trace/ftrace/ext4.proto
11365
11366#[derive(Clone, PartialEq, ::prost::Message)]
11367pub struct Ext4DaWriteBeginFtraceEvent {
11368    #[prost(uint64, optional, tag="1")]
11369    pub dev: ::core::option::Option<u64>,
11370    #[prost(uint64, optional, tag="2")]
11371    pub ino: ::core::option::Option<u64>,
11372    #[prost(int64, optional, tag="3")]
11373    pub pos: ::core::option::Option<i64>,
11374    #[prost(uint32, optional, tag="4")]
11375    pub len: ::core::option::Option<u32>,
11376    #[prost(uint32, optional, tag="5")]
11377    pub flags: ::core::option::Option<u32>,
11378}
11379#[derive(Clone, PartialEq, ::prost::Message)]
11380pub struct Ext4DaWriteEndFtraceEvent {
11381    #[prost(uint64, optional, tag="1")]
11382    pub dev: ::core::option::Option<u64>,
11383    #[prost(uint64, optional, tag="2")]
11384    pub ino: ::core::option::Option<u64>,
11385    #[prost(int64, optional, tag="3")]
11386    pub pos: ::core::option::Option<i64>,
11387    #[prost(uint32, optional, tag="4")]
11388    pub len: ::core::option::Option<u32>,
11389    #[prost(uint32, optional, tag="5")]
11390    pub copied: ::core::option::Option<u32>,
11391}
11392#[derive(Clone, PartialEq, ::prost::Message)]
11393pub struct Ext4SyncFileEnterFtraceEvent {
11394    #[prost(uint64, optional, tag="1")]
11395    pub dev: ::core::option::Option<u64>,
11396    #[prost(uint64, optional, tag="2")]
11397    pub ino: ::core::option::Option<u64>,
11398    #[prost(uint64, optional, tag="3")]
11399    pub parent: ::core::option::Option<u64>,
11400    #[prost(int32, optional, tag="4")]
11401    pub datasync: ::core::option::Option<i32>,
11402}
11403#[derive(Clone, PartialEq, ::prost::Message)]
11404pub struct Ext4SyncFileExitFtraceEvent {
11405    #[prost(uint64, optional, tag="1")]
11406    pub dev: ::core::option::Option<u64>,
11407    #[prost(uint64, optional, tag="2")]
11408    pub ino: ::core::option::Option<u64>,
11409    #[prost(int32, optional, tag="3")]
11410    pub ret: ::core::option::Option<i32>,
11411}
11412#[derive(Clone, PartialEq, ::prost::Message)]
11413pub struct Ext4AllocDaBlocksFtraceEvent {
11414    #[prost(uint64, optional, tag="1")]
11415    pub dev: ::core::option::Option<u64>,
11416    #[prost(uint64, optional, tag="2")]
11417    pub ino: ::core::option::Option<u64>,
11418    #[prost(uint32, optional, tag="3")]
11419    pub data_blocks: ::core::option::Option<u32>,
11420    #[prost(uint32, optional, tag="4")]
11421    pub meta_blocks: ::core::option::Option<u32>,
11422}
11423#[derive(Clone, PartialEq, ::prost::Message)]
11424pub struct Ext4AllocateBlocksFtraceEvent {
11425    #[prost(uint64, optional, tag="1")]
11426    pub dev: ::core::option::Option<u64>,
11427    #[prost(uint64, optional, tag="2")]
11428    pub ino: ::core::option::Option<u64>,
11429    #[prost(uint64, optional, tag="3")]
11430    pub block: ::core::option::Option<u64>,
11431    #[prost(uint32, optional, tag="4")]
11432    pub len: ::core::option::Option<u32>,
11433    #[prost(uint32, optional, tag="5")]
11434    pub logical: ::core::option::Option<u32>,
11435    #[prost(uint32, optional, tag="6")]
11436    pub lleft: ::core::option::Option<u32>,
11437    #[prost(uint32, optional, tag="7")]
11438    pub lright: ::core::option::Option<u32>,
11439    #[prost(uint64, optional, tag="8")]
11440    pub goal: ::core::option::Option<u64>,
11441    #[prost(uint64, optional, tag="9")]
11442    pub pleft: ::core::option::Option<u64>,
11443    #[prost(uint64, optional, tag="10")]
11444    pub pright: ::core::option::Option<u64>,
11445    #[prost(uint32, optional, tag="11")]
11446    pub flags: ::core::option::Option<u32>,
11447}
11448#[derive(Clone, PartialEq, ::prost::Message)]
11449pub struct Ext4AllocateInodeFtraceEvent {
11450    #[prost(uint64, optional, tag="1")]
11451    pub dev: ::core::option::Option<u64>,
11452    #[prost(uint64, optional, tag="2")]
11453    pub ino: ::core::option::Option<u64>,
11454    #[prost(uint64, optional, tag="3")]
11455    pub dir: ::core::option::Option<u64>,
11456    #[prost(uint32, optional, tag="4")]
11457    pub mode: ::core::option::Option<u32>,
11458}
11459#[derive(Clone, PartialEq, ::prost::Message)]
11460pub struct Ext4BeginOrderedTruncateFtraceEvent {
11461    #[prost(uint64, optional, tag="1")]
11462    pub dev: ::core::option::Option<u64>,
11463    #[prost(uint64, optional, tag="2")]
11464    pub ino: ::core::option::Option<u64>,
11465    #[prost(int64, optional, tag="3")]
11466    pub new_size: ::core::option::Option<i64>,
11467}
11468#[derive(Clone, PartialEq, ::prost::Message)]
11469pub struct Ext4CollapseRangeFtraceEvent {
11470    #[prost(uint64, optional, tag="1")]
11471    pub dev: ::core::option::Option<u64>,
11472    #[prost(uint64, optional, tag="2")]
11473    pub ino: ::core::option::Option<u64>,
11474    #[prost(int64, optional, tag="3")]
11475    pub offset: ::core::option::Option<i64>,
11476    #[prost(int64, optional, tag="4")]
11477    pub len: ::core::option::Option<i64>,
11478}
11479#[derive(Clone, PartialEq, ::prost::Message)]
11480pub struct Ext4DaReleaseSpaceFtraceEvent {
11481    #[prost(uint64, optional, tag="1")]
11482    pub dev: ::core::option::Option<u64>,
11483    #[prost(uint64, optional, tag="2")]
11484    pub ino: ::core::option::Option<u64>,
11485    #[prost(uint64, optional, tag="3")]
11486    pub i_blocks: ::core::option::Option<u64>,
11487    #[prost(int32, optional, tag="4")]
11488    pub freed_blocks: ::core::option::Option<i32>,
11489    #[prost(int32, optional, tag="5")]
11490    pub reserved_data_blocks: ::core::option::Option<i32>,
11491    #[prost(int32, optional, tag="6")]
11492    pub reserved_meta_blocks: ::core::option::Option<i32>,
11493    #[prost(int32, optional, tag="7")]
11494    pub allocated_meta_blocks: ::core::option::Option<i32>,
11495    #[prost(uint32, optional, tag="8")]
11496    pub mode: ::core::option::Option<u32>,
11497}
11498#[derive(Clone, PartialEq, ::prost::Message)]
11499pub struct Ext4DaReserveSpaceFtraceEvent {
11500    #[prost(uint64, optional, tag="1")]
11501    pub dev: ::core::option::Option<u64>,
11502    #[prost(uint64, optional, tag="2")]
11503    pub ino: ::core::option::Option<u64>,
11504    #[prost(uint64, optional, tag="3")]
11505    pub i_blocks: ::core::option::Option<u64>,
11506    #[prost(int32, optional, tag="4")]
11507    pub reserved_data_blocks: ::core::option::Option<i32>,
11508    #[prost(int32, optional, tag="5")]
11509    pub reserved_meta_blocks: ::core::option::Option<i32>,
11510    #[prost(uint32, optional, tag="6")]
11511    pub mode: ::core::option::Option<u32>,
11512    #[prost(int32, optional, tag="7")]
11513    pub md_needed: ::core::option::Option<i32>,
11514}
11515#[derive(Clone, PartialEq, ::prost::Message)]
11516pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
11517    #[prost(uint64, optional, tag="1")]
11518    pub dev: ::core::option::Option<u64>,
11519    #[prost(uint64, optional, tag="2")]
11520    pub ino: ::core::option::Option<u64>,
11521    #[prost(uint64, optional, tag="3")]
11522    pub i_blocks: ::core::option::Option<u64>,
11523    #[prost(int32, optional, tag="4")]
11524    pub used_blocks: ::core::option::Option<i32>,
11525    #[prost(int32, optional, tag="5")]
11526    pub reserved_data_blocks: ::core::option::Option<i32>,
11527    #[prost(int32, optional, tag="6")]
11528    pub reserved_meta_blocks: ::core::option::Option<i32>,
11529    #[prost(int32, optional, tag="7")]
11530    pub allocated_meta_blocks: ::core::option::Option<i32>,
11531    #[prost(int32, optional, tag="8")]
11532    pub quota_claim: ::core::option::Option<i32>,
11533    #[prost(uint32, optional, tag="9")]
11534    pub mode: ::core::option::Option<u32>,
11535}
11536#[derive(Clone, PartialEq, ::prost::Message)]
11537pub struct Ext4DaWritePagesFtraceEvent {
11538    #[prost(uint64, optional, tag="1")]
11539    pub dev: ::core::option::Option<u64>,
11540    #[prost(uint64, optional, tag="2")]
11541    pub ino: ::core::option::Option<u64>,
11542    #[prost(uint64, optional, tag="3")]
11543    pub first_page: ::core::option::Option<u64>,
11544    #[prost(int64, optional, tag="4")]
11545    pub nr_to_write: ::core::option::Option<i64>,
11546    #[prost(int32, optional, tag="5")]
11547    pub sync_mode: ::core::option::Option<i32>,
11548    #[prost(uint64, optional, tag="6")]
11549    pub b_blocknr: ::core::option::Option<u64>,
11550    #[prost(uint32, optional, tag="7")]
11551    pub b_size: ::core::option::Option<u32>,
11552    #[prost(uint32, optional, tag="8")]
11553    pub b_state: ::core::option::Option<u32>,
11554    #[prost(int32, optional, tag="9")]
11555    pub io_done: ::core::option::Option<i32>,
11556    #[prost(int32, optional, tag="10")]
11557    pub pages_written: ::core::option::Option<i32>,
11558}
11559#[derive(Clone, PartialEq, ::prost::Message)]
11560pub struct Ext4DaWritePagesExtentFtraceEvent {
11561    #[prost(uint64, optional, tag="1")]
11562    pub dev: ::core::option::Option<u64>,
11563    #[prost(uint64, optional, tag="2")]
11564    pub ino: ::core::option::Option<u64>,
11565    #[prost(uint64, optional, tag="3")]
11566    pub lblk: ::core::option::Option<u64>,
11567    #[prost(uint32, optional, tag="4")]
11568    pub len: ::core::option::Option<u32>,
11569    #[prost(uint32, optional, tag="5")]
11570    pub flags: ::core::option::Option<u32>,
11571}
11572#[derive(Clone, PartialEq, ::prost::Message)]
11573pub struct Ext4DirectIoEnterFtraceEvent {
11574    #[prost(uint64, optional, tag="1")]
11575    pub dev: ::core::option::Option<u64>,
11576    #[prost(uint64, optional, tag="2")]
11577    pub ino: ::core::option::Option<u64>,
11578    #[prost(int64, optional, tag="3")]
11579    pub pos: ::core::option::Option<i64>,
11580    #[prost(uint64, optional, tag="4")]
11581    pub len: ::core::option::Option<u64>,
11582    #[prost(int32, optional, tag="5")]
11583    pub rw: ::core::option::Option<i32>,
11584}
11585#[derive(Clone, PartialEq, ::prost::Message)]
11586pub struct Ext4DirectIoExitFtraceEvent {
11587    #[prost(uint64, optional, tag="1")]
11588    pub dev: ::core::option::Option<u64>,
11589    #[prost(uint64, optional, tag="2")]
11590    pub ino: ::core::option::Option<u64>,
11591    #[prost(int64, optional, tag="3")]
11592    pub pos: ::core::option::Option<i64>,
11593    #[prost(uint64, optional, tag="4")]
11594    pub len: ::core::option::Option<u64>,
11595    #[prost(int32, optional, tag="5")]
11596    pub rw: ::core::option::Option<i32>,
11597    #[prost(int32, optional, tag="6")]
11598    pub ret: ::core::option::Option<i32>,
11599}
11600#[derive(Clone, PartialEq, ::prost::Message)]
11601pub struct Ext4DiscardBlocksFtraceEvent {
11602    #[prost(uint64, optional, tag="1")]
11603    pub dev: ::core::option::Option<u64>,
11604    #[prost(uint64, optional, tag="2")]
11605    pub blk: ::core::option::Option<u64>,
11606    #[prost(uint64, optional, tag="3")]
11607    pub count: ::core::option::Option<u64>,
11608}
11609#[derive(Clone, PartialEq, ::prost::Message)]
11610pub struct Ext4DiscardPreallocationsFtraceEvent {
11611    #[prost(uint64, optional, tag="1")]
11612    pub dev: ::core::option::Option<u64>,
11613    #[prost(uint64, optional, tag="2")]
11614    pub ino: ::core::option::Option<u64>,
11615    #[prost(uint32, optional, tag="3")]
11616    pub len: ::core::option::Option<u32>,
11617    #[prost(uint32, optional, tag="4")]
11618    pub needed: ::core::option::Option<u32>,
11619}
11620#[derive(Clone, PartialEq, ::prost::Message)]
11621pub struct Ext4DropInodeFtraceEvent {
11622    #[prost(uint64, optional, tag="1")]
11623    pub dev: ::core::option::Option<u64>,
11624    #[prost(uint64, optional, tag="2")]
11625    pub ino: ::core::option::Option<u64>,
11626    #[prost(int32, optional, tag="3")]
11627    pub drop: ::core::option::Option<i32>,
11628}
11629#[derive(Clone, PartialEq, ::prost::Message)]
11630pub struct Ext4EsCacheExtentFtraceEvent {
11631    #[prost(uint64, optional, tag="1")]
11632    pub dev: ::core::option::Option<u64>,
11633    #[prost(uint64, optional, tag="2")]
11634    pub ino: ::core::option::Option<u64>,
11635    #[prost(uint32, optional, tag="3")]
11636    pub lblk: ::core::option::Option<u32>,
11637    #[prost(uint32, optional, tag="4")]
11638    pub len: ::core::option::Option<u32>,
11639    #[prost(uint64, optional, tag="5")]
11640    pub pblk: ::core::option::Option<u64>,
11641    #[prost(uint32, optional, tag="6")]
11642    pub status: ::core::option::Option<u32>,
11643}
11644#[derive(Clone, PartialEq, ::prost::Message)]
11645pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11646    #[prost(uint64, optional, tag="1")]
11647    pub dev: ::core::option::Option<u64>,
11648    #[prost(uint64, optional, tag="2")]
11649    pub ino: ::core::option::Option<u64>,
11650    #[prost(uint32, optional, tag="3")]
11651    pub lblk: ::core::option::Option<u32>,
11652}
11653#[derive(Clone, PartialEq, ::prost::Message)]
11654pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11655    #[prost(uint64, optional, tag="1")]
11656    pub dev: ::core::option::Option<u64>,
11657    #[prost(uint64, optional, tag="2")]
11658    pub ino: ::core::option::Option<u64>,
11659    #[prost(uint32, optional, tag="3")]
11660    pub lblk: ::core::option::Option<u32>,
11661    #[prost(uint32, optional, tag="4")]
11662    pub len: ::core::option::Option<u32>,
11663    #[prost(uint64, optional, tag="5")]
11664    pub pblk: ::core::option::Option<u64>,
11665    #[prost(uint64, optional, tag="6")]
11666    pub status: ::core::option::Option<u64>,
11667}
11668#[derive(Clone, PartialEq, ::prost::Message)]
11669pub struct Ext4EsInsertExtentFtraceEvent {
11670    #[prost(uint64, optional, tag="1")]
11671    pub dev: ::core::option::Option<u64>,
11672    #[prost(uint64, optional, tag="2")]
11673    pub ino: ::core::option::Option<u64>,
11674    #[prost(uint32, optional, tag="3")]
11675    pub lblk: ::core::option::Option<u32>,
11676    #[prost(uint32, optional, tag="4")]
11677    pub len: ::core::option::Option<u32>,
11678    #[prost(uint64, optional, tag="5")]
11679    pub pblk: ::core::option::Option<u64>,
11680    #[prost(uint64, optional, tag="6")]
11681    pub status: ::core::option::Option<u64>,
11682}
11683#[derive(Clone, PartialEq, ::prost::Message)]
11684pub struct Ext4EsLookupExtentEnterFtraceEvent {
11685    #[prost(uint64, optional, tag="1")]
11686    pub dev: ::core::option::Option<u64>,
11687    #[prost(uint64, optional, tag="2")]
11688    pub ino: ::core::option::Option<u64>,
11689    #[prost(uint32, optional, tag="3")]
11690    pub lblk: ::core::option::Option<u32>,
11691}
11692#[derive(Clone, PartialEq, ::prost::Message)]
11693pub struct Ext4EsLookupExtentExitFtraceEvent {
11694    #[prost(uint64, optional, tag="1")]
11695    pub dev: ::core::option::Option<u64>,
11696    #[prost(uint64, optional, tag="2")]
11697    pub ino: ::core::option::Option<u64>,
11698    #[prost(uint32, optional, tag="3")]
11699    pub lblk: ::core::option::Option<u32>,
11700    #[prost(uint32, optional, tag="4")]
11701    pub len: ::core::option::Option<u32>,
11702    #[prost(uint64, optional, tag="5")]
11703    pub pblk: ::core::option::Option<u64>,
11704    #[prost(uint64, optional, tag="6")]
11705    pub status: ::core::option::Option<u64>,
11706    #[prost(int32, optional, tag="7")]
11707    pub found: ::core::option::Option<i32>,
11708}
11709#[derive(Clone, PartialEq, ::prost::Message)]
11710pub struct Ext4EsRemoveExtentFtraceEvent {
11711    #[prost(uint64, optional, tag="1")]
11712    pub dev: ::core::option::Option<u64>,
11713    #[prost(uint64, optional, tag="2")]
11714    pub ino: ::core::option::Option<u64>,
11715    #[prost(int64, optional, tag="3")]
11716    pub lblk: ::core::option::Option<i64>,
11717    #[prost(int64, optional, tag="4")]
11718    pub len: ::core::option::Option<i64>,
11719}
11720#[derive(Clone, PartialEq, ::prost::Message)]
11721pub struct Ext4EsShrinkFtraceEvent {
11722    #[prost(uint64, optional, tag="1")]
11723    pub dev: ::core::option::Option<u64>,
11724    #[prost(int32, optional, tag="2")]
11725    pub nr_shrunk: ::core::option::Option<i32>,
11726    #[prost(uint64, optional, tag="3")]
11727    pub scan_time: ::core::option::Option<u64>,
11728    #[prost(int32, optional, tag="4")]
11729    pub nr_skipped: ::core::option::Option<i32>,
11730    #[prost(int32, optional, tag="5")]
11731    pub retried: ::core::option::Option<i32>,
11732}
11733#[derive(Clone, PartialEq, ::prost::Message)]
11734pub struct Ext4EsShrinkCountFtraceEvent {
11735    #[prost(uint64, optional, tag="1")]
11736    pub dev: ::core::option::Option<u64>,
11737    #[prost(int32, optional, tag="2")]
11738    pub nr_to_scan: ::core::option::Option<i32>,
11739    #[prost(int32, optional, tag="3")]
11740    pub cache_cnt: ::core::option::Option<i32>,
11741}
11742#[derive(Clone, PartialEq, ::prost::Message)]
11743pub struct Ext4EsShrinkScanEnterFtraceEvent {
11744    #[prost(uint64, optional, tag="1")]
11745    pub dev: ::core::option::Option<u64>,
11746    #[prost(int32, optional, tag="2")]
11747    pub nr_to_scan: ::core::option::Option<i32>,
11748    #[prost(int32, optional, tag="3")]
11749    pub cache_cnt: ::core::option::Option<i32>,
11750}
11751#[derive(Clone, PartialEq, ::prost::Message)]
11752pub struct Ext4EsShrinkScanExitFtraceEvent {
11753    #[prost(uint64, optional, tag="1")]
11754    pub dev: ::core::option::Option<u64>,
11755    #[prost(int32, optional, tag="2")]
11756    pub nr_shrunk: ::core::option::Option<i32>,
11757    #[prost(int32, optional, tag="3")]
11758    pub cache_cnt: ::core::option::Option<i32>,
11759}
11760#[derive(Clone, PartialEq, ::prost::Message)]
11761pub struct Ext4EvictInodeFtraceEvent {
11762    #[prost(uint64, optional, tag="1")]
11763    pub dev: ::core::option::Option<u64>,
11764    #[prost(uint64, optional, tag="2")]
11765    pub ino: ::core::option::Option<u64>,
11766    #[prost(int32, optional, tag="3")]
11767    pub nlink: ::core::option::Option<i32>,
11768}
11769#[derive(Clone, PartialEq, ::prost::Message)]
11770pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11771    #[prost(uint64, optional, tag="1")]
11772    pub dev: ::core::option::Option<u64>,
11773    #[prost(uint64, optional, tag="2")]
11774    pub ino: ::core::option::Option<u64>,
11775    #[prost(uint32, optional, tag="3")]
11776    pub m_lblk: ::core::option::Option<u32>,
11777    #[prost(uint32, optional, tag="4")]
11778    pub m_len: ::core::option::Option<u32>,
11779    #[prost(uint32, optional, tag="5")]
11780    pub u_lblk: ::core::option::Option<u32>,
11781    #[prost(uint32, optional, tag="6")]
11782    pub u_len: ::core::option::Option<u32>,
11783    #[prost(uint64, optional, tag="7")]
11784    pub u_pblk: ::core::option::Option<u64>,
11785}
11786#[derive(Clone, PartialEq, ::prost::Message)]
11787pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11788    #[prost(uint64, optional, tag="1")]
11789    pub dev: ::core::option::Option<u64>,
11790    #[prost(uint64, optional, tag="2")]
11791    pub ino: ::core::option::Option<u64>,
11792    #[prost(uint32, optional, tag="3")]
11793    pub m_lblk: ::core::option::Option<u32>,
11794    #[prost(uint32, optional, tag="4")]
11795    pub m_len: ::core::option::Option<u32>,
11796    #[prost(uint32, optional, tag="5")]
11797    pub u_lblk: ::core::option::Option<u32>,
11798    #[prost(uint32, optional, tag="6")]
11799    pub u_len: ::core::option::Option<u32>,
11800    #[prost(uint64, optional, tag="7")]
11801    pub u_pblk: ::core::option::Option<u64>,
11802    #[prost(uint32, optional, tag="8")]
11803    pub i_lblk: ::core::option::Option<u32>,
11804    #[prost(uint32, optional, tag="9")]
11805    pub i_len: ::core::option::Option<u32>,
11806    #[prost(uint64, optional, tag="10")]
11807    pub i_pblk: ::core::option::Option<u64>,
11808}
11809#[derive(Clone, PartialEq, ::prost::Message)]
11810pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11811    #[prost(uint64, optional, tag="1")]
11812    pub dev: ::core::option::Option<u64>,
11813    #[prost(uint64, optional, tag="2")]
11814    pub ino: ::core::option::Option<u64>,
11815    #[prost(int32, optional, tag="3")]
11816    pub flags: ::core::option::Option<i32>,
11817    #[prost(uint32, optional, tag="4")]
11818    pub lblk: ::core::option::Option<u32>,
11819    #[prost(uint64, optional, tag="5")]
11820    pub pblk: ::core::option::Option<u64>,
11821    #[prost(uint32, optional, tag="6")]
11822    pub len: ::core::option::Option<u32>,
11823    #[prost(uint32, optional, tag="7")]
11824    pub allocated: ::core::option::Option<u32>,
11825    #[prost(uint64, optional, tag="8")]
11826    pub newblk: ::core::option::Option<u64>,
11827}
11828#[derive(Clone, PartialEq, ::prost::Message)]
11829pub struct Ext4ExtInCacheFtraceEvent {
11830    #[prost(uint64, optional, tag="1")]
11831    pub dev: ::core::option::Option<u64>,
11832    #[prost(uint64, optional, tag="2")]
11833    pub ino: ::core::option::Option<u64>,
11834    #[prost(uint32, optional, tag="3")]
11835    pub lblk: ::core::option::Option<u32>,
11836    #[prost(int32, optional, tag="4")]
11837    pub ret: ::core::option::Option<i32>,
11838}
11839#[derive(Clone, PartialEq, ::prost::Message)]
11840pub struct Ext4ExtLoadExtentFtraceEvent {
11841    #[prost(uint64, optional, tag="1")]
11842    pub dev: ::core::option::Option<u64>,
11843    #[prost(uint64, optional, tag="2")]
11844    pub ino: ::core::option::Option<u64>,
11845    #[prost(uint64, optional, tag="3")]
11846    pub pblk: ::core::option::Option<u64>,
11847    #[prost(uint32, optional, tag="4")]
11848    pub lblk: ::core::option::Option<u32>,
11849}
11850#[derive(Clone, PartialEq, ::prost::Message)]
11851pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11852    #[prost(uint64, optional, tag="1")]
11853    pub dev: ::core::option::Option<u64>,
11854    #[prost(uint64, optional, tag="2")]
11855    pub ino: ::core::option::Option<u64>,
11856    #[prost(uint32, optional, tag="3")]
11857    pub lblk: ::core::option::Option<u32>,
11858    #[prost(uint32, optional, tag="4")]
11859    pub len: ::core::option::Option<u32>,
11860    #[prost(uint32, optional, tag="5")]
11861    pub flags: ::core::option::Option<u32>,
11862}
11863#[derive(Clone, PartialEq, ::prost::Message)]
11864pub struct Ext4ExtMapBlocksExitFtraceEvent {
11865    #[prost(uint64, optional, tag="1")]
11866    pub dev: ::core::option::Option<u64>,
11867    #[prost(uint64, optional, tag="2")]
11868    pub ino: ::core::option::Option<u64>,
11869    #[prost(uint32, optional, tag="3")]
11870    pub flags: ::core::option::Option<u32>,
11871    #[prost(uint64, optional, tag="4")]
11872    pub pblk: ::core::option::Option<u64>,
11873    #[prost(uint32, optional, tag="5")]
11874    pub lblk: ::core::option::Option<u32>,
11875    #[prost(uint32, optional, tag="6")]
11876    pub len: ::core::option::Option<u32>,
11877    #[prost(uint32, optional, tag="7")]
11878    pub mflags: ::core::option::Option<u32>,
11879    #[prost(int32, optional, tag="8")]
11880    pub ret: ::core::option::Option<i32>,
11881}
11882#[derive(Clone, PartialEq, ::prost::Message)]
11883pub struct Ext4ExtPutInCacheFtraceEvent {
11884    #[prost(uint64, optional, tag="1")]
11885    pub dev: ::core::option::Option<u64>,
11886    #[prost(uint64, optional, tag="2")]
11887    pub ino: ::core::option::Option<u64>,
11888    #[prost(uint32, optional, tag="3")]
11889    pub lblk: ::core::option::Option<u32>,
11890    #[prost(uint32, optional, tag="4")]
11891    pub len: ::core::option::Option<u32>,
11892    #[prost(uint64, optional, tag="5")]
11893    pub start: ::core::option::Option<u64>,
11894}
11895#[derive(Clone, PartialEq, ::prost::Message)]
11896pub struct Ext4ExtRemoveSpaceFtraceEvent {
11897    #[prost(uint64, optional, tag="1")]
11898    pub dev: ::core::option::Option<u64>,
11899    #[prost(uint64, optional, tag="2")]
11900    pub ino: ::core::option::Option<u64>,
11901    #[prost(uint32, optional, tag="3")]
11902    pub start: ::core::option::Option<u32>,
11903    #[prost(uint32, optional, tag="4")]
11904    pub end: ::core::option::Option<u32>,
11905    #[prost(int32, optional, tag="5")]
11906    pub depth: ::core::option::Option<i32>,
11907}
11908#[derive(Clone, PartialEq, ::prost::Message)]
11909pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11910    #[prost(uint64, optional, tag="1")]
11911    pub dev: ::core::option::Option<u64>,
11912    #[prost(uint64, optional, tag="2")]
11913    pub ino: ::core::option::Option<u64>,
11914    #[prost(uint32, optional, tag="3")]
11915    pub start: ::core::option::Option<u32>,
11916    #[prost(uint32, optional, tag="4")]
11917    pub end: ::core::option::Option<u32>,
11918    #[prost(int32, optional, tag="5")]
11919    pub depth: ::core::option::Option<i32>,
11920    #[prost(int64, optional, tag="6")]
11921    pub partial: ::core::option::Option<i64>,
11922    #[prost(uint32, optional, tag="7")]
11923    pub eh_entries: ::core::option::Option<u32>,
11924    #[prost(uint32, optional, tag="8")]
11925    pub pc_lblk: ::core::option::Option<u32>,
11926    #[prost(uint64, optional, tag="9")]
11927    pub pc_pclu: ::core::option::Option<u64>,
11928    #[prost(int32, optional, tag="10")]
11929    pub pc_state: ::core::option::Option<i32>,
11930}
11931#[derive(Clone, PartialEq, ::prost::Message)]
11932pub struct Ext4ExtRmIdxFtraceEvent {
11933    #[prost(uint64, optional, tag="1")]
11934    pub dev: ::core::option::Option<u64>,
11935    #[prost(uint64, optional, tag="2")]
11936    pub ino: ::core::option::Option<u64>,
11937    #[prost(uint64, optional, tag="3")]
11938    pub pblk: ::core::option::Option<u64>,
11939}
11940#[derive(Clone, PartialEq, ::prost::Message)]
11941pub struct Ext4ExtRmLeafFtraceEvent {
11942    #[prost(uint64, optional, tag="1")]
11943    pub dev: ::core::option::Option<u64>,
11944    #[prost(uint64, optional, tag="2")]
11945    pub ino: ::core::option::Option<u64>,
11946    #[prost(int64, optional, tag="3")]
11947    pub partial: ::core::option::Option<i64>,
11948    #[prost(uint32, optional, tag="4")]
11949    pub start: ::core::option::Option<u32>,
11950    #[prost(uint32, optional, tag="5")]
11951    pub ee_lblk: ::core::option::Option<u32>,
11952    #[prost(uint64, optional, tag="6")]
11953    pub ee_pblk: ::core::option::Option<u64>,
11954    #[prost(int32, optional, tag="7")]
11955    pub ee_len: ::core::option::Option<i32>,
11956    #[prost(uint32, optional, tag="8")]
11957    pub pc_lblk: ::core::option::Option<u32>,
11958    #[prost(uint64, optional, tag="9")]
11959    pub pc_pclu: ::core::option::Option<u64>,
11960    #[prost(int32, optional, tag="10")]
11961    pub pc_state: ::core::option::Option<i32>,
11962}
11963#[derive(Clone, PartialEq, ::prost::Message)]
11964pub struct Ext4ExtShowExtentFtraceEvent {
11965    #[prost(uint64, optional, tag="1")]
11966    pub dev: ::core::option::Option<u64>,
11967    #[prost(uint64, optional, tag="2")]
11968    pub ino: ::core::option::Option<u64>,
11969    #[prost(uint64, optional, tag="3")]
11970    pub pblk: ::core::option::Option<u64>,
11971    #[prost(uint32, optional, tag="4")]
11972    pub lblk: ::core::option::Option<u32>,
11973    #[prost(uint32, optional, tag="5")]
11974    pub len: ::core::option::Option<u32>,
11975}
11976#[derive(Clone, PartialEq, ::prost::Message)]
11977pub struct Ext4FallocateEnterFtraceEvent {
11978    #[prost(uint64, optional, tag="1")]
11979    pub dev: ::core::option::Option<u64>,
11980    #[prost(uint64, optional, tag="2")]
11981    pub ino: ::core::option::Option<u64>,
11982    #[prost(int64, optional, tag="3")]
11983    pub offset: ::core::option::Option<i64>,
11984    #[prost(int64, optional, tag="4")]
11985    pub len: ::core::option::Option<i64>,
11986    #[prost(int32, optional, tag="5")]
11987    pub mode: ::core::option::Option<i32>,
11988    #[prost(int64, optional, tag="6")]
11989    pub pos: ::core::option::Option<i64>,
11990}
11991#[derive(Clone, PartialEq, ::prost::Message)]
11992pub struct Ext4FallocateExitFtraceEvent {
11993    #[prost(uint64, optional, tag="1")]
11994    pub dev: ::core::option::Option<u64>,
11995    #[prost(uint64, optional, tag="2")]
11996    pub ino: ::core::option::Option<u64>,
11997    #[prost(int64, optional, tag="3")]
11998    pub pos: ::core::option::Option<i64>,
11999    #[prost(uint32, optional, tag="4")]
12000    pub blocks: ::core::option::Option<u32>,
12001    #[prost(int32, optional, tag="5")]
12002    pub ret: ::core::option::Option<i32>,
12003}
12004#[derive(Clone, PartialEq, ::prost::Message)]
12005pub struct Ext4FindDelallocRangeFtraceEvent {
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(uint32, optional, tag="3")]
12011    pub from: ::core::option::Option<u32>,
12012    #[prost(uint32, optional, tag="4")]
12013    pub to: ::core::option::Option<u32>,
12014    #[prost(int32, optional, tag="5")]
12015    pub reverse: ::core::option::Option<i32>,
12016    #[prost(int32, optional, tag="6")]
12017    pub found: ::core::option::Option<i32>,
12018    #[prost(uint32, optional, tag="7")]
12019    pub found_blk: ::core::option::Option<u32>,
12020}
12021#[derive(Clone, PartialEq, ::prost::Message)]
12022pub struct Ext4ForgetFtraceEvent {
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 block: ::core::option::Option<u64>,
12029    #[prost(int32, optional, tag="4")]
12030    pub is_metadata: ::core::option::Option<i32>,
12031    #[prost(uint32, optional, tag="5")]
12032    pub mode: ::core::option::Option<u32>,
12033}
12034#[derive(Clone, PartialEq, ::prost::Message)]
12035pub struct Ext4FreeBlocksFtraceEvent {
12036    #[prost(uint64, optional, tag="1")]
12037    pub dev: ::core::option::Option<u64>,
12038    #[prost(uint64, optional, tag="2")]
12039    pub ino: ::core::option::Option<u64>,
12040    #[prost(uint64, optional, tag="3")]
12041    pub block: ::core::option::Option<u64>,
12042    #[prost(uint64, optional, tag="4")]
12043    pub count: ::core::option::Option<u64>,
12044    #[prost(int32, optional, tag="5")]
12045    pub flags: ::core::option::Option<i32>,
12046    #[prost(uint32, optional, tag="6")]
12047    pub mode: ::core::option::Option<u32>,
12048}
12049#[derive(Clone, PartialEq, ::prost::Message)]
12050pub struct Ext4FreeInodeFtraceEvent {
12051    #[prost(uint64, optional, tag="1")]
12052    pub dev: ::core::option::Option<u64>,
12053    #[prost(uint64, optional, tag="2")]
12054    pub ino: ::core::option::Option<u64>,
12055    #[prost(uint32, optional, tag="3")]
12056    pub uid: ::core::option::Option<u32>,
12057    #[prost(uint32, optional, tag="4")]
12058    pub gid: ::core::option::Option<u32>,
12059    #[prost(uint64, optional, tag="5")]
12060    pub blocks: ::core::option::Option<u64>,
12061    #[prost(uint32, optional, tag="6")]
12062    pub mode: ::core::option::Option<u32>,
12063}
12064#[derive(Clone, PartialEq, ::prost::Message)]
12065pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
12066    #[prost(uint64, optional, tag="1")]
12067    pub dev: ::core::option::Option<u64>,
12068    #[prost(uint32, optional, tag="2")]
12069    pub flags: ::core::option::Option<u32>,
12070    #[prost(uint32, optional, tag="3")]
12071    pub lblk: ::core::option::Option<u32>,
12072    #[prost(uint64, optional, tag="4")]
12073    pub pblk: ::core::option::Option<u64>,
12074    #[prost(uint32, optional, tag="5")]
12075    pub len: ::core::option::Option<u32>,
12076    #[prost(int32, optional, tag="6")]
12077    pub ret: ::core::option::Option<i32>,
12078}
12079#[derive(Clone, PartialEq, ::prost::Message)]
12080pub struct Ext4GetReservedClusterAllocFtraceEvent {
12081    #[prost(uint64, optional, tag="1")]
12082    pub dev: ::core::option::Option<u64>,
12083    #[prost(uint64, optional, tag="2")]
12084    pub ino: ::core::option::Option<u64>,
12085    #[prost(uint32, optional, tag="3")]
12086    pub lblk: ::core::option::Option<u32>,
12087    #[prost(uint32, optional, tag="4")]
12088    pub len: ::core::option::Option<u32>,
12089}
12090#[derive(Clone, PartialEq, ::prost::Message)]
12091pub struct Ext4IndMapBlocksEnterFtraceEvent {
12092    #[prost(uint64, optional, tag="1")]
12093    pub dev: ::core::option::Option<u64>,
12094    #[prost(uint64, optional, tag="2")]
12095    pub ino: ::core::option::Option<u64>,
12096    #[prost(uint32, optional, tag="3")]
12097    pub lblk: ::core::option::Option<u32>,
12098    #[prost(uint32, optional, tag="4")]
12099    pub len: ::core::option::Option<u32>,
12100    #[prost(uint32, optional, tag="5")]
12101    pub flags: ::core::option::Option<u32>,
12102}
12103#[derive(Clone, PartialEq, ::prost::Message)]
12104pub struct Ext4IndMapBlocksExitFtraceEvent {
12105    #[prost(uint64, optional, tag="1")]
12106    pub dev: ::core::option::Option<u64>,
12107    #[prost(uint64, optional, tag="2")]
12108    pub ino: ::core::option::Option<u64>,
12109    #[prost(uint32, optional, tag="3")]
12110    pub flags: ::core::option::Option<u32>,
12111    #[prost(uint64, optional, tag="4")]
12112    pub pblk: ::core::option::Option<u64>,
12113    #[prost(uint32, optional, tag="5")]
12114    pub lblk: ::core::option::Option<u32>,
12115    #[prost(uint32, optional, tag="6")]
12116    pub len: ::core::option::Option<u32>,
12117    #[prost(uint32, optional, tag="7")]
12118    pub mflags: ::core::option::Option<u32>,
12119    #[prost(int32, optional, tag="8")]
12120    pub ret: ::core::option::Option<i32>,
12121}
12122#[derive(Clone, PartialEq, ::prost::Message)]
12123pub struct Ext4InsertRangeFtraceEvent {
12124    #[prost(uint64, optional, tag="1")]
12125    pub dev: ::core::option::Option<u64>,
12126    #[prost(uint64, optional, tag="2")]
12127    pub ino: ::core::option::Option<u64>,
12128    #[prost(int64, optional, tag="3")]
12129    pub offset: ::core::option::Option<i64>,
12130    #[prost(int64, optional, tag="4")]
12131    pub len: ::core::option::Option<i64>,
12132}
12133#[derive(Clone, PartialEq, ::prost::Message)]
12134pub struct Ext4InvalidatepageFtraceEvent {
12135    #[prost(uint64, optional, tag="1")]
12136    pub dev: ::core::option::Option<u64>,
12137    #[prost(uint64, optional, tag="2")]
12138    pub ino: ::core::option::Option<u64>,
12139    #[prost(uint64, optional, tag="3")]
12140    pub index: ::core::option::Option<u64>,
12141    #[prost(uint64, optional, tag="4")]
12142    pub offset: ::core::option::Option<u64>,
12143    #[prost(uint32, optional, tag="5")]
12144    pub length: ::core::option::Option<u32>,
12145}
12146#[derive(Clone, PartialEq, ::prost::Message)]
12147pub struct Ext4JournalStartFtraceEvent {
12148    #[prost(uint64, optional, tag="1")]
12149    pub dev: ::core::option::Option<u64>,
12150    #[prost(uint64, optional, tag="2")]
12151    pub ip: ::core::option::Option<u64>,
12152    #[prost(int32, optional, tag="3")]
12153    pub blocks: ::core::option::Option<i32>,
12154    #[prost(int32, optional, tag="4")]
12155    pub rsv_blocks: ::core::option::Option<i32>,
12156    #[prost(int32, optional, tag="5")]
12157    pub nblocks: ::core::option::Option<i32>,
12158    #[prost(int32, optional, tag="6")]
12159    pub revoke_creds: ::core::option::Option<i32>,
12160}
12161#[derive(Clone, PartialEq, ::prost::Message)]
12162pub struct Ext4JournalStartReservedFtraceEvent {
12163    #[prost(uint64, optional, tag="1")]
12164    pub dev: ::core::option::Option<u64>,
12165    #[prost(uint64, optional, tag="2")]
12166    pub ip: ::core::option::Option<u64>,
12167    #[prost(int32, optional, tag="3")]
12168    pub blocks: ::core::option::Option<i32>,
12169}
12170#[derive(Clone, PartialEq, ::prost::Message)]
12171pub struct Ext4JournalledInvalidatepageFtraceEvent {
12172    #[prost(uint64, optional, tag="1")]
12173    pub dev: ::core::option::Option<u64>,
12174    #[prost(uint64, optional, tag="2")]
12175    pub ino: ::core::option::Option<u64>,
12176    #[prost(uint64, optional, tag="3")]
12177    pub index: ::core::option::Option<u64>,
12178    #[prost(uint64, optional, tag="4")]
12179    pub offset: ::core::option::Option<u64>,
12180    #[prost(uint32, optional, tag="5")]
12181    pub length: ::core::option::Option<u32>,
12182}
12183#[derive(Clone, PartialEq, ::prost::Message)]
12184pub struct Ext4JournalledWriteEndFtraceEvent {
12185    #[prost(uint64, optional, tag="1")]
12186    pub dev: ::core::option::Option<u64>,
12187    #[prost(uint64, optional, tag="2")]
12188    pub ino: ::core::option::Option<u64>,
12189    #[prost(int64, optional, tag="3")]
12190    pub pos: ::core::option::Option<i64>,
12191    #[prost(uint32, optional, tag="4")]
12192    pub len: ::core::option::Option<u32>,
12193    #[prost(uint32, optional, tag="5")]
12194    pub copied: ::core::option::Option<u32>,
12195}
12196#[derive(Clone, PartialEq, ::prost::Message)]
12197pub struct Ext4LoadInodeFtraceEvent {
12198    #[prost(uint64, optional, tag="1")]
12199    pub dev: ::core::option::Option<u64>,
12200    #[prost(uint64, optional, tag="2")]
12201    pub ino: ::core::option::Option<u64>,
12202}
12203#[derive(Clone, PartialEq, ::prost::Message)]
12204pub struct Ext4LoadInodeBitmapFtraceEvent {
12205    #[prost(uint64, optional, tag="1")]
12206    pub dev: ::core::option::Option<u64>,
12207    #[prost(uint32, optional, tag="2")]
12208    pub group: ::core::option::Option<u32>,
12209}
12210#[derive(Clone, PartialEq, ::prost::Message)]
12211pub struct Ext4MarkInodeDirtyFtraceEvent {
12212    #[prost(uint64, optional, tag="1")]
12213    pub dev: ::core::option::Option<u64>,
12214    #[prost(uint64, optional, tag="2")]
12215    pub ino: ::core::option::Option<u64>,
12216    #[prost(uint64, optional, tag="3")]
12217    pub ip: ::core::option::Option<u64>,
12218}
12219#[derive(Clone, PartialEq, ::prost::Message)]
12220pub struct Ext4MbBitmapLoadFtraceEvent {
12221    #[prost(uint64, optional, tag="1")]
12222    pub dev: ::core::option::Option<u64>,
12223    #[prost(uint32, optional, tag="2")]
12224    pub group: ::core::option::Option<u32>,
12225}
12226#[derive(Clone, PartialEq, ::prost::Message)]
12227pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
12228    #[prost(uint64, optional, tag="1")]
12229    pub dev: ::core::option::Option<u64>,
12230    #[prost(uint32, optional, tag="2")]
12231    pub group: ::core::option::Option<u32>,
12232}
12233#[derive(Clone, PartialEq, ::prost::Message)]
12234pub struct Ext4MbDiscardPreallocationsFtraceEvent {
12235    #[prost(uint64, optional, tag="1")]
12236    pub dev: ::core::option::Option<u64>,
12237    #[prost(int32, optional, tag="2")]
12238    pub needed: ::core::option::Option<i32>,
12239}
12240#[derive(Clone, PartialEq, ::prost::Message)]
12241pub struct Ext4MbNewGroupPaFtraceEvent {
12242    #[prost(uint64, optional, tag="1")]
12243    pub dev: ::core::option::Option<u64>,
12244    #[prost(uint64, optional, tag="2")]
12245    pub ino: ::core::option::Option<u64>,
12246    #[prost(uint64, optional, tag="3")]
12247    pub pa_pstart: ::core::option::Option<u64>,
12248    #[prost(uint64, optional, tag="4")]
12249    pub pa_lstart: ::core::option::Option<u64>,
12250    #[prost(uint32, optional, tag="5")]
12251    pub pa_len: ::core::option::Option<u32>,
12252}
12253#[derive(Clone, PartialEq, ::prost::Message)]
12254pub struct Ext4MbNewInodePaFtraceEvent {
12255    #[prost(uint64, optional, tag="1")]
12256    pub dev: ::core::option::Option<u64>,
12257    #[prost(uint64, optional, tag="2")]
12258    pub ino: ::core::option::Option<u64>,
12259    #[prost(uint64, optional, tag="3")]
12260    pub pa_pstart: ::core::option::Option<u64>,
12261    #[prost(uint64, optional, tag="4")]
12262    pub pa_lstart: ::core::option::Option<u64>,
12263    #[prost(uint32, optional, tag="5")]
12264    pub pa_len: ::core::option::Option<u32>,
12265}
12266#[derive(Clone, PartialEq, ::prost::Message)]
12267pub struct Ext4MbReleaseGroupPaFtraceEvent {
12268    #[prost(uint64, optional, tag="1")]
12269    pub dev: ::core::option::Option<u64>,
12270    #[prost(uint64, optional, tag="2")]
12271    pub pa_pstart: ::core::option::Option<u64>,
12272    #[prost(uint32, optional, tag="3")]
12273    pub pa_len: ::core::option::Option<u32>,
12274}
12275#[derive(Clone, PartialEq, ::prost::Message)]
12276pub struct Ext4MbReleaseInodePaFtraceEvent {
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(uint64, optional, tag="3")]
12282    pub block: ::core::option::Option<u64>,
12283    #[prost(uint32, optional, tag="4")]
12284    pub count: ::core::option::Option<u32>,
12285}
12286#[derive(Clone, PartialEq, ::prost::Message)]
12287pub struct Ext4MballocAllocFtraceEvent {
12288    #[prost(uint64, optional, tag="1")]
12289    pub dev: ::core::option::Option<u64>,
12290    #[prost(uint64, optional, tag="2")]
12291    pub ino: ::core::option::Option<u64>,
12292    #[prost(uint32, optional, tag="3")]
12293    pub orig_logical: ::core::option::Option<u32>,
12294    #[prost(int32, optional, tag="4")]
12295    pub orig_start: ::core::option::Option<i32>,
12296    #[prost(uint32, optional, tag="5")]
12297    pub orig_group: ::core::option::Option<u32>,
12298    #[prost(int32, optional, tag="6")]
12299    pub orig_len: ::core::option::Option<i32>,
12300    #[prost(uint32, optional, tag="7")]
12301    pub goal_logical: ::core::option::Option<u32>,
12302    #[prost(int32, optional, tag="8")]
12303    pub goal_start: ::core::option::Option<i32>,
12304    #[prost(uint32, optional, tag="9")]
12305    pub goal_group: ::core::option::Option<u32>,
12306    #[prost(int32, optional, tag="10")]
12307    pub goal_len: ::core::option::Option<i32>,
12308    #[prost(uint32, optional, tag="11")]
12309    pub result_logical: ::core::option::Option<u32>,
12310    #[prost(int32, optional, tag="12")]
12311    pub result_start: ::core::option::Option<i32>,
12312    #[prost(uint32, optional, tag="13")]
12313    pub result_group: ::core::option::Option<u32>,
12314    #[prost(int32, optional, tag="14")]
12315    pub result_len: ::core::option::Option<i32>,
12316    #[prost(uint32, optional, tag="15")]
12317    pub found: ::core::option::Option<u32>,
12318    #[prost(uint32, optional, tag="16")]
12319    pub groups: ::core::option::Option<u32>,
12320    #[prost(uint32, optional, tag="17")]
12321    pub buddy: ::core::option::Option<u32>,
12322    #[prost(uint32, optional, tag="18")]
12323    pub flags: ::core::option::Option<u32>,
12324    #[prost(uint32, optional, tag="19")]
12325    pub tail: ::core::option::Option<u32>,
12326    #[prost(uint32, optional, tag="20")]
12327    pub cr: ::core::option::Option<u32>,
12328}
12329#[derive(Clone, PartialEq, ::prost::Message)]
12330pub struct Ext4MballocDiscardFtraceEvent {
12331    #[prost(uint64, optional, tag="1")]
12332    pub dev: ::core::option::Option<u64>,
12333    #[prost(uint64, optional, tag="2")]
12334    pub ino: ::core::option::Option<u64>,
12335    #[prost(int32, optional, tag="3")]
12336    pub result_start: ::core::option::Option<i32>,
12337    #[prost(uint32, optional, tag="4")]
12338    pub result_group: ::core::option::Option<u32>,
12339    #[prost(int32, optional, tag="5")]
12340    pub result_len: ::core::option::Option<i32>,
12341}
12342#[derive(Clone, PartialEq, ::prost::Message)]
12343pub struct Ext4MballocFreeFtraceEvent {
12344    #[prost(uint64, optional, tag="1")]
12345    pub dev: ::core::option::Option<u64>,
12346    #[prost(uint64, optional, tag="2")]
12347    pub ino: ::core::option::Option<u64>,
12348    #[prost(int32, optional, tag="3")]
12349    pub result_start: ::core::option::Option<i32>,
12350    #[prost(uint32, optional, tag="4")]
12351    pub result_group: ::core::option::Option<u32>,
12352    #[prost(int32, optional, tag="5")]
12353    pub result_len: ::core::option::Option<i32>,
12354}
12355#[derive(Clone, PartialEq, ::prost::Message)]
12356pub struct Ext4MballocPreallocFtraceEvent {
12357    #[prost(uint64, optional, tag="1")]
12358    pub dev: ::core::option::Option<u64>,
12359    #[prost(uint64, optional, tag="2")]
12360    pub ino: ::core::option::Option<u64>,
12361    #[prost(uint32, optional, tag="3")]
12362    pub orig_logical: ::core::option::Option<u32>,
12363    #[prost(int32, optional, tag="4")]
12364    pub orig_start: ::core::option::Option<i32>,
12365    #[prost(uint32, optional, tag="5")]
12366    pub orig_group: ::core::option::Option<u32>,
12367    #[prost(int32, optional, tag="6")]
12368    pub orig_len: ::core::option::Option<i32>,
12369    #[prost(uint32, optional, tag="7")]
12370    pub result_logical: ::core::option::Option<u32>,
12371    #[prost(int32, optional, tag="8")]
12372    pub result_start: ::core::option::Option<i32>,
12373    #[prost(uint32, optional, tag="9")]
12374    pub result_group: ::core::option::Option<u32>,
12375    #[prost(int32, optional, tag="10")]
12376    pub result_len: ::core::option::Option<i32>,
12377}
12378#[derive(Clone, PartialEq, ::prost::Message)]
12379pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12380    #[prost(uint64, optional, tag="1")]
12381    pub dev: ::core::option::Option<u64>,
12382    #[prost(uint64, optional, tag="2")]
12383    pub ino: ::core::option::Option<u64>,
12384    #[prost(uint64, optional, tag="3")]
12385    pub orig_ino: ::core::option::Option<u64>,
12386    #[prost(uint32, optional, tag="4")]
12387    pub uid: ::core::option::Option<u32>,
12388    #[prost(uint32, optional, tag="5")]
12389    pub gid: ::core::option::Option<u32>,
12390    #[prost(uint32, optional, tag="6")]
12391    pub mode: ::core::option::Option<u32>,
12392}
12393#[derive(Clone, PartialEq, ::prost::Message)]
12394pub struct Ext4PunchHoleFtraceEvent {
12395    #[prost(uint64, optional, tag="1")]
12396    pub dev: ::core::option::Option<u64>,
12397    #[prost(uint64, optional, tag="2")]
12398    pub ino: ::core::option::Option<u64>,
12399    #[prost(int64, optional, tag="3")]
12400    pub offset: ::core::option::Option<i64>,
12401    #[prost(int64, optional, tag="4")]
12402    pub len: ::core::option::Option<i64>,
12403    #[prost(int32, optional, tag="5")]
12404    pub mode: ::core::option::Option<i32>,
12405}
12406#[derive(Clone, PartialEq, ::prost::Message)]
12407pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12408    #[prost(uint64, optional, tag="1")]
12409    pub dev: ::core::option::Option<u64>,
12410    #[prost(uint32, optional, tag="2")]
12411    pub group: ::core::option::Option<u32>,
12412    #[prost(uint32, optional, tag="3")]
12413    pub prefetch: ::core::option::Option<u32>,
12414}
12415#[derive(Clone, PartialEq, ::prost::Message)]
12416pub struct Ext4ReadpageFtraceEvent {
12417    #[prost(uint64, optional, tag="1")]
12418    pub dev: ::core::option::Option<u64>,
12419    #[prost(uint64, optional, tag="2")]
12420    pub ino: ::core::option::Option<u64>,
12421    #[prost(uint64, optional, tag="3")]
12422    pub index: ::core::option::Option<u64>,
12423}
12424#[derive(Clone, PartialEq, ::prost::Message)]
12425pub struct Ext4ReleasepageFtraceEvent {
12426    #[prost(uint64, optional, tag="1")]
12427    pub dev: ::core::option::Option<u64>,
12428    #[prost(uint64, optional, tag="2")]
12429    pub ino: ::core::option::Option<u64>,
12430    #[prost(uint64, optional, tag="3")]
12431    pub index: ::core::option::Option<u64>,
12432}
12433#[derive(Clone, PartialEq, ::prost::Message)]
12434pub struct Ext4RemoveBlocksFtraceEvent {
12435    #[prost(uint64, optional, tag="1")]
12436    pub dev: ::core::option::Option<u64>,
12437    #[prost(uint64, optional, tag="2")]
12438    pub ino: ::core::option::Option<u64>,
12439    #[prost(uint32, optional, tag="3")]
12440    pub from: ::core::option::Option<u32>,
12441    #[prost(uint32, optional, tag="4")]
12442    pub to: ::core::option::Option<u32>,
12443    #[prost(int64, optional, tag="5")]
12444    pub partial: ::core::option::Option<i64>,
12445    #[prost(uint64, optional, tag="6")]
12446    pub ee_pblk: ::core::option::Option<u64>,
12447    #[prost(uint32, optional, tag="7")]
12448    pub ee_lblk: ::core::option::Option<u32>,
12449    #[prost(uint32, optional, tag="8")]
12450    pub ee_len: ::core::option::Option<u32>,
12451    #[prost(uint32, optional, tag="9")]
12452    pub pc_lblk: ::core::option::Option<u32>,
12453    #[prost(uint64, optional, tag="10")]
12454    pub pc_pclu: ::core::option::Option<u64>,
12455    #[prost(int32, optional, tag="11")]
12456    pub pc_state: ::core::option::Option<i32>,
12457}
12458#[derive(Clone, PartialEq, ::prost::Message)]
12459pub struct Ext4RequestBlocksFtraceEvent {
12460    #[prost(uint64, optional, tag="1")]
12461    pub dev: ::core::option::Option<u64>,
12462    #[prost(uint64, optional, tag="2")]
12463    pub ino: ::core::option::Option<u64>,
12464    #[prost(uint32, optional, tag="3")]
12465    pub len: ::core::option::Option<u32>,
12466    #[prost(uint32, optional, tag="4")]
12467    pub logical: ::core::option::Option<u32>,
12468    #[prost(uint32, optional, tag="5")]
12469    pub lleft: ::core::option::Option<u32>,
12470    #[prost(uint32, optional, tag="6")]
12471    pub lright: ::core::option::Option<u32>,
12472    #[prost(uint64, optional, tag="7")]
12473    pub goal: ::core::option::Option<u64>,
12474    #[prost(uint64, optional, tag="8")]
12475    pub pleft: ::core::option::Option<u64>,
12476    #[prost(uint64, optional, tag="9")]
12477    pub pright: ::core::option::Option<u64>,
12478    #[prost(uint32, optional, tag="10")]
12479    pub flags: ::core::option::Option<u32>,
12480}
12481#[derive(Clone, PartialEq, ::prost::Message)]
12482pub struct Ext4RequestInodeFtraceEvent {
12483    #[prost(uint64, optional, tag="1")]
12484    pub dev: ::core::option::Option<u64>,
12485    #[prost(uint64, optional, tag="2")]
12486    pub dir: ::core::option::Option<u64>,
12487    #[prost(uint32, optional, tag="3")]
12488    pub mode: ::core::option::Option<u32>,
12489}
12490#[derive(Clone, PartialEq, ::prost::Message)]
12491pub struct Ext4SyncFsFtraceEvent {
12492    #[prost(uint64, optional, tag="1")]
12493    pub dev: ::core::option::Option<u64>,
12494    #[prost(int32, optional, tag="2")]
12495    pub wait: ::core::option::Option<i32>,
12496}
12497#[derive(Clone, PartialEq, ::prost::Message)]
12498pub struct Ext4TrimAllFreeFtraceEvent {
12499    #[prost(int32, optional, tag="1")]
12500    pub dev_major: ::core::option::Option<i32>,
12501    #[prost(int32, optional, tag="2")]
12502    pub dev_minor: ::core::option::Option<i32>,
12503    #[prost(uint32, optional, tag="3")]
12504    pub group: ::core::option::Option<u32>,
12505    #[prost(int32, optional, tag="4")]
12506    pub start: ::core::option::Option<i32>,
12507    #[prost(int32, optional, tag="5")]
12508    pub len: ::core::option::Option<i32>,
12509}
12510#[derive(Clone, PartialEq, ::prost::Message)]
12511pub struct Ext4TrimExtentFtraceEvent {
12512    #[prost(int32, optional, tag="1")]
12513    pub dev_major: ::core::option::Option<i32>,
12514    #[prost(int32, optional, tag="2")]
12515    pub dev_minor: ::core::option::Option<i32>,
12516    #[prost(uint32, optional, tag="3")]
12517    pub group: ::core::option::Option<u32>,
12518    #[prost(int32, optional, tag="4")]
12519    pub start: ::core::option::Option<i32>,
12520    #[prost(int32, optional, tag="5")]
12521    pub len: ::core::option::Option<i32>,
12522}
12523#[derive(Clone, PartialEq, ::prost::Message)]
12524pub struct Ext4TruncateEnterFtraceEvent {
12525    #[prost(uint64, optional, tag="1")]
12526    pub dev: ::core::option::Option<u64>,
12527    #[prost(uint64, optional, tag="2")]
12528    pub ino: ::core::option::Option<u64>,
12529    #[prost(uint64, optional, tag="3")]
12530    pub blocks: ::core::option::Option<u64>,
12531}
12532#[derive(Clone, PartialEq, ::prost::Message)]
12533pub struct Ext4TruncateExitFtraceEvent {
12534    #[prost(uint64, optional, tag="1")]
12535    pub dev: ::core::option::Option<u64>,
12536    #[prost(uint64, optional, tag="2")]
12537    pub ino: ::core::option::Option<u64>,
12538    #[prost(uint64, optional, tag="3")]
12539    pub blocks: ::core::option::Option<u64>,
12540}
12541#[derive(Clone, PartialEq, ::prost::Message)]
12542pub struct Ext4UnlinkEnterFtraceEvent {
12543    #[prost(uint64, optional, tag="1")]
12544    pub dev: ::core::option::Option<u64>,
12545    #[prost(uint64, optional, tag="2")]
12546    pub ino: ::core::option::Option<u64>,
12547    #[prost(uint64, optional, tag="3")]
12548    pub parent: ::core::option::Option<u64>,
12549    #[prost(int64, optional, tag="4")]
12550    pub size: ::core::option::Option<i64>,
12551}
12552#[derive(Clone, PartialEq, ::prost::Message)]
12553pub struct Ext4UnlinkExitFtraceEvent {
12554    #[prost(uint64, optional, tag="1")]
12555    pub dev: ::core::option::Option<u64>,
12556    #[prost(uint64, optional, tag="2")]
12557    pub ino: ::core::option::Option<u64>,
12558    #[prost(int32, optional, tag="3")]
12559    pub ret: ::core::option::Option<i32>,
12560}
12561#[derive(Clone, PartialEq, ::prost::Message)]
12562pub struct Ext4WriteBeginFtraceEvent {
12563    #[prost(uint64, optional, tag="1")]
12564    pub dev: ::core::option::Option<u64>,
12565    #[prost(uint64, optional, tag="2")]
12566    pub ino: ::core::option::Option<u64>,
12567    #[prost(int64, optional, tag="3")]
12568    pub pos: ::core::option::Option<i64>,
12569    #[prost(uint32, optional, tag="4")]
12570    pub len: ::core::option::Option<u32>,
12571    #[prost(uint32, optional, tag="5")]
12572    pub flags: ::core::option::Option<u32>,
12573}
12574#[derive(Clone, PartialEq, ::prost::Message)]
12575pub struct Ext4WriteEndFtraceEvent {
12576    #[prost(uint64, optional, tag="1")]
12577    pub dev: ::core::option::Option<u64>,
12578    #[prost(uint64, optional, tag="2")]
12579    pub ino: ::core::option::Option<u64>,
12580    #[prost(int64, optional, tag="3")]
12581    pub pos: ::core::option::Option<i64>,
12582    #[prost(uint32, optional, tag="4")]
12583    pub len: ::core::option::Option<u32>,
12584    #[prost(uint32, optional, tag="5")]
12585    pub copied: ::core::option::Option<u32>,
12586}
12587#[derive(Clone, PartialEq, ::prost::Message)]
12588pub struct Ext4WritepageFtraceEvent {
12589    #[prost(uint64, optional, tag="1")]
12590    pub dev: ::core::option::Option<u64>,
12591    #[prost(uint64, optional, tag="2")]
12592    pub ino: ::core::option::Option<u64>,
12593    #[prost(uint64, optional, tag="3")]
12594    pub index: ::core::option::Option<u64>,
12595}
12596#[derive(Clone, PartialEq, ::prost::Message)]
12597pub struct Ext4WritepagesFtraceEvent {
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(int64, optional, tag="3")]
12603    pub nr_to_write: ::core::option::Option<i64>,
12604    #[prost(int64, optional, tag="4")]
12605    pub pages_skipped: ::core::option::Option<i64>,
12606    #[prost(int64, optional, tag="5")]
12607    pub range_start: ::core::option::Option<i64>,
12608    #[prost(int64, optional, tag="6")]
12609    pub range_end: ::core::option::Option<i64>,
12610    #[prost(uint64, optional, tag="7")]
12611    pub writeback_index: ::core::option::Option<u64>,
12612    #[prost(int32, optional, tag="8")]
12613    pub sync_mode: ::core::option::Option<i32>,
12614    #[prost(uint32, optional, tag="9")]
12615    pub for_kupdate: ::core::option::Option<u32>,
12616    #[prost(uint32, optional, tag="10")]
12617    pub range_cyclic: ::core::option::Option<u32>,
12618}
12619#[derive(Clone, PartialEq, ::prost::Message)]
12620pub struct Ext4WritepagesResultFtraceEvent {
12621    #[prost(uint64, optional, tag="1")]
12622    pub dev: ::core::option::Option<u64>,
12623    #[prost(uint64, optional, tag="2")]
12624    pub ino: ::core::option::Option<u64>,
12625    #[prost(int32, optional, tag="3")]
12626    pub ret: ::core::option::Option<i32>,
12627    #[prost(int32, optional, tag="4")]
12628    pub pages_written: ::core::option::Option<i32>,
12629    #[prost(int64, optional, tag="5")]
12630    pub pages_skipped: ::core::option::Option<i64>,
12631    #[prost(uint64, optional, tag="6")]
12632    pub writeback_index: ::core::option::Option<u64>,
12633    #[prost(int32, optional, tag="7")]
12634    pub sync_mode: ::core::option::Option<i32>,
12635}
12636#[derive(Clone, PartialEq, ::prost::Message)]
12637pub struct Ext4ZeroRangeFtraceEvent {
12638    #[prost(uint64, optional, tag="1")]
12639    pub dev: ::core::option::Option<u64>,
12640    #[prost(uint64, optional, tag="2")]
12641    pub ino: ::core::option::Option<u64>,
12642    #[prost(int64, optional, tag="3")]
12643    pub offset: ::core::option::Option<i64>,
12644    #[prost(int64, optional, tag="4")]
12645    pub len: ::core::option::Option<i64>,
12646    #[prost(int32, optional, tag="5")]
12647    pub mode: ::core::option::Option<i32>,
12648}
12649// End of protos/perfetto/trace/ftrace/ext4.proto
12650
12651// Begin of protos/perfetto/trace/ftrace/f2fs.proto
12652
12653#[derive(Clone, PartialEq, ::prost::Message)]
12654pub struct F2fsDoSubmitBioFtraceEvent {
12655    #[prost(uint64, optional, tag="1")]
12656    pub dev: ::core::option::Option<u64>,
12657    #[prost(int32, optional, tag="2")]
12658    pub btype: ::core::option::Option<i32>,
12659    #[prost(uint32, optional, tag="3")]
12660    pub sync: ::core::option::Option<u32>,
12661    #[prost(uint64, optional, tag="4")]
12662    pub sector: ::core::option::Option<u64>,
12663    #[prost(uint32, optional, tag="5")]
12664    pub size: ::core::option::Option<u32>,
12665}
12666#[derive(Clone, PartialEq, ::prost::Message)]
12667pub struct F2fsEvictInodeFtraceEvent {
12668    #[prost(uint64, optional, tag="1")]
12669    pub dev: ::core::option::Option<u64>,
12670    #[prost(uint64, optional, tag="2")]
12671    pub ino: ::core::option::Option<u64>,
12672    #[prost(uint64, optional, tag="3")]
12673    pub pino: ::core::option::Option<u64>,
12674    #[prost(uint32, optional, tag="4")]
12675    pub mode: ::core::option::Option<u32>,
12676    #[prost(int64, optional, tag="5")]
12677    pub size: ::core::option::Option<i64>,
12678    #[prost(uint32, optional, tag="6")]
12679    pub nlink: ::core::option::Option<u32>,
12680    #[prost(uint64, optional, tag="7")]
12681    pub blocks: ::core::option::Option<u64>,
12682    #[prost(uint32, optional, tag="8")]
12683    pub advise: ::core::option::Option<u32>,
12684}
12685#[derive(Clone, PartialEq, ::prost::Message)]
12686pub struct F2fsFallocateFtraceEvent {
12687    #[prost(uint64, optional, tag="1")]
12688    pub dev: ::core::option::Option<u64>,
12689    #[prost(uint64, optional, tag="2")]
12690    pub ino: ::core::option::Option<u64>,
12691    #[prost(int32, optional, tag="3")]
12692    pub mode: ::core::option::Option<i32>,
12693    #[prost(int64, optional, tag="4")]
12694    pub offset: ::core::option::Option<i64>,
12695    #[prost(int64, optional, tag="5")]
12696    pub len: ::core::option::Option<i64>,
12697    #[prost(int64, optional, tag="6")]
12698    pub size: ::core::option::Option<i64>,
12699    #[prost(uint64, optional, tag="7")]
12700    pub blocks: ::core::option::Option<u64>,
12701    #[prost(int32, optional, tag="8")]
12702    pub ret: ::core::option::Option<i32>,
12703}
12704#[derive(Clone, PartialEq, ::prost::Message)]
12705pub struct F2fsGetDataBlockFtraceEvent {
12706    #[prost(uint64, optional, tag="1")]
12707    pub dev: ::core::option::Option<u64>,
12708    #[prost(uint64, optional, tag="2")]
12709    pub ino: ::core::option::Option<u64>,
12710    #[prost(uint64, optional, tag="3")]
12711    pub iblock: ::core::option::Option<u64>,
12712    #[prost(uint64, optional, tag="4")]
12713    pub bh_start: ::core::option::Option<u64>,
12714    #[prost(uint64, optional, tag="5")]
12715    pub bh_size: ::core::option::Option<u64>,
12716    #[prost(int32, optional, tag="6")]
12717    pub ret: ::core::option::Option<i32>,
12718}
12719#[derive(Clone, PartialEq, ::prost::Message)]
12720pub struct F2fsGetVictimFtraceEvent {
12721    #[prost(uint64, optional, tag="1")]
12722    pub dev: ::core::option::Option<u64>,
12723    #[prost(int32, optional, tag="2")]
12724    pub r#type: ::core::option::Option<i32>,
12725    #[prost(int32, optional, tag="3")]
12726    pub gc_type: ::core::option::Option<i32>,
12727    #[prost(int32, optional, tag="4")]
12728    pub alloc_mode: ::core::option::Option<i32>,
12729    #[prost(int32, optional, tag="5")]
12730    pub gc_mode: ::core::option::Option<i32>,
12731    #[prost(uint32, optional, tag="6")]
12732    pub victim: ::core::option::Option<u32>,
12733    #[prost(uint32, optional, tag="7")]
12734    pub ofs_unit: ::core::option::Option<u32>,
12735    #[prost(uint32, optional, tag="8")]
12736    pub pre_victim: ::core::option::Option<u32>,
12737    #[prost(uint32, optional, tag="9")]
12738    pub prefree: ::core::option::Option<u32>,
12739    #[prost(uint32, optional, tag="10")]
12740    pub free: ::core::option::Option<u32>,
12741    #[prost(uint32, optional, tag="11")]
12742    pub cost: ::core::option::Option<u32>,
12743}
12744#[derive(Clone, PartialEq, ::prost::Message)]
12745pub struct F2fsIgetFtraceEvent {
12746    #[prost(uint64, optional, tag="1")]
12747    pub dev: ::core::option::Option<u64>,
12748    #[prost(uint64, optional, tag="2")]
12749    pub ino: ::core::option::Option<u64>,
12750    #[prost(uint64, optional, tag="3")]
12751    pub pino: ::core::option::Option<u64>,
12752    #[prost(uint32, optional, tag="4")]
12753    pub mode: ::core::option::Option<u32>,
12754    #[prost(int64, optional, tag="5")]
12755    pub size: ::core::option::Option<i64>,
12756    #[prost(uint32, optional, tag="6")]
12757    pub nlink: ::core::option::Option<u32>,
12758    #[prost(uint64, optional, tag="7")]
12759    pub blocks: ::core::option::Option<u64>,
12760    #[prost(uint32, optional, tag="8")]
12761    pub advise: ::core::option::Option<u32>,
12762}
12763#[derive(Clone, PartialEq, ::prost::Message)]
12764pub struct F2fsIgetExitFtraceEvent {
12765    #[prost(uint64, optional, tag="1")]
12766    pub dev: ::core::option::Option<u64>,
12767    #[prost(uint64, optional, tag="2")]
12768    pub ino: ::core::option::Option<u64>,
12769    #[prost(int32, optional, tag="3")]
12770    pub ret: ::core::option::Option<i32>,
12771}
12772#[derive(Clone, PartialEq, ::prost::Message)]
12773pub struct F2fsNewInodeFtraceEvent {
12774    #[prost(uint64, optional, tag="1")]
12775    pub dev: ::core::option::Option<u64>,
12776    #[prost(uint64, optional, tag="2")]
12777    pub ino: ::core::option::Option<u64>,
12778    #[prost(int32, optional, tag="3")]
12779    pub ret: ::core::option::Option<i32>,
12780}
12781#[derive(Clone, PartialEq, ::prost::Message)]
12782pub struct F2fsReadpageFtraceEvent {
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 index: ::core::option::Option<u64>,
12789    #[prost(uint64, optional, tag="4")]
12790    pub blkaddr: ::core::option::Option<u64>,
12791    #[prost(int32, optional, tag="5")]
12792    pub r#type: ::core::option::Option<i32>,
12793    #[prost(int32, optional, tag="6")]
12794    pub dir: ::core::option::Option<i32>,
12795    #[prost(int32, optional, tag="7")]
12796    pub dirty: ::core::option::Option<i32>,
12797    #[prost(int32, optional, tag="8")]
12798    pub uptodate: ::core::option::Option<i32>,
12799}
12800#[derive(Clone, PartialEq, ::prost::Message)]
12801pub struct F2fsReserveNewBlockFtraceEvent {
12802    #[prost(uint64, optional, tag="1")]
12803    pub dev: ::core::option::Option<u64>,
12804    #[prost(uint32, optional, tag="2")]
12805    pub nid: ::core::option::Option<u32>,
12806    #[prost(uint32, optional, tag="3")]
12807    pub ofs_in_node: ::core::option::Option<u32>,
12808}
12809#[derive(Clone, PartialEq, ::prost::Message)]
12810pub struct F2fsSetPageDirtyFtraceEvent {
12811    #[prost(uint64, optional, tag="1")]
12812    pub dev: ::core::option::Option<u64>,
12813    #[prost(uint64, optional, tag="2")]
12814    pub ino: ::core::option::Option<u64>,
12815    #[prost(int32, optional, tag="3")]
12816    pub r#type: ::core::option::Option<i32>,
12817    #[prost(int32, optional, tag="4")]
12818    pub dir: ::core::option::Option<i32>,
12819    #[prost(uint64, optional, tag="5")]
12820    pub index: ::core::option::Option<u64>,
12821    #[prost(int32, optional, tag="6")]
12822    pub dirty: ::core::option::Option<i32>,
12823    #[prost(int32, optional, tag="7")]
12824    pub uptodate: ::core::option::Option<i32>,
12825}
12826#[derive(Clone, PartialEq, ::prost::Message)]
12827pub struct F2fsSubmitWritePageFtraceEvent {
12828    #[prost(uint64, optional, tag="1")]
12829    pub dev: ::core::option::Option<u64>,
12830    #[prost(uint64, optional, tag="2")]
12831    pub ino: ::core::option::Option<u64>,
12832    #[prost(int32, optional, tag="3")]
12833    pub r#type: ::core::option::Option<i32>,
12834    #[prost(uint64, optional, tag="4")]
12835    pub index: ::core::option::Option<u64>,
12836    #[prost(uint32, optional, tag="5")]
12837    pub block: ::core::option::Option<u32>,
12838}
12839#[derive(Clone, PartialEq, ::prost::Message)]
12840pub struct F2fsSyncFileEnterFtraceEvent {
12841    #[prost(uint64, optional, tag="1")]
12842    pub dev: ::core::option::Option<u64>,
12843    #[prost(uint64, optional, tag="2")]
12844    pub ino: ::core::option::Option<u64>,
12845    #[prost(uint64, optional, tag="3")]
12846    pub pino: ::core::option::Option<u64>,
12847    #[prost(uint32, optional, tag="4")]
12848    pub mode: ::core::option::Option<u32>,
12849    #[prost(int64, optional, tag="5")]
12850    pub size: ::core::option::Option<i64>,
12851    #[prost(uint32, optional, tag="6")]
12852    pub nlink: ::core::option::Option<u32>,
12853    #[prost(uint64, optional, tag="7")]
12854    pub blocks: ::core::option::Option<u64>,
12855    #[prost(uint32, optional, tag="8")]
12856    pub advise: ::core::option::Option<u32>,
12857}
12858#[derive(Clone, PartialEq, ::prost::Message)]
12859pub struct F2fsSyncFileExitFtraceEvent {
12860    #[prost(uint64, optional, tag="1")]
12861    pub dev: ::core::option::Option<u64>,
12862    #[prost(uint64, optional, tag="2")]
12863    pub ino: ::core::option::Option<u64>,
12864    #[prost(uint32, optional, tag="3")]
12865    pub need_cp: ::core::option::Option<u32>,
12866    #[prost(int32, optional, tag="4")]
12867    pub datasync: ::core::option::Option<i32>,
12868    #[prost(int32, optional, tag="5")]
12869    pub ret: ::core::option::Option<i32>,
12870    #[prost(int32, optional, tag="6")]
12871    pub cp_reason: ::core::option::Option<i32>,
12872}
12873#[derive(Clone, PartialEq, ::prost::Message)]
12874pub struct F2fsSyncFsFtraceEvent {
12875    #[prost(uint64, optional, tag="1")]
12876    pub dev: ::core::option::Option<u64>,
12877    #[prost(int32, optional, tag="2")]
12878    pub dirty: ::core::option::Option<i32>,
12879    #[prost(int32, optional, tag="3")]
12880    pub wait: ::core::option::Option<i32>,
12881}
12882#[derive(Clone, PartialEq, ::prost::Message)]
12883pub struct F2fsTruncateFtraceEvent {
12884    #[prost(uint64, optional, tag="1")]
12885    pub dev: ::core::option::Option<u64>,
12886    #[prost(uint64, optional, tag="2")]
12887    pub ino: ::core::option::Option<u64>,
12888    #[prost(uint64, optional, tag="3")]
12889    pub pino: ::core::option::Option<u64>,
12890    #[prost(uint32, optional, tag="4")]
12891    pub mode: ::core::option::Option<u32>,
12892    #[prost(int64, optional, tag="5")]
12893    pub size: ::core::option::Option<i64>,
12894    #[prost(uint32, optional, tag="6")]
12895    pub nlink: ::core::option::Option<u32>,
12896    #[prost(uint64, optional, tag="7")]
12897    pub blocks: ::core::option::Option<u64>,
12898    #[prost(uint32, optional, tag="8")]
12899    pub advise: ::core::option::Option<u32>,
12900}
12901#[derive(Clone, PartialEq, ::prost::Message)]
12902pub struct F2fsTruncateBlocksEnterFtraceEvent {
12903    #[prost(uint64, optional, tag="1")]
12904    pub dev: ::core::option::Option<u64>,
12905    #[prost(uint64, optional, tag="2")]
12906    pub ino: ::core::option::Option<u64>,
12907    #[prost(int64, optional, tag="3")]
12908    pub size: ::core::option::Option<i64>,
12909    #[prost(uint64, optional, tag="4")]
12910    pub blocks: ::core::option::Option<u64>,
12911    #[prost(uint64, optional, tag="5")]
12912    pub from: ::core::option::Option<u64>,
12913}
12914#[derive(Clone, PartialEq, ::prost::Message)]
12915pub struct F2fsTruncateBlocksExitFtraceEvent {
12916    #[prost(uint64, optional, tag="1")]
12917    pub dev: ::core::option::Option<u64>,
12918    #[prost(uint64, optional, tag="2")]
12919    pub ino: ::core::option::Option<u64>,
12920    #[prost(int32, optional, tag="3")]
12921    pub ret: ::core::option::Option<i32>,
12922}
12923#[derive(Clone, PartialEq, ::prost::Message)]
12924pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12925    #[prost(uint64, optional, tag="1")]
12926    pub dev: ::core::option::Option<u64>,
12927    #[prost(uint64, optional, tag="2")]
12928    pub ino: ::core::option::Option<u64>,
12929    #[prost(uint32, optional, tag="3")]
12930    pub nid: ::core::option::Option<u32>,
12931    #[prost(uint32, optional, tag="4")]
12932    pub ofs: ::core::option::Option<u32>,
12933    #[prost(int32, optional, tag="5")]
12934    pub free: ::core::option::Option<i32>,
12935}
12936#[derive(Clone, PartialEq, ::prost::Message)]
12937pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12938    #[prost(uint64, optional, tag="1")]
12939    pub dev: ::core::option::Option<u64>,
12940    #[prost(uint64, optional, tag="2")]
12941    pub ino: ::core::option::Option<u64>,
12942    #[prost(int64, optional, tag="3")]
12943    pub size: ::core::option::Option<i64>,
12944    #[prost(uint64, optional, tag="4")]
12945    pub blocks: ::core::option::Option<u64>,
12946    #[prost(uint64, optional, tag="5")]
12947    pub from: ::core::option::Option<u64>,
12948}
12949#[derive(Clone, PartialEq, ::prost::Message)]
12950pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12951    #[prost(uint64, optional, tag="1")]
12952    pub dev: ::core::option::Option<u64>,
12953    #[prost(uint64, optional, tag="2")]
12954    pub ino: ::core::option::Option<u64>,
12955    #[prost(int32, optional, tag="3")]
12956    pub ret: ::core::option::Option<i32>,
12957}
12958#[derive(Clone, PartialEq, ::prost::Message)]
12959pub struct F2fsTruncateNodeFtraceEvent {
12960    #[prost(uint64, optional, tag="1")]
12961    pub dev: ::core::option::Option<u64>,
12962    #[prost(uint64, optional, tag="2")]
12963    pub ino: ::core::option::Option<u64>,
12964    #[prost(uint32, optional, tag="3")]
12965    pub nid: ::core::option::Option<u32>,
12966    #[prost(uint32, optional, tag="4")]
12967    pub blk_addr: ::core::option::Option<u32>,
12968}
12969#[derive(Clone, PartialEq, ::prost::Message)]
12970pub struct F2fsTruncateNodesEnterFtraceEvent {
12971    #[prost(uint64, optional, tag="1")]
12972    pub dev: ::core::option::Option<u64>,
12973    #[prost(uint64, optional, tag="2")]
12974    pub ino: ::core::option::Option<u64>,
12975    #[prost(uint32, optional, tag="3")]
12976    pub nid: ::core::option::Option<u32>,
12977    #[prost(uint32, optional, tag="4")]
12978    pub blk_addr: ::core::option::Option<u32>,
12979}
12980#[derive(Clone, PartialEq, ::prost::Message)]
12981pub struct F2fsTruncateNodesExitFtraceEvent {
12982    #[prost(uint64, optional, tag="1")]
12983    pub dev: ::core::option::Option<u64>,
12984    #[prost(uint64, optional, tag="2")]
12985    pub ino: ::core::option::Option<u64>,
12986    #[prost(int32, optional, tag="3")]
12987    pub ret: ::core::option::Option<i32>,
12988}
12989#[derive(Clone, PartialEq, ::prost::Message)]
12990pub struct F2fsTruncatePartialNodesFtraceEvent {
12991    #[prost(uint64, optional, tag="1")]
12992    pub dev: ::core::option::Option<u64>,
12993    #[prost(uint64, optional, tag="2")]
12994    pub ino: ::core::option::Option<u64>,
12995    #[prost(uint32, optional, tag="3")]
12996    pub nid: ::core::option::Option<u32>,
12997    #[prost(int32, optional, tag="4")]
12998    pub depth: ::core::option::Option<i32>,
12999    #[prost(int32, optional, tag="5")]
13000    pub err: ::core::option::Option<i32>,
13001}
13002#[derive(Clone, PartialEq, ::prost::Message)]
13003pub struct F2fsUnlinkEnterFtraceEvent {
13004    #[prost(uint64, optional, tag="1")]
13005    pub dev: ::core::option::Option<u64>,
13006    #[prost(uint64, optional, tag="2")]
13007    pub ino: ::core::option::Option<u64>,
13008    #[prost(int64, optional, tag="3")]
13009    pub size: ::core::option::Option<i64>,
13010    #[prost(uint64, optional, tag="4")]
13011    pub blocks: ::core::option::Option<u64>,
13012    #[prost(string, optional, tag="5")]
13013    pub name: ::core::option::Option<::prost::alloc::string::String>,
13014}
13015#[derive(Clone, PartialEq, ::prost::Message)]
13016pub struct F2fsUnlinkExitFtraceEvent {
13017    #[prost(uint64, optional, tag="1")]
13018    pub dev: ::core::option::Option<u64>,
13019    #[prost(uint64, optional, tag="2")]
13020    pub ino: ::core::option::Option<u64>,
13021    #[prost(int32, optional, tag="3")]
13022    pub ret: ::core::option::Option<i32>,
13023}
13024#[derive(Clone, PartialEq, ::prost::Message)]
13025pub struct F2fsVmPageMkwriteFtraceEvent {
13026    #[prost(uint64, optional, tag="1")]
13027    pub dev: ::core::option::Option<u64>,
13028    #[prost(uint64, optional, tag="2")]
13029    pub ino: ::core::option::Option<u64>,
13030    #[prost(int32, optional, tag="3")]
13031    pub r#type: ::core::option::Option<i32>,
13032    #[prost(int32, optional, tag="4")]
13033    pub dir: ::core::option::Option<i32>,
13034    #[prost(uint64, optional, tag="5")]
13035    pub index: ::core::option::Option<u64>,
13036    #[prost(int32, optional, tag="6")]
13037    pub dirty: ::core::option::Option<i32>,
13038    #[prost(int32, optional, tag="7")]
13039    pub uptodate: ::core::option::Option<i32>,
13040}
13041#[derive(Clone, PartialEq, ::prost::Message)]
13042pub struct F2fsWriteBeginFtraceEvent {
13043    #[prost(uint64, optional, tag="1")]
13044    pub dev: ::core::option::Option<u64>,
13045    #[prost(uint64, optional, tag="2")]
13046    pub ino: ::core::option::Option<u64>,
13047    #[prost(int64, optional, tag="3")]
13048    pub pos: ::core::option::Option<i64>,
13049    #[prost(uint32, optional, tag="4")]
13050    pub len: ::core::option::Option<u32>,
13051    #[prost(uint32, optional, tag="5")]
13052    pub flags: ::core::option::Option<u32>,
13053}
13054#[derive(Clone, PartialEq, ::prost::Message)]
13055pub struct F2fsWriteCheckpointFtraceEvent {
13056    #[prost(uint64, optional, tag="1")]
13057    pub dev: ::core::option::Option<u64>,
13058    #[prost(uint32, optional, tag="2")]
13059    pub is_umount: ::core::option::Option<u32>,
13060    #[prost(string, optional, tag="3")]
13061    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13062    #[prost(int32, optional, tag="4")]
13063    pub reason: ::core::option::Option<i32>,
13064    #[prost(uint32, optional, tag="5")]
13065    pub phase: ::core::option::Option<u32>,
13066}
13067#[derive(Clone, PartialEq, ::prost::Message)]
13068pub struct F2fsWriteEndFtraceEvent {
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 copied: ::core::option::Option<u32>,
13079}
13080#[derive(Clone, PartialEq, ::prost::Message)]
13081pub struct F2fsIostatFtraceEvent {
13082    #[prost(uint64, optional, tag="1")]
13083    pub app_bio: ::core::option::Option<u64>,
13084    #[prost(uint64, optional, tag="2")]
13085    pub app_brio: ::core::option::Option<u64>,
13086    #[prost(uint64, optional, tag="3")]
13087    pub app_dio: ::core::option::Option<u64>,
13088    #[prost(uint64, optional, tag="4")]
13089    pub app_drio: ::core::option::Option<u64>,
13090    #[prost(uint64, optional, tag="5")]
13091    pub app_mio: ::core::option::Option<u64>,
13092    #[prost(uint64, optional, tag="6")]
13093    pub app_mrio: ::core::option::Option<u64>,
13094    #[prost(uint64, optional, tag="7")]
13095    pub app_rio: ::core::option::Option<u64>,
13096    #[prost(uint64, optional, tag="8")]
13097    pub app_wio: ::core::option::Option<u64>,
13098    #[prost(uint64, optional, tag="9")]
13099    pub dev: ::core::option::Option<u64>,
13100    #[prost(uint64, optional, tag="10")]
13101    pub fs_cdrio: ::core::option::Option<u64>,
13102    #[prost(uint64, optional, tag="11")]
13103    pub fs_cp_dio: ::core::option::Option<u64>,
13104    #[prost(uint64, optional, tag="12")]
13105    pub fs_cp_mio: ::core::option::Option<u64>,
13106    #[prost(uint64, optional, tag="13")]
13107    pub fs_cp_nio: ::core::option::Option<u64>,
13108    #[prost(uint64, optional, tag="14")]
13109    pub fs_dio: ::core::option::Option<u64>,
13110    #[prost(uint64, optional, tag="15")]
13111    pub fs_discard: ::core::option::Option<u64>,
13112    #[prost(uint64, optional, tag="16")]
13113    pub fs_drio: ::core::option::Option<u64>,
13114    #[prost(uint64, optional, tag="17")]
13115    pub fs_gc_dio: ::core::option::Option<u64>,
13116    #[prost(uint64, optional, tag="18")]
13117    pub fs_gc_nio: ::core::option::Option<u64>,
13118    #[prost(uint64, optional, tag="19")]
13119    pub fs_gdrio: ::core::option::Option<u64>,
13120    #[prost(uint64, optional, tag="20")]
13121    pub fs_mio: ::core::option::Option<u64>,
13122    #[prost(uint64, optional, tag="21")]
13123    pub fs_mrio: ::core::option::Option<u64>,
13124    #[prost(uint64, optional, tag="22")]
13125    pub fs_nio: ::core::option::Option<u64>,
13126    #[prost(uint64, optional, tag="23")]
13127    pub fs_nrio: ::core::option::Option<u64>,
13128}
13129#[derive(Clone, PartialEq, ::prost::Message)]
13130pub struct F2fsIostatLatencyFtraceEvent {
13131    #[prost(uint32, optional, tag="1")]
13132    pub d_rd_avg: ::core::option::Option<u32>,
13133    #[prost(uint32, optional, tag="2")]
13134    pub d_rd_cnt: ::core::option::Option<u32>,
13135    #[prost(uint32, optional, tag="3")]
13136    pub d_rd_peak: ::core::option::Option<u32>,
13137    #[prost(uint32, optional, tag="4")]
13138    pub d_wr_as_avg: ::core::option::Option<u32>,
13139    #[prost(uint32, optional, tag="5")]
13140    pub d_wr_as_cnt: ::core::option::Option<u32>,
13141    #[prost(uint32, optional, tag="6")]
13142    pub d_wr_as_peak: ::core::option::Option<u32>,
13143    #[prost(uint32, optional, tag="7")]
13144    pub d_wr_s_avg: ::core::option::Option<u32>,
13145    #[prost(uint32, optional, tag="8")]
13146    pub d_wr_s_cnt: ::core::option::Option<u32>,
13147    #[prost(uint32, optional, tag="9")]
13148    pub d_wr_s_peak: ::core::option::Option<u32>,
13149    #[prost(uint64, optional, tag="10")]
13150    pub dev: ::core::option::Option<u64>,
13151    #[prost(uint32, optional, tag="11")]
13152    pub m_rd_avg: ::core::option::Option<u32>,
13153    #[prost(uint32, optional, tag="12")]
13154    pub m_rd_cnt: ::core::option::Option<u32>,
13155    #[prost(uint32, optional, tag="13")]
13156    pub m_rd_peak: ::core::option::Option<u32>,
13157    #[prost(uint32, optional, tag="14")]
13158    pub m_wr_as_avg: ::core::option::Option<u32>,
13159    #[prost(uint32, optional, tag="15")]
13160    pub m_wr_as_cnt: ::core::option::Option<u32>,
13161    #[prost(uint32, optional, tag="16")]
13162    pub m_wr_as_peak: ::core::option::Option<u32>,
13163    #[prost(uint32, optional, tag="17")]
13164    pub m_wr_s_avg: ::core::option::Option<u32>,
13165    #[prost(uint32, optional, tag="18")]
13166    pub m_wr_s_cnt: ::core::option::Option<u32>,
13167    #[prost(uint32, optional, tag="19")]
13168    pub m_wr_s_peak: ::core::option::Option<u32>,
13169    #[prost(uint32, optional, tag="20")]
13170    pub n_rd_avg: ::core::option::Option<u32>,
13171    #[prost(uint32, optional, tag="21")]
13172    pub n_rd_cnt: ::core::option::Option<u32>,
13173    #[prost(uint32, optional, tag="22")]
13174    pub n_rd_peak: ::core::option::Option<u32>,
13175    #[prost(uint32, optional, tag="23")]
13176    pub n_wr_as_avg: ::core::option::Option<u32>,
13177    #[prost(uint32, optional, tag="24")]
13178    pub n_wr_as_cnt: ::core::option::Option<u32>,
13179    #[prost(uint32, optional, tag="25")]
13180    pub n_wr_as_peak: ::core::option::Option<u32>,
13181    #[prost(uint32, optional, tag="26")]
13182    pub n_wr_s_avg: ::core::option::Option<u32>,
13183    #[prost(uint32, optional, tag="27")]
13184    pub n_wr_s_cnt: ::core::option::Option<u32>,
13185    #[prost(uint32, optional, tag="28")]
13186    pub n_wr_s_peak: ::core::option::Option<u32>,
13187}
13188#[derive(Clone, PartialEq, ::prost::Message)]
13189pub struct F2fsBackgroundGcFtraceEvent {
13190    #[prost(uint64, optional, tag="1")]
13191    pub dev: ::core::option::Option<u64>,
13192    #[prost(uint32, optional, tag="2")]
13193    pub wait_ms: ::core::option::Option<u32>,
13194    #[prost(uint32, optional, tag="3")]
13195    pub prefree: ::core::option::Option<u32>,
13196    #[prost(uint32, optional, tag="4")]
13197    pub free: ::core::option::Option<u32>,
13198}
13199#[derive(Clone, PartialEq, ::prost::Message)]
13200pub struct F2fsGcBeginFtraceEvent {
13201    #[prost(uint64, optional, tag="1")]
13202    pub dev: ::core::option::Option<u64>,
13203    #[prost(uint32, optional, tag="2")]
13204    pub sync: ::core::option::Option<u32>,
13205    #[prost(uint32, optional, tag="3")]
13206    pub background: ::core::option::Option<u32>,
13207    #[prost(int64, optional, tag="4")]
13208    pub dirty_nodes: ::core::option::Option<i64>,
13209    #[prost(int64, optional, tag="5")]
13210    pub dirty_dents: ::core::option::Option<i64>,
13211    #[prost(int64, optional, tag="6")]
13212    pub dirty_imeta: ::core::option::Option<i64>,
13213    #[prost(uint32, optional, tag="7")]
13214    pub free_sec: ::core::option::Option<u32>,
13215    #[prost(uint32, optional, tag="8")]
13216    pub free_seg: ::core::option::Option<u32>,
13217    #[prost(int32, optional, tag="9")]
13218    pub reserved_seg: ::core::option::Option<i32>,
13219    #[prost(uint32, optional, tag="10")]
13220    pub prefree_seg: ::core::option::Option<u32>,
13221    #[prost(int32, optional, tag="11")]
13222    pub gc_type: ::core::option::Option<i32>,
13223    #[prost(uint32, optional, tag="12")]
13224    pub no_bg_gc: ::core::option::Option<u32>,
13225    #[prost(uint32, optional, tag="13")]
13226    pub nr_free_secs: ::core::option::Option<u32>,
13227}
13228#[derive(Clone, PartialEq, ::prost::Message)]
13229pub struct F2fsGcEndFtraceEvent {
13230    #[prost(uint64, optional, tag="1")]
13231    pub dev: ::core::option::Option<u64>,
13232    #[prost(int32, optional, tag="2")]
13233    pub ret: ::core::option::Option<i32>,
13234    #[prost(int32, optional, tag="3")]
13235    pub seg_freed: ::core::option::Option<i32>,
13236    #[prost(int32, optional, tag="4")]
13237    pub sec_freed: ::core::option::Option<i32>,
13238    #[prost(int64, optional, tag="5")]
13239    pub dirty_nodes: ::core::option::Option<i64>,
13240    #[prost(int64, optional, tag="6")]
13241    pub dirty_dents: ::core::option::Option<i64>,
13242    #[prost(int64, optional, tag="7")]
13243    pub dirty_imeta: ::core::option::Option<i64>,
13244    #[prost(uint32, optional, tag="8")]
13245    pub free_sec: ::core::option::Option<u32>,
13246    #[prost(uint32, optional, tag="9")]
13247    pub free_seg: ::core::option::Option<u32>,
13248    #[prost(int32, optional, tag="10")]
13249    pub reserved_seg: ::core::option::Option<i32>,
13250    #[prost(uint32, optional, tag="11")]
13251    pub prefree_seg: ::core::option::Option<u32>,
13252}
13253#[derive(Clone, PartialEq, ::prost::Message)]
13254pub struct F2fsLockElapsedTimeFtraceEvent {
13255    #[prost(uint64, optional, tag="1")]
13256    pub dev: ::core::option::Option<u64>,
13257    #[prost(string, optional, tag="2")]
13258    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13259    #[prost(int32, optional, tag="3")]
13260    pub pid: ::core::option::Option<i32>,
13261    #[prost(int32, optional, tag="4")]
13262    pub prio: ::core::option::Option<i32>,
13263    #[prost(int32, optional, tag="5")]
13264    pub ioprio_class: ::core::option::Option<i32>,
13265    #[prost(int32, optional, tag="6")]
13266    pub ioprio_data: ::core::option::Option<i32>,
13267    #[prost(uint32, optional, tag="7")]
13268    pub lock_name: ::core::option::Option<u32>,
13269    #[prost(uint32, optional, tag="8")]
13270    pub is_write: ::core::option::Option<u32>,
13271    #[prost(uint64, optional, tag="9")]
13272    pub total_time: ::core::option::Option<u64>,
13273    #[prost(uint64, optional, tag="10")]
13274    pub running_time: ::core::option::Option<u64>,
13275    #[prost(uint64, optional, tag="11")]
13276    pub runnable_time: ::core::option::Option<u64>,
13277    #[prost(uint64, optional, tag="12")]
13278    pub io_sleep_time: ::core::option::Option<u64>,
13279    #[prost(uint64, optional, tag="13")]
13280    pub other_time: ::core::option::Option<u64>,
13281}
13282// End of protos/perfetto/trace/ftrace/f2fs.proto
13283
13284// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
13285
13286#[derive(Clone, PartialEq, ::prost::Message)]
13287pub struct FastrpcDmaStatFtraceEvent {
13288    #[prost(int32, optional, tag="1")]
13289    pub cid: ::core::option::Option<i32>,
13290    #[prost(int64, optional, tag="2")]
13291    pub len: ::core::option::Option<i64>,
13292    #[prost(uint64, optional, tag="3")]
13293    pub total_allocated: ::core::option::Option<u64>,
13294}
13295#[derive(Clone, PartialEq, ::prost::Message)]
13296pub struct FastrpcDmaFreeFtraceEvent {
13297    #[prost(int32, optional, tag="1")]
13298    pub cid: ::core::option::Option<i32>,
13299    #[prost(uint64, optional, tag="2")]
13300    pub phys: ::core::option::Option<u64>,
13301    #[prost(uint64, optional, tag="3")]
13302    pub size: ::core::option::Option<u64>,
13303}
13304#[derive(Clone, PartialEq, ::prost::Message)]
13305pub struct FastrpcDmaAllocFtraceEvent {
13306    #[prost(int32, optional, tag="1")]
13307    pub cid: ::core::option::Option<i32>,
13308    #[prost(uint64, optional, tag="2")]
13309    pub phys: ::core::option::Option<u64>,
13310    #[prost(uint64, optional, tag="3")]
13311    pub size: ::core::option::Option<u64>,
13312    #[prost(uint64, optional, tag="4")]
13313    pub attr: ::core::option::Option<u64>,
13314    #[prost(int32, optional, tag="5")]
13315    pub mflags: ::core::option::Option<i32>,
13316}
13317#[derive(Clone, PartialEq, ::prost::Message)]
13318pub struct FastrpcDmaUnmapFtraceEvent {
13319    #[prost(int32, optional, tag="1")]
13320    pub cid: ::core::option::Option<i32>,
13321    #[prost(uint64, optional, tag="2")]
13322    pub phys: ::core::option::Option<u64>,
13323    #[prost(uint64, optional, tag="3")]
13324    pub size: ::core::option::Option<u64>,
13325}
13326#[derive(Clone, PartialEq, ::prost::Message)]
13327pub struct FastrpcDmaMapFtraceEvent {
13328    #[prost(int32, optional, tag="1")]
13329    pub cid: ::core::option::Option<i32>,
13330    #[prost(int32, optional, tag="2")]
13331    pub fd: ::core::option::Option<i32>,
13332    #[prost(uint64, optional, tag="3")]
13333    pub phys: ::core::option::Option<u64>,
13334    #[prost(uint64, optional, tag="4")]
13335    pub size: ::core::option::Option<u64>,
13336    #[prost(uint64, optional, tag="5")]
13337    pub len: ::core::option::Option<u64>,
13338    #[prost(uint32, optional, tag="6")]
13339    pub attr: ::core::option::Option<u32>,
13340    #[prost(int32, optional, tag="7")]
13341    pub mflags: ::core::option::Option<i32>,
13342}
13343// End of protos/perfetto/trace/ftrace/fastrpc.proto
13344
13345// Begin of protos/perfetto/trace/ftrace/fence.proto
13346
13347#[derive(Clone, PartialEq, ::prost::Message)]
13348pub struct FenceInitFtraceEvent {
13349    #[prost(uint32, optional, tag="1")]
13350    pub context: ::core::option::Option<u32>,
13351    #[prost(string, optional, tag="2")]
13352    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13353    #[prost(uint32, optional, tag="3")]
13354    pub seqno: ::core::option::Option<u32>,
13355    #[prost(string, optional, tag="4")]
13356    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13357}
13358#[derive(Clone, PartialEq, ::prost::Message)]
13359pub struct FenceDestroyFtraceEvent {
13360    #[prost(uint32, optional, tag="1")]
13361    pub context: ::core::option::Option<u32>,
13362    #[prost(string, optional, tag="2")]
13363    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13364    #[prost(uint32, optional, tag="3")]
13365    pub seqno: ::core::option::Option<u32>,
13366    #[prost(string, optional, tag="4")]
13367    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13368}
13369#[derive(Clone, PartialEq, ::prost::Message)]
13370pub struct FenceEnableSignalFtraceEvent {
13371    #[prost(uint32, optional, tag="1")]
13372    pub context: ::core::option::Option<u32>,
13373    #[prost(string, optional, tag="2")]
13374    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13375    #[prost(uint32, optional, tag="3")]
13376    pub seqno: ::core::option::Option<u32>,
13377    #[prost(string, optional, tag="4")]
13378    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13379}
13380#[derive(Clone, PartialEq, ::prost::Message)]
13381pub struct FenceSignaledFtraceEvent {
13382    #[prost(uint32, optional, tag="1")]
13383    pub context: ::core::option::Option<u32>,
13384    #[prost(string, optional, tag="2")]
13385    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13386    #[prost(uint32, optional, tag="3")]
13387    pub seqno: ::core::option::Option<u32>,
13388    #[prost(string, optional, tag="4")]
13389    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13390}
13391// End of protos/perfetto/trace/ftrace/fence.proto
13392
13393// Begin of protos/perfetto/trace/ftrace/filemap.proto
13394
13395#[derive(Clone, PartialEq, ::prost::Message)]
13396pub struct MmFilemapAddToPageCacheFtraceEvent {
13397    #[prost(uint64, optional, tag="1")]
13398    pub pfn: ::core::option::Option<u64>,
13399    #[prost(uint64, optional, tag="2")]
13400    pub i_ino: ::core::option::Option<u64>,
13401    #[prost(uint64, optional, tag="3")]
13402    pub index: ::core::option::Option<u64>,
13403    #[prost(uint64, optional, tag="4")]
13404    pub s_dev: ::core::option::Option<u64>,
13405    #[prost(uint64, optional, tag="5")]
13406    pub page: ::core::option::Option<u64>,
13407}
13408#[derive(Clone, PartialEq, ::prost::Message)]
13409pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13410    #[prost(uint64, optional, tag="1")]
13411    pub pfn: ::core::option::Option<u64>,
13412    #[prost(uint64, optional, tag="2")]
13413    pub i_ino: ::core::option::Option<u64>,
13414    #[prost(uint64, optional, tag="3")]
13415    pub index: ::core::option::Option<u64>,
13416    #[prost(uint64, optional, tag="4")]
13417    pub s_dev: ::core::option::Option<u64>,
13418    #[prost(uint64, optional, tag="5")]
13419    pub page: ::core::option::Option<u64>,
13420}
13421// End of protos/perfetto/trace/ftrace/filemap.proto
13422
13423// Begin of protos/perfetto/trace/ftrace/fs.proto
13424
13425#[derive(Clone, PartialEq, ::prost::Message)]
13426pub struct DoSysOpenFtraceEvent {
13427    #[prost(string, optional, tag="1")]
13428    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13429    #[prost(int32, optional, tag="2")]
13430    pub flags: ::core::option::Option<i32>,
13431    #[prost(int32, optional, tag="3")]
13432    pub mode: ::core::option::Option<i32>,
13433}
13434#[derive(Clone, PartialEq, ::prost::Message)]
13435pub struct OpenExecFtraceEvent {
13436    #[prost(string, optional, tag="1")]
13437    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13438}
13439// End of protos/perfetto/trace/ftrace/fs.proto
13440
13441// Begin of protos/perfetto/trace/ftrace/ftrace.proto
13442
13443#[derive(Clone, PartialEq, ::prost::Message)]
13444pub struct PrintFtraceEvent {
13445    #[prost(uint64, optional, tag="1")]
13446    pub ip: ::core::option::Option<u64>,
13447    #[prost(string, optional, tag="2")]
13448    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13449}
13450#[derive(Clone, PartialEq, ::prost::Message)]
13451pub struct FuncgraphEntryFtraceEvent {
13452    #[prost(int32, optional, tag="1")]
13453    pub depth: ::core::option::Option<i32>,
13454    #[prost(uint64, optional, tag="2")]
13455    pub func: ::core::option::Option<u64>,
13456}
13457#[derive(Clone, PartialEq, ::prost::Message)]
13458pub struct FuncgraphExitFtraceEvent {
13459    #[prost(uint64, optional, tag="1")]
13460    pub calltime: ::core::option::Option<u64>,
13461    #[prost(int32, optional, tag="2")]
13462    pub depth: ::core::option::Option<i32>,
13463    #[prost(uint64, optional, tag="3")]
13464    pub func: ::core::option::Option<u64>,
13465    #[prost(uint64, optional, tag="4")]
13466    pub overrun: ::core::option::Option<u64>,
13467    #[prost(uint64, optional, tag="5")]
13468    pub rettime: ::core::option::Option<u64>,
13469}
13470// End of protos/perfetto/trace/ftrace/ftrace.proto
13471
13472// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13473
13474#[derive(Clone, PartialEq, ::prost::Message)]
13475pub struct FwtpPerfettoCounterFtraceEvent {
13476    #[prost(uint64, optional, tag="1")]
13477    pub timestamp: ::core::option::Option<u64>,
13478    #[prost(uint32, optional, tag="2")]
13479    pub track_id: ::core::option::Option<u32>,
13480    #[prost(string, optional, tag="3")]
13481    pub category: ::core::option::Option<::prost::alloc::string::String>,
13482    #[prost(string, optional, tag="4")]
13483    pub name: ::core::option::Option<::prost::alloc::string::String>,
13484    #[prost(uint32, optional, tag="5")]
13485    pub value: ::core::option::Option<u32>,
13486}
13487#[derive(Clone, PartialEq, ::prost::Message)]
13488pub struct FwtpPerfettoSliceFtraceEvent {
13489    #[prost(uint64, optional, tag="1")]
13490    pub timestamp: ::core::option::Option<u64>,
13491    #[prost(uint32, optional, tag="2")]
13492    pub track_id: ::core::option::Option<u32>,
13493    #[prost(string, optional, tag="3")]
13494    pub category: ::core::option::Option<::prost::alloc::string::String>,
13495    #[prost(string, optional, tag="4")]
13496    pub name: ::core::option::Option<::prost::alloc::string::String>,
13497    #[prost(uint32, optional, tag="5")]
13498    pub begin: ::core::option::Option<u32>,
13499}
13500// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13501
13502// Begin of protos/perfetto/trace/ftrace/g2d.proto
13503
13504#[derive(Clone, PartialEq, ::prost::Message)]
13505pub struct G2dTracingMarkWriteFtraceEvent {
13506    #[prost(int32, optional, tag="1")]
13507    pub pid: ::core::option::Option<i32>,
13508    #[prost(string, optional, tag="4")]
13509    pub name: ::core::option::Option<::prost::alloc::string::String>,
13510    #[prost(uint32, optional, tag="5")]
13511    pub r#type: ::core::option::Option<u32>,
13512    #[prost(int32, optional, tag="6")]
13513    pub value: ::core::option::Option<i32>,
13514}
13515// End of protos/perfetto/trace/ftrace/g2d.proto
13516
13517// Begin of protos/perfetto/trace/ftrace/generic.proto
13518
13519/// This generic proto is used to output events in the trace
13520/// when a specific proto for that event does not exist.
13521#[derive(Clone, PartialEq, ::prost::Message)]
13522pub struct GenericFtraceEvent {
13523    #[prost(string, optional, tag="1")]
13524    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13525    #[prost(message, repeated, tag="2")]
13526    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13527}
13528/// Nested message and enum types in `GenericFtraceEvent`.
13529pub mod generic_ftrace_event {
13530    #[derive(Clone, PartialEq, ::prost::Message)]
13531    pub struct Field {
13532        #[prost(string, optional, tag="1")]
13533        pub name: ::core::option::Option<::prost::alloc::string::String>,
13534        #[prost(oneof="field::Value", tags="3, 4, 5")]
13535        pub value: ::core::option::Option<field::Value>,
13536    }
13537    /// Nested message and enum types in `Field`.
13538    pub mod field {
13539        #[derive(Clone, PartialEq, ::prost::Oneof)]
13540        pub enum Value {
13541            #[prost(string, tag="3")]
13542            StrValue(::prost::alloc::string::String),
13543            #[prost(int64, tag="4")]
13544            IntValue(i64),
13545            #[prost(uint64, tag="5")]
13546            UintValue(u64),
13547        }
13548    }
13549}
13550#[derive(Clone, PartialEq, ::prost::Message)]
13551pub struct KprobeEvent {
13552    #[prost(string, optional, tag="1")]
13553    pub name: ::core::option::Option<::prost::alloc::string::String>,
13554    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
13555    pub r#type: ::core::option::Option<i32>,
13556}
13557/// Nested message and enum types in `KprobeEvent`.
13558pub mod kprobe_event {
13559    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
13560    #[repr(i32)]
13561    pub enum KprobeType {
13562        Unknown = 0,
13563        Begin = 1,
13564        End = 2,
13565        Instant = 3,
13566    }
13567    impl KprobeType {
13568        /// String value of the enum field names used in the ProtoBuf definition.
13569        ///
13570        /// The values are not transformed in any way and thus are considered stable
13571        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13572        pub fn as_str_name(&self) -> &'static str {
13573            match self {
13574                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
13575                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
13576                KprobeType::End => "KPROBE_TYPE_END",
13577                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
13578            }
13579        }
13580    }
13581}
13582// End of protos/perfetto/trace/ftrace/generic.proto
13583
13584// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
13585
13586#[derive(Clone, PartialEq, ::prost::Message)]
13587pub struct GoogleIccEventFtraceEvent {
13588    #[prost(string, optional, tag="1")]
13589    pub event: ::core::option::Option<::prost::alloc::string::String>,
13590    #[prost(uint64, optional, tag="2")]
13591    pub timestamp: ::core::option::Option<u64>,
13592}
13593// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
13594
13595// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
13596
13597#[derive(Clone, PartialEq, ::prost::Message)]
13598pub struct GoogleIrmEventFtraceEvent {
13599    #[prost(string, optional, tag="1")]
13600    pub event: ::core::option::Option<::prost::alloc::string::String>,
13601    #[prost(uint64, optional, tag="2")]
13602    pub timestamp: ::core::option::Option<u64>,
13603}
13604// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
13605
13606// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
13607
13608#[derive(Clone, PartialEq, ::prost::Message)]
13609pub struct GpuMemTotalFtraceEvent {
13610    #[prost(uint32, optional, tag="1")]
13611    pub gpu_id: ::core::option::Option<u32>,
13612    #[prost(uint32, optional, tag="2")]
13613    pub pid: ::core::option::Option<u32>,
13614    #[prost(uint64, optional, tag="3")]
13615    pub size: ::core::option::Option<u64>,
13616}
13617// End of protos/perfetto/trace/ftrace/gpu_mem.proto
13618
13619// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13620
13621#[derive(Clone, PartialEq, ::prost::Message)]
13622pub struct DrmSchedJobFtraceEvent {
13623    #[prost(uint64, optional, tag="1")]
13624    pub entity: ::core::option::Option<u64>,
13625    #[prost(uint64, optional, tag="2")]
13626    pub fence: ::core::option::Option<u64>,
13627    #[prost(int32, optional, tag="3")]
13628    pub hw_job_count: ::core::option::Option<i32>,
13629    #[prost(uint64, optional, tag="4")]
13630    pub id: ::core::option::Option<u64>,
13631    #[prost(uint32, optional, tag="5")]
13632    pub job_count: ::core::option::Option<u32>,
13633    #[prost(string, optional, tag="6")]
13634    pub name: ::core::option::Option<::prost::alloc::string::String>,
13635}
13636#[derive(Clone, PartialEq, ::prost::Message)]
13637pub struct DrmRunJobFtraceEvent {
13638    #[prost(uint64, optional, tag="1")]
13639    pub entity: ::core::option::Option<u64>,
13640    #[prost(uint64, optional, tag="2")]
13641    pub fence: ::core::option::Option<u64>,
13642    #[prost(int32, optional, tag="3")]
13643    pub hw_job_count: ::core::option::Option<i32>,
13644    #[prost(uint64, optional, tag="4")]
13645    pub id: ::core::option::Option<u64>,
13646    #[prost(uint32, optional, tag="5")]
13647    pub job_count: ::core::option::Option<u32>,
13648    #[prost(string, optional, tag="6")]
13649    pub name: ::core::option::Option<::prost::alloc::string::String>,
13650}
13651#[derive(Clone, PartialEq, ::prost::Message)]
13652pub struct DrmSchedProcessJobFtraceEvent {
13653    #[prost(uint64, optional, tag="1")]
13654    pub fence: ::core::option::Option<u64>,
13655}
13656#[derive(Clone, PartialEq, ::prost::Message)]
13657pub struct DrmSchedJobAddDepFtraceEvent {
13658    #[prost(uint64, optional, tag="1")]
13659    pub fence_context: ::core::option::Option<u64>,
13660    #[prost(uint64, optional, tag="2")]
13661    pub fence_seqno: ::core::option::Option<u64>,
13662    #[prost(uint64, optional, tag="3")]
13663    pub ctx: ::core::option::Option<u64>,
13664    #[prost(uint64, optional, tag="4")]
13665    pub seqno: ::core::option::Option<u64>,
13666}
13667#[derive(Clone, PartialEq, ::prost::Message)]
13668pub struct DrmSchedJobDoneFtraceEvent {
13669    #[prost(uint64, optional, tag="1")]
13670    pub fence_context: ::core::option::Option<u64>,
13671    #[prost(uint64, optional, tag="2")]
13672    pub fence_seqno: ::core::option::Option<u64>,
13673}
13674#[derive(Clone, PartialEq, ::prost::Message)]
13675pub struct DrmSchedJobQueueFtraceEvent {
13676    #[prost(string, optional, tag="1")]
13677    pub name: ::core::option::Option<::prost::alloc::string::String>,
13678    #[prost(uint32, optional, tag="2")]
13679    pub job_count: ::core::option::Option<u32>,
13680    #[prost(int32, optional, tag="3")]
13681    pub hw_job_count: ::core::option::Option<i32>,
13682    #[prost(string, optional, tag="4")]
13683    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13684    #[prost(uint64, optional, tag="5")]
13685    pub fence_context: ::core::option::Option<u64>,
13686    #[prost(uint64, optional, tag="6")]
13687    pub fence_seqno: ::core::option::Option<u64>,
13688    #[prost(uint64, optional, tag="7")]
13689    pub client_id: ::core::option::Option<u64>,
13690}
13691#[derive(Clone, PartialEq, ::prost::Message)]
13692pub struct DrmSchedJobRunFtraceEvent {
13693    #[prost(string, optional, tag="1")]
13694    pub name: ::core::option::Option<::prost::alloc::string::String>,
13695    #[prost(uint32, optional, tag="2")]
13696    pub job_count: ::core::option::Option<u32>,
13697    #[prost(int32, optional, tag="3")]
13698    pub hw_job_count: ::core::option::Option<i32>,
13699    #[prost(string, optional, tag="4")]
13700    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13701    #[prost(uint64, optional, tag="5")]
13702    pub fence_context: ::core::option::Option<u64>,
13703    #[prost(uint64, optional, tag="6")]
13704    pub fence_seqno: ::core::option::Option<u64>,
13705    #[prost(uint64, optional, tag="7")]
13706    pub client_id: ::core::option::Option<u64>,
13707}
13708#[derive(Clone, PartialEq, ::prost::Message)]
13709pub struct DrmSchedJobUnschedulableFtraceEvent {
13710    #[prost(uint64, optional, tag="1")]
13711    pub fence_context: ::core::option::Option<u64>,
13712    #[prost(uint64, optional, tag="2")]
13713    pub fence_seqno: ::core::option::Option<u64>,
13714    #[prost(uint64, optional, tag="3")]
13715    pub ctx: ::core::option::Option<u64>,
13716    #[prost(uint64, optional, tag="4")]
13717    pub seqno: ::core::option::Option<u64>,
13718}
13719// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13720
13721// Begin of protos/perfetto/trace/ftrace/hyp.proto
13722
13723#[derive(Clone, PartialEq, ::prost::Message)]
13724pub struct HypEnterFtraceEvent {
13725}
13726#[derive(Clone, PartialEq, ::prost::Message)]
13727pub struct HypExitFtraceEvent {
13728}
13729#[derive(Clone, PartialEq, ::prost::Message)]
13730pub struct HostHcallFtraceEvent {
13731    #[prost(uint32, optional, tag="1")]
13732    pub id: ::core::option::Option<u32>,
13733    #[prost(uint32, optional, tag="2")]
13734    pub invalid: ::core::option::Option<u32>,
13735}
13736#[derive(Clone, PartialEq, ::prost::Message)]
13737pub struct HostSmcFtraceEvent {
13738    #[prost(uint64, optional, tag="1")]
13739    pub id: ::core::option::Option<u64>,
13740    #[prost(uint32, optional, tag="2")]
13741    pub forwarded: ::core::option::Option<u32>,
13742}
13743#[derive(Clone, PartialEq, ::prost::Message)]
13744pub struct HostMemAbortFtraceEvent {
13745    #[prost(uint64, optional, tag="1")]
13746    pub esr: ::core::option::Option<u64>,
13747    #[prost(uint64, optional, tag="2")]
13748    pub addr: ::core::option::Option<u64>,
13749}
13750#[derive(Clone, PartialEq, ::prost::Message)]
13751pub struct HostFfaCallFtraceEvent {
13752    #[prost(uint64, optional, tag="1")]
13753    pub func_id: ::core::option::Option<u64>,
13754    #[prost(uint64, optional, tag="2")]
13755    pub res_a1: ::core::option::Option<u64>,
13756    #[prost(uint64, optional, tag="3")]
13757    pub res_a2: ::core::option::Option<u64>,
13758    #[prost(uint64, optional, tag="4")]
13759    pub res_a3: ::core::option::Option<u64>,
13760    #[prost(uint64, optional, tag="5")]
13761    pub res_a4: ::core::option::Option<u64>,
13762    #[prost(int32, optional, tag="6")]
13763    pub handled: ::core::option::Option<i32>,
13764    #[prost(int32, optional, tag="7")]
13765    pub err: ::core::option::Option<i32>,
13766}
13767#[derive(Clone, PartialEq, ::prost::Message)]
13768pub struct IommuIdmapFtraceEvent {
13769    #[prost(uint64, optional, tag="1")]
13770    pub from: ::core::option::Option<u64>,
13771    #[prost(uint64, optional, tag="2")]
13772    pub to: ::core::option::Option<u64>,
13773    #[prost(int32, optional, tag="3")]
13774    pub prot: ::core::option::Option<i32>,
13775}
13776#[derive(Clone, PartialEq, ::prost::Message)]
13777pub struct PsciMemProtectFtraceEvent {
13778    #[prost(uint64, optional, tag="1")]
13779    pub count: ::core::option::Option<u64>,
13780    #[prost(uint64, optional, tag="2")]
13781    pub was: ::core::option::Option<u64>,
13782}
13783// End of protos/perfetto/trace/ftrace/hyp.proto
13784
13785// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
13786
13787#[derive(Clone, PartialEq, ::prost::Message)]
13788pub struct HypervisorHostHcallFtraceEvent {
13789    #[prost(uint32, optional, tag="1")]
13790    pub id: ::core::option::Option<u32>,
13791    #[prost(uint32, optional, tag="2")]
13792    pub invalid: ::core::option::Option<u32>,
13793}
13794#[derive(Clone, PartialEq, ::prost::Message)]
13795pub struct HypervisorHostSmcFtraceEvent {
13796    #[prost(uint64, optional, tag="1")]
13797    pub id: ::core::option::Option<u64>,
13798    #[prost(uint32, optional, tag="2")]
13799    pub forwarded: ::core::option::Option<u32>,
13800}
13801#[derive(Clone, PartialEq, ::prost::Message)]
13802pub struct HypervisorHypExitFtraceEvent {
13803}
13804#[derive(Clone, PartialEq, ::prost::Message)]
13805pub struct HypervisorIommuIdmapFtraceEvent {
13806    #[prost(uint64, optional, tag="1")]
13807    pub from: ::core::option::Option<u64>,
13808    #[prost(uint64, optional, tag="2")]
13809    pub to: ::core::option::Option<u64>,
13810    #[prost(int32, optional, tag="3")]
13811    pub prot: ::core::option::Option<i32>,
13812}
13813#[derive(Clone, PartialEq, ::prost::Message)]
13814pub struct HypervisorPsciMemProtectFtraceEvent {
13815    #[prost(uint64, optional, tag="1")]
13816    pub count: ::core::option::Option<u64>,
13817    #[prost(uint64, optional, tag="2")]
13818    pub was: ::core::option::Option<u64>,
13819}
13820#[derive(Clone, PartialEq, ::prost::Message)]
13821pub struct HypervisorHostMemAbortFtraceEvent {
13822    #[prost(uint64, optional, tag="1")]
13823    pub esr: ::core::option::Option<u64>,
13824    #[prost(uint64, optional, tag="2")]
13825    pub addr: ::core::option::Option<u64>,
13826}
13827#[derive(Clone, PartialEq, ::prost::Message)]
13828pub struct HypervisorHypEnterFtraceEvent {
13829}
13830#[derive(Clone, PartialEq, ::prost::Message)]
13831pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13832    #[prost(uint32, optional, tag="1")]
13833    pub map: ::core::option::Option<u32>,
13834}
13835#[derive(Clone, PartialEq, ::prost::Message)]
13836pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13837    #[prost(uint64, optional, tag="1")]
13838    pub esr: ::core::option::Option<u64>,
13839}
13840// End of protos/perfetto/trace/ftrace/hypervisor.proto
13841
13842// Begin of protos/perfetto/trace/ftrace/i2c.proto
13843
13844#[derive(Clone, PartialEq, ::prost::Message)]
13845pub struct I2cReadFtraceEvent {
13846    #[prost(int32, optional, tag="1")]
13847    pub adapter_nr: ::core::option::Option<i32>,
13848    #[prost(uint32, optional, tag="2")]
13849    pub msg_nr: ::core::option::Option<u32>,
13850    #[prost(uint32, optional, tag="3")]
13851    pub addr: ::core::option::Option<u32>,
13852    #[prost(uint32, optional, tag="4")]
13853    pub flags: ::core::option::Option<u32>,
13854    #[prost(uint32, optional, tag="5")]
13855    pub len: ::core::option::Option<u32>,
13856}
13857#[derive(Clone, PartialEq, ::prost::Message)]
13858pub struct I2cWriteFtraceEvent {
13859    #[prost(int32, optional, tag="1")]
13860    pub adapter_nr: ::core::option::Option<i32>,
13861    #[prost(uint32, optional, tag="2")]
13862    pub msg_nr: ::core::option::Option<u32>,
13863    #[prost(uint32, optional, tag="3")]
13864    pub addr: ::core::option::Option<u32>,
13865    #[prost(uint32, optional, tag="4")]
13866    pub flags: ::core::option::Option<u32>,
13867    #[prost(uint32, optional, tag="5")]
13868    pub len: ::core::option::Option<u32>,
13869    #[prost(bytes="vec", optional, tag="7")]
13870    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13871}
13872#[derive(Clone, PartialEq, ::prost::Message)]
13873pub struct I2cResultFtraceEvent {
13874    #[prost(int32, optional, tag="1")]
13875    pub adapter_nr: ::core::option::Option<i32>,
13876    #[prost(uint32, optional, tag="2")]
13877    pub nr_msgs: ::core::option::Option<u32>,
13878    #[prost(int32, optional, tag="3")]
13879    pub ret: ::core::option::Option<i32>,
13880}
13881#[derive(Clone, PartialEq, ::prost::Message)]
13882pub struct I2cReplyFtraceEvent {
13883    #[prost(int32, optional, tag="1")]
13884    pub adapter_nr: ::core::option::Option<i32>,
13885    #[prost(uint32, optional, tag="2")]
13886    pub msg_nr: ::core::option::Option<u32>,
13887    #[prost(uint32, optional, tag="3")]
13888    pub addr: ::core::option::Option<u32>,
13889    #[prost(uint32, optional, tag="4")]
13890    pub flags: ::core::option::Option<u32>,
13891    #[prost(uint32, optional, tag="5")]
13892    pub len: ::core::option::Option<u32>,
13893    #[prost(bytes="vec", optional, tag="7")]
13894    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13895}
13896#[derive(Clone, PartialEq, ::prost::Message)]
13897pub struct SmbusReadFtraceEvent {
13898    #[prost(int32, optional, tag="1")]
13899    pub adapter_nr: ::core::option::Option<i32>,
13900    #[prost(uint32, optional, tag="2")]
13901    pub flags: ::core::option::Option<u32>,
13902    #[prost(uint32, optional, tag="3")]
13903    pub addr: ::core::option::Option<u32>,
13904    #[prost(uint32, optional, tag="4")]
13905    pub command: ::core::option::Option<u32>,
13906    #[prost(uint32, optional, tag="5")]
13907    pub protocol: ::core::option::Option<u32>,
13908}
13909#[derive(Clone, PartialEq, ::prost::Message)]
13910pub struct SmbusWriteFtraceEvent {
13911    #[prost(int32, optional, tag="1")]
13912    pub adapter_nr: ::core::option::Option<i32>,
13913    #[prost(uint32, optional, tag="2")]
13914    pub addr: ::core::option::Option<u32>,
13915    #[prost(uint32, optional, tag="3")]
13916    pub flags: ::core::option::Option<u32>,
13917    #[prost(uint32, optional, tag="4")]
13918    pub command: ::core::option::Option<u32>,
13919    #[prost(uint32, optional, tag="5")]
13920    pub len: ::core::option::Option<u32>,
13921    #[prost(uint32, optional, tag="6")]
13922    pub protocol: ::core::option::Option<u32>,
13923}
13924#[derive(Clone, PartialEq, ::prost::Message)]
13925pub struct SmbusResultFtraceEvent {
13926    #[prost(int32, optional, tag="1")]
13927    pub adapter_nr: ::core::option::Option<i32>,
13928    #[prost(uint32, optional, tag="2")]
13929    pub addr: ::core::option::Option<u32>,
13930    #[prost(uint32, optional, tag="3")]
13931    pub flags: ::core::option::Option<u32>,
13932    #[prost(uint32, optional, tag="4")]
13933    pub read_write: ::core::option::Option<u32>,
13934    #[prost(uint32, optional, tag="5")]
13935    pub command: ::core::option::Option<u32>,
13936    #[prost(int32, optional, tag="6")]
13937    pub res: ::core::option::Option<i32>,
13938    #[prost(uint32, optional, tag="7")]
13939    pub protocol: ::core::option::Option<u32>,
13940}
13941#[derive(Clone, PartialEq, ::prost::Message)]
13942pub struct SmbusReplyFtraceEvent {
13943    #[prost(int32, optional, tag="1")]
13944    pub adapter_nr: ::core::option::Option<i32>,
13945    #[prost(uint32, optional, tag="2")]
13946    pub addr: ::core::option::Option<u32>,
13947    #[prost(uint32, optional, tag="3")]
13948    pub flags: ::core::option::Option<u32>,
13949    #[prost(uint32, optional, tag="4")]
13950    pub command: ::core::option::Option<u32>,
13951    #[prost(uint32, optional, tag="5")]
13952    pub len: ::core::option::Option<u32>,
13953    #[prost(uint32, optional, tag="6")]
13954    pub protocol: ::core::option::Option<u32>,
13955}
13956// End of protos/perfetto/trace/ftrace/i2c.proto
13957
13958// Begin of protos/perfetto/trace/ftrace/ion.proto
13959
13960#[derive(Clone, PartialEq, ::prost::Message)]
13961pub struct IonStatFtraceEvent {
13962    #[prost(uint32, optional, tag="1")]
13963    pub buffer_id: ::core::option::Option<u32>,
13964    #[prost(int64, optional, tag="2")]
13965    pub len: ::core::option::Option<i64>,
13966    #[prost(uint64, optional, tag="3")]
13967    pub total_allocated: ::core::option::Option<u64>,
13968}
13969// End of protos/perfetto/trace/ftrace/ion.proto
13970
13971// Begin of protos/perfetto/trace/ftrace/ipi.proto
13972
13973#[derive(Clone, PartialEq, ::prost::Message)]
13974pub struct IpiEntryFtraceEvent {
13975    #[prost(string, optional, tag="1")]
13976    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13977}
13978#[derive(Clone, PartialEq, ::prost::Message)]
13979pub struct IpiExitFtraceEvent {
13980    #[prost(string, optional, tag="1")]
13981    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13982}
13983#[derive(Clone, PartialEq, ::prost::Message)]
13984pub struct IpiRaiseFtraceEvent {
13985    #[prost(uint32, optional, tag="1")]
13986    pub target_cpus: ::core::option::Option<u32>,
13987    #[prost(string, optional, tag="2")]
13988    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13989}
13990// End of protos/perfetto/trace/ftrace/ipi.proto
13991
13992// Begin of protos/perfetto/trace/ftrace/irq.proto
13993
13994#[derive(Clone, PartialEq, ::prost::Message)]
13995pub struct SoftirqEntryFtraceEvent {
13996    #[prost(uint32, optional, tag="1")]
13997    pub vec: ::core::option::Option<u32>,
13998}
13999#[derive(Clone, PartialEq, ::prost::Message)]
14000pub struct SoftirqExitFtraceEvent {
14001    #[prost(uint32, optional, tag="1")]
14002    pub vec: ::core::option::Option<u32>,
14003}
14004#[derive(Clone, PartialEq, ::prost::Message)]
14005pub struct SoftirqRaiseFtraceEvent {
14006    #[prost(uint32, optional, tag="1")]
14007    pub vec: ::core::option::Option<u32>,
14008}
14009#[derive(Clone, PartialEq, ::prost::Message)]
14010pub struct IrqHandlerEntryFtraceEvent {
14011    #[prost(int32, optional, tag="1")]
14012    pub irq: ::core::option::Option<i32>,
14013    #[prost(string, optional, tag="2")]
14014    pub name: ::core::option::Option<::prost::alloc::string::String>,
14015    #[prost(uint32, optional, tag="3")]
14016    pub handler: ::core::option::Option<u32>,
14017}
14018#[derive(Clone, PartialEq, ::prost::Message)]
14019pub struct IrqHandlerExitFtraceEvent {
14020    #[prost(int32, optional, tag="1")]
14021    pub irq: ::core::option::Option<i32>,
14022    #[prost(int32, optional, tag="2")]
14023    pub ret: ::core::option::Option<i32>,
14024}
14025// End of protos/perfetto/trace/ftrace/irq.proto
14026
14027// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
14028
14029#[derive(Clone, PartialEq, ::prost::Message)]
14030pub struct LocalTimerEntryFtraceEvent {
14031    #[prost(int32, optional, tag="1")]
14032    pub vector: ::core::option::Option<i32>,
14033}
14034#[derive(Clone, PartialEq, ::prost::Message)]
14035pub struct LocalTimerExitFtraceEvent {
14036    #[prost(int32, optional, tag="1")]
14037    pub vector: ::core::option::Option<i32>,
14038}
14039// End of protos/perfetto/trace/ftrace/irq_vectors.proto
14040
14041// Begin of protos/perfetto/trace/ftrace/kgsl.proto
14042
14043#[derive(Clone, PartialEq, ::prost::Message)]
14044pub struct KgslGpuFrequencyFtraceEvent {
14045    #[prost(uint32, optional, tag="1")]
14046    pub gpu_freq: ::core::option::Option<u32>,
14047    #[prost(uint32, optional, tag="2")]
14048    pub gpu_id: ::core::option::Option<u32>,
14049}
14050#[derive(Clone, PartialEq, ::prost::Message)]
14051pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
14052    #[prost(uint32, optional, tag="1")]
14053    pub id: ::core::option::Option<u32>,
14054    #[prost(uint32, optional, tag="2")]
14055    pub timestamp: ::core::option::Option<u32>,
14056    #[prost(uint32, optional, tag="3")]
14057    pub queued: ::core::option::Option<u32>,
14058    #[prost(uint32, optional, tag="4")]
14059    pub flags: ::core::option::Option<u32>,
14060    #[prost(uint32, optional, tag="5")]
14061    pub prio: ::core::option::Option<u32>,
14062}
14063#[derive(Clone, PartialEq, ::prost::Message)]
14064pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
14065    #[prost(uint32, optional, tag="1")]
14066    pub id: ::core::option::Option<u32>,
14067    #[prost(uint32, optional, tag="2")]
14068    pub timestamp: ::core::option::Option<u32>,
14069    #[prost(int64, optional, tag="3")]
14070    pub inflight: ::core::option::Option<i64>,
14071    #[prost(uint32, optional, tag="4")]
14072    pub flags: ::core::option::Option<u32>,
14073    #[prost(uint64, optional, tag="5")]
14074    pub ticks: ::core::option::Option<u64>,
14075    #[prost(uint64, optional, tag="6")]
14076    pub secs: ::core::option::Option<u64>,
14077    #[prost(uint64, optional, tag="7")]
14078    pub usecs: ::core::option::Option<u64>,
14079    #[prost(int32, optional, tag="8")]
14080    pub prio: ::core::option::Option<i32>,
14081    #[prost(int32, optional, tag="9")]
14082    pub rb_id: ::core::option::Option<i32>,
14083    #[prost(uint32, optional, tag="10")]
14084    pub rptr: ::core::option::Option<u32>,
14085    #[prost(uint32, optional, tag="11")]
14086    pub wptr: ::core::option::Option<u32>,
14087    #[prost(int32, optional, tag="12")]
14088    pub q_inflight: ::core::option::Option<i32>,
14089    #[prost(int32, optional, tag="13")]
14090    pub dispatch_queue: ::core::option::Option<i32>,
14091}
14092#[derive(Clone, PartialEq, ::prost::Message)]
14093pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
14094    #[prost(uint32, optional, tag="1")]
14095    pub id: ::core::option::Option<u32>,
14096    #[prost(uint32, optional, tag="2")]
14097    pub timestamp: ::core::option::Option<u32>,
14098    #[prost(uint64, optional, tag="3")]
14099    pub ticks: ::core::option::Option<u64>,
14100    #[prost(int32, optional, tag="4")]
14101    pub prio: ::core::option::Option<i32>,
14102}
14103#[derive(Clone, PartialEq, ::prost::Message)]
14104pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
14105    #[prost(uint32, optional, tag="1")]
14106    pub id: ::core::option::Option<u32>,
14107    #[prost(uint32, optional, tag="2")]
14108    pub timestamp: ::core::option::Option<u32>,
14109    #[prost(int64, optional, tag="3")]
14110    pub inflight: ::core::option::Option<i64>,
14111    #[prost(uint32, optional, tag="4")]
14112    pub recovery: ::core::option::Option<u32>,
14113    #[prost(uint32, optional, tag="5")]
14114    pub flags: ::core::option::Option<u32>,
14115    #[prost(uint64, optional, tag="6")]
14116    pub start: ::core::option::Option<u64>,
14117    #[prost(uint64, optional, tag="7")]
14118    pub retire: ::core::option::Option<u64>,
14119    #[prost(int32, optional, tag="8")]
14120    pub prio: ::core::option::Option<i32>,
14121    #[prost(int32, optional, tag="9")]
14122    pub rb_id: ::core::option::Option<i32>,
14123    #[prost(uint32, optional, tag="10")]
14124    pub rptr: ::core::option::Option<u32>,
14125    #[prost(uint32, optional, tag="11")]
14126    pub wptr: ::core::option::Option<u32>,
14127    #[prost(int32, optional, tag="12")]
14128    pub q_inflight: ::core::option::Option<i32>,
14129    #[prost(uint64, optional, tag="13")]
14130    pub fault_recovery: ::core::option::Option<u64>,
14131    #[prost(uint32, optional, tag="14")]
14132    pub dispatch_queue: ::core::option::Option<u32>,
14133    #[prost(uint64, optional, tag="15")]
14134    pub submitted_to_rb: ::core::option::Option<u64>,
14135    #[prost(uint64, optional, tag="16")]
14136    pub retired_on_gmu: ::core::option::Option<u64>,
14137    #[prost(uint64, optional, tag="17")]
14138    pub active: ::core::option::Option<u64>,
14139}
14140// End of protos/perfetto/trace/ftrace/kgsl.proto
14141
14142// Begin of protos/perfetto/trace/ftrace/kmem.proto
14143
14144#[derive(Clone, PartialEq, ::prost::Message)]
14145pub struct AllocPagesIommuEndFtraceEvent {
14146    #[prost(uint32, optional, tag="1")]
14147    pub gfp_flags: ::core::option::Option<u32>,
14148    #[prost(uint32, optional, tag="2")]
14149    pub order: ::core::option::Option<u32>,
14150}
14151#[derive(Clone, PartialEq, ::prost::Message)]
14152pub struct AllocPagesIommuFailFtraceEvent {
14153    #[prost(uint32, optional, tag="1")]
14154    pub gfp_flags: ::core::option::Option<u32>,
14155    #[prost(uint32, optional, tag="2")]
14156    pub order: ::core::option::Option<u32>,
14157}
14158#[derive(Clone, PartialEq, ::prost::Message)]
14159pub struct AllocPagesIommuStartFtraceEvent {
14160    #[prost(uint32, optional, tag="1")]
14161    pub gfp_flags: ::core::option::Option<u32>,
14162    #[prost(uint32, optional, tag="2")]
14163    pub order: ::core::option::Option<u32>,
14164}
14165#[derive(Clone, PartialEq, ::prost::Message)]
14166pub struct AllocPagesSysEndFtraceEvent {
14167    #[prost(uint32, optional, tag="1")]
14168    pub gfp_flags: ::core::option::Option<u32>,
14169    #[prost(uint32, optional, tag="2")]
14170    pub order: ::core::option::Option<u32>,
14171}
14172#[derive(Clone, PartialEq, ::prost::Message)]
14173pub struct AllocPagesSysFailFtraceEvent {
14174    #[prost(uint32, optional, tag="1")]
14175    pub gfp_flags: ::core::option::Option<u32>,
14176    #[prost(uint32, optional, tag="2")]
14177    pub order: ::core::option::Option<u32>,
14178}
14179#[derive(Clone, PartialEq, ::prost::Message)]
14180pub struct AllocPagesSysStartFtraceEvent {
14181    #[prost(uint32, optional, tag="1")]
14182    pub gfp_flags: ::core::option::Option<u32>,
14183    #[prost(uint32, optional, tag="2")]
14184    pub order: ::core::option::Option<u32>,
14185}
14186#[derive(Clone, PartialEq, ::prost::Message)]
14187pub struct DmaAllocContiguousRetryFtraceEvent {
14188    #[prost(int32, optional, tag="1")]
14189    pub tries: ::core::option::Option<i32>,
14190}
14191#[derive(Clone, PartialEq, ::prost::Message)]
14192pub struct IommuMapRangeFtraceEvent {
14193    #[prost(uint64, optional, tag="1")]
14194    pub chunk_size: ::core::option::Option<u64>,
14195    #[prost(uint64, optional, tag="2")]
14196    pub len: ::core::option::Option<u64>,
14197    #[prost(uint64, optional, tag="3")]
14198    pub pa: ::core::option::Option<u64>,
14199    #[prost(uint64, optional, tag="4")]
14200    pub va: ::core::option::Option<u64>,
14201}
14202#[derive(Clone, PartialEq, ::prost::Message)]
14203pub struct IommuSecPtblMapRangeEndFtraceEvent {
14204    #[prost(uint64, optional, tag="1")]
14205    pub len: ::core::option::Option<u64>,
14206    #[prost(int32, optional, tag="2")]
14207    pub num: ::core::option::Option<i32>,
14208    #[prost(uint32, optional, tag="3")]
14209    pub pa: ::core::option::Option<u32>,
14210    #[prost(int32, optional, tag="4")]
14211    pub sec_id: ::core::option::Option<i32>,
14212    #[prost(uint64, optional, tag="5")]
14213    pub va: ::core::option::Option<u64>,
14214}
14215#[derive(Clone, PartialEq, ::prost::Message)]
14216pub struct IommuSecPtblMapRangeStartFtraceEvent {
14217    #[prost(uint64, optional, tag="1")]
14218    pub len: ::core::option::Option<u64>,
14219    #[prost(int32, optional, tag="2")]
14220    pub num: ::core::option::Option<i32>,
14221    #[prost(uint32, optional, tag="3")]
14222    pub pa: ::core::option::Option<u32>,
14223    #[prost(int32, optional, tag="4")]
14224    pub sec_id: ::core::option::Option<i32>,
14225    #[prost(uint64, optional, tag="5")]
14226    pub va: ::core::option::Option<u64>,
14227}
14228#[derive(Clone, PartialEq, ::prost::Message)]
14229pub struct IonAllocBufferEndFtraceEvent {
14230    #[prost(string, optional, tag="1")]
14231    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14232    #[prost(uint32, optional, tag="2")]
14233    pub flags: ::core::option::Option<u32>,
14234    #[prost(string, optional, tag="3")]
14235    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14236    #[prost(uint64, optional, tag="4")]
14237    pub len: ::core::option::Option<u64>,
14238    #[prost(uint32, optional, tag="5")]
14239    pub mask: ::core::option::Option<u32>,
14240}
14241#[derive(Clone, PartialEq, ::prost::Message)]
14242pub struct IonAllocBufferFailFtraceEvent {
14243    #[prost(string, optional, tag="1")]
14244    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14245    #[prost(int64, optional, tag="2")]
14246    pub error: ::core::option::Option<i64>,
14247    #[prost(uint32, optional, tag="3")]
14248    pub flags: ::core::option::Option<u32>,
14249    #[prost(string, optional, tag="4")]
14250    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14251    #[prost(uint64, optional, tag="5")]
14252    pub len: ::core::option::Option<u64>,
14253    #[prost(uint32, optional, tag="6")]
14254    pub mask: ::core::option::Option<u32>,
14255}
14256#[derive(Clone, PartialEq, ::prost::Message)]
14257pub struct IonAllocBufferFallbackFtraceEvent {
14258    #[prost(string, optional, tag="1")]
14259    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14260    #[prost(int64, optional, tag="2")]
14261    pub error: ::core::option::Option<i64>,
14262    #[prost(uint32, optional, tag="3")]
14263    pub flags: ::core::option::Option<u32>,
14264    #[prost(string, optional, tag="4")]
14265    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14266    #[prost(uint64, optional, tag="5")]
14267    pub len: ::core::option::Option<u64>,
14268    #[prost(uint32, optional, tag="6")]
14269    pub mask: ::core::option::Option<u32>,
14270}
14271#[derive(Clone, PartialEq, ::prost::Message)]
14272pub struct IonAllocBufferStartFtraceEvent {
14273    #[prost(string, optional, tag="1")]
14274    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14275    #[prost(uint32, optional, tag="2")]
14276    pub flags: ::core::option::Option<u32>,
14277    #[prost(string, optional, tag="3")]
14278    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14279    #[prost(uint64, optional, tag="4")]
14280    pub len: ::core::option::Option<u64>,
14281    #[prost(uint32, optional, tag="5")]
14282    pub mask: ::core::option::Option<u32>,
14283}
14284#[derive(Clone, PartialEq, ::prost::Message)]
14285pub struct IonCpAllocRetryFtraceEvent {
14286    #[prost(int32, optional, tag="1")]
14287    pub tries: ::core::option::Option<i32>,
14288}
14289#[derive(Clone, PartialEq, ::prost::Message)]
14290pub struct IonCpSecureBufferEndFtraceEvent {
14291    #[prost(uint64, optional, tag="1")]
14292    pub align: ::core::option::Option<u64>,
14293    #[prost(uint64, optional, tag="2")]
14294    pub flags: ::core::option::Option<u64>,
14295    #[prost(string, optional, tag="3")]
14296    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14297    #[prost(uint64, optional, tag="4")]
14298    pub len: ::core::option::Option<u64>,
14299}
14300#[derive(Clone, PartialEq, ::prost::Message)]
14301pub struct IonCpSecureBufferStartFtraceEvent {
14302    #[prost(uint64, optional, tag="1")]
14303    pub align: ::core::option::Option<u64>,
14304    #[prost(uint64, optional, tag="2")]
14305    pub flags: ::core::option::Option<u64>,
14306    #[prost(string, optional, tag="3")]
14307    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14308    #[prost(uint64, optional, tag="4")]
14309    pub len: ::core::option::Option<u64>,
14310}
14311#[derive(Clone, PartialEq, ::prost::Message)]
14312pub struct IonPrefetchingFtraceEvent {
14313    #[prost(uint64, optional, tag="1")]
14314    pub len: ::core::option::Option<u64>,
14315}
14316#[derive(Clone, PartialEq, ::prost::Message)]
14317pub struct IonSecureCmaAddToPoolEndFtraceEvent {
14318    #[prost(uint32, optional, tag="1")]
14319    pub is_prefetch: ::core::option::Option<u32>,
14320    #[prost(uint64, optional, tag="2")]
14321    pub len: ::core::option::Option<u64>,
14322    #[prost(int32, optional, tag="3")]
14323    pub pool_total: ::core::option::Option<i32>,
14324}
14325#[derive(Clone, PartialEq, ::prost::Message)]
14326pub struct IonSecureCmaAddToPoolStartFtraceEvent {
14327    #[prost(uint32, optional, tag="1")]
14328    pub is_prefetch: ::core::option::Option<u32>,
14329    #[prost(uint64, optional, tag="2")]
14330    pub len: ::core::option::Option<u64>,
14331    #[prost(int32, optional, tag="3")]
14332    pub pool_total: ::core::option::Option<i32>,
14333}
14334#[derive(Clone, PartialEq, ::prost::Message)]
14335pub struct IonSecureCmaAllocateEndFtraceEvent {
14336    #[prost(uint64, optional, tag="1")]
14337    pub align: ::core::option::Option<u64>,
14338    #[prost(uint64, optional, tag="2")]
14339    pub flags: ::core::option::Option<u64>,
14340    #[prost(string, optional, tag="3")]
14341    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14342    #[prost(uint64, optional, tag="4")]
14343    pub len: ::core::option::Option<u64>,
14344}
14345#[derive(Clone, PartialEq, ::prost::Message)]
14346pub struct IonSecureCmaAllocateStartFtraceEvent {
14347    #[prost(uint64, optional, tag="1")]
14348    pub align: ::core::option::Option<u64>,
14349    #[prost(uint64, optional, tag="2")]
14350    pub flags: ::core::option::Option<u64>,
14351    #[prost(string, optional, tag="3")]
14352    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14353    #[prost(uint64, optional, tag="4")]
14354    pub len: ::core::option::Option<u64>,
14355}
14356#[derive(Clone, PartialEq, ::prost::Message)]
14357pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
14358    #[prost(uint64, optional, tag="1")]
14359    pub drained_size: ::core::option::Option<u64>,
14360    #[prost(uint64, optional, tag="2")]
14361    pub skipped_size: ::core::option::Option<u64>,
14362}
14363#[derive(Clone, PartialEq, ::prost::Message)]
14364pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
14365    #[prost(uint64, optional, tag="1")]
14366    pub drained_size: ::core::option::Option<u64>,
14367    #[prost(uint64, optional, tag="2")]
14368    pub skipped_size: ::core::option::Option<u64>,
14369}
14370#[derive(Clone, PartialEq, ::prost::Message)]
14371pub struct KfreeFtraceEvent {
14372    #[prost(uint64, optional, tag="1")]
14373    pub call_site: ::core::option::Option<u64>,
14374    #[prost(uint64, optional, tag="2")]
14375    pub ptr: ::core::option::Option<u64>,
14376}
14377#[derive(Clone, PartialEq, ::prost::Message)]
14378pub struct KmallocFtraceEvent {
14379    #[prost(uint64, optional, tag="1")]
14380    pub bytes_alloc: ::core::option::Option<u64>,
14381    #[prost(uint64, optional, tag="2")]
14382    pub bytes_req: ::core::option::Option<u64>,
14383    #[prost(uint64, optional, tag="3")]
14384    pub call_site: ::core::option::Option<u64>,
14385    #[prost(uint32, optional, tag="4")]
14386    pub gfp_flags: ::core::option::Option<u32>,
14387    #[prost(uint64, optional, tag="5")]
14388    pub ptr: ::core::option::Option<u64>,
14389}
14390#[derive(Clone, PartialEq, ::prost::Message)]
14391pub struct KmallocNodeFtraceEvent {
14392    #[prost(uint64, optional, tag="1")]
14393    pub bytes_alloc: ::core::option::Option<u64>,
14394    #[prost(uint64, optional, tag="2")]
14395    pub bytes_req: ::core::option::Option<u64>,
14396    #[prost(uint64, optional, tag="3")]
14397    pub call_site: ::core::option::Option<u64>,
14398    #[prost(uint32, optional, tag="4")]
14399    pub gfp_flags: ::core::option::Option<u32>,
14400    #[prost(int32, optional, tag="5")]
14401    pub node: ::core::option::Option<i32>,
14402    #[prost(uint64, optional, tag="6")]
14403    pub ptr: ::core::option::Option<u64>,
14404}
14405#[derive(Clone, PartialEq, ::prost::Message)]
14406pub struct KmemCacheAllocFtraceEvent {
14407    #[prost(uint64, optional, tag="1")]
14408    pub bytes_alloc: ::core::option::Option<u64>,
14409    #[prost(uint64, optional, tag="2")]
14410    pub bytes_req: ::core::option::Option<u64>,
14411    #[prost(uint64, optional, tag="3")]
14412    pub call_site: ::core::option::Option<u64>,
14413    #[prost(uint32, optional, tag="4")]
14414    pub gfp_flags: ::core::option::Option<u32>,
14415    #[prost(uint64, optional, tag="5")]
14416    pub ptr: ::core::option::Option<u64>,
14417}
14418#[derive(Clone, PartialEq, ::prost::Message)]
14419pub struct KmemCacheAllocNodeFtraceEvent {
14420    #[prost(uint64, optional, tag="1")]
14421    pub bytes_alloc: ::core::option::Option<u64>,
14422    #[prost(uint64, optional, tag="2")]
14423    pub bytes_req: ::core::option::Option<u64>,
14424    #[prost(uint64, optional, tag="3")]
14425    pub call_site: ::core::option::Option<u64>,
14426    #[prost(uint32, optional, tag="4")]
14427    pub gfp_flags: ::core::option::Option<u32>,
14428    #[prost(int32, optional, tag="5")]
14429    pub node: ::core::option::Option<i32>,
14430    #[prost(uint64, optional, tag="6")]
14431    pub ptr: ::core::option::Option<u64>,
14432}
14433#[derive(Clone, PartialEq, ::prost::Message)]
14434pub struct KmemCacheFreeFtraceEvent {
14435    #[prost(uint64, optional, tag="1")]
14436    pub call_site: ::core::option::Option<u64>,
14437    #[prost(uint64, optional, tag="2")]
14438    pub ptr: ::core::option::Option<u64>,
14439}
14440#[derive(Clone, PartialEq, ::prost::Message)]
14441pub struct MigratePagesEndFtraceEvent {
14442    #[prost(int32, optional, tag="1")]
14443    pub mode: ::core::option::Option<i32>,
14444}
14445#[derive(Clone, PartialEq, ::prost::Message)]
14446pub struct MigratePagesStartFtraceEvent {
14447    #[prost(int32, optional, tag="1")]
14448    pub mode: ::core::option::Option<i32>,
14449}
14450#[derive(Clone, PartialEq, ::prost::Message)]
14451pub struct MigrateRetryFtraceEvent {
14452    #[prost(int32, optional, tag="1")]
14453    pub tries: ::core::option::Option<i32>,
14454}
14455#[derive(Clone, PartialEq, ::prost::Message)]
14456pub struct MmPageAllocFtraceEvent {
14457    #[prost(uint32, optional, tag="1")]
14458    pub gfp_flags: ::core::option::Option<u32>,
14459    #[prost(int32, optional, tag="2")]
14460    pub migratetype: ::core::option::Option<i32>,
14461    #[prost(uint32, optional, tag="3")]
14462    pub order: ::core::option::Option<u32>,
14463    #[prost(uint64, optional, tag="4")]
14464    pub page: ::core::option::Option<u64>,
14465    #[prost(uint64, optional, tag="5")]
14466    pub pfn: ::core::option::Option<u64>,
14467}
14468#[derive(Clone, PartialEq, ::prost::Message)]
14469pub struct MmPageAllocExtfragFtraceEvent {
14470    #[prost(int32, optional, tag="1")]
14471    pub alloc_migratetype: ::core::option::Option<i32>,
14472    #[prost(int32, optional, tag="2")]
14473    pub alloc_order: ::core::option::Option<i32>,
14474    #[prost(int32, optional, tag="3")]
14475    pub fallback_migratetype: ::core::option::Option<i32>,
14476    #[prost(int32, optional, tag="4")]
14477    pub fallback_order: ::core::option::Option<i32>,
14478    #[prost(uint64, optional, tag="5")]
14479    pub page: ::core::option::Option<u64>,
14480    #[prost(int32, optional, tag="6")]
14481    pub change_ownership: ::core::option::Option<i32>,
14482    #[prost(uint64, optional, tag="7")]
14483    pub pfn: ::core::option::Option<u64>,
14484}
14485#[derive(Clone, PartialEq, ::prost::Message)]
14486pub struct MmPageAllocZoneLockedFtraceEvent {
14487    #[prost(int32, optional, tag="1")]
14488    pub migratetype: ::core::option::Option<i32>,
14489    #[prost(uint32, optional, tag="2")]
14490    pub order: ::core::option::Option<u32>,
14491    #[prost(uint64, optional, tag="3")]
14492    pub page: ::core::option::Option<u64>,
14493    #[prost(uint64, optional, tag="4")]
14494    pub pfn: ::core::option::Option<u64>,
14495}
14496#[derive(Clone, PartialEq, ::prost::Message)]
14497pub struct MmPageFreeFtraceEvent {
14498    #[prost(uint32, optional, tag="1")]
14499    pub order: ::core::option::Option<u32>,
14500    #[prost(uint64, optional, tag="2")]
14501    pub page: ::core::option::Option<u64>,
14502    #[prost(uint64, optional, tag="3")]
14503    pub pfn: ::core::option::Option<u64>,
14504}
14505#[derive(Clone, PartialEq, ::prost::Message)]
14506pub struct MmPageFreeBatchedFtraceEvent {
14507    #[prost(int32, optional, tag="1")]
14508    pub cold: ::core::option::Option<i32>,
14509    #[prost(uint64, optional, tag="2")]
14510    pub page: ::core::option::Option<u64>,
14511    #[prost(uint64, optional, tag="3")]
14512    pub pfn: ::core::option::Option<u64>,
14513}
14514#[derive(Clone, PartialEq, ::prost::Message)]
14515pub struct MmPagePcpuDrainFtraceEvent {
14516    #[prost(int32, optional, tag="1")]
14517    pub migratetype: ::core::option::Option<i32>,
14518    #[prost(uint32, optional, tag="2")]
14519    pub order: ::core::option::Option<u32>,
14520    #[prost(uint64, optional, tag="3")]
14521    pub page: ::core::option::Option<u64>,
14522    #[prost(uint64, optional, tag="4")]
14523    pub pfn: ::core::option::Option<u64>,
14524}
14525#[derive(Clone, PartialEq, ::prost::Message)]
14526pub struct RssStatFtraceEvent {
14527    #[prost(int32, optional, tag="1")]
14528    pub member: ::core::option::Option<i32>,
14529    #[prost(int64, optional, tag="2")]
14530    pub size: ::core::option::Option<i64>,
14531    #[prost(uint32, optional, tag="3")]
14532    pub curr: ::core::option::Option<u32>,
14533    #[prost(uint32, optional, tag="4")]
14534    pub mm_id: ::core::option::Option<u32>,
14535}
14536#[derive(Clone, PartialEq, ::prost::Message)]
14537pub struct IonHeapShrinkFtraceEvent {
14538    #[prost(string, optional, tag="1")]
14539    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14540    #[prost(uint64, optional, tag="2")]
14541    pub len: ::core::option::Option<u64>,
14542    #[prost(int64, optional, tag="3")]
14543    pub total_allocated: ::core::option::Option<i64>,
14544}
14545#[derive(Clone, PartialEq, ::prost::Message)]
14546pub struct IonHeapGrowFtraceEvent {
14547    #[prost(string, optional, tag="1")]
14548    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14549    #[prost(uint64, optional, tag="2")]
14550    pub len: ::core::option::Option<u64>,
14551    #[prost(int64, optional, tag="3")]
14552    pub total_allocated: ::core::option::Option<i64>,
14553}
14554#[derive(Clone, PartialEq, ::prost::Message)]
14555pub struct IonBufferCreateFtraceEvent {
14556    #[prost(uint64, optional, tag="1")]
14557    pub addr: ::core::option::Option<u64>,
14558    #[prost(uint64, optional, tag="2")]
14559    pub len: ::core::option::Option<u64>,
14560}
14561#[derive(Clone, PartialEq, ::prost::Message)]
14562pub struct IonBufferDestroyFtraceEvent {
14563    #[prost(uint64, optional, tag="1")]
14564    pub addr: ::core::option::Option<u64>,
14565    #[prost(uint64, optional, tag="2")]
14566    pub len: ::core::option::Option<u64>,
14567}
14568#[derive(Clone, PartialEq, ::prost::Message)]
14569pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14570    #[prost(uint64, optional, tag="1")]
14571    pub start: ::core::option::Option<u64>,
14572    #[prost(uint64, optional, tag="2")]
14573    pub end: ::core::option::Option<u64>,
14574    #[prost(uint64, optional, tag="3")]
14575    pub nr_migrated: ::core::option::Option<u64>,
14576    #[prost(uint64, optional, tag="4")]
14577    pub nr_reclaimed: ::core::option::Option<u64>,
14578    #[prost(uint64, optional, tag="5")]
14579    pub nr_mapped: ::core::option::Option<u64>,
14580    #[prost(int32, optional, tag="6")]
14581    pub migratetype: ::core::option::Option<i32>,
14582}
14583#[derive(Clone, PartialEq, ::prost::Message)]
14584pub struct DmabufRssStatFtraceEvent {
14585    #[prost(uint64, optional, tag="1")]
14586    pub rss: ::core::option::Option<u64>,
14587    #[prost(int64, optional, tag="2")]
14588    pub rss_delta: ::core::option::Option<i64>,
14589    #[prost(uint64, optional, tag="3")]
14590    pub i_ino: ::core::option::Option<u64>,
14591}
14592// End of protos/perfetto/trace/ftrace/kmem.proto
14593
14594// Begin of protos/perfetto/trace/ftrace/kvm.proto
14595
14596#[derive(Clone, PartialEq, ::prost::Message)]
14597pub struct KvmAccessFaultFtraceEvent {
14598    #[prost(uint64, optional, tag="1")]
14599    pub ipa: ::core::option::Option<u64>,
14600}
14601#[derive(Clone, PartialEq, ::prost::Message)]
14602pub struct KvmAckIrqFtraceEvent {
14603    #[prost(uint32, optional, tag="1")]
14604    pub irqchip: ::core::option::Option<u32>,
14605    #[prost(uint32, optional, tag="2")]
14606    pub pin: ::core::option::Option<u32>,
14607}
14608#[derive(Clone, PartialEq, ::prost::Message)]
14609pub struct KvmAgeHvaFtraceEvent {
14610    #[prost(uint64, optional, tag="1")]
14611    pub end: ::core::option::Option<u64>,
14612    #[prost(uint64, optional, tag="2")]
14613    pub start: ::core::option::Option<u64>,
14614}
14615#[derive(Clone, PartialEq, ::prost::Message)]
14616pub struct KvmAgePageFtraceEvent {
14617    #[prost(uint64, optional, tag="1")]
14618    pub gfn: ::core::option::Option<u64>,
14619    #[prost(uint64, optional, tag="2")]
14620    pub hva: ::core::option::Option<u64>,
14621    #[prost(uint32, optional, tag="3")]
14622    pub level: ::core::option::Option<u32>,
14623    #[prost(uint32, optional, tag="4")]
14624    pub referenced: ::core::option::Option<u32>,
14625}
14626#[derive(Clone, PartialEq, ::prost::Message)]
14627pub struct KvmArmClearDebugFtraceEvent {
14628    #[prost(uint32, optional, tag="1")]
14629    pub guest_debug: ::core::option::Option<u32>,
14630}
14631#[derive(Clone, PartialEq, ::prost::Message)]
14632pub struct KvmArmSetDreg32FtraceEvent {
14633    #[prost(string, optional, tag="1")]
14634    pub name: ::core::option::Option<::prost::alloc::string::String>,
14635    #[prost(uint32, optional, tag="2")]
14636    pub value: ::core::option::Option<u32>,
14637}
14638#[derive(Clone, PartialEq, ::prost::Message)]
14639pub struct KvmArmSetRegsetFtraceEvent {
14640    #[prost(int32, optional, tag="1")]
14641    pub len: ::core::option::Option<i32>,
14642    #[prost(string, optional, tag="2")]
14643    pub name: ::core::option::Option<::prost::alloc::string::String>,
14644}
14645#[derive(Clone, PartialEq, ::prost::Message)]
14646pub struct KvmArmSetupDebugFtraceEvent {
14647    #[prost(uint32, optional, tag="1")]
14648    pub guest_debug: ::core::option::Option<u32>,
14649    #[prost(uint64, optional, tag="2")]
14650    pub vcpu: ::core::option::Option<u64>,
14651}
14652#[derive(Clone, PartialEq, ::prost::Message)]
14653pub struct KvmEntryFtraceEvent {
14654    #[prost(uint64, optional, tag="1")]
14655    pub vcpu_pc: ::core::option::Option<u64>,
14656}
14657#[derive(Clone, PartialEq, ::prost::Message)]
14658pub struct KvmExitFtraceEvent {
14659    #[prost(uint32, optional, tag="1")]
14660    pub esr_ec: ::core::option::Option<u32>,
14661    #[prost(int32, optional, tag="2")]
14662    pub ret: ::core::option::Option<i32>,
14663    #[prost(uint64, optional, tag="3")]
14664    pub vcpu_pc: ::core::option::Option<u64>,
14665}
14666#[derive(Clone, PartialEq, ::prost::Message)]
14667pub struct KvmFpuFtraceEvent {
14668    #[prost(uint32, optional, tag="1")]
14669    pub load: ::core::option::Option<u32>,
14670}
14671#[derive(Clone, PartialEq, ::prost::Message)]
14672pub struct KvmGetTimerMapFtraceEvent {
14673    #[prost(int32, optional, tag="1")]
14674    pub direct_ptimer: ::core::option::Option<i32>,
14675    #[prost(int32, optional, tag="2")]
14676    pub direct_vtimer: ::core::option::Option<i32>,
14677    #[prost(int32, optional, tag="3")]
14678    pub emul_ptimer: ::core::option::Option<i32>,
14679    #[prost(uint64, optional, tag="4")]
14680    pub vcpu_id: ::core::option::Option<u64>,
14681}
14682#[derive(Clone, PartialEq, ::prost::Message)]
14683pub struct KvmGuestFaultFtraceEvent {
14684    #[prost(uint64, optional, tag="1")]
14685    pub hsr: ::core::option::Option<u64>,
14686    #[prost(uint64, optional, tag="2")]
14687    pub hxfar: ::core::option::Option<u64>,
14688    #[prost(uint64, optional, tag="3")]
14689    pub ipa: ::core::option::Option<u64>,
14690    #[prost(uint64, optional, tag="4")]
14691    pub vcpu_pc: ::core::option::Option<u64>,
14692}
14693#[derive(Clone, PartialEq, ::prost::Message)]
14694pub struct KvmHandleSysRegFtraceEvent {
14695    #[prost(uint64, optional, tag="1")]
14696    pub hsr: ::core::option::Option<u64>,
14697}
14698#[derive(Clone, PartialEq, ::prost::Message)]
14699pub struct KvmHvcArm64FtraceEvent {
14700    #[prost(uint64, optional, tag="1")]
14701    pub imm: ::core::option::Option<u64>,
14702    #[prost(uint64, optional, tag="2")]
14703    pub r0: ::core::option::Option<u64>,
14704    #[prost(uint64, optional, tag="3")]
14705    pub vcpu_pc: ::core::option::Option<u64>,
14706}
14707#[derive(Clone, PartialEq, ::prost::Message)]
14708pub struct KvmIrqLineFtraceEvent {
14709    #[prost(int32, optional, tag="1")]
14710    pub irq_num: ::core::option::Option<i32>,
14711    #[prost(int32, optional, tag="2")]
14712    pub level: ::core::option::Option<i32>,
14713    #[prost(uint32, optional, tag="3")]
14714    pub r#type: ::core::option::Option<u32>,
14715    #[prost(int32, optional, tag="4")]
14716    pub vcpu_idx: ::core::option::Option<i32>,
14717}
14718#[derive(Clone, PartialEq, ::prost::Message)]
14719pub struct KvmMmioFtraceEvent {
14720    #[prost(uint64, optional, tag="1")]
14721    pub gpa: ::core::option::Option<u64>,
14722    #[prost(uint32, optional, tag="2")]
14723    pub len: ::core::option::Option<u32>,
14724    #[prost(uint32, optional, tag="3")]
14725    pub r#type: ::core::option::Option<u32>,
14726    #[prost(uint64, optional, tag="4")]
14727    pub val: ::core::option::Option<u64>,
14728}
14729#[derive(Clone, PartialEq, ::prost::Message)]
14730pub struct KvmMmioEmulateFtraceEvent {
14731    #[prost(uint64, optional, tag="1")]
14732    pub cpsr: ::core::option::Option<u64>,
14733    #[prost(uint64, optional, tag="2")]
14734    pub instr: ::core::option::Option<u64>,
14735    #[prost(uint64, optional, tag="3")]
14736    pub vcpu_pc: ::core::option::Option<u64>,
14737}
14738#[derive(Clone, PartialEq, ::prost::Message)]
14739pub struct KvmSetGuestDebugFtraceEvent {
14740    #[prost(uint32, optional, tag="1")]
14741    pub guest_debug: ::core::option::Option<u32>,
14742    #[prost(uint64, optional, tag="2")]
14743    pub vcpu: ::core::option::Option<u64>,
14744}
14745#[derive(Clone, PartialEq, ::prost::Message)]
14746pub struct KvmSetIrqFtraceEvent {
14747    #[prost(uint32, optional, tag="1")]
14748    pub gsi: ::core::option::Option<u32>,
14749    #[prost(int32, optional, tag="2")]
14750    pub irq_source_id: ::core::option::Option<i32>,
14751    #[prost(int32, optional, tag="3")]
14752    pub level: ::core::option::Option<i32>,
14753}
14754#[derive(Clone, PartialEq, ::prost::Message)]
14755pub struct KvmSetSpteHvaFtraceEvent {
14756    #[prost(uint64, optional, tag="1")]
14757    pub hva: ::core::option::Option<u64>,
14758}
14759#[derive(Clone, PartialEq, ::prost::Message)]
14760pub struct KvmSetWayFlushFtraceEvent {
14761    #[prost(uint32, optional, tag="1")]
14762    pub cache: ::core::option::Option<u32>,
14763    #[prost(uint64, optional, tag="2")]
14764    pub vcpu_pc: ::core::option::Option<u64>,
14765}
14766#[derive(Clone, PartialEq, ::prost::Message)]
14767pub struct KvmSysAccessFtraceEvent {
14768    #[prost(uint32, optional, tag="1")]
14769    pub c_rm: ::core::option::Option<u32>,
14770    #[prost(uint32, optional, tag="2")]
14771    pub c_rn: ::core::option::Option<u32>,
14772    #[prost(uint32, optional, tag="3")]
14773    pub op0: ::core::option::Option<u32>,
14774    #[prost(uint32, optional, tag="4")]
14775    pub op1: ::core::option::Option<u32>,
14776    #[prost(uint32, optional, tag="5")]
14777    pub op2: ::core::option::Option<u32>,
14778    #[prost(uint32, optional, tag="6")]
14779    pub is_write: ::core::option::Option<u32>,
14780    #[prost(string, optional, tag="7")]
14781    pub name: ::core::option::Option<::prost::alloc::string::String>,
14782    #[prost(uint64, optional, tag="8")]
14783    pub vcpu_pc: ::core::option::Option<u64>,
14784}
14785#[derive(Clone, PartialEq, ::prost::Message)]
14786pub struct KvmTestAgeHvaFtraceEvent {
14787    #[prost(uint64, optional, tag="1")]
14788    pub hva: ::core::option::Option<u64>,
14789}
14790#[derive(Clone, PartialEq, ::prost::Message)]
14791pub struct KvmTimerEmulateFtraceEvent {
14792    #[prost(uint32, optional, tag="1")]
14793    pub should_fire: ::core::option::Option<u32>,
14794    #[prost(int32, optional, tag="2")]
14795    pub timer_idx: ::core::option::Option<i32>,
14796}
14797#[derive(Clone, PartialEq, ::prost::Message)]
14798pub struct KvmTimerHrtimerExpireFtraceEvent {
14799    #[prost(int32, optional, tag="1")]
14800    pub timer_idx: ::core::option::Option<i32>,
14801}
14802#[derive(Clone, PartialEq, ::prost::Message)]
14803pub struct KvmTimerRestoreStateFtraceEvent {
14804    #[prost(uint64, optional, tag="1")]
14805    pub ctl: ::core::option::Option<u64>,
14806    #[prost(uint64, optional, tag="2")]
14807    pub cval: ::core::option::Option<u64>,
14808    #[prost(int32, optional, tag="3")]
14809    pub timer_idx: ::core::option::Option<i32>,
14810}
14811#[derive(Clone, PartialEq, ::prost::Message)]
14812pub struct KvmTimerSaveStateFtraceEvent {
14813    #[prost(uint64, optional, tag="1")]
14814    pub ctl: ::core::option::Option<u64>,
14815    #[prost(uint64, optional, tag="2")]
14816    pub cval: ::core::option::Option<u64>,
14817    #[prost(int32, optional, tag="3")]
14818    pub timer_idx: ::core::option::Option<i32>,
14819}
14820#[derive(Clone, PartialEq, ::prost::Message)]
14821pub struct KvmTimerUpdateIrqFtraceEvent {
14822    #[prost(uint32, optional, tag="1")]
14823    pub irq: ::core::option::Option<u32>,
14824    #[prost(int32, optional, tag="2")]
14825    pub level: ::core::option::Option<i32>,
14826    #[prost(uint64, optional, tag="3")]
14827    pub vcpu_id: ::core::option::Option<u64>,
14828}
14829#[derive(Clone, PartialEq, ::prost::Message)]
14830pub struct KvmToggleCacheFtraceEvent {
14831    #[prost(uint32, optional, tag="1")]
14832    pub now: ::core::option::Option<u32>,
14833    #[prost(uint64, optional, tag="2")]
14834    pub vcpu_pc: ::core::option::Option<u64>,
14835    #[prost(uint32, optional, tag="3")]
14836    pub was: ::core::option::Option<u32>,
14837}
14838#[derive(Clone, PartialEq, ::prost::Message)]
14839pub struct KvmUnmapHvaRangeFtraceEvent {
14840    #[prost(uint64, optional, tag="1")]
14841    pub end: ::core::option::Option<u64>,
14842    #[prost(uint64, optional, tag="2")]
14843    pub start: ::core::option::Option<u64>,
14844}
14845#[derive(Clone, PartialEq, ::prost::Message)]
14846pub struct KvmUserspaceExitFtraceEvent {
14847    #[prost(uint32, optional, tag="1")]
14848    pub reason: ::core::option::Option<u32>,
14849}
14850#[derive(Clone, PartialEq, ::prost::Message)]
14851pub struct KvmVcpuWakeupFtraceEvent {
14852    #[prost(uint64, optional, tag="1")]
14853    pub ns: ::core::option::Option<u64>,
14854    #[prost(uint32, optional, tag="2")]
14855    pub valid: ::core::option::Option<u32>,
14856    #[prost(uint32, optional, tag="3")]
14857    pub waited: ::core::option::Option<u32>,
14858}
14859#[derive(Clone, PartialEq, ::prost::Message)]
14860pub struct KvmWfxArm64FtraceEvent {
14861    #[prost(uint32, optional, tag="1")]
14862    pub is_wfe: ::core::option::Option<u32>,
14863    #[prost(uint64, optional, tag="2")]
14864    pub vcpu_pc: ::core::option::Option<u64>,
14865}
14866#[derive(Clone, PartialEq, ::prost::Message)]
14867pub struct TrapRegFtraceEvent {
14868    #[prost(string, optional, tag="1")]
14869    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14870    #[prost(uint32, optional, tag="2")]
14871    pub is_write: ::core::option::Option<u32>,
14872    #[prost(int32, optional, tag="3")]
14873    pub reg: ::core::option::Option<i32>,
14874    #[prost(uint64, optional, tag="4")]
14875    pub write_value: ::core::option::Option<u64>,
14876}
14877#[derive(Clone, PartialEq, ::prost::Message)]
14878pub struct VgicUpdateIrqPendingFtraceEvent {
14879    #[prost(uint32, optional, tag="1")]
14880    pub irq: ::core::option::Option<u32>,
14881    #[prost(uint32, optional, tag="2")]
14882    pub level: ::core::option::Option<u32>,
14883    #[prost(uint64, optional, tag="3")]
14884    pub vcpu_id: ::core::option::Option<u64>,
14885}
14886// End of protos/perfetto/trace/ftrace/kvm.proto
14887
14888// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14889
14890#[derive(Clone, PartialEq, ::prost::Message)]
14891pub struct LowmemoryKillFtraceEvent {
14892    #[prost(string, optional, tag="1")]
14893    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14894    #[prost(int32, optional, tag="2")]
14895    pub pid: ::core::option::Option<i32>,
14896    #[prost(int64, optional, tag="3")]
14897    pub pagecache_size: ::core::option::Option<i64>,
14898    #[prost(int64, optional, tag="4")]
14899    pub pagecache_limit: ::core::option::Option<i64>,
14900    #[prost(int64, optional, tag="5")]
14901    pub free: ::core::option::Option<i64>,
14902}
14903// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14904
14905// Begin of protos/perfetto/trace/ftrace/lwis.proto
14906
14907#[derive(Clone, PartialEq, ::prost::Message)]
14908pub struct LwisTracingMarkWriteFtraceEvent {
14909    #[prost(string, optional, tag="1")]
14910    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14911    #[prost(uint32, optional, tag="2")]
14912    pub r#type: ::core::option::Option<u32>,
14913    #[prost(int32, optional, tag="3")]
14914    pub pid: ::core::option::Option<i32>,
14915    #[prost(string, optional, tag="4")]
14916    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14917    #[prost(int64, optional, tag="5")]
14918    pub value: ::core::option::Option<i64>,
14919}
14920// End of protos/perfetto/trace/ftrace/lwis.proto
14921
14922// Begin of protos/perfetto/trace/ftrace/mali.proto
14923
14924#[derive(Clone, PartialEq, ::prost::Message)]
14925pub struct MaliTracingMarkWriteFtraceEvent {
14926    #[prost(string, optional, tag="1")]
14927    pub name: ::core::option::Option<::prost::alloc::string::String>,
14928    #[prost(int32, optional, tag="2")]
14929    pub pid: ::core::option::Option<i32>,
14930    #[prost(uint32, optional, tag="3")]
14931    pub r#type: ::core::option::Option<u32>,
14932    #[prost(int32, optional, tag="4")]
14933    pub value: ::core::option::Option<i32>,
14934}
14935#[derive(Clone, PartialEq, ::prost::Message)]
14936pub struct MaliMaliKcpucqssetFtraceEvent {
14937    #[prost(uint32, optional, tag="1")]
14938    pub id: ::core::option::Option<u32>,
14939    #[prost(uint64, optional, tag="2")]
14940    pub info_val1: ::core::option::Option<u64>,
14941    #[prost(uint64, optional, tag="3")]
14942    pub info_val2: ::core::option::Option<u64>,
14943    #[prost(uint32, optional, tag="4")]
14944    pub kctx_id: ::core::option::Option<u32>,
14945    #[prost(int32, optional, tag="5")]
14946    pub kctx_tgid: ::core::option::Option<i32>,
14947}
14948#[derive(Clone, PartialEq, ::prost::Message)]
14949pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14950    #[prost(uint32, optional, tag="1")]
14951    pub id: ::core::option::Option<u32>,
14952    #[prost(uint64, optional, tag="2")]
14953    pub info_val1: ::core::option::Option<u64>,
14954    #[prost(uint64, optional, tag="3")]
14955    pub info_val2: ::core::option::Option<u64>,
14956    #[prost(uint32, optional, tag="4")]
14957    pub kctx_id: ::core::option::Option<u32>,
14958    #[prost(int32, optional, tag="5")]
14959    pub kctx_tgid: ::core::option::Option<i32>,
14960}
14961#[derive(Clone, PartialEq, ::prost::Message)]
14962pub struct MaliMaliKcpucqswaitendFtraceEvent {
14963    #[prost(uint32, optional, tag="1")]
14964    pub id: ::core::option::Option<u32>,
14965    #[prost(uint64, optional, tag="2")]
14966    pub info_val1: ::core::option::Option<u64>,
14967    #[prost(uint64, optional, tag="3")]
14968    pub info_val2: ::core::option::Option<u64>,
14969    #[prost(uint32, optional, tag="4")]
14970    pub kctx_id: ::core::option::Option<u32>,
14971    #[prost(int32, optional, tag="5")]
14972    pub kctx_tgid: ::core::option::Option<i32>,
14973}
14974#[derive(Clone, PartialEq, ::prost::Message)]
14975pub struct MaliMaliKcpufencesignalFtraceEvent {
14976    #[prost(uint64, optional, tag="1")]
14977    pub info_val1: ::core::option::Option<u64>,
14978    #[prost(uint64, optional, tag="2")]
14979    pub info_val2: ::core::option::Option<u64>,
14980    #[prost(int32, optional, tag="3")]
14981    pub kctx_tgid: ::core::option::Option<i32>,
14982    #[prost(uint32, optional, tag="4")]
14983    pub kctx_id: ::core::option::Option<u32>,
14984    #[prost(uint32, optional, tag="5")]
14985    pub id: ::core::option::Option<u32>,
14986}
14987#[derive(Clone, PartialEq, ::prost::Message)]
14988pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14989    #[prost(uint64, optional, tag="1")]
14990    pub info_val1: ::core::option::Option<u64>,
14991    #[prost(uint64, optional, tag="2")]
14992    pub info_val2: ::core::option::Option<u64>,
14993    #[prost(int32, optional, tag="3")]
14994    pub kctx_tgid: ::core::option::Option<i32>,
14995    #[prost(uint32, optional, tag="4")]
14996    pub kctx_id: ::core::option::Option<u32>,
14997    #[prost(uint32, optional, tag="5")]
14998    pub id: ::core::option::Option<u32>,
14999}
15000#[derive(Clone, PartialEq, ::prost::Message)]
15001pub struct MaliMaliKcpufencewaitendFtraceEvent {
15002    #[prost(uint64, optional, tag="1")]
15003    pub info_val1: ::core::option::Option<u64>,
15004    #[prost(uint64, optional, tag="2")]
15005    pub info_val2: ::core::option::Option<u64>,
15006    #[prost(int32, optional, tag="3")]
15007    pub kctx_tgid: ::core::option::Option<i32>,
15008    #[prost(uint32, optional, tag="4")]
15009    pub kctx_id: ::core::option::Option<u32>,
15010    #[prost(uint32, optional, tag="5")]
15011    pub id: ::core::option::Option<u32>,
15012}
15013#[derive(Clone, PartialEq, ::prost::Message)]
15014pub struct MaliMaliCsfinterruptstartFtraceEvent {
15015    #[prost(int32, optional, tag="1")]
15016    pub kctx_tgid: ::core::option::Option<i32>,
15017    #[prost(uint32, optional, tag="2")]
15018    pub kctx_id: ::core::option::Option<u32>,
15019    #[prost(uint64, optional, tag="3")]
15020    pub info_val: ::core::option::Option<u64>,
15021}
15022#[derive(Clone, PartialEq, ::prost::Message)]
15023pub struct MaliMaliCsfinterruptendFtraceEvent {
15024    #[prost(int32, optional, tag="1")]
15025    pub kctx_tgid: ::core::option::Option<i32>,
15026    #[prost(uint32, optional, tag="2")]
15027    pub kctx_id: ::core::option::Option<u32>,
15028    #[prost(uint64, optional, tag="3")]
15029    pub info_val: ::core::option::Option<u64>,
15030}
15031#[derive(Clone, PartialEq, ::prost::Message)]
15032pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
15033    #[prost(int32, optional, tag="1")]
15034    pub kctx_tgid: ::core::option::Option<i32>,
15035    #[prost(uint32, optional, tag="2")]
15036    pub kctx_id: ::core::option::Option<u32>,
15037    #[prost(uint64, optional, tag="3")]
15038    pub info_val: ::core::option::Option<u64>,
15039}
15040#[derive(Clone, PartialEq, ::prost::Message)]
15041pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
15042    #[prost(int32, optional, tag="1")]
15043    pub kctx_tgid: ::core::option::Option<i32>,
15044    #[prost(uint32, optional, tag="2")]
15045    pub kctx_id: ::core::option::Option<u32>,
15046    #[prost(uint64, optional, tag="3")]
15047    pub info_val: ::core::option::Option<u64>,
15048}
15049#[derive(Clone, PartialEq, ::prost::Message)]
15050pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
15051    #[prost(int32, optional, tag="1")]
15052    pub kctx_tgid: ::core::option::Option<i32>,
15053    #[prost(uint32, optional, tag="2")]
15054    pub kctx_id: ::core::option::Option<u32>,
15055    #[prost(uint64, optional, tag="3")]
15056    pub info_val: ::core::option::Option<u64>,
15057}
15058#[derive(Clone, PartialEq, ::prost::Message)]
15059pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
15060    #[prost(int32, optional, tag="1")]
15061    pub kctx_tgid: ::core::option::Option<i32>,
15062    #[prost(uint32, optional, tag="2")]
15063    pub kctx_id: ::core::option::Option<u32>,
15064    #[prost(uint64, optional, tag="3")]
15065    pub info_val: ::core::option::Option<u64>,
15066}
15067#[derive(Clone, PartialEq, ::prost::Message)]
15068pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
15069    #[prost(int32, optional, tag="1")]
15070    pub kctx_tgid: ::core::option::Option<i32>,
15071    #[prost(uint32, optional, tag="2")]
15072    pub kctx_id: ::core::option::Option<u32>,
15073    #[prost(uint64, optional, tag="3")]
15074    pub info_val: ::core::option::Option<u64>,
15075}
15076#[derive(Clone, PartialEq, ::prost::Message)]
15077pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
15078    #[prost(int32, optional, tag="1")]
15079    pub kctx_tgid: ::core::option::Option<i32>,
15080    #[prost(uint32, optional, tag="2")]
15081    pub kctx_id: ::core::option::Option<u32>,
15082    #[prost(uint64, optional, tag="3")]
15083    pub info_val: ::core::option::Option<u64>,
15084}
15085#[derive(Clone, PartialEq, ::prost::Message)]
15086pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
15087    #[prost(int32, optional, tag="1")]
15088    pub kctx_tgid: ::core::option::Option<i32>,
15089    #[prost(uint32, optional, tag="2")]
15090    pub kctx_id: ::core::option::Option<u32>,
15091    #[prost(uint64, optional, tag="3")]
15092    pub info_val: ::core::option::Option<u64>,
15093}
15094#[derive(Clone, PartialEq, ::prost::Message)]
15095pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
15096    #[prost(int32, optional, tag="1")]
15097    pub kctx_tgid: ::core::option::Option<i32>,
15098    #[prost(uint32, optional, tag="2")]
15099    pub kctx_id: ::core::option::Option<u32>,
15100    #[prost(uint64, optional, tag="3")]
15101    pub info_val: ::core::option::Option<u64>,
15102}
15103#[derive(Clone, PartialEq, ::prost::Message)]
15104pub struct MaliMaliPmmcuinsleepFtraceEvent {
15105    #[prost(int32, optional, tag="1")]
15106    pub kctx_tgid: ::core::option::Option<i32>,
15107    #[prost(uint32, optional, tag="2")]
15108    pub kctx_id: ::core::option::Option<u32>,
15109    #[prost(uint64, optional, tag="3")]
15110    pub info_val: ::core::option::Option<u64>,
15111}
15112#[derive(Clone, PartialEq, ::prost::Message)]
15113pub struct MaliMaliPmmcuoffFtraceEvent {
15114    #[prost(int32, optional, tag="1")]
15115    pub kctx_tgid: ::core::option::Option<i32>,
15116    #[prost(uint32, optional, tag="2")]
15117    pub kctx_id: ::core::option::Option<u32>,
15118    #[prost(uint64, optional, tag="3")]
15119    pub info_val: ::core::option::Option<u64>,
15120}
15121#[derive(Clone, PartialEq, ::prost::Message)]
15122pub struct MaliMaliPmmcuonFtraceEvent {
15123    #[prost(int32, optional, tag="1")]
15124    pub kctx_tgid: ::core::option::Option<i32>,
15125    #[prost(uint32, optional, tag="2")]
15126    pub kctx_id: ::core::option::Option<u32>,
15127    #[prost(uint64, optional, tag="3")]
15128    pub info_val: ::core::option::Option<u64>,
15129}
15130#[derive(Clone, PartialEq, ::prost::Message)]
15131pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
15132    #[prost(int32, optional, tag="1")]
15133    pub kctx_tgid: ::core::option::Option<i32>,
15134    #[prost(uint32, optional, tag="2")]
15135    pub kctx_id: ::core::option::Option<u32>,
15136    #[prost(uint64, optional, tag="3")]
15137    pub info_val: ::core::option::Option<u64>,
15138}
15139#[derive(Clone, PartialEq, ::prost::Message)]
15140pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
15141    #[prost(int32, optional, tag="1")]
15142    pub kctx_tgid: ::core::option::Option<i32>,
15143    #[prost(uint32, optional, tag="2")]
15144    pub kctx_id: ::core::option::Option<u32>,
15145    #[prost(uint64, optional, tag="3")]
15146    pub info_val: ::core::option::Option<u64>,
15147}
15148#[derive(Clone, PartialEq, ::prost::Message)]
15149pub struct MaliMaliPmmcuonhaltFtraceEvent {
15150    #[prost(int32, optional, tag="1")]
15151    pub kctx_tgid: ::core::option::Option<i32>,
15152    #[prost(uint32, optional, tag="2")]
15153    pub kctx_id: ::core::option::Option<u32>,
15154    #[prost(uint64, optional, tag="3")]
15155    pub info_val: ::core::option::Option<u64>,
15156}
15157#[derive(Clone, PartialEq, ::prost::Message)]
15158pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
15159    #[prost(int32, optional, tag="1")]
15160    pub kctx_tgid: ::core::option::Option<i32>,
15161    #[prost(uint32, optional, tag="2")]
15162    pub kctx_id: ::core::option::Option<u32>,
15163    #[prost(uint64, optional, tag="3")]
15164    pub info_val: ::core::option::Option<u64>,
15165}
15166#[derive(Clone, PartialEq, ::prost::Message)]
15167pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
15168    #[prost(int32, optional, tag="1")]
15169    pub kctx_tgid: ::core::option::Option<i32>,
15170    #[prost(uint32, optional, tag="2")]
15171    pub kctx_id: ::core::option::Option<u32>,
15172    #[prost(uint64, optional, tag="3")]
15173    pub info_val: ::core::option::Option<u64>,
15174}
15175#[derive(Clone, PartialEq, ::prost::Message)]
15176pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
15177    #[prost(int32, optional, tag="1")]
15178    pub kctx_tgid: ::core::option::Option<i32>,
15179    #[prost(uint32, optional, tag="2")]
15180    pub kctx_id: ::core::option::Option<u32>,
15181    #[prost(uint64, optional, tag="3")]
15182    pub info_val: ::core::option::Option<u64>,
15183}
15184#[derive(Clone, PartialEq, ::prost::Message)]
15185pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
15186    #[prost(int32, optional, tag="1")]
15187    pub kctx_tgid: ::core::option::Option<i32>,
15188    #[prost(uint32, optional, tag="2")]
15189    pub kctx_id: ::core::option::Option<u32>,
15190    #[prost(uint64, optional, tag="3")]
15191    pub info_val: ::core::option::Option<u64>,
15192}
15193#[derive(Clone, PartialEq, ::prost::Message)]
15194pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
15195    #[prost(int32, optional, tag="1")]
15196    pub kctx_tgid: ::core::option::Option<i32>,
15197    #[prost(uint32, optional, tag="2")]
15198    pub kctx_id: ::core::option::Option<u32>,
15199    #[prost(uint64, optional, tag="3")]
15200    pub info_val: ::core::option::Option<u64>,
15201}
15202#[derive(Clone, PartialEq, ::prost::Message)]
15203pub struct MaliMaliPmmcupendoffFtraceEvent {
15204    #[prost(int32, optional, tag="1")]
15205    pub kctx_tgid: ::core::option::Option<i32>,
15206    #[prost(uint32, optional, tag="2")]
15207    pub kctx_id: ::core::option::Option<u32>,
15208    #[prost(uint64, optional, tag="3")]
15209    pub info_val: ::core::option::Option<u64>,
15210}
15211#[derive(Clone, PartialEq, ::prost::Message)]
15212pub struct MaliMaliPmmcupendonreloadFtraceEvent {
15213    #[prost(int32, optional, tag="1")]
15214    pub kctx_tgid: ::core::option::Option<i32>,
15215    #[prost(uint32, optional, tag="2")]
15216    pub kctx_id: ::core::option::Option<u32>,
15217    #[prost(uint64, optional, tag="3")]
15218    pub info_val: ::core::option::Option<u64>,
15219}
15220#[derive(Clone, PartialEq, ::prost::Message)]
15221pub struct MaliMaliPmmcupowerdownFtraceEvent {
15222    #[prost(int32, optional, tag="1")]
15223    pub kctx_tgid: ::core::option::Option<i32>,
15224    #[prost(uint32, optional, tag="2")]
15225    pub kctx_id: ::core::option::Option<u32>,
15226    #[prost(uint64, optional, tag="3")]
15227    pub info_val: ::core::option::Option<u64>,
15228}
15229#[derive(Clone, PartialEq, ::prost::Message)]
15230pub struct MaliMaliPmmcuresetwaitFtraceEvent {
15231    #[prost(int32, optional, tag="1")]
15232    pub kctx_tgid: ::core::option::Option<i32>,
15233    #[prost(uint32, optional, tag="2")]
15234    pub kctx_id: ::core::option::Option<u32>,
15235    #[prost(uint64, optional, tag="3")]
15236    pub info_val: ::core::option::Option<u64>,
15237}
15238#[derive(Clone, PartialEq, ::prost::Message)]
15239pub struct MaliGpuPowerStateFtraceEvent {
15240    #[prost(uint64, optional, tag="1")]
15241    pub change_ns: ::core::option::Option<u64>,
15242    #[prost(int32, optional, tag="2")]
15243    pub from_state: ::core::option::Option<i32>,
15244    #[prost(int32, optional, tag="3")]
15245    pub to_state: ::core::option::Option<i32>,
15246}
15247// End of protos/perfetto/trace/ftrace/mali.proto
15248
15249// Begin of protos/perfetto/trace/ftrace/mdss.proto
15250
15251#[derive(Clone, PartialEq, ::prost::Message)]
15252pub struct MdpCmdKickoffFtraceEvent {
15253    #[prost(uint32, optional, tag="1")]
15254    pub ctl_num: ::core::option::Option<u32>,
15255    #[prost(int32, optional, tag="2")]
15256    pub kickoff_cnt: ::core::option::Option<i32>,
15257}
15258#[derive(Clone, PartialEq, ::prost::Message)]
15259pub struct MdpCommitFtraceEvent {
15260    #[prost(uint32, optional, tag="1")]
15261    pub num: ::core::option::Option<u32>,
15262    #[prost(uint32, optional, tag="2")]
15263    pub play_cnt: ::core::option::Option<u32>,
15264    #[prost(uint32, optional, tag="3")]
15265    pub clk_rate: ::core::option::Option<u32>,
15266    #[prost(uint64, optional, tag="4")]
15267    pub bandwidth: ::core::option::Option<u64>,
15268}
15269#[derive(Clone, PartialEq, ::prost::Message)]
15270pub struct MdpPerfSetOtFtraceEvent {
15271    #[prost(uint32, optional, tag="1")]
15272    pub pnum: ::core::option::Option<u32>,
15273    #[prost(uint32, optional, tag="2")]
15274    pub xin_id: ::core::option::Option<u32>,
15275    #[prost(uint32, optional, tag="3")]
15276    pub rd_lim: ::core::option::Option<u32>,
15277    #[prost(uint32, optional, tag="4")]
15278    pub is_vbif_rt: ::core::option::Option<u32>,
15279}
15280#[derive(Clone, PartialEq, ::prost::Message)]
15281pub struct MdpSsppChangeFtraceEvent {
15282    #[prost(uint32, optional, tag="1")]
15283    pub num: ::core::option::Option<u32>,
15284    #[prost(uint32, optional, tag="2")]
15285    pub play_cnt: ::core::option::Option<u32>,
15286    #[prost(uint32, optional, tag="3")]
15287    pub mixer: ::core::option::Option<u32>,
15288    #[prost(uint32, optional, tag="4")]
15289    pub stage: ::core::option::Option<u32>,
15290    #[prost(uint32, optional, tag="5")]
15291    pub flags: ::core::option::Option<u32>,
15292    #[prost(uint32, optional, tag="6")]
15293    pub format: ::core::option::Option<u32>,
15294    #[prost(uint32, optional, tag="7")]
15295    pub img_w: ::core::option::Option<u32>,
15296    #[prost(uint32, optional, tag="8")]
15297    pub img_h: ::core::option::Option<u32>,
15298    #[prost(uint32, optional, tag="9")]
15299    pub src_x: ::core::option::Option<u32>,
15300    #[prost(uint32, optional, tag="10")]
15301    pub src_y: ::core::option::Option<u32>,
15302    #[prost(uint32, optional, tag="11")]
15303    pub src_w: ::core::option::Option<u32>,
15304    #[prost(uint32, optional, tag="12")]
15305    pub src_h: ::core::option::Option<u32>,
15306    #[prost(uint32, optional, tag="13")]
15307    pub dst_x: ::core::option::Option<u32>,
15308    #[prost(uint32, optional, tag="14")]
15309    pub dst_y: ::core::option::Option<u32>,
15310    #[prost(uint32, optional, tag="15")]
15311    pub dst_w: ::core::option::Option<u32>,
15312    #[prost(uint32, optional, tag="16")]
15313    pub dst_h: ::core::option::Option<u32>,
15314}
15315#[derive(Clone, PartialEq, ::prost::Message)]
15316pub struct TracingMarkWriteFtraceEvent {
15317    #[prost(int32, optional, tag="1")]
15318    pub pid: ::core::option::Option<i32>,
15319    #[prost(string, optional, tag="2")]
15320    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15321    #[prost(uint32, optional, tag="3")]
15322    pub trace_begin: ::core::option::Option<u32>,
15323}
15324#[derive(Clone, PartialEq, ::prost::Message)]
15325pub struct MdpCmdPingpongDoneFtraceEvent {
15326    #[prost(uint32, optional, tag="1")]
15327    pub ctl_num: ::core::option::Option<u32>,
15328    #[prost(uint32, optional, tag="2")]
15329    pub intf_num: ::core::option::Option<u32>,
15330    #[prost(uint32, optional, tag="3")]
15331    pub pp_num: ::core::option::Option<u32>,
15332    #[prost(int32, optional, tag="4")]
15333    pub koff_cnt: ::core::option::Option<i32>,
15334}
15335#[derive(Clone, PartialEq, ::prost::Message)]
15336pub struct MdpCompareBwFtraceEvent {
15337    #[prost(uint64, optional, tag="1")]
15338    pub new_ab: ::core::option::Option<u64>,
15339    #[prost(uint64, optional, tag="2")]
15340    pub new_ib: ::core::option::Option<u64>,
15341    #[prost(uint64, optional, tag="3")]
15342    pub new_wb: ::core::option::Option<u64>,
15343    #[prost(uint64, optional, tag="4")]
15344    pub old_ab: ::core::option::Option<u64>,
15345    #[prost(uint64, optional, tag="5")]
15346    pub old_ib: ::core::option::Option<u64>,
15347    #[prost(uint64, optional, tag="6")]
15348    pub old_wb: ::core::option::Option<u64>,
15349    #[prost(uint32, optional, tag="7")]
15350    pub params_changed: ::core::option::Option<u32>,
15351    #[prost(uint32, optional, tag="8")]
15352    pub update_bw: ::core::option::Option<u32>,
15353}
15354#[derive(Clone, PartialEq, ::prost::Message)]
15355pub struct MdpPerfSetPanicLutsFtraceEvent {
15356    #[prost(uint32, optional, tag="1")]
15357    pub pnum: ::core::option::Option<u32>,
15358    #[prost(uint32, optional, tag="2")]
15359    pub fmt: ::core::option::Option<u32>,
15360    #[prost(uint32, optional, tag="3")]
15361    pub mode: ::core::option::Option<u32>,
15362    #[prost(uint32, optional, tag="4")]
15363    pub panic_lut: ::core::option::Option<u32>,
15364    #[prost(uint32, optional, tag="5")]
15365    pub robust_lut: ::core::option::Option<u32>,
15366}
15367#[derive(Clone, PartialEq, ::prost::Message)]
15368pub struct MdpSsppSetFtraceEvent {
15369    #[prost(uint32, optional, tag="1")]
15370    pub num: ::core::option::Option<u32>,
15371    #[prost(uint32, optional, tag="2")]
15372    pub play_cnt: ::core::option::Option<u32>,
15373    #[prost(uint32, optional, tag="3")]
15374    pub mixer: ::core::option::Option<u32>,
15375    #[prost(uint32, optional, tag="4")]
15376    pub stage: ::core::option::Option<u32>,
15377    #[prost(uint32, optional, tag="5")]
15378    pub flags: ::core::option::Option<u32>,
15379    #[prost(uint32, optional, tag="6")]
15380    pub format: ::core::option::Option<u32>,
15381    #[prost(uint32, optional, tag="7")]
15382    pub img_w: ::core::option::Option<u32>,
15383    #[prost(uint32, optional, tag="8")]
15384    pub img_h: ::core::option::Option<u32>,
15385    #[prost(uint32, optional, tag="9")]
15386    pub src_x: ::core::option::Option<u32>,
15387    #[prost(uint32, optional, tag="10")]
15388    pub src_y: ::core::option::Option<u32>,
15389    #[prost(uint32, optional, tag="11")]
15390    pub src_w: ::core::option::Option<u32>,
15391    #[prost(uint32, optional, tag="12")]
15392    pub src_h: ::core::option::Option<u32>,
15393    #[prost(uint32, optional, tag="13")]
15394    pub dst_x: ::core::option::Option<u32>,
15395    #[prost(uint32, optional, tag="14")]
15396    pub dst_y: ::core::option::Option<u32>,
15397    #[prost(uint32, optional, tag="15")]
15398    pub dst_w: ::core::option::Option<u32>,
15399    #[prost(uint32, optional, tag="16")]
15400    pub dst_h: ::core::option::Option<u32>,
15401}
15402#[derive(Clone, PartialEq, ::prost::Message)]
15403pub struct MdpCmdReadptrDoneFtraceEvent {
15404    #[prost(uint32, optional, tag="1")]
15405    pub ctl_num: ::core::option::Option<u32>,
15406    #[prost(int32, optional, tag="2")]
15407    pub koff_cnt: ::core::option::Option<i32>,
15408}
15409#[derive(Clone, PartialEq, ::prost::Message)]
15410pub struct MdpMisrCrcFtraceEvent {
15411    #[prost(uint32, optional, tag="1")]
15412    pub block_id: ::core::option::Option<u32>,
15413    #[prost(uint32, optional, tag="2")]
15414    pub vsync_cnt: ::core::option::Option<u32>,
15415    #[prost(uint32, optional, tag="3")]
15416    pub crc: ::core::option::Option<u32>,
15417}
15418#[derive(Clone, PartialEq, ::prost::Message)]
15419pub struct MdpPerfSetQosLutsFtraceEvent {
15420    #[prost(uint32, optional, tag="1")]
15421    pub pnum: ::core::option::Option<u32>,
15422    #[prost(uint32, optional, tag="2")]
15423    pub fmt: ::core::option::Option<u32>,
15424    #[prost(uint32, optional, tag="3")]
15425    pub intf: ::core::option::Option<u32>,
15426    #[prost(uint32, optional, tag="4")]
15427    pub rot: ::core::option::Option<u32>,
15428    #[prost(uint32, optional, tag="5")]
15429    pub fl: ::core::option::Option<u32>,
15430    #[prost(uint32, optional, tag="6")]
15431    pub lut: ::core::option::Option<u32>,
15432    #[prost(uint32, optional, tag="7")]
15433    pub linear: ::core::option::Option<u32>,
15434}
15435#[derive(Clone, PartialEq, ::prost::Message)]
15436pub struct MdpTraceCounterFtraceEvent {
15437    #[prost(int32, optional, tag="1")]
15438    pub pid: ::core::option::Option<i32>,
15439    #[prost(string, optional, tag="2")]
15440    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15441    #[prost(int32, optional, tag="3")]
15442    pub value: ::core::option::Option<i32>,
15443}
15444#[derive(Clone, PartialEq, ::prost::Message)]
15445pub struct MdpCmdReleaseBwFtraceEvent {
15446    #[prost(uint32, optional, tag="1")]
15447    pub ctl_num: ::core::option::Option<u32>,
15448}
15449#[derive(Clone, PartialEq, ::prost::Message)]
15450pub struct MdpMixerUpdateFtraceEvent {
15451    #[prost(uint32, optional, tag="1")]
15452    pub mixer_num: ::core::option::Option<u32>,
15453}
15454#[derive(Clone, PartialEq, ::prost::Message)]
15455pub struct MdpPerfSetWmLevelsFtraceEvent {
15456    #[prost(uint32, optional, tag="1")]
15457    pub pnum: ::core::option::Option<u32>,
15458    #[prost(uint32, optional, tag="2")]
15459    pub use_space: ::core::option::Option<u32>,
15460    #[prost(uint32, optional, tag="3")]
15461    pub priority_bytes: ::core::option::Option<u32>,
15462    #[prost(uint32, optional, tag="4")]
15463    pub wm0: ::core::option::Option<u32>,
15464    #[prost(uint32, optional, tag="5")]
15465    pub wm1: ::core::option::Option<u32>,
15466    #[prost(uint32, optional, tag="6")]
15467    pub wm2: ::core::option::Option<u32>,
15468    #[prost(uint32, optional, tag="7")]
15469    pub mb_cnt: ::core::option::Option<u32>,
15470    #[prost(uint32, optional, tag="8")]
15471    pub mb_size: ::core::option::Option<u32>,
15472}
15473#[derive(Clone, PartialEq, ::prost::Message)]
15474pub struct MdpVideoUnderrunDoneFtraceEvent {
15475    #[prost(uint32, optional, tag="1")]
15476    pub ctl_num: ::core::option::Option<u32>,
15477    #[prost(uint32, optional, tag="2")]
15478    pub underrun_cnt: ::core::option::Option<u32>,
15479}
15480#[derive(Clone, PartialEq, ::prost::Message)]
15481pub struct MdpCmdWaitPingpongFtraceEvent {
15482    #[prost(uint32, optional, tag="1")]
15483    pub ctl_num: ::core::option::Option<u32>,
15484    #[prost(int32, optional, tag="2")]
15485    pub kickoff_cnt: ::core::option::Option<i32>,
15486}
15487#[derive(Clone, PartialEq, ::prost::Message)]
15488pub struct MdpPerfPrefillCalcFtraceEvent {
15489    #[prost(uint32, optional, tag="1")]
15490    pub pnum: ::core::option::Option<u32>,
15491    #[prost(uint32, optional, tag="2")]
15492    pub latency_buf: ::core::option::Option<u32>,
15493    #[prost(uint32, optional, tag="3")]
15494    pub ot: ::core::option::Option<u32>,
15495    #[prost(uint32, optional, tag="4")]
15496    pub y_buf: ::core::option::Option<u32>,
15497    #[prost(uint32, optional, tag="5")]
15498    pub y_scaler: ::core::option::Option<u32>,
15499    #[prost(uint32, optional, tag="6")]
15500    pub pp_lines: ::core::option::Option<u32>,
15501    #[prost(uint32, optional, tag="7")]
15502    pub pp_bytes: ::core::option::Option<u32>,
15503    #[prost(uint32, optional, tag="8")]
15504    pub post_sc: ::core::option::Option<u32>,
15505    #[prost(uint32, optional, tag="9")]
15506    pub fbc_bytes: ::core::option::Option<u32>,
15507    #[prost(uint32, optional, tag="10")]
15508    pub prefill_bytes: ::core::option::Option<u32>,
15509}
15510#[derive(Clone, PartialEq, ::prost::Message)]
15511pub struct MdpPerfUpdateBusFtraceEvent {
15512    #[prost(int32, optional, tag="1")]
15513    pub client: ::core::option::Option<i32>,
15514    #[prost(uint64, optional, tag="2")]
15515    pub ab_quota: ::core::option::Option<u64>,
15516    #[prost(uint64, optional, tag="3")]
15517    pub ib_quota: ::core::option::Option<u64>,
15518}
15519#[derive(Clone, PartialEq, ::prost::Message)]
15520pub struct RotatorBwAoAsContextFtraceEvent {
15521    #[prost(uint32, optional, tag="1")]
15522    pub state: ::core::option::Option<u32>,
15523}
15524// End of protos/perfetto/trace/ftrace/mdss.proto
15525
15526// Begin of protos/perfetto/trace/ftrace/mm_event.proto
15527
15528#[derive(Clone, PartialEq, ::prost::Message)]
15529pub struct MmEventRecordFtraceEvent {
15530    #[prost(uint32, optional, tag="1")]
15531    pub avg_lat: ::core::option::Option<u32>,
15532    #[prost(uint32, optional, tag="2")]
15533    pub count: ::core::option::Option<u32>,
15534    #[prost(uint32, optional, tag="3")]
15535    pub max_lat: ::core::option::Option<u32>,
15536    #[prost(uint32, optional, tag="4")]
15537    pub r#type: ::core::option::Option<u32>,
15538}
15539// End of protos/perfetto/trace/ftrace/mm_event.proto
15540
15541// Begin of protos/perfetto/trace/ftrace/net.proto
15542
15543#[derive(Clone, PartialEq, ::prost::Message)]
15544pub struct NetifReceiveSkbFtraceEvent {
15545    #[prost(uint32, optional, tag="1")]
15546    pub len: ::core::option::Option<u32>,
15547    #[prost(string, optional, tag="2")]
15548    pub name: ::core::option::Option<::prost::alloc::string::String>,
15549    #[prost(uint64, optional, tag="3")]
15550    pub skbaddr: ::core::option::Option<u64>,
15551}
15552#[derive(Clone, PartialEq, ::prost::Message)]
15553pub struct NetDevXmitFtraceEvent {
15554    #[prost(uint32, optional, tag="1")]
15555    pub len: ::core::option::Option<u32>,
15556    #[prost(string, optional, tag="2")]
15557    pub name: ::core::option::Option<::prost::alloc::string::String>,
15558    #[prost(int32, optional, tag="3")]
15559    pub rc: ::core::option::Option<i32>,
15560    #[prost(uint64, optional, tag="4")]
15561    pub skbaddr: ::core::option::Option<u64>,
15562}
15563#[derive(Clone, PartialEq, ::prost::Message)]
15564pub struct NapiGroReceiveEntryFtraceEvent {
15565    #[prost(uint32, optional, tag="1")]
15566    pub data_len: ::core::option::Option<u32>,
15567    #[prost(uint32, optional, tag="2")]
15568    pub gso_size: ::core::option::Option<u32>,
15569    #[prost(uint32, optional, tag="3")]
15570    pub gso_type: ::core::option::Option<u32>,
15571    #[prost(uint32, optional, tag="4")]
15572    pub hash: ::core::option::Option<u32>,
15573    #[prost(uint32, optional, tag="5")]
15574    pub ip_summed: ::core::option::Option<u32>,
15575    #[prost(uint32, optional, tag="6")]
15576    pub l4_hash: ::core::option::Option<u32>,
15577    #[prost(uint32, optional, tag="7")]
15578    pub len: ::core::option::Option<u32>,
15579    #[prost(int32, optional, tag="8")]
15580    pub mac_header: ::core::option::Option<i32>,
15581    #[prost(uint32, optional, tag="9")]
15582    pub mac_header_valid: ::core::option::Option<u32>,
15583    #[prost(string, optional, tag="10")]
15584    pub name: ::core::option::Option<::prost::alloc::string::String>,
15585    #[prost(uint32, optional, tag="11")]
15586    pub napi_id: ::core::option::Option<u32>,
15587    #[prost(uint32, optional, tag="12")]
15588    pub nr_frags: ::core::option::Option<u32>,
15589    #[prost(uint32, optional, tag="13")]
15590    pub protocol: ::core::option::Option<u32>,
15591    #[prost(uint32, optional, tag="14")]
15592    pub queue_mapping: ::core::option::Option<u32>,
15593    #[prost(uint64, optional, tag="15")]
15594    pub skbaddr: ::core::option::Option<u64>,
15595    #[prost(uint32, optional, tag="16")]
15596    pub truesize: ::core::option::Option<u32>,
15597    #[prost(uint32, optional, tag="17")]
15598    pub vlan_proto: ::core::option::Option<u32>,
15599    #[prost(uint32, optional, tag="18")]
15600    pub vlan_tagged: ::core::option::Option<u32>,
15601    #[prost(uint32, optional, tag="19")]
15602    pub vlan_tci: ::core::option::Option<u32>,
15603}
15604#[derive(Clone, PartialEq, ::prost::Message)]
15605pub struct NapiGroReceiveExitFtraceEvent {
15606    #[prost(int32, optional, tag="1")]
15607    pub ret: ::core::option::Option<i32>,
15608}
15609// End of protos/perfetto/trace/ftrace/net.proto
15610
15611// Begin of protos/perfetto/trace/ftrace/oom.proto
15612
15613#[derive(Clone, PartialEq, ::prost::Message)]
15614pub struct OomScoreAdjUpdateFtraceEvent {
15615    #[prost(string, optional, tag="1")]
15616    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15617    #[prost(int32, optional, tag="2")]
15618    pub oom_score_adj: ::core::option::Option<i32>,
15619    #[prost(int32, optional, tag="3")]
15620    pub pid: ::core::option::Option<i32>,
15621}
15622#[derive(Clone, PartialEq, ::prost::Message)]
15623pub struct MarkVictimFtraceEvent {
15624    #[prost(int32, optional, tag="1")]
15625    pub pid: ::core::option::Option<i32>,
15626}
15627// End of protos/perfetto/trace/ftrace/oom.proto
15628
15629// Begin of protos/perfetto/trace/ftrace/panel.proto
15630
15631#[derive(Clone, PartialEq, ::prost::Message)]
15632pub struct DsiCmdFifoStatusFtraceEvent {
15633    #[prost(uint32, optional, tag="1")]
15634    pub header: ::core::option::Option<u32>,
15635    #[prost(uint32, optional, tag="2")]
15636    pub payload: ::core::option::Option<u32>,
15637}
15638#[derive(Clone, PartialEq, ::prost::Message)]
15639pub struct DsiRxFtraceEvent {
15640    #[prost(uint32, optional, tag="1")]
15641    pub cmd: ::core::option::Option<u32>,
15642    #[prost(bytes="vec", optional, tag="3")]
15643    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15644}
15645#[derive(Clone, PartialEq, ::prost::Message)]
15646pub struct DsiTxFtraceEvent {
15647    #[prost(uint32, optional, tag="1")]
15648    pub last: ::core::option::Option<u32>,
15649    #[prost(uint32, optional, tag="3")]
15650    pub r#type: ::core::option::Option<u32>,
15651    #[prost(bytes="vec", optional, tag="4")]
15652    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15653}
15654#[derive(Clone, PartialEq, ::prost::Message)]
15655pub struct PanelWriteGenericFtraceEvent {
15656    #[prost(int32, optional, tag="1")]
15657    pub pid: ::core::option::Option<i32>,
15658    #[prost(string, optional, tag="2")]
15659    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15660    #[prost(uint32, optional, tag="3")]
15661    pub trace_begin: ::core::option::Option<u32>,
15662    #[prost(string, optional, tag="4")]
15663    pub name: ::core::option::Option<::prost::alloc::string::String>,
15664    #[prost(uint32, optional, tag="5")]
15665    pub r#type: ::core::option::Option<u32>,
15666    #[prost(int32, optional, tag="6")]
15667    pub value: ::core::option::Option<i32>,
15668}
15669#[derive(Clone, PartialEq, ::prost::Message)]
15670pub struct GramCollisionFtraceEvent {
15671    #[prost(int32, optional, tag="1")]
15672    pub panel_index: ::core::option::Option<i32>,
15673    #[prost(uint32, optional, tag="2")]
15674    pub collision_cnt: ::core::option::Option<u32>,
15675}
15676// End of protos/perfetto/trace/ftrace/panel.proto
15677
15678// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15679
15680#[derive(Clone, PartialEq, ::prost::Message)]
15681pub struct SchedSwitchWithCtrsFtraceEvent {
15682    #[prost(int32, optional, tag="1")]
15683    pub old_pid: ::core::option::Option<i32>,
15684    #[prost(int32, optional, tag="2")]
15685    pub new_pid: ::core::option::Option<i32>,
15686    #[prost(uint64, optional, tag="3")]
15687    pub cctr: ::core::option::Option<u64>,
15688    #[prost(uint64, optional, tag="4")]
15689    pub ctr0: ::core::option::Option<u64>,
15690    #[prost(uint64, optional, tag="5")]
15691    pub ctr1: ::core::option::Option<u64>,
15692    #[prost(uint64, optional, tag="6")]
15693    pub ctr2: ::core::option::Option<u64>,
15694    #[prost(uint64, optional, tag="7")]
15695    pub ctr3: ::core::option::Option<u64>,
15696    #[prost(uint32, optional, tag="8")]
15697    pub lctr0: ::core::option::Option<u32>,
15698    #[prost(uint32, optional, tag="9")]
15699    pub lctr1: ::core::option::Option<u32>,
15700    #[prost(uint64, optional, tag="10")]
15701    pub ctr4: ::core::option::Option<u64>,
15702    #[prost(uint64, optional, tag="11")]
15703    pub ctr5: ::core::option::Option<u64>,
15704    #[prost(string, optional, tag="12")]
15705    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15706    #[prost(int32, optional, tag="13")]
15707    pub prev_pid: ::core::option::Option<i32>,
15708    #[prost(uint32, optional, tag="14")]
15709    pub cyc: ::core::option::Option<u32>,
15710    #[prost(uint32, optional, tag="15")]
15711    pub inst: ::core::option::Option<u32>,
15712    #[prost(uint32, optional, tag="16")]
15713    pub stallbm: ::core::option::Option<u32>,
15714    #[prost(uint32, optional, tag="17")]
15715    pub l3dm: ::core::option::Option<u32>,
15716    #[prost(int32, optional, tag="18")]
15717    pub next_pid: ::core::option::Option<i32>,
15718    #[prost(string, optional, tag="19")]
15719    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15720    #[prost(int64, optional, tag="20")]
15721    pub prev_state: ::core::option::Option<i64>,
15722    #[prost(uint64, optional, tag="21")]
15723    pub amu0: ::core::option::Option<u64>,
15724    #[prost(uint64, optional, tag="22")]
15725    pub amu1: ::core::option::Option<u64>,
15726    #[prost(uint64, optional, tag="23")]
15727    pub amu2: ::core::option::Option<u64>,
15728}
15729// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15730
15731// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
15732
15733#[derive(Clone, PartialEq, ::prost::Message)]
15734pub struct PixelMmKswapdWakeFtraceEvent {
15735    #[prost(int32, optional, tag="1")]
15736    pub whatever: ::core::option::Option<i32>,
15737}
15738#[derive(Clone, PartialEq, ::prost::Message)]
15739pub struct PixelMmKswapdDoneFtraceEvent {
15740    #[prost(uint64, optional, tag="1")]
15741    pub delta_nr_scanned: ::core::option::Option<u64>,
15742    #[prost(uint64, optional, tag="2")]
15743    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15744    #[prost(uint64, optional, tag="3")]
15745    pub delta_nr_allocated: ::core::option::Option<u64>,
15746    #[prost(uint64, optional, tag="4")]
15747    pub duration_ns: ::core::option::Option<u64>,
15748}
15749// End of protos/perfetto/trace/ftrace/pixel_mm.proto
15750
15751// Begin of protos/perfetto/trace/ftrace/power.proto
15752
15753#[derive(Clone, PartialEq, ::prost::Message)]
15754pub struct CpuFrequencyFtraceEvent {
15755    #[prost(uint32, optional, tag="1")]
15756    pub state: ::core::option::Option<u32>,
15757    #[prost(uint32, optional, tag="2")]
15758    pub cpu_id: ::core::option::Option<u32>,
15759}
15760#[derive(Clone, PartialEq, ::prost::Message)]
15761pub struct CpuFrequencyLimitsFtraceEvent {
15762    #[prost(uint32, optional, tag="1")]
15763    pub min_freq: ::core::option::Option<u32>,
15764    #[prost(uint32, optional, tag="2")]
15765    pub max_freq: ::core::option::Option<u32>,
15766    #[prost(uint32, optional, tag="3")]
15767    pub cpu_id: ::core::option::Option<u32>,
15768}
15769#[derive(Clone, PartialEq, ::prost::Message)]
15770pub struct CpuIdleFtraceEvent {
15771    #[prost(uint32, optional, tag="1")]
15772    pub state: ::core::option::Option<u32>,
15773    #[prost(uint32, optional, tag="2")]
15774    pub cpu_id: ::core::option::Option<u32>,
15775}
15776#[derive(Clone, PartialEq, ::prost::Message)]
15777pub struct ClockEnableFtraceEvent {
15778    #[prost(string, optional, tag="1")]
15779    pub name: ::core::option::Option<::prost::alloc::string::String>,
15780    #[prost(uint64, optional, tag="2")]
15781    pub state: ::core::option::Option<u64>,
15782    #[prost(uint64, optional, tag="3")]
15783    pub cpu_id: ::core::option::Option<u64>,
15784}
15785#[derive(Clone, PartialEq, ::prost::Message)]
15786pub struct ClockDisableFtraceEvent {
15787    #[prost(string, optional, tag="1")]
15788    pub name: ::core::option::Option<::prost::alloc::string::String>,
15789    #[prost(uint64, optional, tag="2")]
15790    pub state: ::core::option::Option<u64>,
15791    #[prost(uint64, optional, tag="3")]
15792    pub cpu_id: ::core::option::Option<u64>,
15793}
15794#[derive(Clone, PartialEq, ::prost::Message)]
15795pub struct ClockSetRateFtraceEvent {
15796    #[prost(string, optional, tag="1")]
15797    pub name: ::core::option::Option<::prost::alloc::string::String>,
15798    #[prost(uint64, optional, tag="2")]
15799    pub state: ::core::option::Option<u64>,
15800    #[prost(uint64, optional, tag="3")]
15801    pub cpu_id: ::core::option::Option<u64>,
15802}
15803#[derive(Clone, PartialEq, ::prost::Message)]
15804pub struct SuspendResumeFtraceEvent {
15805    #[prost(string, optional, tag="1")]
15806    pub action: ::core::option::Option<::prost::alloc::string::String>,
15807    #[prost(int32, optional, tag="2")]
15808    pub val: ::core::option::Option<i32>,
15809    #[prost(uint32, optional, tag="3")]
15810    pub start: ::core::option::Option<u32>,
15811}
15812#[derive(Clone, PartialEq, ::prost::Message)]
15813pub struct GpuFrequencyFtraceEvent {
15814    #[prost(uint32, optional, tag="1")]
15815    pub gpu_id: ::core::option::Option<u32>,
15816    #[prost(uint32, optional, tag="2")]
15817    pub state: ::core::option::Option<u32>,
15818}
15819#[derive(Clone, PartialEq, ::prost::Message)]
15820pub struct WakeupSourceActivateFtraceEvent {
15821    #[prost(string, optional, tag="1")]
15822    pub name: ::core::option::Option<::prost::alloc::string::String>,
15823    #[prost(uint64, optional, tag="2")]
15824    pub state: ::core::option::Option<u64>,
15825}
15826#[derive(Clone, PartialEq, ::prost::Message)]
15827pub struct WakeupSourceDeactivateFtraceEvent {
15828    #[prost(string, optional, tag="1")]
15829    pub name: ::core::option::Option<::prost::alloc::string::String>,
15830    #[prost(uint64, optional, tag="2")]
15831    pub state: ::core::option::Option<u64>,
15832}
15833#[derive(Clone, PartialEq, ::prost::Message)]
15834pub struct GpuWorkPeriodFtraceEvent {
15835    #[prost(uint32, optional, tag="1")]
15836    pub gpu_id: ::core::option::Option<u32>,
15837    #[prost(uint32, optional, tag="2")]
15838    pub uid: ::core::option::Option<u32>,
15839    #[prost(uint64, optional, tag="3")]
15840    pub start_time_ns: ::core::option::Option<u64>,
15841    #[prost(uint64, optional, tag="4")]
15842    pub end_time_ns: ::core::option::Option<u64>,
15843    #[prost(uint64, optional, tag="5")]
15844    pub total_active_duration_ns: ::core::option::Option<u64>,
15845}
15846#[derive(Clone, PartialEq, ::prost::Message)]
15847pub struct DevicePmCallbackStartFtraceEvent {
15848    #[prost(string, optional, tag="1")]
15849    pub device: ::core::option::Option<::prost::alloc::string::String>,
15850    #[prost(string, optional, tag="2")]
15851    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15852    #[prost(string, optional, tag="3")]
15853    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15854    #[prost(string, optional, tag="4")]
15855    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15856    #[prost(int32, optional, tag="5")]
15857    pub event: ::core::option::Option<i32>,
15858}
15859#[derive(Clone, PartialEq, ::prost::Message)]
15860pub struct DevicePmCallbackEndFtraceEvent {
15861    #[prost(string, optional, tag="1")]
15862    pub device: ::core::option::Option<::prost::alloc::string::String>,
15863    #[prost(string, optional, tag="2")]
15864    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15865    #[prost(int32, optional, tag="3")]
15866    pub error: ::core::option::Option<i32>,
15867}
15868#[derive(Clone, PartialEq, ::prost::Message)]
15869pub struct GpuPowerStateFtraceEvent {
15870    #[prost(int32, optional, tag="1")]
15871    pub old_state: ::core::option::Option<i32>,
15872    #[prost(int32, optional, tag="2")]
15873    pub new_state: ::core::option::Option<i32>,
15874}
15875// End of protos/perfetto/trace/ftrace/power.proto
15876
15877// Begin of protos/perfetto/trace/ftrace/printk.proto
15878
15879#[derive(Clone, PartialEq, ::prost::Message)]
15880pub struct ConsoleFtraceEvent {
15881    #[prost(string, optional, tag="1")]
15882    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15883}
15884// End of protos/perfetto/trace/ftrace/printk.proto
15885
15886// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
15887
15888#[derive(Clone, PartialEq, ::prost::Message)]
15889pub struct SysEnterFtraceEvent {
15890    #[prost(int64, optional, tag="1")]
15891    pub id: ::core::option::Option<i64>,
15892    #[prost(uint64, repeated, packed="false", tag="2")]
15893    pub args: ::prost::alloc::vec::Vec<u64>,
15894}
15895#[derive(Clone, PartialEq, ::prost::Message)]
15896pub struct SysExitFtraceEvent {
15897    #[prost(int64, optional, tag="1")]
15898    pub id: ::core::option::Option<i64>,
15899    #[prost(int64, optional, tag="2")]
15900    pub ret: ::core::option::Option<i64>,
15901}
15902// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
15903
15904// Begin of protos/perfetto/trace/ftrace/regulator.proto
15905
15906#[derive(Clone, PartialEq, ::prost::Message)]
15907pub struct RegulatorDisableFtraceEvent {
15908    #[prost(string, optional, tag="1")]
15909    pub name: ::core::option::Option<::prost::alloc::string::String>,
15910}
15911#[derive(Clone, PartialEq, ::prost::Message)]
15912pub struct RegulatorDisableCompleteFtraceEvent {
15913    #[prost(string, optional, tag="1")]
15914    pub name: ::core::option::Option<::prost::alloc::string::String>,
15915}
15916#[derive(Clone, PartialEq, ::prost::Message)]
15917pub struct RegulatorEnableFtraceEvent {
15918    #[prost(string, optional, tag="1")]
15919    pub name: ::core::option::Option<::prost::alloc::string::String>,
15920}
15921#[derive(Clone, PartialEq, ::prost::Message)]
15922pub struct RegulatorEnableCompleteFtraceEvent {
15923    #[prost(string, optional, tag="1")]
15924    pub name: ::core::option::Option<::prost::alloc::string::String>,
15925}
15926#[derive(Clone, PartialEq, ::prost::Message)]
15927pub struct RegulatorEnableDelayFtraceEvent {
15928    #[prost(string, optional, tag="1")]
15929    pub name: ::core::option::Option<::prost::alloc::string::String>,
15930}
15931#[derive(Clone, PartialEq, ::prost::Message)]
15932pub struct RegulatorSetVoltageFtraceEvent {
15933    #[prost(string, optional, tag="1")]
15934    pub name: ::core::option::Option<::prost::alloc::string::String>,
15935    #[prost(int32, optional, tag="2")]
15936    pub min: ::core::option::Option<i32>,
15937    #[prost(int32, optional, tag="3")]
15938    pub max: ::core::option::Option<i32>,
15939}
15940#[derive(Clone, PartialEq, ::prost::Message)]
15941pub struct RegulatorSetVoltageCompleteFtraceEvent {
15942    #[prost(string, optional, tag="1")]
15943    pub name: ::core::option::Option<::prost::alloc::string::String>,
15944    #[prost(uint32, optional, tag="2")]
15945    pub val: ::core::option::Option<u32>,
15946}
15947// End of protos/perfetto/trace/ftrace/regulator.proto
15948
15949// Begin of protos/perfetto/trace/ftrace/rpm.proto
15950
15951#[derive(Clone, PartialEq, ::prost::Message)]
15952pub struct RpmStatusFtraceEvent {
15953    #[prost(string, optional, tag="1")]
15954    pub name: ::core::option::Option<::prost::alloc::string::String>,
15955    #[prost(int32, optional, tag="2")]
15956    pub status: ::core::option::Option<i32>,
15957}
15958// End of protos/perfetto/trace/ftrace/rpm.proto
15959
15960// Begin of protos/perfetto/trace/ftrace/samsung.proto
15961
15962#[derive(Clone, PartialEq, ::prost::Message)]
15963pub struct SamsungTracingMarkWriteFtraceEvent {
15964    #[prost(int32, optional, tag="1")]
15965    pub pid: ::core::option::Option<i32>,
15966    #[prost(string, optional, tag="2")]
15967    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15968    #[prost(uint32, optional, tag="3")]
15969    pub trace_begin: ::core::option::Option<u32>,
15970    #[prost(uint32, optional, tag="4")]
15971    pub trace_type: ::core::option::Option<u32>,
15972    #[prost(int32, optional, tag="5")]
15973    pub value: ::core::option::Option<i32>,
15974}
15975// End of protos/perfetto/trace/ftrace/samsung.proto
15976
15977// Begin of protos/perfetto/trace/ftrace/sched.proto
15978
15979#[derive(Clone, PartialEq, ::prost::Message)]
15980pub struct SchedSwitchFtraceEvent {
15981    #[prost(string, optional, tag="1")]
15982    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15983    #[prost(int32, optional, tag="2")]
15984    pub prev_pid: ::core::option::Option<i32>,
15985    #[prost(int32, optional, tag="3")]
15986    pub prev_prio: ::core::option::Option<i32>,
15987    #[prost(int64, optional, tag="4")]
15988    pub prev_state: ::core::option::Option<i64>,
15989    #[prost(string, optional, tag="5")]
15990    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15991    #[prost(int32, optional, tag="6")]
15992    pub next_pid: ::core::option::Option<i32>,
15993    #[prost(int32, optional, tag="7")]
15994    pub next_prio: ::core::option::Option<i32>,
15995}
15996#[derive(Clone, PartialEq, ::prost::Message)]
15997pub struct SchedWakeupFtraceEvent {
15998    #[prost(string, optional, tag="1")]
15999    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16000    #[prost(int32, optional, tag="2")]
16001    pub pid: ::core::option::Option<i32>,
16002    #[prost(int32, optional, tag="3")]
16003    pub prio: ::core::option::Option<i32>,
16004    #[prost(int32, optional, tag="4")]
16005    pub success: ::core::option::Option<i32>,
16006    #[prost(int32, optional, tag="5")]
16007    pub target_cpu: ::core::option::Option<i32>,
16008}
16009#[derive(Clone, PartialEq, ::prost::Message)]
16010pub struct SchedBlockedReasonFtraceEvent {
16011    #[prost(int32, optional, tag="1")]
16012    pub pid: ::core::option::Option<i32>,
16013    #[prost(uint64, optional, tag="2")]
16014    pub caller: ::core::option::Option<u64>,
16015    #[prost(uint32, optional, tag="3")]
16016    pub io_wait: ::core::option::Option<u32>,
16017}
16018#[derive(Clone, PartialEq, ::prost::Message)]
16019pub struct SchedCpuHotplugFtraceEvent {
16020    #[prost(int32, optional, tag="1")]
16021    pub affected_cpu: ::core::option::Option<i32>,
16022    #[prost(int32, optional, tag="2")]
16023    pub error: ::core::option::Option<i32>,
16024    #[prost(int32, optional, tag="3")]
16025    pub status: ::core::option::Option<i32>,
16026}
16027#[derive(Clone, PartialEq, ::prost::Message)]
16028pub struct SchedWakingFtraceEvent {
16029    #[prost(string, optional, tag="1")]
16030    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16031    #[prost(int32, optional, tag="2")]
16032    pub pid: ::core::option::Option<i32>,
16033    #[prost(int32, optional, tag="3")]
16034    pub prio: ::core::option::Option<i32>,
16035    #[prost(int32, optional, tag="4")]
16036    pub success: ::core::option::Option<i32>,
16037    #[prost(int32, optional, tag="5")]
16038    pub target_cpu: ::core::option::Option<i32>,
16039}
16040#[derive(Clone, PartialEq, ::prost::Message)]
16041pub struct SchedWakeupNewFtraceEvent {
16042    #[prost(string, optional, tag="1")]
16043    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16044    #[prost(int32, optional, tag="2")]
16045    pub pid: ::core::option::Option<i32>,
16046    #[prost(int32, optional, tag="3")]
16047    pub prio: ::core::option::Option<i32>,
16048    #[prost(int32, optional, tag="4")]
16049    pub success: ::core::option::Option<i32>,
16050    #[prost(int32, optional, tag="5")]
16051    pub target_cpu: ::core::option::Option<i32>,
16052}
16053#[derive(Clone, PartialEq, ::prost::Message)]
16054pub struct SchedProcessExecFtraceEvent {
16055    #[prost(string, optional, tag="1")]
16056    pub filename: ::core::option::Option<::prost::alloc::string::String>,
16057    #[prost(int32, optional, tag="2")]
16058    pub pid: ::core::option::Option<i32>,
16059    #[prost(int32, optional, tag="3")]
16060    pub old_pid: ::core::option::Option<i32>,
16061}
16062#[derive(Clone, PartialEq, ::prost::Message)]
16063pub struct SchedProcessExitFtraceEvent {
16064    #[prost(string, optional, tag="1")]
16065    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16066    #[prost(int32, optional, tag="2")]
16067    pub pid: ::core::option::Option<i32>,
16068    #[prost(int32, optional, tag="3")]
16069    pub tgid: ::core::option::Option<i32>,
16070    #[prost(int32, optional, tag="4")]
16071    pub prio: ::core::option::Option<i32>,
16072}
16073#[derive(Clone, PartialEq, ::prost::Message)]
16074pub struct SchedProcessForkFtraceEvent {
16075    #[prost(string, optional, tag="1")]
16076    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
16077    #[prost(int32, optional, tag="2")]
16078    pub parent_pid: ::core::option::Option<i32>,
16079    #[prost(string, optional, tag="3")]
16080    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
16081    #[prost(int32, optional, tag="4")]
16082    pub child_pid: ::core::option::Option<i32>,
16083}
16084#[derive(Clone, PartialEq, ::prost::Message)]
16085pub struct SchedProcessFreeFtraceEvent {
16086    #[prost(string, optional, tag="1")]
16087    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16088    #[prost(int32, optional, tag="2")]
16089    pub pid: ::core::option::Option<i32>,
16090    #[prost(int32, optional, tag="3")]
16091    pub prio: ::core::option::Option<i32>,
16092}
16093#[derive(Clone, PartialEq, ::prost::Message)]
16094pub struct SchedProcessHangFtraceEvent {
16095    #[prost(string, optional, tag="1")]
16096    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16097    #[prost(int32, optional, tag="2")]
16098    pub pid: ::core::option::Option<i32>,
16099}
16100#[derive(Clone, PartialEq, ::prost::Message)]
16101pub struct SchedProcessWaitFtraceEvent {
16102    #[prost(string, optional, tag="1")]
16103    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16104    #[prost(int32, optional, tag="2")]
16105    pub pid: ::core::option::Option<i32>,
16106    #[prost(int32, optional, tag="3")]
16107    pub prio: ::core::option::Option<i32>,
16108}
16109#[derive(Clone, PartialEq, ::prost::Message)]
16110pub struct SchedPiSetprioFtraceEvent {
16111    #[prost(string, optional, tag="1")]
16112    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16113    #[prost(int32, optional, tag="2")]
16114    pub newprio: ::core::option::Option<i32>,
16115    #[prost(int32, optional, tag="3")]
16116    pub oldprio: ::core::option::Option<i32>,
16117    #[prost(int32, optional, tag="4")]
16118    pub pid: ::core::option::Option<i32>,
16119}
16120#[derive(Clone, PartialEq, ::prost::Message)]
16121pub struct SchedCpuUtilCfsFtraceEvent {
16122    #[prost(int32, optional, tag="1")]
16123    pub active: ::core::option::Option<i32>,
16124    #[prost(uint64, optional, tag="2")]
16125    pub capacity: ::core::option::Option<u64>,
16126    #[prost(uint64, optional, tag="3")]
16127    pub capacity_orig: ::core::option::Option<u64>,
16128    #[prost(uint32, optional, tag="4")]
16129    pub cpu: ::core::option::Option<u32>,
16130    #[prost(uint64, optional, tag="5")]
16131    pub cpu_importance: ::core::option::Option<u64>,
16132    #[prost(uint64, optional, tag="6")]
16133    pub cpu_util: ::core::option::Option<u64>,
16134    #[prost(uint32, optional, tag="7")]
16135    pub exit_lat: ::core::option::Option<u32>,
16136    #[prost(uint64, optional, tag="8")]
16137    pub group_capacity: ::core::option::Option<u64>,
16138    #[prost(uint32, optional, tag="9")]
16139    pub grp_overutilized: ::core::option::Option<u32>,
16140    #[prost(uint32, optional, tag="10")]
16141    pub idle_cpu: ::core::option::Option<u32>,
16142    #[prost(uint32, optional, tag="11")]
16143    pub nr_running: ::core::option::Option<u32>,
16144    #[prost(int64, optional, tag="12")]
16145    pub spare_cap: ::core::option::Option<i64>,
16146    #[prost(uint32, optional, tag="13")]
16147    pub task_fits: ::core::option::Option<u32>,
16148    #[prost(uint64, optional, tag="14")]
16149    pub wake_group_util: ::core::option::Option<u64>,
16150    #[prost(uint64, optional, tag="15")]
16151    pub wake_util: ::core::option::Option<u64>,
16152}
16153#[derive(Clone, PartialEq, ::prost::Message)]
16154pub struct SchedMigrateTaskFtraceEvent {
16155    #[prost(string, optional, tag="1")]
16156    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16157    #[prost(int32, optional, tag="2")]
16158    pub pid: ::core::option::Option<i32>,
16159    #[prost(int32, optional, tag="3")]
16160    pub prio: ::core::option::Option<i32>,
16161    #[prost(int32, optional, tag="4")]
16162    pub orig_cpu: ::core::option::Option<i32>,
16163    #[prost(int32, optional, tag="5")]
16164    pub dest_cpu: ::core::option::Option<i32>,
16165    #[prost(int32, optional, tag="6")]
16166    pub running: ::core::option::Option<i32>,
16167    #[prost(uint32, optional, tag="7")]
16168    pub load: ::core::option::Option<u32>,
16169}
16170#[derive(Clone, PartialEq, ::prost::Message)]
16171pub struct SchedWakeupTaskAttrFtraceEvent {
16172    #[prost(int32, optional, tag="1")]
16173    pub pid: ::core::option::Option<i32>,
16174    #[prost(uint64, optional, tag="2")]
16175    pub cpu_affinity: ::core::option::Option<u64>,
16176    #[prost(uint64, optional, tag="3")]
16177    pub task_util: ::core::option::Option<u64>,
16178    #[prost(uint64, optional, tag="4")]
16179    pub uclamp_min: ::core::option::Option<u64>,
16180    #[prost(uint64, optional, tag="5")]
16181    pub vruntime: ::core::option::Option<u64>,
16182}
16183#[derive(Clone, PartialEq, ::prost::Message)]
16184pub struct SchedGroupTrackerFtraceEvent {
16185    #[prost(string, optional, tag="1")]
16186    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16187    #[prost(int32, optional, tag="2")]
16188    pub pid: ::core::option::Option<i32>,
16189    #[prost(string, optional, tag="3")]
16190    pub group: ::core::option::Option<::prost::alloc::string::String>,
16191    #[prost(int32, optional, tag="4")]
16192    pub group_num: ::core::option::Option<i32>,
16193}
16194// End of protos/perfetto/trace/ftrace/sched.proto
16195
16196// Begin of protos/perfetto/trace/ftrace/scm.proto
16197
16198#[derive(Clone, PartialEq, ::prost::Message)]
16199pub struct ScmCallStartFtraceEvent {
16200    #[prost(uint32, optional, tag="1")]
16201    pub arginfo: ::core::option::Option<u32>,
16202    #[prost(uint64, optional, tag="2")]
16203    pub x0: ::core::option::Option<u64>,
16204    #[prost(uint64, optional, tag="3")]
16205    pub x5: ::core::option::Option<u64>,
16206}
16207#[derive(Clone, PartialEq, ::prost::Message)]
16208pub struct ScmCallEndFtraceEvent {
16209}
16210// End of protos/perfetto/trace/ftrace/scm.proto
16211
16212// Begin of protos/perfetto/trace/ftrace/scsi.proto
16213
16214#[derive(Clone, PartialEq, ::prost::Message)]
16215pub struct ScsiDispatchCmdErrorFtraceEvent {
16216    #[prost(uint32, optional, tag="1")]
16217    pub host_no: ::core::option::Option<u32>,
16218    #[prost(uint32, optional, tag="2")]
16219    pub channel: ::core::option::Option<u32>,
16220    #[prost(uint32, optional, tag="3")]
16221    pub id: ::core::option::Option<u32>,
16222    #[prost(uint32, optional, tag="4")]
16223    pub lun: ::core::option::Option<u32>,
16224    #[prost(int32, optional, tag="5")]
16225    pub rtn: ::core::option::Option<i32>,
16226    #[prost(uint32, optional, tag="6")]
16227    pub opcode: ::core::option::Option<u32>,
16228    #[prost(uint32, optional, tag="7")]
16229    pub cmd_len: ::core::option::Option<u32>,
16230    #[prost(uint32, optional, tag="8")]
16231    pub data_sglen: ::core::option::Option<u32>,
16232    #[prost(uint32, optional, tag="9")]
16233    pub prot_sglen: ::core::option::Option<u32>,
16234    #[prost(uint32, optional, tag="10")]
16235    pub prot_op: ::core::option::Option<u32>,
16236    #[prost(int32, optional, tag="12")]
16237    pub driver_tag: ::core::option::Option<i32>,
16238    #[prost(int32, optional, tag="13")]
16239    pub scheduler_tag: ::core::option::Option<i32>,
16240    #[prost(bytes="vec", optional, tag="14")]
16241    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16242}
16243#[derive(Clone, PartialEq, ::prost::Message)]
16244pub struct ScsiDispatchCmdTimeoutFtraceEvent {
16245    #[prost(uint32, optional, tag="1")]
16246    pub host_no: ::core::option::Option<u32>,
16247    #[prost(uint32, optional, tag="2")]
16248    pub channel: ::core::option::Option<u32>,
16249    #[prost(uint32, optional, tag="3")]
16250    pub id: ::core::option::Option<u32>,
16251    #[prost(uint32, optional, tag="4")]
16252    pub lun: ::core::option::Option<u32>,
16253    #[prost(int32, optional, tag="5")]
16254    pub result: ::core::option::Option<i32>,
16255    #[prost(uint32, optional, tag="6")]
16256    pub opcode: ::core::option::Option<u32>,
16257    #[prost(uint32, optional, tag="7")]
16258    pub cmd_len: ::core::option::Option<u32>,
16259    #[prost(uint32, optional, tag="8")]
16260    pub data_sglen: ::core::option::Option<u32>,
16261    #[prost(uint32, optional, tag="9")]
16262    pub prot_sglen: ::core::option::Option<u32>,
16263    #[prost(uint32, optional, tag="10")]
16264    pub prot_op: ::core::option::Option<u32>,
16265    #[prost(int32, optional, tag="12")]
16266    pub driver_tag: ::core::option::Option<i32>,
16267    #[prost(int32, optional, tag="13")]
16268    pub scheduler_tag: ::core::option::Option<i32>,
16269    #[prost(uint32, optional, tag="14")]
16270    pub sense_key: ::core::option::Option<u32>,
16271    #[prost(uint32, optional, tag="15")]
16272    pub asc: ::core::option::Option<u32>,
16273    #[prost(uint32, optional, tag="16")]
16274    pub ascq: ::core::option::Option<u32>,
16275    #[prost(bytes="vec", optional, tag="17")]
16276    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16277}
16278#[derive(Clone, PartialEq, ::prost::Message)]
16279pub struct ScsiEhWakeupFtraceEvent {
16280    #[prost(uint32, optional, tag="1")]
16281    pub host_no: ::core::option::Option<u32>,
16282}
16283// End of protos/perfetto/trace/ftrace/scsi.proto
16284
16285// Begin of protos/perfetto/trace/ftrace/sde.proto
16286
16287#[derive(Clone, PartialEq, ::prost::Message)]
16288pub struct SdeTracingMarkWriteFtraceEvent {
16289    #[prost(int32, optional, tag="1")]
16290    pub pid: ::core::option::Option<i32>,
16291    #[prost(string, optional, tag="2")]
16292    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16293    #[prost(uint32, optional, tag="3")]
16294    pub trace_type: ::core::option::Option<u32>,
16295    #[prost(int32, optional, tag="4")]
16296    pub value: ::core::option::Option<i32>,
16297    #[prost(uint32, optional, tag="5")]
16298    pub trace_begin: ::core::option::Option<u32>,
16299}
16300#[derive(Clone, PartialEq, ::prost::Message)]
16301pub struct SdeSdeEvtlogFtraceEvent {
16302    #[prost(string, optional, tag="1")]
16303    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
16304    #[prost(int32, optional, tag="2")]
16305    pub pid: ::core::option::Option<i32>,
16306    #[prost(uint32, optional, tag="3")]
16307    pub tag_id: ::core::option::Option<u32>,
16308}
16309#[derive(Clone, PartialEq, ::prost::Message)]
16310pub struct SdeSdePerfCalcCrtcFtraceEvent {
16311    #[prost(uint64, optional, tag="1")]
16312    pub bw_ctl_ebi: ::core::option::Option<u64>,
16313    #[prost(uint64, optional, tag="2")]
16314    pub bw_ctl_llcc: ::core::option::Option<u64>,
16315    #[prost(uint64, optional, tag="3")]
16316    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16317    #[prost(uint32, optional, tag="4")]
16318    pub core_clk_rate: ::core::option::Option<u32>,
16319    #[prost(uint32, optional, tag="5")]
16320    pub crtc: ::core::option::Option<u32>,
16321    #[prost(uint64, optional, tag="6")]
16322    pub ib_ebi: ::core::option::Option<u64>,
16323    #[prost(uint64, optional, tag="7")]
16324    pub ib_llcc: ::core::option::Option<u64>,
16325    #[prost(uint64, optional, tag="8")]
16326    pub ib_mnoc: ::core::option::Option<u64>,
16327}
16328#[derive(Clone, PartialEq, ::prost::Message)]
16329pub struct SdeSdePerfCrtcUpdateFtraceEvent {
16330    #[prost(uint64, optional, tag="1")]
16331    pub bw_ctl_ebi: ::core::option::Option<u64>,
16332    #[prost(uint64, optional, tag="2")]
16333    pub bw_ctl_llcc: ::core::option::Option<u64>,
16334    #[prost(uint64, optional, tag="3")]
16335    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16336    #[prost(uint32, optional, tag="4")]
16337    pub core_clk_rate: ::core::option::Option<u32>,
16338    #[prost(uint32, optional, tag="5")]
16339    pub crtc: ::core::option::Option<u32>,
16340    #[prost(int32, optional, tag="6")]
16341    pub params: ::core::option::Option<i32>,
16342    #[prost(uint64, optional, tag="7")]
16343    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
16344    #[prost(uint64, optional, tag="8")]
16345    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
16346    #[prost(uint64, optional, tag="9")]
16347    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
16348    #[prost(uint32, optional, tag="10")]
16349    pub stop_req: ::core::option::Option<u32>,
16350    #[prost(uint32, optional, tag="11")]
16351    pub update_bus: ::core::option::Option<u32>,
16352    #[prost(uint32, optional, tag="12")]
16353    pub update_clk: ::core::option::Option<u32>,
16354}
16355#[derive(Clone, PartialEq, ::prost::Message)]
16356pub struct SdeSdePerfSetQosLutsFtraceEvent {
16357    #[prost(uint32, optional, tag="1")]
16358    pub fl: ::core::option::Option<u32>,
16359    #[prost(uint32, optional, tag="2")]
16360    pub fmt: ::core::option::Option<u32>,
16361    #[prost(uint64, optional, tag="3")]
16362    pub lut: ::core::option::Option<u64>,
16363    #[prost(uint32, optional, tag="4")]
16364    pub lut_usage: ::core::option::Option<u32>,
16365    #[prost(uint32, optional, tag="5")]
16366    pub pnum: ::core::option::Option<u32>,
16367    #[prost(uint32, optional, tag="6")]
16368    pub rt: ::core::option::Option<u32>,
16369}
16370#[derive(Clone, PartialEq, ::prost::Message)]
16371pub struct SdeSdePerfUpdateBusFtraceEvent {
16372    #[prost(uint64, optional, tag="1")]
16373    pub ab_quota: ::core::option::Option<u64>,
16374    #[prost(uint32, optional, tag="2")]
16375    pub bus_id: ::core::option::Option<u32>,
16376    #[prost(int32, optional, tag="3")]
16377    pub client: ::core::option::Option<i32>,
16378    #[prost(uint64, optional, tag="4")]
16379    pub ib_quota: ::core::option::Option<u64>,
16380}
16381// End of protos/perfetto/trace/ftrace/sde.proto
16382
16383// Begin of protos/perfetto/trace/ftrace/signal.proto
16384
16385#[derive(Clone, PartialEq, ::prost::Message)]
16386pub struct SignalDeliverFtraceEvent {
16387    #[prost(int32, optional, tag="1")]
16388    pub code: ::core::option::Option<i32>,
16389    #[prost(uint64, optional, tag="2")]
16390    pub sa_flags: ::core::option::Option<u64>,
16391    #[prost(int32, optional, tag="3")]
16392    pub sig: ::core::option::Option<i32>,
16393}
16394#[derive(Clone, PartialEq, ::prost::Message)]
16395pub struct SignalGenerateFtraceEvent {
16396    #[prost(int32, optional, tag="1")]
16397    pub code: ::core::option::Option<i32>,
16398    #[prost(string, optional, tag="2")]
16399    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16400    #[prost(int32, optional, tag="3")]
16401    pub group: ::core::option::Option<i32>,
16402    #[prost(int32, optional, tag="4")]
16403    pub pid: ::core::option::Option<i32>,
16404    #[prost(int32, optional, tag="5")]
16405    pub result: ::core::option::Option<i32>,
16406    #[prost(int32, optional, tag="6")]
16407    pub sig: ::core::option::Option<i32>,
16408}
16409// End of protos/perfetto/trace/ftrace/signal.proto
16410
16411// Begin of protos/perfetto/trace/ftrace/skb.proto
16412
16413#[derive(Clone, PartialEq, ::prost::Message)]
16414pub struct KfreeSkbFtraceEvent {
16415    #[prost(uint64, optional, tag="1")]
16416    pub location: ::core::option::Option<u64>,
16417    #[prost(uint32, optional, tag="2")]
16418    pub protocol: ::core::option::Option<u32>,
16419    #[prost(uint64, optional, tag="3")]
16420    pub skbaddr: ::core::option::Option<u64>,
16421}
16422// End of protos/perfetto/trace/ftrace/skb.proto
16423
16424// Begin of protos/perfetto/trace/ftrace/sock.proto
16425
16426#[derive(Clone, PartialEq, ::prost::Message)]
16427pub struct InetSockSetStateFtraceEvent {
16428    #[prost(uint32, optional, tag="1")]
16429    pub daddr: ::core::option::Option<u32>,
16430    #[prost(uint32, optional, tag="2")]
16431    pub dport: ::core::option::Option<u32>,
16432    #[prost(uint32, optional, tag="3")]
16433    pub family: ::core::option::Option<u32>,
16434    #[prost(int32, optional, tag="4")]
16435    pub newstate: ::core::option::Option<i32>,
16436    #[prost(int32, optional, tag="5")]
16437    pub oldstate: ::core::option::Option<i32>,
16438    #[prost(uint32, optional, tag="6")]
16439    pub protocol: ::core::option::Option<u32>,
16440    #[prost(uint32, optional, tag="7")]
16441    pub saddr: ::core::option::Option<u32>,
16442    #[prost(uint64, optional, tag="8")]
16443    pub skaddr: ::core::option::Option<u64>,
16444    #[prost(uint32, optional, tag="9")]
16445    pub sport: ::core::option::Option<u32>,
16446}
16447// End of protos/perfetto/trace/ftrace/sock.proto
16448
16449// Begin of protos/perfetto/trace/ftrace/sync.proto
16450
16451#[derive(Clone, PartialEq, ::prost::Message)]
16452pub struct SyncPtFtraceEvent {
16453    #[prost(string, optional, tag="1")]
16454    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16455    #[prost(string, optional, tag="2")]
16456    pub value: ::core::option::Option<::prost::alloc::string::String>,
16457}
16458#[derive(Clone, PartialEq, ::prost::Message)]
16459pub struct SyncTimelineFtraceEvent {
16460    #[prost(string, optional, tag="1")]
16461    pub name: ::core::option::Option<::prost::alloc::string::String>,
16462    #[prost(string, optional, tag="2")]
16463    pub value: ::core::option::Option<::prost::alloc::string::String>,
16464}
16465#[derive(Clone, PartialEq, ::prost::Message)]
16466pub struct SyncWaitFtraceEvent {
16467    #[prost(string, optional, tag="1")]
16468    pub name: ::core::option::Option<::prost::alloc::string::String>,
16469    #[prost(int32, optional, tag="2")]
16470    pub status: ::core::option::Option<i32>,
16471    #[prost(uint32, optional, tag="3")]
16472    pub begin: ::core::option::Option<u32>,
16473}
16474// End of protos/perfetto/trace/ftrace/sync.proto
16475
16476// Begin of protos/perfetto/trace/ftrace/synthetic.proto
16477
16478#[derive(Clone, PartialEq, ::prost::Message)]
16479pub struct RssStatThrottledFtraceEvent {
16480    #[prost(uint32, optional, tag="1")]
16481    pub curr: ::core::option::Option<u32>,
16482    #[prost(int32, optional, tag="2")]
16483    pub member: ::core::option::Option<i32>,
16484    #[prost(uint32, optional, tag="3")]
16485    pub mm_id: ::core::option::Option<u32>,
16486    #[prost(int64, optional, tag="4")]
16487    pub size: ::core::option::Option<i64>,
16488}
16489#[derive(Clone, PartialEq, ::prost::Message)]
16490pub struct SuspendResumeMinimalFtraceEvent {
16491    #[prost(uint32, optional, tag="1")]
16492    pub start: ::core::option::Option<u32>,
16493}
16494// End of protos/perfetto/trace/ftrace/synthetic.proto
16495
16496// Begin of protos/perfetto/trace/ftrace/systrace.proto
16497
16498#[derive(Clone, PartialEq, ::prost::Message)]
16499pub struct ZeroFtraceEvent {
16500    #[prost(int32, optional, tag="1")]
16501    pub flag: ::core::option::Option<i32>,
16502    #[prost(string, optional, tag="2")]
16503    pub name: ::core::option::Option<::prost::alloc::string::String>,
16504    #[prost(int32, optional, tag="3")]
16505    pub pid: ::core::option::Option<i32>,
16506    #[prost(int64, optional, tag="4")]
16507    pub value: ::core::option::Option<i64>,
16508}
16509// End of protos/perfetto/trace/ftrace/systrace.proto
16510
16511// Begin of protos/perfetto/trace/ftrace/task.proto
16512
16513#[derive(Clone, PartialEq, ::prost::Message)]
16514pub struct TaskNewtaskFtraceEvent {
16515    #[prost(int32, optional, tag="1")]
16516    pub pid: ::core::option::Option<i32>,
16517    #[prost(string, optional, tag="2")]
16518    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16519    #[prost(uint64, optional, tag="3")]
16520    pub clone_flags: ::core::option::Option<u64>,
16521    #[prost(int32, optional, tag="4")]
16522    pub oom_score_adj: ::core::option::Option<i32>,
16523}
16524#[derive(Clone, PartialEq, ::prost::Message)]
16525pub struct TaskRenameFtraceEvent {
16526    #[prost(int32, optional, tag="1")]
16527    pub pid: ::core::option::Option<i32>,
16528    #[prost(string, optional, tag="2")]
16529    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16530    #[prost(string, optional, tag="3")]
16531    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16532    #[prost(int32, optional, tag="4")]
16533    pub oom_score_adj: ::core::option::Option<i32>,
16534}
16535// End of protos/perfetto/trace/ftrace/task.proto
16536
16537// Begin of protos/perfetto/trace/ftrace/tcp.proto
16538
16539#[derive(Clone, PartialEq, ::prost::Message)]
16540pub struct TcpRetransmitSkbFtraceEvent {
16541    #[prost(uint32, optional, tag="1")]
16542    pub daddr: ::core::option::Option<u32>,
16543    #[prost(uint32, optional, tag="2")]
16544    pub dport: ::core::option::Option<u32>,
16545    #[prost(uint32, optional, tag="3")]
16546    pub saddr: ::core::option::Option<u32>,
16547    #[prost(uint64, optional, tag="4")]
16548    pub skaddr: ::core::option::Option<u64>,
16549    #[prost(uint64, optional, tag="5")]
16550    pub skbaddr: ::core::option::Option<u64>,
16551    #[prost(uint32, optional, tag="6")]
16552    pub sport: ::core::option::Option<u32>,
16553    #[prost(int32, optional, tag="7")]
16554    pub state: ::core::option::Option<i32>,
16555}
16556// End of protos/perfetto/trace/ftrace/tcp.proto
16557
16558// Begin of protos/perfetto/trace/ftrace/thermal.proto
16559
16560#[derive(Clone, PartialEq, ::prost::Message)]
16561pub struct ThermalTemperatureFtraceEvent {
16562    #[prost(int32, optional, tag="1")]
16563    pub id: ::core::option::Option<i32>,
16564    #[prost(int32, optional, tag="2")]
16565    pub temp: ::core::option::Option<i32>,
16566    #[prost(int32, optional, tag="3")]
16567    pub temp_prev: ::core::option::Option<i32>,
16568    #[prost(string, optional, tag="4")]
16569    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16570}
16571#[derive(Clone, PartialEq, ::prost::Message)]
16572pub struct CdevUpdateFtraceEvent {
16573    #[prost(uint64, optional, tag="1")]
16574    pub target: ::core::option::Option<u64>,
16575    #[prost(string, optional, tag="2")]
16576    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16577}
16578// End of protos/perfetto/trace/ftrace/thermal.proto
16579
16580// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
16581
16582#[derive(Clone, PartialEq, ::prost::Message)]
16583pub struct ThermalExynosAcpmBulkFtraceEvent {
16584    #[prost(uint32, optional, tag="1")]
16585    pub tz_id: ::core::option::Option<u32>,
16586    #[prost(uint32, optional, tag="2")]
16587    pub current_temp: ::core::option::Option<u32>,
16588    #[prost(uint32, optional, tag="3")]
16589    pub ctrl_temp: ::core::option::Option<u32>,
16590    #[prost(uint32, optional, tag="4")]
16591    pub cdev_state: ::core::option::Option<u32>,
16592    #[prost(int32, optional, tag="5")]
16593    pub pid_et_p: ::core::option::Option<i32>,
16594    #[prost(int32, optional, tag="6")]
16595    pub pid_power_range: ::core::option::Option<i32>,
16596    #[prost(int32, optional, tag="7")]
16597    pub pid_p: ::core::option::Option<i32>,
16598    #[prost(int32, optional, tag="8")]
16599    pub pid_i: ::core::option::Option<i32>,
16600    #[prost(int32, optional, tag="9")]
16601    pub k_p: ::core::option::Option<i32>,
16602    #[prost(int32, optional, tag="10")]
16603    pub k_i: ::core::option::Option<i32>,
16604    #[prost(uint64, optional, tag="11")]
16605    pub timestamp: ::core::option::Option<u64>,
16606}
16607#[derive(Clone, PartialEq, ::prost::Message)]
16608pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16609    #[prost(int32, optional, tag="1")]
16610    pub tz_id: ::core::option::Option<i32>,
16611    #[prost(uint32, optional, tag="2")]
16612    pub current_temp: ::core::option::Option<u32>,
16613    #[prost(uint32, optional, tag="3")]
16614    pub ctrl_temp: ::core::option::Option<u32>,
16615    #[prost(uint32, optional, tag="4")]
16616    pub cdev_state: ::core::option::Option<u32>,
16617    #[prost(int32, optional, tag="5")]
16618    pub pid_et_p: ::core::option::Option<i32>,
16619    #[prost(int32, optional, tag="6")]
16620    pub k_p: ::core::option::Option<i32>,
16621    #[prost(int32, optional, tag="7")]
16622    pub k_i: ::core::option::Option<i32>,
16623}
16624// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
16625
16626// Begin of protos/perfetto/trace/ftrace/timer.proto
16627
16628#[derive(Clone, PartialEq, ::prost::Message)]
16629pub struct HrtimerStartFtraceEvent {
16630    #[prost(uint64, optional, tag="1")]
16631    pub hrtimer: ::core::option::Option<u64>,
16632    #[prost(uint64, optional, tag="2")]
16633    pub function: ::core::option::Option<u64>,
16634    #[prost(int64, optional, tag="3")]
16635    pub expires: ::core::option::Option<i64>,
16636    #[prost(int64, optional, tag="4")]
16637    pub softexpires: ::core::option::Option<i64>,
16638    #[prost(uint32, optional, tag="5")]
16639    pub mode: ::core::option::Option<u32>,
16640}
16641#[derive(Clone, PartialEq, ::prost::Message)]
16642pub struct HrtimerCancelFtraceEvent {
16643    #[prost(uint64, optional, tag="1")]
16644    pub hrtimer: ::core::option::Option<u64>,
16645}
16646#[derive(Clone, PartialEq, ::prost::Message)]
16647pub struct HrtimerExpireEntryFtraceEvent {
16648    #[prost(uint64, optional, tag="1")]
16649    pub hrtimer: ::core::option::Option<u64>,
16650    #[prost(int64, optional, tag="2")]
16651    pub now: ::core::option::Option<i64>,
16652    #[prost(uint64, optional, tag="3")]
16653    pub function: ::core::option::Option<u64>,
16654}
16655#[derive(Clone, PartialEq, ::prost::Message)]
16656pub struct HrtimerExpireExitFtraceEvent {
16657    #[prost(uint64, optional, tag="1")]
16658    pub hrtimer: ::core::option::Option<u64>,
16659}
16660#[derive(Clone, PartialEq, ::prost::Message)]
16661pub struct TimerStartFtraceEvent {
16662    #[prost(uint64, optional, tag="1")]
16663    pub timer: ::core::option::Option<u64>,
16664    #[prost(uint64, optional, tag="2")]
16665    pub function: ::core::option::Option<u64>,
16666    #[prost(uint64, optional, tag="3")]
16667    pub expires: ::core::option::Option<u64>,
16668    #[prost(uint64, optional, tag="4")]
16669    pub now: ::core::option::Option<u64>,
16670    #[prost(uint32, optional, tag="5")]
16671    pub deferrable: ::core::option::Option<u32>,
16672    #[prost(uint32, optional, tag="6")]
16673    pub flags: ::core::option::Option<u32>,
16674    #[prost(uint64, optional, tag="7")]
16675    pub bucket_expiry: ::core::option::Option<u64>,
16676}
16677#[derive(Clone, PartialEq, ::prost::Message)]
16678pub struct TimerCancelFtraceEvent {
16679    #[prost(uint64, optional, tag="1")]
16680    pub timer: ::core::option::Option<u64>,
16681}
16682#[derive(Clone, PartialEq, ::prost::Message)]
16683pub struct TimerExpireEntryFtraceEvent {
16684    #[prost(uint64, optional, tag="1")]
16685    pub timer: ::core::option::Option<u64>,
16686    #[prost(uint64, optional, tag="2")]
16687    pub now: ::core::option::Option<u64>,
16688    #[prost(uint64, optional, tag="3")]
16689    pub function: ::core::option::Option<u64>,
16690    #[prost(uint64, optional, tag="4")]
16691    pub baseclk: ::core::option::Option<u64>,
16692}
16693#[derive(Clone, PartialEq, ::prost::Message)]
16694pub struct TimerExpireExitFtraceEvent {
16695    #[prost(uint64, optional, tag="1")]
16696    pub timer: ::core::option::Option<u64>,
16697}
16698// End of protos/perfetto/trace/ftrace/timer.proto
16699
16700// Begin of protos/perfetto/trace/ftrace/trusty.proto
16701
16702#[derive(Clone, PartialEq, ::prost::Message)]
16703pub struct TrustySmcFtraceEvent {
16704    #[prost(uint64, optional, tag="1")]
16705    pub r0: ::core::option::Option<u64>,
16706    #[prost(uint64, optional, tag="2")]
16707    pub r1: ::core::option::Option<u64>,
16708    #[prost(uint64, optional, tag="3")]
16709    pub r2: ::core::option::Option<u64>,
16710    #[prost(uint64, optional, tag="4")]
16711    pub r3: ::core::option::Option<u64>,
16712}
16713#[derive(Clone, PartialEq, ::prost::Message)]
16714pub struct TrustySmcDoneFtraceEvent {
16715    #[prost(uint64, optional, tag="1")]
16716    pub ret: ::core::option::Option<u64>,
16717}
16718#[derive(Clone, PartialEq, ::prost::Message)]
16719pub struct TrustyStdCall32FtraceEvent {
16720    #[prost(uint64, optional, tag="1")]
16721    pub r0: ::core::option::Option<u64>,
16722    #[prost(uint64, optional, tag="2")]
16723    pub r1: ::core::option::Option<u64>,
16724    #[prost(uint64, optional, tag="3")]
16725    pub r2: ::core::option::Option<u64>,
16726    #[prost(uint64, optional, tag="4")]
16727    pub r3: ::core::option::Option<u64>,
16728}
16729#[derive(Clone, PartialEq, ::prost::Message)]
16730pub struct TrustyStdCall32DoneFtraceEvent {
16731    #[prost(int64, optional, tag="1")]
16732    pub ret: ::core::option::Option<i64>,
16733}
16734#[derive(Clone, PartialEq, ::prost::Message)]
16735pub struct TrustyShareMemoryFtraceEvent {
16736    #[prost(uint64, optional, tag="1")]
16737    pub len: ::core::option::Option<u64>,
16738    #[prost(uint32, optional, tag="2")]
16739    pub lend: ::core::option::Option<u32>,
16740    #[prost(uint32, optional, tag="3")]
16741    pub nents: ::core::option::Option<u32>,
16742}
16743#[derive(Clone, PartialEq, ::prost::Message)]
16744pub struct TrustyShareMemoryDoneFtraceEvent {
16745    #[prost(uint64, optional, tag="1")]
16746    pub handle: ::core::option::Option<u64>,
16747    #[prost(uint64, optional, tag="2")]
16748    pub len: ::core::option::Option<u64>,
16749    #[prost(uint32, optional, tag="3")]
16750    pub lend: ::core::option::Option<u32>,
16751    #[prost(uint32, optional, tag="4")]
16752    pub nents: ::core::option::Option<u32>,
16753    #[prost(int32, optional, tag="5")]
16754    pub ret: ::core::option::Option<i32>,
16755}
16756#[derive(Clone, PartialEq, ::prost::Message)]
16757pub struct TrustyReclaimMemoryFtraceEvent {
16758    #[prost(uint64, optional, tag="1")]
16759    pub id: ::core::option::Option<u64>,
16760}
16761#[derive(Clone, PartialEq, ::prost::Message)]
16762pub struct TrustyReclaimMemoryDoneFtraceEvent {
16763    #[prost(uint64, optional, tag="1")]
16764    pub id: ::core::option::Option<u64>,
16765    #[prost(int32, optional, tag="2")]
16766    pub ret: ::core::option::Option<i32>,
16767}
16768#[derive(Clone, PartialEq, ::prost::Message)]
16769pub struct TrustyIrqFtraceEvent {
16770    #[prost(int32, optional, tag="1")]
16771    pub irq: ::core::option::Option<i32>,
16772}
16773#[derive(Clone, PartialEq, ::prost::Message)]
16774pub struct TrustyIpcHandleEventFtraceEvent {
16775    #[prost(uint32, optional, tag="1")]
16776    pub chan: ::core::option::Option<u32>,
16777    #[prost(uint32, optional, tag="2")]
16778    pub event_id: ::core::option::Option<u32>,
16779    #[prost(string, optional, tag="3")]
16780    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16781}
16782#[derive(Clone, PartialEq, ::prost::Message)]
16783pub struct TrustyIpcConnectFtraceEvent {
16784    #[prost(uint32, optional, tag="1")]
16785    pub chan: ::core::option::Option<u32>,
16786    #[prost(string, optional, tag="2")]
16787    pub port: ::core::option::Option<::prost::alloc::string::String>,
16788    #[prost(int32, optional, tag="3")]
16789    pub state: ::core::option::Option<i32>,
16790}
16791#[derive(Clone, PartialEq, ::prost::Message)]
16792pub struct TrustyIpcConnectEndFtraceEvent {
16793    #[prost(uint32, optional, tag="1")]
16794    pub chan: ::core::option::Option<u32>,
16795    #[prost(int32, optional, tag="2")]
16796    pub err: ::core::option::Option<i32>,
16797    #[prost(int32, optional, tag="3")]
16798    pub state: ::core::option::Option<i32>,
16799}
16800#[derive(Clone, PartialEq, ::prost::Message)]
16801pub struct TrustyIpcWriteFtraceEvent {
16802    #[prost(uint64, optional, tag="1")]
16803    pub buf_id: ::core::option::Option<u64>,
16804    #[prost(uint32, optional, tag="2")]
16805    pub chan: ::core::option::Option<u32>,
16806    #[prost(int32, optional, tag="3")]
16807    pub kind_shm: ::core::option::Option<i32>,
16808    #[prost(int32, optional, tag="4")]
16809    pub len_or_err: ::core::option::Option<i32>,
16810    #[prost(uint64, optional, tag="5")]
16811    pub shm_cnt: ::core::option::Option<u64>,
16812    #[prost(string, optional, tag="6")]
16813    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16814}
16815#[derive(Clone, PartialEq, ::prost::Message)]
16816pub struct TrustyIpcPollFtraceEvent {
16817    #[prost(uint32, optional, tag="1")]
16818    pub chan: ::core::option::Option<u32>,
16819    #[prost(uint32, optional, tag="2")]
16820    pub poll_mask: ::core::option::Option<u32>,
16821    #[prost(string, optional, tag="3")]
16822    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16823}
16824#[derive(Clone, PartialEq, ::prost::Message)]
16825pub struct TrustyIpcReadFtraceEvent {
16826    #[prost(uint32, optional, tag="1")]
16827    pub chan: ::core::option::Option<u32>,
16828    #[prost(string, optional, tag="2")]
16829    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16830}
16831#[derive(Clone, PartialEq, ::prost::Message)]
16832pub struct TrustyIpcReadEndFtraceEvent {
16833    #[prost(uint64, optional, tag="1")]
16834    pub buf_id: ::core::option::Option<u64>,
16835    #[prost(uint32, optional, tag="2")]
16836    pub chan: ::core::option::Option<u32>,
16837    #[prost(int32, optional, tag="3")]
16838    pub len_or_err: ::core::option::Option<i32>,
16839    #[prost(uint64, optional, tag="4")]
16840    pub shm_cnt: ::core::option::Option<u64>,
16841    #[prost(string, optional, tag="5")]
16842    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16843}
16844#[derive(Clone, PartialEq, ::prost::Message)]
16845pub struct TrustyIpcRxFtraceEvent {
16846    #[prost(uint64, optional, tag="1")]
16847    pub buf_id: ::core::option::Option<u64>,
16848    #[prost(uint32, optional, tag="2")]
16849    pub chan: ::core::option::Option<u32>,
16850    #[prost(string, optional, tag="3")]
16851    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16852}
16853#[derive(Clone, PartialEq, ::prost::Message)]
16854pub struct TrustyEnqueueNopFtraceEvent {
16855    #[prost(uint32, optional, tag="1")]
16856    pub arg1: ::core::option::Option<u32>,
16857    #[prost(uint32, optional, tag="2")]
16858    pub arg2: ::core::option::Option<u32>,
16859    #[prost(uint32, optional, tag="3")]
16860    pub arg3: ::core::option::Option<u32>,
16861}
16862// End of protos/perfetto/trace/ftrace/trusty.proto
16863
16864// Begin of protos/perfetto/trace/ftrace/ufs.proto
16865
16866#[derive(Clone, PartialEq, ::prost::Message)]
16867pub struct UfshcdCommandFtraceEvent {
16868    #[prost(string, optional, tag="1")]
16869    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16870    #[prost(uint32, optional, tag="2")]
16871    pub doorbell: ::core::option::Option<u32>,
16872    #[prost(uint32, optional, tag="3")]
16873    pub intr: ::core::option::Option<u32>,
16874    #[prost(uint64, optional, tag="4")]
16875    pub lba: ::core::option::Option<u64>,
16876    #[prost(uint32, optional, tag="5")]
16877    pub opcode: ::core::option::Option<u32>,
16878    #[prost(string, optional, tag="6")]
16879    pub str: ::core::option::Option<::prost::alloc::string::String>,
16880    #[prost(uint32, optional, tag="7")]
16881    pub tag: ::core::option::Option<u32>,
16882    #[prost(int32, optional, tag="8")]
16883    pub transfer_len: ::core::option::Option<i32>,
16884    #[prost(uint32, optional, tag="9")]
16885    pub group_id: ::core::option::Option<u32>,
16886    #[prost(uint32, optional, tag="10")]
16887    pub str_t: ::core::option::Option<u32>,
16888}
16889#[derive(Clone, PartialEq, ::prost::Message)]
16890pub struct UfshcdClkGatingFtraceEvent {
16891    #[prost(string, optional, tag="1")]
16892    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16893    #[prost(int32, optional, tag="2")]
16894    pub state: ::core::option::Option<i32>,
16895}
16896// End of protos/perfetto/trace/ftrace/ufs.proto
16897
16898// Begin of protos/perfetto/trace/ftrace/v4l2.proto
16899
16900#[derive(Clone, PartialEq, ::prost::Message)]
16901pub struct V4l2QbufFtraceEvent {
16902    #[prost(uint32, optional, tag="1")]
16903    pub bytesused: ::core::option::Option<u32>,
16904    #[prost(uint32, optional, tag="2")]
16905    pub field: ::core::option::Option<u32>,
16906    #[prost(uint32, optional, tag="3")]
16907    pub flags: ::core::option::Option<u32>,
16908    #[prost(uint32, optional, tag="4")]
16909    pub index: ::core::option::Option<u32>,
16910    #[prost(int32, optional, tag="5")]
16911    pub minor: ::core::option::Option<i32>,
16912    #[prost(uint32, optional, tag="6")]
16913    pub sequence: ::core::option::Option<u32>,
16914    #[prost(uint32, optional, tag="7")]
16915    pub timecode_flags: ::core::option::Option<u32>,
16916    #[prost(uint32, optional, tag="8")]
16917    pub timecode_frames: ::core::option::Option<u32>,
16918    #[prost(uint32, optional, tag="9")]
16919    pub timecode_hours: ::core::option::Option<u32>,
16920    #[prost(uint32, optional, tag="10")]
16921    pub timecode_minutes: ::core::option::Option<u32>,
16922    #[prost(uint32, optional, tag="11")]
16923    pub timecode_seconds: ::core::option::Option<u32>,
16924    #[prost(uint32, optional, tag="12")]
16925    pub timecode_type: ::core::option::Option<u32>,
16926    #[prost(uint32, optional, tag="13")]
16927    pub timecode_userbits0: ::core::option::Option<u32>,
16928    #[prost(uint32, optional, tag="14")]
16929    pub timecode_userbits1: ::core::option::Option<u32>,
16930    #[prost(uint32, optional, tag="15")]
16931    pub timecode_userbits2: ::core::option::Option<u32>,
16932    #[prost(uint32, optional, tag="16")]
16933    pub timecode_userbits3: ::core::option::Option<u32>,
16934    #[prost(int64, optional, tag="17")]
16935    pub timestamp: ::core::option::Option<i64>,
16936    #[prost(uint32, optional, tag="18")]
16937    pub r#type: ::core::option::Option<u32>,
16938}
16939#[derive(Clone, PartialEq, ::prost::Message)]
16940pub struct V4l2DqbufFtraceEvent {
16941    #[prost(uint32, optional, tag="1")]
16942    pub bytesused: ::core::option::Option<u32>,
16943    #[prost(uint32, optional, tag="2")]
16944    pub field: ::core::option::Option<u32>,
16945    #[prost(uint32, optional, tag="3")]
16946    pub flags: ::core::option::Option<u32>,
16947    #[prost(uint32, optional, tag="4")]
16948    pub index: ::core::option::Option<u32>,
16949    #[prost(int32, optional, tag="5")]
16950    pub minor: ::core::option::Option<i32>,
16951    #[prost(uint32, optional, tag="6")]
16952    pub sequence: ::core::option::Option<u32>,
16953    #[prost(uint32, optional, tag="7")]
16954    pub timecode_flags: ::core::option::Option<u32>,
16955    #[prost(uint32, optional, tag="8")]
16956    pub timecode_frames: ::core::option::Option<u32>,
16957    #[prost(uint32, optional, tag="9")]
16958    pub timecode_hours: ::core::option::Option<u32>,
16959    #[prost(uint32, optional, tag="10")]
16960    pub timecode_minutes: ::core::option::Option<u32>,
16961    #[prost(uint32, optional, tag="11")]
16962    pub timecode_seconds: ::core::option::Option<u32>,
16963    #[prost(uint32, optional, tag="12")]
16964    pub timecode_type: ::core::option::Option<u32>,
16965    #[prost(uint32, optional, tag="13")]
16966    pub timecode_userbits0: ::core::option::Option<u32>,
16967    #[prost(uint32, optional, tag="14")]
16968    pub timecode_userbits1: ::core::option::Option<u32>,
16969    #[prost(uint32, optional, tag="15")]
16970    pub timecode_userbits2: ::core::option::Option<u32>,
16971    #[prost(uint32, optional, tag="16")]
16972    pub timecode_userbits3: ::core::option::Option<u32>,
16973    #[prost(int64, optional, tag="17")]
16974    pub timestamp: ::core::option::Option<i64>,
16975    #[prost(uint32, optional, tag="18")]
16976    pub r#type: ::core::option::Option<u32>,
16977}
16978#[derive(Clone, PartialEq, ::prost::Message)]
16979pub struct Vb2V4l2BufQueueFtraceEvent {
16980    #[prost(uint32, optional, tag="1")]
16981    pub field: ::core::option::Option<u32>,
16982    #[prost(uint32, optional, tag="2")]
16983    pub flags: ::core::option::Option<u32>,
16984    #[prost(int32, optional, tag="3")]
16985    pub minor: ::core::option::Option<i32>,
16986    #[prost(uint32, optional, tag="4")]
16987    pub sequence: ::core::option::Option<u32>,
16988    #[prost(uint32, optional, tag="5")]
16989    pub timecode_flags: ::core::option::Option<u32>,
16990    #[prost(uint32, optional, tag="6")]
16991    pub timecode_frames: ::core::option::Option<u32>,
16992    #[prost(uint32, optional, tag="7")]
16993    pub timecode_hours: ::core::option::Option<u32>,
16994    #[prost(uint32, optional, tag="8")]
16995    pub timecode_minutes: ::core::option::Option<u32>,
16996    #[prost(uint32, optional, tag="9")]
16997    pub timecode_seconds: ::core::option::Option<u32>,
16998    #[prost(uint32, optional, tag="10")]
16999    pub timecode_type: ::core::option::Option<u32>,
17000    #[prost(uint32, optional, tag="11")]
17001    pub timecode_userbits0: ::core::option::Option<u32>,
17002    #[prost(uint32, optional, tag="12")]
17003    pub timecode_userbits1: ::core::option::Option<u32>,
17004    #[prost(uint32, optional, tag="13")]
17005    pub timecode_userbits2: ::core::option::Option<u32>,
17006    #[prost(uint32, optional, tag="14")]
17007    pub timecode_userbits3: ::core::option::Option<u32>,
17008    #[prost(int64, optional, tag="15")]
17009    pub timestamp: ::core::option::Option<i64>,
17010}
17011#[derive(Clone, PartialEq, ::prost::Message)]
17012pub struct Vb2V4l2BufDoneFtraceEvent {
17013    #[prost(uint32, optional, tag="1")]
17014    pub field: ::core::option::Option<u32>,
17015    #[prost(uint32, optional, tag="2")]
17016    pub flags: ::core::option::Option<u32>,
17017    #[prost(int32, optional, tag="3")]
17018    pub minor: ::core::option::Option<i32>,
17019    #[prost(uint32, optional, tag="4")]
17020    pub sequence: ::core::option::Option<u32>,
17021    #[prost(uint32, optional, tag="5")]
17022    pub timecode_flags: ::core::option::Option<u32>,
17023    #[prost(uint32, optional, tag="6")]
17024    pub timecode_frames: ::core::option::Option<u32>,
17025    #[prost(uint32, optional, tag="7")]
17026    pub timecode_hours: ::core::option::Option<u32>,
17027    #[prost(uint32, optional, tag="8")]
17028    pub timecode_minutes: ::core::option::Option<u32>,
17029    #[prost(uint32, optional, tag="9")]
17030    pub timecode_seconds: ::core::option::Option<u32>,
17031    #[prost(uint32, optional, tag="10")]
17032    pub timecode_type: ::core::option::Option<u32>,
17033    #[prost(uint32, optional, tag="11")]
17034    pub timecode_userbits0: ::core::option::Option<u32>,
17035    #[prost(uint32, optional, tag="12")]
17036    pub timecode_userbits1: ::core::option::Option<u32>,
17037    #[prost(uint32, optional, tag="13")]
17038    pub timecode_userbits2: ::core::option::Option<u32>,
17039    #[prost(uint32, optional, tag="14")]
17040    pub timecode_userbits3: ::core::option::Option<u32>,
17041    #[prost(int64, optional, tag="15")]
17042    pub timestamp: ::core::option::Option<i64>,
17043}
17044#[derive(Clone, PartialEq, ::prost::Message)]
17045pub struct Vb2V4l2QbufFtraceEvent {
17046    #[prost(uint32, optional, tag="1")]
17047    pub field: ::core::option::Option<u32>,
17048    #[prost(uint32, optional, tag="2")]
17049    pub flags: ::core::option::Option<u32>,
17050    #[prost(int32, optional, tag="3")]
17051    pub minor: ::core::option::Option<i32>,
17052    #[prost(uint32, optional, tag="4")]
17053    pub sequence: ::core::option::Option<u32>,
17054    #[prost(uint32, optional, tag="5")]
17055    pub timecode_flags: ::core::option::Option<u32>,
17056    #[prost(uint32, optional, tag="6")]
17057    pub timecode_frames: ::core::option::Option<u32>,
17058    #[prost(uint32, optional, tag="7")]
17059    pub timecode_hours: ::core::option::Option<u32>,
17060    #[prost(uint32, optional, tag="8")]
17061    pub timecode_minutes: ::core::option::Option<u32>,
17062    #[prost(uint32, optional, tag="9")]
17063    pub timecode_seconds: ::core::option::Option<u32>,
17064    #[prost(uint32, optional, tag="10")]
17065    pub timecode_type: ::core::option::Option<u32>,
17066    #[prost(uint32, optional, tag="11")]
17067    pub timecode_userbits0: ::core::option::Option<u32>,
17068    #[prost(uint32, optional, tag="12")]
17069    pub timecode_userbits1: ::core::option::Option<u32>,
17070    #[prost(uint32, optional, tag="13")]
17071    pub timecode_userbits2: ::core::option::Option<u32>,
17072    #[prost(uint32, optional, tag="14")]
17073    pub timecode_userbits3: ::core::option::Option<u32>,
17074    #[prost(int64, optional, tag="15")]
17075    pub timestamp: ::core::option::Option<i64>,
17076}
17077#[derive(Clone, PartialEq, ::prost::Message)]
17078pub struct Vb2V4l2DqbufFtraceEvent {
17079    #[prost(uint32, optional, tag="1")]
17080    pub field: ::core::option::Option<u32>,
17081    #[prost(uint32, optional, tag="2")]
17082    pub flags: ::core::option::Option<u32>,
17083    #[prost(int32, optional, tag="3")]
17084    pub minor: ::core::option::Option<i32>,
17085    #[prost(uint32, optional, tag="4")]
17086    pub sequence: ::core::option::Option<u32>,
17087    #[prost(uint32, optional, tag="5")]
17088    pub timecode_flags: ::core::option::Option<u32>,
17089    #[prost(uint32, optional, tag="6")]
17090    pub timecode_frames: ::core::option::Option<u32>,
17091    #[prost(uint32, optional, tag="7")]
17092    pub timecode_hours: ::core::option::Option<u32>,
17093    #[prost(uint32, optional, tag="8")]
17094    pub timecode_minutes: ::core::option::Option<u32>,
17095    #[prost(uint32, optional, tag="9")]
17096    pub timecode_seconds: ::core::option::Option<u32>,
17097    #[prost(uint32, optional, tag="10")]
17098    pub timecode_type: ::core::option::Option<u32>,
17099    #[prost(uint32, optional, tag="11")]
17100    pub timecode_userbits0: ::core::option::Option<u32>,
17101    #[prost(uint32, optional, tag="12")]
17102    pub timecode_userbits1: ::core::option::Option<u32>,
17103    #[prost(uint32, optional, tag="13")]
17104    pub timecode_userbits2: ::core::option::Option<u32>,
17105    #[prost(uint32, optional, tag="14")]
17106    pub timecode_userbits3: ::core::option::Option<u32>,
17107    #[prost(int64, optional, tag="15")]
17108    pub timestamp: ::core::option::Option<i64>,
17109}
17110// End of protos/perfetto/trace/ftrace/v4l2.proto
17111
17112// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
17113
17114#[derive(Clone, PartialEq, ::prost::Message)]
17115pub struct VirtioGpuCmdQueueFtraceEvent {
17116    #[prost(uint32, optional, tag="1")]
17117    pub ctx_id: ::core::option::Option<u32>,
17118    #[prost(int32, optional, tag="2")]
17119    pub dev: ::core::option::Option<i32>,
17120    #[prost(uint64, optional, tag="3")]
17121    pub fence_id: ::core::option::Option<u64>,
17122    #[prost(uint32, optional, tag="4")]
17123    pub flags: ::core::option::Option<u32>,
17124    #[prost(string, optional, tag="5")]
17125    pub name: ::core::option::Option<::prost::alloc::string::String>,
17126    #[prost(uint32, optional, tag="6")]
17127    pub num_free: ::core::option::Option<u32>,
17128    #[prost(uint32, optional, tag="7")]
17129    pub seqno: ::core::option::Option<u32>,
17130    #[prost(uint32, optional, tag="8")]
17131    pub r#type: ::core::option::Option<u32>,
17132    #[prost(uint32, optional, tag="9")]
17133    pub vq: ::core::option::Option<u32>,
17134}
17135#[derive(Clone, PartialEq, ::prost::Message)]
17136pub struct VirtioGpuCmdResponseFtraceEvent {
17137    #[prost(uint32, optional, tag="1")]
17138    pub ctx_id: ::core::option::Option<u32>,
17139    #[prost(int32, optional, tag="2")]
17140    pub dev: ::core::option::Option<i32>,
17141    #[prost(uint64, optional, tag="3")]
17142    pub fence_id: ::core::option::Option<u64>,
17143    #[prost(uint32, optional, tag="4")]
17144    pub flags: ::core::option::Option<u32>,
17145    #[prost(string, optional, tag="5")]
17146    pub name: ::core::option::Option<::prost::alloc::string::String>,
17147    #[prost(uint32, optional, tag="6")]
17148    pub num_free: ::core::option::Option<u32>,
17149    #[prost(uint32, optional, tag="7")]
17150    pub seqno: ::core::option::Option<u32>,
17151    #[prost(uint32, optional, tag="8")]
17152    pub r#type: ::core::option::Option<u32>,
17153    #[prost(uint32, optional, tag="9")]
17154    pub vq: ::core::option::Option<u32>,
17155}
17156// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
17157
17158// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
17159
17160#[derive(Clone, PartialEq, ::prost::Message)]
17161pub struct VirtioVideoCmdFtraceEvent {
17162    #[prost(uint32, optional, tag="1")]
17163    pub stream_id: ::core::option::Option<u32>,
17164    #[prost(uint32, optional, tag="2")]
17165    pub r#type: ::core::option::Option<u32>,
17166}
17167#[derive(Clone, PartialEq, ::prost::Message)]
17168pub struct VirtioVideoCmdDoneFtraceEvent {
17169    #[prost(uint32, optional, tag="1")]
17170    pub stream_id: ::core::option::Option<u32>,
17171    #[prost(uint32, optional, tag="2")]
17172    pub r#type: ::core::option::Option<u32>,
17173}
17174#[derive(Clone, PartialEq, ::prost::Message)]
17175pub struct VirtioVideoResourceQueueFtraceEvent {
17176    #[prost(uint32, optional, tag="1")]
17177    pub data_size0: ::core::option::Option<u32>,
17178    #[prost(uint32, optional, tag="2")]
17179    pub data_size1: ::core::option::Option<u32>,
17180    #[prost(uint32, optional, tag="3")]
17181    pub data_size2: ::core::option::Option<u32>,
17182    #[prost(uint32, optional, tag="4")]
17183    pub data_size3: ::core::option::Option<u32>,
17184    #[prost(uint32, optional, tag="5")]
17185    pub queue_type: ::core::option::Option<u32>,
17186    #[prost(int32, optional, tag="6")]
17187    pub resource_id: ::core::option::Option<i32>,
17188    #[prost(int32, optional, tag="7")]
17189    pub stream_id: ::core::option::Option<i32>,
17190    #[prost(uint64, optional, tag="8")]
17191    pub timestamp: ::core::option::Option<u64>,
17192}
17193#[derive(Clone, PartialEq, ::prost::Message)]
17194pub struct VirtioVideoResourceQueueDoneFtraceEvent {
17195    #[prost(uint32, optional, tag="1")]
17196    pub data_size0: ::core::option::Option<u32>,
17197    #[prost(uint32, optional, tag="2")]
17198    pub data_size1: ::core::option::Option<u32>,
17199    #[prost(uint32, optional, tag="3")]
17200    pub data_size2: ::core::option::Option<u32>,
17201    #[prost(uint32, optional, tag="4")]
17202    pub data_size3: ::core::option::Option<u32>,
17203    #[prost(uint32, optional, tag="5")]
17204    pub queue_type: ::core::option::Option<u32>,
17205    #[prost(int32, optional, tag="6")]
17206    pub resource_id: ::core::option::Option<i32>,
17207    #[prost(int32, optional, tag="7")]
17208    pub stream_id: ::core::option::Option<i32>,
17209    #[prost(uint64, optional, tag="8")]
17210    pub timestamp: ::core::option::Option<u64>,
17211}
17212// End of protos/perfetto/trace/ftrace/virtio_video.proto
17213
17214// Begin of protos/perfetto/trace/ftrace/vmscan.proto
17215
17216#[derive(Clone, PartialEq, ::prost::Message)]
17217pub struct MmVmscanDirectReclaimBeginFtraceEvent {
17218    #[prost(int32, optional, tag="1")]
17219    pub order: ::core::option::Option<i32>,
17220    #[prost(int32, optional, tag="2")]
17221    pub may_writepage: ::core::option::Option<i32>,
17222    #[prost(uint32, optional, tag="3")]
17223    pub gfp_flags: ::core::option::Option<u32>,
17224}
17225#[derive(Clone, PartialEq, ::prost::Message)]
17226pub struct MmVmscanDirectReclaimEndFtraceEvent {
17227    #[prost(uint64, optional, tag="1")]
17228    pub nr_reclaimed: ::core::option::Option<u64>,
17229}
17230#[derive(Clone, PartialEq, ::prost::Message)]
17231pub struct MmVmscanKswapdWakeFtraceEvent {
17232    #[prost(int32, optional, tag="1")]
17233    pub nid: ::core::option::Option<i32>,
17234    #[prost(int32, optional, tag="2")]
17235    pub order: ::core::option::Option<i32>,
17236    #[prost(int32, optional, tag="3")]
17237    pub zid: ::core::option::Option<i32>,
17238}
17239#[derive(Clone, PartialEq, ::prost::Message)]
17240pub struct MmVmscanKswapdSleepFtraceEvent {
17241    #[prost(int32, optional, tag="1")]
17242    pub nid: ::core::option::Option<i32>,
17243}
17244#[derive(Clone, PartialEq, ::prost::Message)]
17245pub struct MmShrinkSlabStartFtraceEvent {
17246    #[prost(uint64, optional, tag="1")]
17247    pub cache_items: ::core::option::Option<u64>,
17248    #[prost(uint64, optional, tag="2")]
17249    pub delta: ::core::option::Option<u64>,
17250    #[prost(uint32, optional, tag="3")]
17251    pub gfp_flags: ::core::option::Option<u32>,
17252    #[prost(uint64, optional, tag="4")]
17253    pub lru_pgs: ::core::option::Option<u64>,
17254    #[prost(int64, optional, tag="5")]
17255    pub nr_objects_to_shrink: ::core::option::Option<i64>,
17256    #[prost(uint64, optional, tag="6")]
17257    pub pgs_scanned: ::core::option::Option<u64>,
17258    #[prost(uint64, optional, tag="7")]
17259    pub shr: ::core::option::Option<u64>,
17260    #[prost(uint64, optional, tag="8")]
17261    pub shrink: ::core::option::Option<u64>,
17262    #[prost(uint64, optional, tag="9")]
17263    pub total_scan: ::core::option::Option<u64>,
17264    #[prost(int32, optional, tag="10")]
17265    pub nid: ::core::option::Option<i32>,
17266    #[prost(int32, optional, tag="11")]
17267    pub priority: ::core::option::Option<i32>,
17268}
17269#[derive(Clone, PartialEq, ::prost::Message)]
17270pub struct MmShrinkSlabEndFtraceEvent {
17271    #[prost(int64, optional, tag="1")]
17272    pub new_scan: ::core::option::Option<i64>,
17273    #[prost(int32, optional, tag="2")]
17274    pub retval: ::core::option::Option<i32>,
17275    #[prost(uint64, optional, tag="3")]
17276    pub shr: ::core::option::Option<u64>,
17277    #[prost(uint64, optional, tag="4")]
17278    pub shrink: ::core::option::Option<u64>,
17279    #[prost(int64, optional, tag="5")]
17280    pub total_scan: ::core::option::Option<i64>,
17281    #[prost(int64, optional, tag="6")]
17282    pub unused_scan: ::core::option::Option<i64>,
17283    #[prost(int32, optional, tag="7")]
17284    pub nid: ::core::option::Option<i32>,
17285}
17286#[derive(Clone, PartialEq, ::prost::Message)]
17287pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
17288    #[prost(int32, optional, tag="1")]
17289    pub order: ::core::option::Option<i32>,
17290    #[prost(int32, optional, tag="2")]
17291    pub may_writepage: ::core::option::Option<i32>,
17292    #[prost(uint64, optional, tag="3")]
17293    pub gfp_flags: ::core::option::Option<u64>,
17294}
17295#[derive(Clone, PartialEq, ::prost::Message)]
17296pub struct MmVmscanMemcgReclaimEndFtraceEvent {
17297    #[prost(uint64, optional, tag="1")]
17298    pub nr_reclaimed: ::core::option::Option<u64>,
17299}
17300// End of protos/perfetto/trace/ftrace/vmscan.proto
17301
17302// Begin of protos/perfetto/trace/ftrace/workqueue.proto
17303
17304#[derive(Clone, PartialEq, ::prost::Message)]
17305pub struct WorkqueueActivateWorkFtraceEvent {
17306    #[prost(uint64, optional, tag="1")]
17307    pub work: ::core::option::Option<u64>,
17308    #[prost(uint64, optional, tag="2")]
17309    pub function: ::core::option::Option<u64>,
17310}
17311#[derive(Clone, PartialEq, ::prost::Message)]
17312pub struct WorkqueueExecuteEndFtraceEvent {
17313    #[prost(uint64, optional, tag="1")]
17314    pub work: ::core::option::Option<u64>,
17315    #[prost(uint64, optional, tag="2")]
17316    pub function: ::core::option::Option<u64>,
17317}
17318#[derive(Clone, PartialEq, ::prost::Message)]
17319pub struct WorkqueueExecuteStartFtraceEvent {
17320    #[prost(uint64, optional, tag="1")]
17321    pub work: ::core::option::Option<u64>,
17322    #[prost(uint64, optional, tag="2")]
17323    pub function: ::core::option::Option<u64>,
17324}
17325#[derive(Clone, PartialEq, ::prost::Message)]
17326pub struct WorkqueueQueueWorkFtraceEvent {
17327    #[prost(uint64, optional, tag="1")]
17328    pub work: ::core::option::Option<u64>,
17329    #[prost(uint64, optional, tag="2")]
17330    pub function: ::core::option::Option<u64>,
17331    #[prost(int32, optional, tag="4")]
17332    pub req_cpu: ::core::option::Option<i32>,
17333    #[prost(int32, optional, tag="5")]
17334    pub cpu: ::core::option::Option<i32>,
17335    #[prost(string, optional, tag="6")]
17336    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
17337}
17338// End of protos/perfetto/trace/ftrace/workqueue.proto
17339
17340// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
17341
17342#[derive(Clone, PartialEq, ::prost::Message)]
17343pub struct FtraceEvent {
17344    /// Timestamp in nanoseconds using .../tracing/trace_clock.
17345    #[prost(uint64, optional, tag="1")]
17346    pub timestamp: ::core::option::Option<u64>,
17347    /// Kernel pid (do not confuse with userspace pid aka tgid).
17348    #[prost(uint32, optional, tag="2")]
17349    pub pid: ::core::option::Option<u32>,
17350    /// Not populated in actual traces. Wire format might change.
17351    /// Placeholder declaration so that the ftrace parsing code accepts the
17352    /// existence of this common field. If this becomes needed for all events:
17353    /// consider merging with common_preempt_count to avoid extra proto tags.
17354    #[prost(uint32, optional, tag="5")]
17355    pub common_flags: ::core::option::Option<u32>,
17356    #[prost(oneof="ftrace_event::Event", tags="3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608")]
17357    pub event: ::core::option::Option<ftrace_event::Event>,
17358}
17359/// Nested message and enum types in `FtraceEvent`.
17360pub mod ftrace_event {
17361    #[derive(Clone, PartialEq, ::prost::Oneof)]
17362    pub enum Event {
17363        #[prost(message, tag="3")]
17364        Print(super::PrintFtraceEvent),
17365        #[prost(message, tag="4")]
17366        SchedSwitch(super::SchedSwitchFtraceEvent),
17367        /// removed field with id 5;
17368        /// removed field with id 6;
17369        /// removed field with id 7;
17370        /// removed field with id 8;
17371        /// removed field with id 9;
17372        /// removed field with id 10;
17373        #[prost(message, tag="11")]
17374        CpuFrequency(super::CpuFrequencyFtraceEvent),
17375        #[prost(message, tag="12")]
17376        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
17377        #[prost(message, tag="13")]
17378        CpuIdle(super::CpuIdleFtraceEvent),
17379        #[prost(message, tag="14")]
17380        ClockEnable(super::ClockEnableFtraceEvent),
17381        #[prost(message, tag="15")]
17382        ClockDisable(super::ClockDisableFtraceEvent),
17383        #[prost(message, tag="16")]
17384        ClockSetRate(super::ClockSetRateFtraceEvent),
17385        #[prost(message, tag="17")]
17386        SchedWakeup(super::SchedWakeupFtraceEvent),
17387        #[prost(message, tag="18")]
17388        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
17389        #[prost(message, tag="19")]
17390        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
17391        #[prost(message, tag="20")]
17392        SchedWaking(super::SchedWakingFtraceEvent),
17393        #[prost(message, tag="21")]
17394        IpiEntry(super::IpiEntryFtraceEvent),
17395        #[prost(message, tag="22")]
17396        IpiExit(super::IpiExitFtraceEvent),
17397        #[prost(message, tag="23")]
17398        IpiRaise(super::IpiRaiseFtraceEvent),
17399        #[prost(message, tag="24")]
17400        SoftirqEntry(super::SoftirqEntryFtraceEvent),
17401        #[prost(message, tag="25")]
17402        SoftirqExit(super::SoftirqExitFtraceEvent),
17403        #[prost(message, tag="26")]
17404        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
17405        #[prost(message, tag="27")]
17406        I2cRead(super::I2cReadFtraceEvent),
17407        #[prost(message, tag="28")]
17408        I2cWrite(super::I2cWriteFtraceEvent),
17409        #[prost(message, tag="29")]
17410        I2cResult(super::I2cResultFtraceEvent),
17411        #[prost(message, tag="30")]
17412        I2cReply(super::I2cReplyFtraceEvent),
17413        #[prost(message, tag="31")]
17414        SmbusRead(super::SmbusReadFtraceEvent),
17415        #[prost(message, tag="32")]
17416        SmbusWrite(super::SmbusWriteFtraceEvent),
17417        #[prost(message, tag="33")]
17418        SmbusResult(super::SmbusResultFtraceEvent),
17419        #[prost(message, tag="34")]
17420        SmbusReply(super::SmbusReplyFtraceEvent),
17421        #[prost(message, tag="35")]
17422        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17423        #[prost(message, tag="36")]
17424        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17425        #[prost(message, tag="37")]
17426        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17427        #[prost(message, tag="38")]
17428        SyncPt(super::SyncPtFtraceEvent),
17429        #[prost(message, tag="39")]
17430        SyncTimeline(super::SyncTimelineFtraceEvent),
17431        #[prost(message, tag="40")]
17432        SyncWait(super::SyncWaitFtraceEvent),
17433        #[prost(message, tag="41")]
17434        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17435        #[prost(message, tag="42")]
17436        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17437        #[prost(message, tag="43")]
17438        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17439        #[prost(message, tag="44")]
17440        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17441        #[prost(message, tag="45")]
17442        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17443        #[prost(message, tag="46")]
17444        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17445        #[prost(message, tag="47")]
17446        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17447        #[prost(message, tag="48")]
17448        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17449        #[prost(message, tag="49")]
17450        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17451        #[prost(message, tag="50")]
17452        BinderTransaction(super::BinderTransactionFtraceEvent),
17453        #[prost(message, tag="51")]
17454        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17455        #[prost(message, tag="52")]
17456        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17457        #[prost(message, tag="53")]
17458        BinderLock(super::BinderLockFtraceEvent),
17459        #[prost(message, tag="54")]
17460        BinderLocked(super::BinderLockedFtraceEvent),
17461        #[prost(message, tag="55")]
17462        BinderUnlock(super::BinderUnlockFtraceEvent),
17463        #[prost(message, tag="56")]
17464        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17465        #[prost(message, tag="57")]
17466        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17467        #[prost(message, tag="58")]
17468        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17469        #[prost(message, tag="59")]
17470        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17471        #[prost(message, tag="60")]
17472        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17473        #[prost(message, tag="61")]
17474        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17475        #[prost(message, tag="62")]
17476        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17477        #[prost(message, tag="63")]
17478        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17479        #[prost(message, tag="64")]
17480        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17481        #[prost(message, tag="65")]
17482        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17483        #[prost(message, tag="66")]
17484        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17485        #[prost(message, tag="67")]
17486        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17487        #[prost(message, tag="68")]
17488        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17489        #[prost(message, tag="69")]
17490        CgroupRemount(super::CgroupRemountFtraceEvent),
17491        #[prost(message, tag="70")]
17492        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17493        #[prost(message, tag="71")]
17494        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17495        #[prost(message, tag="72")]
17496        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17497        #[prost(message, tag="73")]
17498        CgroupRelease(super::CgroupReleaseFtraceEvent),
17499        #[prost(message, tag="74")]
17500        CgroupRename(super::CgroupRenameFtraceEvent),
17501        #[prost(message, tag="75")]
17502        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17503        #[prost(message, tag="76")]
17504        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17505        #[prost(message, tag="77")]
17506        MdpCommit(super::MdpCommitFtraceEvent),
17507        #[prost(message, tag="78")]
17508        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17509        #[prost(message, tag="79")]
17510        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17511        #[prost(message, tag="80")]
17512        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17513        #[prost(message, tag="81")]
17514        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17515        #[prost(message, tag="82")]
17516        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17517        #[prost(message, tag="83")]
17518        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17519        #[prost(message, tag="84")]
17520        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17521        #[prost(message, tag="85")]
17522        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17523        #[prost(message, tag="86")]
17524        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17525        #[prost(message, tag="87")]
17526        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17527        #[prost(message, tag="88")]
17528        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17529        #[prost(message, tag="89")]
17530        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17531        #[prost(message, tag="90")]
17532        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17533        #[prost(message, tag="91")]
17534        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17535        #[prost(message, tag="92")]
17536        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17537        #[prost(message, tag="93")]
17538        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17539        #[prost(message, tag="94")]
17540        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17541        #[prost(message, tag="95")]
17542        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17543        #[prost(message, tag="96")]
17544        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17545        #[prost(message, tag="97")]
17546        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17547        #[prost(message, tag="98")]
17548        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17549        #[prost(message, tag="99")]
17550        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17551        #[prost(message, tag="100")]
17552        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17553        #[prost(message, tag="101")]
17554        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17555        #[prost(message, tag="102")]
17556        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17557        #[prost(message, tag="103")]
17558        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17559        #[prost(message, tag="104")]
17560        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17561        #[prost(message, tag="105")]
17562        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17563        #[prost(message, tag="106")]
17564        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
17565        #[prost(message, tag="107")]
17566        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17567        #[prost(message, tag="108")]
17568        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17569        #[prost(message, tag="109")]
17570        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17571        #[prost(message, tag="110")]
17572        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17573        #[prost(message, tag="111")]
17574        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17575        #[prost(message, tag="112")]
17576        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17577        #[prost(message, tag="113")]
17578        SuspendResume(super::SuspendResumeFtraceEvent),
17579        #[prost(message, tag="114")]
17580        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17581        #[prost(message, tag="115")]
17582        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17583        #[prost(message, tag="116")]
17584        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17585        #[prost(message, tag="117")]
17586        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17587        #[prost(message, tag="118")]
17588        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17589        #[prost(message, tag="119")]
17590        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17591        #[prost(message, tag="120")]
17592        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17593        #[prost(message, tag="121")]
17594        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17595        #[prost(message, tag="122")]
17596        BlockGetrq(super::BlockGetrqFtraceEvent),
17597        #[prost(message, tag="123")]
17598        BlockPlug(super::BlockPlugFtraceEvent),
17599        #[prost(message, tag="124")]
17600        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17601        #[prost(message, tag="125")]
17602        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17603        #[prost(message, tag="126")]
17604        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17605        /// removed field with id 127;
17606        #[prost(message, tag="128")]
17607        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17608        #[prost(message, tag="129")]
17609        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17610        #[prost(message, tag="130")]
17611        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17612        #[prost(message, tag="131")]
17613        BlockSplit(super::BlockSplitFtraceEvent),
17614        #[prost(message, tag="132")]
17615        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17616        #[prost(message, tag="133")]
17617        BlockUnplug(super::BlockUnplugFtraceEvent),
17618        #[prost(message, tag="134")]
17619        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17620        #[prost(message, tag="135")]
17621        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17622        #[prost(message, tag="136")]
17623        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17624        #[prost(message, tag="137")]
17625        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17626        #[prost(message, tag="138")]
17627        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17628        #[prost(message, tag="139")]
17629        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17630        #[prost(message, tag="140")]
17631        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17632        #[prost(message, tag="141")]
17633        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17634        #[prost(message, tag="142")]
17635        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17636        #[prost(message, tag="143")]
17637        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17638        #[prost(message, tag="144")]
17639        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17640        #[prost(message, tag="145")]
17641        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17642        #[prost(message, tag="146")]
17643        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17644        #[prost(message, tag="147")]
17645        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17646        #[prost(message, tag="148")]
17647        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17648        #[prost(message, tag="149")]
17649        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17650        #[prost(message, tag="150")]
17651        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
17652        #[prost(message, tag="151")]
17653        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
17654        #[prost(message, tag="152")]
17655        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17656        #[prost(message, tag="153")]
17657        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17658        #[prost(message, tag="154")]
17659        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17660        #[prost(message, tag="155")]
17661        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17662        #[prost(message, tag="156")]
17663        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17664        #[prost(message, tag="157")]
17665        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17666        #[prost(message, tag="158")]
17667        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17668        #[prost(message, tag="159")]
17669        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17670        #[prost(message, tag="160")]
17671        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17672        #[prost(message, tag="161")]
17673        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
17674        #[prost(message, tag="162")]
17675        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
17676        #[prost(message, tag="163")]
17677        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17678        #[prost(message, tag="164")]
17679        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17680        #[prost(message, tag="165")]
17681        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17682        #[prost(message, tag="166")]
17683        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17684        #[prost(message, tag="167")]
17685        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17686        #[prost(message, tag="168")]
17687        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17688        #[prost(message, tag="169")]
17689        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17690        #[prost(message, tag="170")]
17691        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17692        #[prost(message, tag="171")]
17693        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17694        #[prost(message, tag="172")]
17695        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17696        #[prost(message, tag="173")]
17697        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17698        #[prost(message, tag="174")]
17699        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17700        #[prost(message, tag="175")]
17701        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17702        #[prost(message, tag="176")]
17703        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17704        #[prost(message, tag="177")]
17705        Ext4Forget(super::Ext4ForgetFtraceEvent),
17706        #[prost(message, tag="178")]
17707        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17708        #[prost(message, tag="179")]
17709        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17710        #[prost(message, tag="180")]
17711        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17712        #[prost(message, tag="181")]
17713        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17714        #[prost(message, tag="182")]
17715        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17716        #[prost(message, tag="183")]
17717        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17718        #[prost(message, tag="184")]
17719        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17720        #[prost(message, tag="185")]
17721        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17722        #[prost(message, tag="186")]
17723        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17724        #[prost(message, tag="187")]
17725        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17726        #[prost(message, tag="188")]
17727        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17728        #[prost(message, tag="189")]
17729        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17730        #[prost(message, tag="190")]
17731        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17732        #[prost(message, tag="191")]
17733        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17734        #[prost(message, tag="192")]
17735        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17736        #[prost(message, tag="193")]
17737        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17738        #[prost(message, tag="194")]
17739        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17740        #[prost(message, tag="195")]
17741        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17742        #[prost(message, tag="196")]
17743        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17744        #[prost(message, tag="197")]
17745        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17746        #[prost(message, tag="198")]
17747        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17748        #[prost(message, tag="199")]
17749        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17750        #[prost(message, tag="200")]
17751        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17752        #[prost(message, tag="201")]
17753        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17754        #[prost(message, tag="202")]
17755        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17756        #[prost(message, tag="203")]
17757        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17758        #[prost(message, tag="204")]
17759        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17760        #[prost(message, tag="205")]
17761        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17762        #[prost(message, tag="206")]
17763        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17764        #[prost(message, tag="207")]
17765        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17766        #[prost(message, tag="208")]
17767        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17768        #[prost(message, tag="209")]
17769        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17770        #[prost(message, tag="210")]
17771        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17772        #[prost(message, tag="211")]
17773        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17774        #[prost(message, tag="212")]
17775        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17776        #[prost(message, tag="213")]
17777        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17778        #[prost(message, tag="214")]
17779        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17780        #[prost(message, tag="215")]
17781        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17782        #[prost(message, tag="216")]
17783        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17784        #[prost(message, tag="217")]
17785        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17786        #[prost(message, tag="218")]
17787        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17788        #[prost(message, tag="219")]
17789        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17790        /// removed field with id 220;
17791        /// removed field with id 221;
17792        /// removed field with id 222;
17793        /// removed field with id 223;
17794        /// removed field with id 224;
17795        /// removed field with id 225;
17796        /// removed field with id 226;
17797        /// removed field with id 227;
17798        /// removed field with id 228;
17799        /// removed field with id 229;
17800        #[prost(message, tag="230")]
17801        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17802        #[prost(message, tag="231")]
17803        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17804        #[prost(message, tag="232")]
17805        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17806        #[prost(message, tag="233")]
17807        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17808        #[prost(message, tag="234")]
17809        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17810        #[prost(message, tag="235")]
17811        TaskNewtask(super::TaskNewtaskFtraceEvent),
17812        #[prost(message, tag="236")]
17813        TaskRename(super::TaskRenameFtraceEvent),
17814        #[prost(message, tag="237")]
17815        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17816        #[prost(message, tag="238")]
17817        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17818        #[prost(message, tag="239")]
17819        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17820        #[prost(message, tag="240")]
17821        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17822        #[prost(message, tag="241")]
17823        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17824        #[prost(message, tag="242")]
17825        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17826        #[prost(message, tag="243")]
17827        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17828        #[prost(message, tag="244")]
17829        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17830        #[prost(message, tag="245")]
17831        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17832        #[prost(message, tag="246")]
17833        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17834        #[prost(message, tag="247")]
17835        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17836        #[prost(message, tag="248")]
17837        F2fsIget(super::F2fsIgetFtraceEvent),
17838        #[prost(message, tag="249")]
17839        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17840        #[prost(message, tag="250")]
17841        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17842        #[prost(message, tag="251")]
17843        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17844        #[prost(message, tag="252")]
17845        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17846        #[prost(message, tag="253")]
17847        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17848        #[prost(message, tag="254")]
17849        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17850        #[prost(message, tag="255")]
17851        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17852        #[prost(message, tag="256")]
17853        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17854        #[prost(message, tag="257")]
17855        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17856        #[prost(message, tag="258")]
17857        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17858        #[prost(message, tag="259")]
17859        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17860        #[prost(message, tag="260")]
17861        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17862        #[prost(message, tag="261")]
17863        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17864        #[prost(message, tag="262")]
17865        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17866        #[prost(message, tag="263")]
17867        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17868        #[prost(message, tag="264")]
17869        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17870        #[prost(message, tag="265")]
17871        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17872        #[prost(message, tag="266")]
17873        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17874        #[prost(message, tag="267")]
17875        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17876        #[prost(message, tag="268")]
17877        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17878        #[prost(message, tag="269")]
17879        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17880        #[prost(message, tag="270")]
17881        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17882        #[prost(message, tag="271")]
17883        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17884        #[prost(message, tag="272")]
17885        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17886        #[prost(message, tag="273")]
17887        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17888        #[prost(message, tag="274")]
17889        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17890        #[prost(message, tag="275")]
17891        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17892        #[prost(message, tag="276")]
17893        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17894        #[prost(message, tag="277")]
17895        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17896        #[prost(message, tag="278")]
17897        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17898        #[prost(message, tag="279")]
17899        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17900        #[prost(message, tag="280")]
17901        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17902        #[prost(message, tag="281")]
17903        IommuMapRange(super::IommuMapRangeFtraceEvent),
17904        #[prost(message, tag="282")]
17905        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17906        #[prost(message, tag="283")]
17907        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17908        #[prost(message, tag="284")]
17909        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17910        #[prost(message, tag="285")]
17911        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17912        #[prost(message, tag="286")]
17913        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17914        #[prost(message, tag="287")]
17915        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17916        #[prost(message, tag="288")]
17917        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17918        #[prost(message, tag="289")]
17919        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17920        #[prost(message, tag="290")]
17921        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17922        #[prost(message, tag="291")]
17923        IonPrefetching(super::IonPrefetchingFtraceEvent),
17924        #[prost(message, tag="292")]
17925        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17926        #[prost(message, tag="293")]
17927        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17928        #[prost(message, tag="294")]
17929        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17930        #[prost(message, tag="295")]
17931        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17932        #[prost(message, tag="296")]
17933        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17934        #[prost(message, tag="297")]
17935        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17936        #[prost(message, tag="298")]
17937        Kfree(super::KfreeFtraceEvent),
17938        #[prost(message, tag="299")]
17939        Kmalloc(super::KmallocFtraceEvent),
17940        #[prost(message, tag="300")]
17941        KmallocNode(super::KmallocNodeFtraceEvent),
17942        #[prost(message, tag="301")]
17943        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17944        #[prost(message, tag="302")]
17945        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17946        #[prost(message, tag="303")]
17947        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17948        #[prost(message, tag="304")]
17949        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17950        #[prost(message, tag="305")]
17951        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17952        #[prost(message, tag="306")]
17953        MigrateRetry(super::MigrateRetryFtraceEvent),
17954        #[prost(message, tag="307")]
17955        MmPageAlloc(super::MmPageAllocFtraceEvent),
17956        #[prost(message, tag="308")]
17957        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17958        #[prost(message, tag="309")]
17959        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17960        #[prost(message, tag="310")]
17961        MmPageFree(super::MmPageFreeFtraceEvent),
17962        #[prost(message, tag="311")]
17963        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17964        #[prost(message, tag="312")]
17965        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17966        #[prost(message, tag="313")]
17967        RssStat(super::RssStatFtraceEvent),
17968        #[prost(message, tag="314")]
17969        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17970        #[prost(message, tag="315")]
17971        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17972        #[prost(message, tag="316")]
17973        FenceInit(super::FenceInitFtraceEvent),
17974        #[prost(message, tag="317")]
17975        FenceDestroy(super::FenceDestroyFtraceEvent),
17976        #[prost(message, tag="318")]
17977        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17978        #[prost(message, tag="319")]
17979        FenceSignaled(super::FenceSignaledFtraceEvent),
17980        #[prost(message, tag="320")]
17981        ClkEnable(super::ClkEnableFtraceEvent),
17982        #[prost(message, tag="321")]
17983        ClkDisable(super::ClkDisableFtraceEvent),
17984        #[prost(message, tag="322")]
17985        ClkSetRate(super::ClkSetRateFtraceEvent),
17986        #[prost(message, tag="323")]
17987        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17988        #[prost(message, tag="324")]
17989        SignalDeliver(super::SignalDeliverFtraceEvent),
17990        #[prost(message, tag="325")]
17991        SignalGenerate(super::SignalGenerateFtraceEvent),
17992        #[prost(message, tag="326")]
17993        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17994        #[prost(message, tag="327")]
17995        Generic(super::GenericFtraceEvent),
17996        #[prost(message, tag="328")]
17997        MmEventRecord(super::MmEventRecordFtraceEvent),
17998        #[prost(message, tag="329")]
17999        SysEnter(super::SysEnterFtraceEvent),
18000        #[prost(message, tag="330")]
18001        SysExit(super::SysExitFtraceEvent),
18002        #[prost(message, tag="331")]
18003        Zero(super::ZeroFtraceEvent),
18004        #[prost(message, tag="332")]
18005        GpuFrequency(super::GpuFrequencyFtraceEvent),
18006        #[prost(message, tag="333")]
18007        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
18008        #[prost(message, tag="334")]
18009        MarkVictim(super::MarkVictimFtraceEvent),
18010        #[prost(message, tag="335")]
18011        IonStat(super::IonStatFtraceEvent),
18012        #[prost(message, tag="336")]
18013        IonBufferCreate(super::IonBufferCreateFtraceEvent),
18014        #[prost(message, tag="337")]
18015        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
18016        #[prost(message, tag="338")]
18017        ScmCallStart(super::ScmCallStartFtraceEvent),
18018        #[prost(message, tag="339")]
18019        ScmCallEnd(super::ScmCallEndFtraceEvent),
18020        #[prost(message, tag="340")]
18021        GpuMemTotal(super::GpuMemTotalFtraceEvent),
18022        #[prost(message, tag="341")]
18023        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
18024        #[prost(message, tag="342")]
18025        CdevUpdate(super::CdevUpdateFtraceEvent),
18026        #[prost(message, tag="343")]
18027        CpuhpExit(super::CpuhpExitFtraceEvent),
18028        #[prost(message, tag="344")]
18029        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
18030        #[prost(message, tag="345")]
18031        CpuhpEnter(super::CpuhpEnterFtraceEvent),
18032        #[prost(message, tag="346")]
18033        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
18034        #[prost(message, tag="347")]
18035        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
18036        #[prost(message, tag="348")]
18037        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
18038        #[prost(message, tag="349")]
18039        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
18040        #[prost(message, tag="350")]
18041        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
18042        #[prost(message, tag="351")]
18043        DmaHeapStat(super::DmaHeapStatFtraceEvent),
18044        #[prost(message, tag="352")]
18045        CpuhpPause(super::CpuhpPauseFtraceEvent),
18046        #[prost(message, tag="353")]
18047        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
18048        #[prost(message, tag="354")]
18049        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
18050        #[prost(message, tag="355")]
18051        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
18052        #[prost(message, tag="356")]
18053        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
18054        #[prost(message, tag="357")]
18055        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
18056        #[prost(message, tag="358")]
18057        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
18058        #[prost(message, tag="359")]
18059        RssStatThrottled(super::RssStatThrottledFtraceEvent),
18060        #[prost(message, tag="360")]
18061        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
18062        #[prost(message, tag="361")]
18063        NetDevXmit(super::NetDevXmitFtraceEvent),
18064        #[prost(message, tag="362")]
18065        InetSockSetState(super::InetSockSetStateFtraceEvent),
18066        #[prost(message, tag="363")]
18067        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
18068        #[prost(message, tag="364")]
18069        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
18070        #[prost(message, tag="365")]
18071        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
18072        #[prost(message, tag="366")]
18073        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
18074        #[prost(message, tag="367")]
18075        KfreeSkb(super::KfreeSkbFtraceEvent),
18076        #[prost(message, tag="368")]
18077        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
18078        #[prost(message, tag="369")]
18079        KvmAckIrq(super::KvmAckIrqFtraceEvent),
18080        #[prost(message, tag="370")]
18081        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
18082        #[prost(message, tag="371")]
18083        KvmAgePage(super::KvmAgePageFtraceEvent),
18084        #[prost(message, tag="372")]
18085        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
18086        #[prost(message, tag="373")]
18087        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
18088        #[prost(message, tag="374")]
18089        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
18090        #[prost(message, tag="375")]
18091        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
18092        #[prost(message, tag="376")]
18093        KvmEntry(super::KvmEntryFtraceEvent),
18094        #[prost(message, tag="377")]
18095        KvmExit(super::KvmExitFtraceEvent),
18096        #[prost(message, tag="378")]
18097        KvmFpu(super::KvmFpuFtraceEvent),
18098        #[prost(message, tag="379")]
18099        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
18100        #[prost(message, tag="380")]
18101        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
18102        #[prost(message, tag="381")]
18103        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
18104        #[prost(message, tag="382")]
18105        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
18106        #[prost(message, tag="383")]
18107        KvmIrqLine(super::KvmIrqLineFtraceEvent),
18108        #[prost(message, tag="384")]
18109        KvmMmio(super::KvmMmioFtraceEvent),
18110        #[prost(message, tag="385")]
18111        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
18112        #[prost(message, tag="386")]
18113        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
18114        #[prost(message, tag="387")]
18115        KvmSetIrq(super::KvmSetIrqFtraceEvent),
18116        #[prost(message, tag="388")]
18117        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
18118        #[prost(message, tag="389")]
18119        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
18120        #[prost(message, tag="390")]
18121        KvmSysAccess(super::KvmSysAccessFtraceEvent),
18122        #[prost(message, tag="391")]
18123        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
18124        #[prost(message, tag="392")]
18125        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
18126        #[prost(message, tag="393")]
18127        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
18128        #[prost(message, tag="394")]
18129        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
18130        #[prost(message, tag="395")]
18131        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
18132        #[prost(message, tag="396")]
18133        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
18134        #[prost(message, tag="397")]
18135        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
18136        #[prost(message, tag="398")]
18137        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
18138        #[prost(message, tag="399")]
18139        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
18140        #[prost(message, tag="400")]
18141        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
18142        #[prost(message, tag="401")]
18143        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
18144        #[prost(message, tag="402")]
18145        TrapReg(super::TrapRegFtraceEvent),
18146        #[prost(message, tag="403")]
18147        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
18148        #[prost(message, tag="404")]
18149        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
18150        #[prost(message, tag="405")]
18151        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
18152        #[prost(message, tag="406")]
18153        UfshcdCommand(super::UfshcdCommandFtraceEvent),
18154        #[prost(message, tag="407")]
18155        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
18156        #[prost(message, tag="408")]
18157        Console(super::ConsoleFtraceEvent),
18158        #[prost(message, tag="409")]
18159        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
18160        #[prost(message, tag="410")]
18161        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
18162        #[prost(message, tag="411")]
18163        DrmSchedJob(super::DrmSchedJobFtraceEvent),
18164        #[prost(message, tag="412")]
18165        DrmRunJob(super::DrmRunJobFtraceEvent),
18166        #[prost(message, tag="413")]
18167        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
18168        #[prost(message, tag="414")]
18169        DmaFenceInit(super::DmaFenceInitFtraceEvent),
18170        #[prost(message, tag="415")]
18171        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
18172        #[prost(message, tag="416")]
18173        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
18174        #[prost(message, tag="417")]
18175        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
18176        #[prost(message, tag="418")]
18177        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
18178        #[prost(message, tag="419")]
18179        F2fsIostat(super::F2fsIostatFtraceEvent),
18180        #[prost(message, tag="420")]
18181        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
18182        #[prost(message, tag="421")]
18183        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
18184        #[prost(message, tag="422")]
18185        V4l2Qbuf(super::V4l2QbufFtraceEvent),
18186        #[prost(message, tag="423")]
18187        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
18188        #[prost(message, tag="424")]
18189        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
18190        #[prost(message, tag="425")]
18191        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
18192        #[prost(message, tag="426")]
18193        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
18194        #[prost(message, tag="427")]
18195        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
18196        #[prost(message, tag="428")]
18197        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
18198        #[prost(message, tag="429")]
18199        DsiRx(super::DsiRxFtraceEvent),
18200        #[prost(message, tag="430")]
18201        DsiTx(super::DsiTxFtraceEvent),
18202        #[prost(message, tag="431")]
18203        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
18204        #[prost(message, tag="432")]
18205        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
18206        #[prost(message, tag="433")]
18207        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
18208        #[prost(message, tag="434")]
18209        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
18210        #[prost(message, tag="435")]
18211        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
18212        #[prost(message, tag="436")]
18213        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
18214        #[prost(message, tag="437")]
18215        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
18216        #[prost(message, tag="438")]
18217        FuncgraphExit(super::FuncgraphExitFtraceEvent),
18218        #[prost(message, tag="439")]
18219        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
18220        #[prost(message, tag="440")]
18221        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
18222        #[prost(message, tag="441")]
18223        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
18224        #[prost(message, tag="442")]
18225        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
18226        #[prost(message, tag="443")]
18227        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
18228        #[prost(message, tag="444")]
18229        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
18230        #[prost(message, tag="445")]
18231        TrustySmc(super::TrustySmcFtraceEvent),
18232        #[prost(message, tag="446")]
18233        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
18234        #[prost(message, tag="447")]
18235        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
18236        #[prost(message, tag="448")]
18237        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
18238        #[prost(message, tag="449")]
18239        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
18240        #[prost(message, tag="450")]
18241        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
18242        #[prost(message, tag="451")]
18243        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
18244        #[prost(message, tag="452")]
18245        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
18246        #[prost(message, tag="453")]
18247        TrustyIrq(super::TrustyIrqFtraceEvent),
18248        #[prost(message, tag="454")]
18249        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
18250        #[prost(message, tag="455")]
18251        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
18252        #[prost(message, tag="456")]
18253        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
18254        #[prost(message, tag="457")]
18255        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
18256        #[prost(message, tag="458")]
18257        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
18258        /// removed field with id 459;
18259        #[prost(message, tag="460")]
18260        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
18261        #[prost(message, tag="461")]
18262        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
18263        #[prost(message, tag="462")]
18264        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
18265        /// removed field with id 463;
18266        #[prost(message, tag="464")]
18267        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
18268        #[prost(message, tag="465")]
18269        CmaAllocStart(super::CmaAllocStartFtraceEvent),
18270        #[prost(message, tag="466")]
18271        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
18272        #[prost(message, tag="467")]
18273        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
18274        #[prost(message, tag="468")]
18275        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
18276        #[prost(message, tag="469")]
18277        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
18278        #[prost(message, tag="470")]
18279        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
18280        #[prost(message, tag="471")]
18281        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
18282        #[prost(message, tag="472")]
18283        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
18284        #[prost(message, tag="473")]
18285        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
18286        #[prost(message, tag="474")]
18287        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
18288        #[prost(message, tag="475")]
18289        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
18290        #[prost(message, tag="476")]
18291        HypEnter(super::HypEnterFtraceEvent),
18292        #[prost(message, tag="477")]
18293        HypExit(super::HypExitFtraceEvent),
18294        #[prost(message, tag="478")]
18295        HostHcall(super::HostHcallFtraceEvent),
18296        #[prost(message, tag="479")]
18297        HostSmc(super::HostSmcFtraceEvent),
18298        #[prost(message, tag="480")]
18299        HostMemAbort(super::HostMemAbortFtraceEvent),
18300        #[prost(message, tag="481")]
18301        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
18302        #[prost(message, tag="482")]
18303        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
18304        #[prost(message, tag="483")]
18305        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
18306        #[prost(message, tag="484")]
18307        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
18308        #[prost(message, tag="485")]
18309        BinderCommand(super::BinderCommandFtraceEvent),
18310        #[prost(message, tag="486")]
18311        BinderReturn(super::BinderReturnFtraceEvent),
18312        #[prost(message, tag="487")]
18313        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
18314        #[prost(message, tag="488")]
18315        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
18316        #[prost(message, tag="489")]
18317        RpmStatus(super::RpmStatusFtraceEvent),
18318        #[prost(message, tag="490")]
18319        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
18320        #[prost(message, tag="491")]
18321        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
18322        #[prost(message, tag="492")]
18323        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
18324        #[prost(message, tag="493")]
18325        DpuDsiRx(super::DpuDsiRxFtraceEvent),
18326        #[prost(message, tag="494")]
18327        DpuDsiTx(super::DpuDsiTxFtraceEvent),
18328        #[prost(message, tag="495")]
18329        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
18330        #[prost(message, tag="496")]
18331        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
18332        #[prost(message, tag="497")]
18333        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
18334        #[prost(message, tag="498")]
18335        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
18336        #[prost(message, tag="499")]
18337        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
18338        #[prost(message, tag="500")]
18339        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
18340        #[prost(message, tag="501")]
18341        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
18342        #[prost(message, tag="502")]
18343        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
18344        #[prost(message, tag="503")]
18345        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
18346        #[prost(message, tag="504")]
18347        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
18348        #[prost(message, tag="505")]
18349        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
18350        #[prost(message, tag="506")]
18351        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
18352        #[prost(message, tag="507")]
18353        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
18354        #[prost(message, tag="508")]
18355        DcvshFreq(super::DcvshFreqFtraceEvent),
18356        #[prost(message, tag="509")]
18357        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
18358        #[prost(message, tag="510")]
18359        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
18360        #[prost(message, tag="511")]
18361        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
18362        #[prost(message, tag="512")]
18363        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
18364        #[prost(message, tag="513")]
18365        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
18366        #[prost(message, tag="514")]
18367        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
18368        #[prost(message, tag="515")]
18369        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
18370        #[prost(message, tag="516")]
18371        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
18372        #[prost(message, tag="517")]
18373        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
18374        #[prost(message, tag="518")]
18375        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
18376        #[prost(message, tag="519")]
18377        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
18378        #[prost(message, tag="520")]
18379        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
18380        #[prost(message, tag="521")]
18381        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
18382        #[prost(message, tag="522")]
18383        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
18384        #[prost(message, tag="523")]
18385        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
18386        #[prost(message, tag="524")]
18387        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
18388        #[prost(message, tag="525")]
18389        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
18390        #[prost(message, tag="526")]
18391        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
18392        #[prost(message, tag="527")]
18393        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
18394        #[prost(message, tag="528")]
18395        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
18396        #[prost(message, tag="529")]
18397        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
18398        #[prost(message, tag="530")]
18399        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
18400        #[prost(message, tag="531")]
18401        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
18402        #[prost(message, tag="532")]
18403        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
18404        #[prost(message, tag="533")]
18405        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
18406        #[prost(message, tag="534")]
18407        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18408        #[prost(message, tag="535")]
18409        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18410        #[prost(message, tag="536")]
18411        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18412        #[prost(message, tag="537")]
18413        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18414        #[prost(message, tag="538")]
18415        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18416        #[prost(message, tag="539")]
18417        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18418        #[prost(message, tag="540")]
18419        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18420        #[prost(message, tag="541")]
18421        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18422        #[prost(message, tag="542")]
18423        KprobeEvent(super::KprobeEvent),
18424        #[prost(message, tag="543")]
18425        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18426        #[prost(message, tag="544")]
18427        DoSysOpen(super::DoSysOpenFtraceEvent),
18428        #[prost(message, tag="545")]
18429        OpenExec(super::OpenExecFtraceEvent),
18430        #[prost(message, tag="546")]
18431        BlockIoStart(super::BlockIoStartFtraceEvent),
18432        #[prost(message, tag="547")]
18433        BlockIoDone(super::BlockIoDoneFtraceEvent),
18434        #[prost(message, tag="548")]
18435        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18436        #[prost(message, tag="549")]
18437        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18438        #[prost(message, tag="550")]
18439        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18440        #[prost(message, tag="551")]
18441        HrtimerStart(super::HrtimerStartFtraceEvent),
18442        #[prost(message, tag="552")]
18443        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18444        #[prost(message, tag="553")]
18445        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18446        #[prost(message, tag="554")]
18447        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18448        #[prost(message, tag="555")]
18449        TimerStart(super::TimerStartFtraceEvent),
18450        #[prost(message, tag="556")]
18451        TimerCancel(super::TimerCancelFtraceEvent),
18452        #[prost(message, tag="557")]
18453        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18454        #[prost(message, tag="558")]
18455        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18456        #[prost(message, tag="559")]
18457        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18458        #[prost(message, tag="560")]
18459        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18460        #[prost(message, tag="561")]
18461        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18462        #[prost(message, tag="562")]
18463        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18464        #[prost(message, tag="563")]
18465        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18466        #[prost(message, tag="564")]
18467        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18468        #[prost(message, tag="565")]
18469        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18470        #[prost(message, tag="566")]
18471        Dwc3Event(super::Dwc3EventFtraceEvent),
18472        #[prost(message, tag="567")]
18473        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18474        #[prost(message, tag="568")]
18475        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18476        #[prost(message, tag="569")]
18477        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18478        #[prost(message, tag="570")]
18479        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18480        #[prost(message, tag="571")]
18481        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18482        #[prost(message, tag="572")]
18483        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18484        #[prost(message, tag="573")]
18485        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18486        #[prost(message, tag="574")]
18487        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18488        #[prost(message, tag="575")]
18489        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18490        #[prost(message, tag="576")]
18491        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18492        #[prost(message, tag="577")]
18493        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18494        #[prost(message, tag="578")]
18495        HostFfaCall(super::HostFfaCallFtraceEvent),
18496        #[prost(message, tag="579")]
18497        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18498        #[prost(message, tag="580")]
18499        IommuIdmap(super::IommuIdmapFtraceEvent),
18500        #[prost(message, tag="581")]
18501        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18502        #[prost(message, tag="582")]
18503        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18504        #[prost(message, tag="583")]
18505        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18506        #[prost(message, tag="584")]
18507        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18508        #[prost(message, tag="585")]
18509        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18510        #[prost(message, tag="586")]
18511        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18512        #[prost(message, tag="587")]
18513        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18514        #[prost(message, tag="588")]
18515        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18516        #[prost(message, tag="589")]
18517        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18518        #[prost(message, tag="590")]
18519        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18520        #[prost(message, tag="591")]
18521        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18522        #[prost(message, tag="592")]
18523        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18524        #[prost(message, tag="593")]
18525        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18526        #[prost(message, tag="594")]
18527        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18528        #[prost(message, tag="595")]
18529        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18530        #[prost(message, tag="596")]
18531        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18532        #[prost(message, tag="597")]
18533        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18534        #[prost(message, tag="598")]
18535        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18536        #[prost(message, tag="599")]
18537        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18538        #[prost(message, tag="600")]
18539        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18540        #[prost(message, tag="601")]
18541        GpuPowerState(super::GpuPowerStateFtraceEvent),
18542        #[prost(message, tag="602")]
18543        GramCollision(super::GramCollisionFtraceEvent),
18544        #[prost(message, tag="603")]
18545        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18546        #[prost(message, tag="604")]
18547        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18548        #[prost(message, tag="605")]
18549        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
18550        #[prost(message, tag="606")]
18551        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
18552        #[prost(message, tag="607")]
18553        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
18554        #[prost(message, tag="608")]
18555        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
18556    }
18557}
18558// End of protos/perfetto/trace/ftrace/ftrace_event.proto
18559
18560// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
18561
18562/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18563/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18564#[derive(Clone, PartialEq, ::prost::Message)]
18565pub struct FtraceCpuStats {
18566    /// CPU index.
18567    #[prost(uint64, optional, tag="1")]
18568    pub cpu: ::core::option::Option<u64>,
18569    /// Number of entries currently in the kernel buffer.
18570    #[prost(uint64, optional, tag="2")]
18571    pub entries: ::core::option::Option<u64>,
18572    /// Number of events lost in kernel buffers due to overwriting of old events
18573    /// before userspace had a chance to drain them. Valid if the buffer is in
18574    /// "overwrite" mode, otherwise see |dropped_events|.
18575    #[prost(uint64, optional, tag="3")]
18576    pub overrun: ::core::option::Option<u64>,
18577    /// This should always be zero. If not the buffer size is way too small or
18578    /// something went wrong with the tracer. Quoting the kernel: "number of
18579    /// commits failing due to the buffer wrapping around while there are
18580    /// uncommitted events, such as during an interrupt storm".
18581    #[prost(uint64, optional, tag="4")]
18582    pub commit_overrun: ::core::option::Option<u64>,
18583    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18584    /// The field should be named "bytes", but is misnamed for historical reasons.
18585    /// This value has known inaccuracies before Linux v6.6:
18586    /// <https://github.com/torvalds/linux/commit/45d99ea>
18587    #[prost(uint64, optional, tag="5")]
18588    pub bytes_read: ::core::option::Option<u64>,
18589    /// The timestamp for the oldest event still in the ring buffer.
18590    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18591    #[prost(double, optional, tag="6")]
18592    pub oldest_event_ts: ::core::option::Option<f64>,
18593    /// The current timestamp.
18594    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18595    #[prost(double, optional, tag="7")]
18596    pub now_ts: ::core::option::Option<f64>,
18597    /// If the kernel buffer has overwrite mode disabled, this will show the number
18598    /// of new events that were lost because the buffer was full. This is similar
18599    /// to |overrun| but only for the overwrite=false case.
18600    #[prost(uint64, optional, tag="8")]
18601    pub dropped_events: ::core::option::Option<u64>,
18602    /// The number of events read (consumed) from the buffer by userspace.
18603    #[prost(uint64, optional, tag="9")]
18604    pub read_events: ::core::option::Option<u64>,
18605}
18606/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18607#[derive(Clone, PartialEq, ::prost::Message)]
18608pub struct FtraceKprobeStats {
18609    /// Cumulative number of kprobe events generated for this function
18610    #[prost(int64, optional, tag="1")]
18611    pub hits: ::core::option::Option<i64>,
18612    /// Cumulative number of kprobe events that could not be generated for this
18613    /// function and were missed.  This happens when too much nesting
18614    /// happens between a kprobe and its kretprobe, overflowing the
18615    /// maxactives buffer.
18616    #[prost(int64, optional, tag="2")]
18617    pub misses: ::core::option::Option<i64>,
18618}
18619/// Errors and kernel buffer stats for the ftrace data source.
18620#[derive(Clone, PartialEq, ::prost::Message)]
18621pub struct FtraceStats {
18622    /// A pair of FtraceStats is written on every trace flush:
18623    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18624    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18625    ///                   before this packet was written. For simple traces this
18626    ///                   will be once at the end of the trace.
18627    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
18628    pub phase: ::core::option::Option<i32>,
18629    /// Per-CPU stats (one entry for each CPU).
18630    #[prost(message, repeated, tag="2")]
18631    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18632    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18633    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18634    /// trace or not. It can be used to debug kptr_restrict or security-related
18635    /// errors.
18636    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18637    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18638    #[prost(uint32, optional, tag="3")]
18639    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18640    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18641    #[prost(uint32, optional, tag="4")]
18642    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18643    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18644    /// one or more atrace categories not available on the device.
18645    #[prost(string, optional, tag="5")]
18646    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18647    /// Error message due to exclusivity violation of a single-tenant feature.
18648    #[prost(string, optional, tag="13")]
18649    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18650    /// Ftrace events requested by the config but not present on device.
18651    #[prost(string, repeated, tag="6")]
18652    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18653    /// Ftrace events requested by the config and present on device, but which we
18654    /// failed to enable due to permissions, or due to a conflicting option
18655    /// (currently FtraceConfig.disable_generic_events).
18656    #[prost(string, repeated, tag="7")]
18657    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18658    /// The data source was configured to preserve existing events in the ftrace
18659    /// buffer before the start of the trace.
18660    #[prost(bool, optional, tag="8")]
18661    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18662    /// Unique errors encountered during reading and parsing of the raw ftrace
18663    /// data. Ring buffer ABI related errors will also be recorded in the
18664    /// affected FtraceEventBundles with a timestamp.
18665    /// Any traces with entries in this field should be investigated, as they
18666    /// indicate a bug in perfetto or the kernel.
18667    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
18668    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18669    /// Kprobe profile stats for functions hits and misses
18670    #[prost(message, optional, tag="10")]
18671    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18672    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18673    /// Added in: perfetto v52.
18674    #[prost(uint32, optional, tag="11")]
18675    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18676    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18677    /// on the value we're writing into the tracefs control file. Might not be
18678    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18679    /// scratch pages (and/or other factors). Added in: perfetto v52.
18680    #[prost(uint32, optional, tag="12")]
18681    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18682}
18683/// Nested message and enum types in `FtraceStats`.
18684pub mod ftrace_stats {
18685    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18686    #[repr(i32)]
18687    pub enum Phase {
18688        Unspecified = 0,
18689        StartOfTrace = 1,
18690        EndOfTrace = 2,
18691    }
18692    impl Phase {
18693        /// String value of the enum field names used in the ProtoBuf definition.
18694        ///
18695        /// The values are not transformed in any way and thus are considered stable
18696        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18697        pub fn as_str_name(&self) -> &'static str {
18698            match self {
18699                Phase::Unspecified => "UNSPECIFIED",
18700                Phase::StartOfTrace => "START_OF_TRACE",
18701                Phase::EndOfTrace => "END_OF_TRACE",
18702            }
18703        }
18704    }
18705}
18706// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
18707
18708// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18709
18710/// The result of tracing one or more ftrace data pages from a single per-cpu
18711/// kernel ring buffer. If collating multiple pages' worth of events, all of
18712/// them come from contiguous pages, with no kernel data loss in between.
18713#[derive(Clone, PartialEq, ::prost::Message)]
18714pub struct FtraceEventBundle {
18715    #[prost(uint32, optional, tag="1")]
18716    pub cpu: ::core::option::Option<u32>,
18717    #[prost(message, repeated, tag="2")]
18718    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18719    /// Set to true if there was data loss between the last time we've read from
18720    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18721    /// in this bundle.
18722    #[prost(bool, optional, tag="3")]
18723    pub lost_events: ::core::option::Option<bool>,
18724    #[prost(message, optional, tag="4")]
18725    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18726    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18727    /// timestamps as that counts during suspend, is available to userspace, and
18728    /// is coherent across cpus.
18729    ///
18730    /// If this field is set, it means that a different clock was used during
18731    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18732    /// before 3.x), or the trace config has set an incompatible option
18733    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18734    /// trace_processor will do best-effort clock alignment using timestamp pairs
18735    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18736    /// when the ftrace clock is "boot", as that is the default assumption.
18737    ///
18738    /// Some clocks (local/global) are technically per-cpu, but we make a
18739    /// simplifying assumption that they are global, as their inter-cpu skew
18740    /// should be reasonably bounded on modern systems.
18741    ///
18742    /// Added in: perfetto v19. Android T (13).
18743    #[prost(enumeration="FtraceClock", optional, tag="5")]
18744    pub ftrace_clock: ::core::option::Option<i32>,
18745    /// The timestamp according to the ftrace clock, taken at the same instant as
18746    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18747    /// will be in the future relative to the data covered by this bundle.
18748    /// Implementation note: Populated by reading the 'now ts:' field in
18749    /// tracefs/per_cpu/cpu0/stat.
18750    ///
18751    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18752    #[prost(int64, optional, tag="6")]
18753    pub ftrace_timestamp: ::core::option::Option<i64>,
18754    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18755    /// |ftrace_timestamp|.
18756    ///
18757    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18758    #[prost(int64, optional, tag="7")]
18759    pub boot_timestamp: ::core::option::Option<i64>,
18760    #[prost(message, repeated, tag="8")]
18761    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18762    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18763    /// primary difference is that this field tracked the last timestamp read from
18764    /// the per-cpu buffer, while the newer field tracks events that get
18765    /// serialised into the trace.
18766    /// Added in: perfetto v44.
18767    #[prost(uint64, optional, tag="9")]
18768    pub last_read_event_timestamp: ::core::option::Option<u64>,
18769    /// The timestamp (using ftrace clock) of the last event written into this
18770    /// data source on this cpu. In other words: the last event in the previous
18771    /// bundle.
18772    /// Lets the trace processing find an initial timestamp after which ftrace
18773    /// data is known to be valid across all cpus. Of particular importance when
18774    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18775    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18776    /// Added in: perfetto v47.
18777    #[prost(uint64, optional, tag="10")]
18778    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18779    #[prost(message, repeated, tag="11")]
18780    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
18781    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18782    /// Contains the raw ring buffer tracing page that the implementation could
18783    /// not parse.
18784    /// Addded in: perfetto v50.
18785    #[prost(bytes="vec", optional, tag="512")]
18786    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18787}
18788/// Nested message and enum types in `FtraceEventBundle`.
18789pub mod ftrace_event_bundle {
18790    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18791    /// a subset of events & their fields is recorded.
18792    /// All fields (except comms) are stored in a structure-of-arrays form, one
18793    /// entry in each repeated field per event.
18794    #[derive(Clone, PartialEq, ::prost::Message)]
18795    pub struct CompactSched {
18796        /// Interned table of unique strings for this bundle.
18797        #[prost(string, repeated, tag="5")]
18798        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18799        /// Delta-encoded timestamps across all sched_switch events within this
18800        /// bundle. The first is absolute, each next one is relative to its
18801        /// predecessor.
18802        #[prost(uint64, repeated, tag="1")]
18803        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18804        #[prost(int64, repeated, tag="2")]
18805        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18806        #[prost(int32, repeated, tag="3")]
18807        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18808        #[prost(int32, repeated, tag="4")]
18809        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18810        /// One per event, index into |intern_table| corresponding to the
18811        /// next_comm field of the event.
18812        #[prost(uint32, repeated, tag="6")]
18813        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18814        /// Delta-encoded timestamps across all sched_waking events within this
18815        /// bundle. The first is absolute, each next one is relative to its
18816        /// predecessor.
18817        #[prost(uint64, repeated, tag="7")]
18818        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18819        #[prost(int32, repeated, tag="8")]
18820        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18821        #[prost(int32, repeated, tag="9")]
18822        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18823        #[prost(int32, repeated, tag="10")]
18824        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18825        /// One per event, index into |intern_table| corresponding to the
18826        /// comm field of the event.
18827        #[prost(uint32, repeated, tag="11")]
18828        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18829        #[prost(uint32, repeated, tag="12")]
18830        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18831    }
18832    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18833    /// buffer layout errors, the parser skips the rest of the offending kernel
18834    /// buffer page and continues from the next page.
18835    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18836    /// seen within the duration of the trace (even if the affected bundles get
18837    /// overwritten in ring buffer mode).
18838    #[derive(Clone, PartialEq, ::prost::Message)]
18839    pub struct FtraceError {
18840        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18841        /// domain. Currently, we use the base timestamp of the tracing page
18842        /// containing the bad record rather than the time of the record itself.
18843        #[prost(uint64, optional, tag="1")]
18844        pub timestamp: ::core::option::Option<u64>,
18845        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
18846        pub status: ::core::option::Option<i32>,
18847    }
18848    /// Describes the serialised |FtraceEvent| protos for events not known at
18849    /// compile time, when using the |denser_generic_event_encoding| option.
18850    /// Addded in: perfetto v50.
18851    #[derive(Clone, PartialEq, ::prost::Message)]
18852    pub struct GenericEventDescriptor {
18853        /// submessage id within FtraceEvent described by |event_descriptor|.
18854        #[prost(int32, optional, tag="1")]
18855        pub field_id: ::core::option::Option<i32>,
18856        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18857        /// The event name itself is in |event_descriptor.name|.
18858        #[prost(string, optional, tag="3")]
18859        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18860        /// serialised DescriptorProto.
18861        #[prost(bytes="vec", optional, tag="2")]
18862        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18863    }
18864}
18865// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18866
18867// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
18868
18869/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18870/// frequency change events in a generic kernel implementation.
18871#[derive(Clone, PartialEq, ::prost::Message)]
18872pub struct GenericKernelCpuFrequencyEvent {
18873    /// CPU in which the event occurred.
18874    #[prost(int32, optional, tag="1")]
18875    pub cpu: ::core::option::Option<i32>,
18876    /// Frequency (Hz) of the CPU.
18877    #[prost(int64, optional, tag="2")]
18878    pub freq_hz: ::core::option::Option<i64>,
18879}
18880// End of protos/perfetto/trace/generic_kernel/generic_power.proto
18881
18882// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
18883
18884/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18885/// change events in a generic kernel implementation. This is mainly for the
18886/// case where scheduler events are not directly supported in the kernel's
18887/// tracing mechanism.
18888///
18889/// By capturing these task state events Perfetto is able to infer higher-level
18890/// events such as context switches and task waking events, providing as much
18891/// parity as possible with established tracing frameworks such as
18892/// Linux's ftrace.
18893#[derive(Clone, PartialEq, ::prost::Message)]
18894pub struct GenericKernelTaskStateEvent {
18895    /// CPU in which the event occurred.
18896    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18897    /// no specific meaning to the cpu field in a non-running state event.
18898    #[prost(int32, optional, tag="1")]
18899    pub cpu: ::core::option::Option<i32>,
18900    /// Command name for the thread.
18901    #[prost(string, optional, tag="2")]
18902    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18903    /// Thread id.
18904    #[prost(int64, optional, tag="3")]
18905    pub tid: ::core::option::Option<i64>,
18906    /// New state of the thread.
18907    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
18908    pub state: ::core::option::Option<i32>,
18909    /// Priority of the thread.
18910    /// This value is OS agnostic and should only be interpreted based on the
18911    /// kernel who emitted the message.
18912    #[prost(int32, optional, tag="5")]
18913    pub prio: ::core::option::Option<i32>,
18914}
18915/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18916pub mod generic_kernel_task_state_event {
18917    /// TaskStateEnum represents the valid states of a thread.
18918    /// These states are a generic representation of the actual thread state and
18919    /// don't necessarily map one-to-one to the states the actual OS kernel
18920    /// tracks internally.
18921    ///
18922    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18923    /// an error resulting in potential data loss.
18924    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18925    #[repr(i32)]
18926    pub enum TaskStateEnum {
18927        TaskStateUnknown = 0,
18928        TaskStateCreated = 1,
18929        TaskStateRunnable = 2,
18930        TaskStateRunning = 3,
18931        TaskStateInterruptibleSleep = 4,
18932        TaskStateUninterruptibleSleep = 5,
18933        TaskStateStopped = 6,
18934        TaskStateDead = 7,
18935        TaskStateDestroyed = 8,
18936    }
18937    impl TaskStateEnum {
18938        /// String value of the enum field names used in the ProtoBuf definition.
18939        ///
18940        /// The values are not transformed in any way and thus are considered stable
18941        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18942        pub fn as_str_name(&self) -> &'static str {
18943            match self {
18944                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18945                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
18946                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18947                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
18948                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18949                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18950                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
18951                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
18952                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18953            }
18954        }
18955    }
18956}
18957/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18958/// of a thread.
18959#[derive(Clone, PartialEq, ::prost::Message)]
18960pub struct GenericKernelTaskRenameEvent {
18961    /// Thread id.
18962    #[prost(int64, optional, tag="1")]
18963    pub tid: ::core::option::Option<i64>,
18964    /// New command name for the thread.
18965    #[prost(string, optional, tag="2")]
18966    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18967}
18968/// Metadata about the processes and threads in the trace.
18969/// The main goal of this proto is to provide a generic kernel
18970/// implementation a mechanism to outline its process structure.
18971#[derive(Clone, PartialEq, ::prost::Message)]
18972pub struct GenericKernelProcessTree {
18973    /// List of processes and threads in the kernel. These lists are incremental
18974    /// and not exhaustive. A process and its threads might show up separately in
18975    /// different ProcessTree messages. A thread might not show up at all, if
18976    /// no sched switch activity was detected, for instance:
18977    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
18978    /// #1 { threads: [{tid: 12, pid: 10}] }
18979    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
18980    #[prost(message, repeated, tag="1")]
18981    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18982    #[prost(message, repeated, tag="2")]
18983    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18984}
18985/// Nested message and enum types in `GenericKernelProcessTree`.
18986pub mod generic_kernel_process_tree {
18987    /// Representation of a thread.
18988    #[derive(Clone, PartialEq, ::prost::Message)]
18989    pub struct Thread {
18990        /// Thread id.
18991        #[prost(int64, optional, tag="1")]
18992        pub tid: ::core::option::Option<i64>,
18993        /// Id of the parent process.
18994        #[prost(int64, optional, tag="2")]
18995        pub pid: ::core::option::Option<i64>,
18996        /// The command name of the thread.
18997        #[prost(string, optional, tag="3")]
18998        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18999        /// True if thread is the main thread.
19000        #[prost(bool, optional, tag="4")]
19001        pub is_main_thread: ::core::option::Option<bool>,
19002        /// True if thread is an idle thread.
19003        #[prost(bool, optional, tag="5")]
19004        pub is_idle: ::core::option::Option<bool>,
19005    }
19006    /// Representation of a process.
19007    #[derive(Clone, PartialEq, ::prost::Message)]
19008    pub struct Process {
19009        /// Process id.
19010        #[prost(int64, optional, tag="1")]
19011        pub pid: ::core::option::Option<i64>,
19012        /// Parent process id.
19013        #[prost(int64, optional, tag="2")]
19014        pub ppid: ::core::option::Option<i64>,
19015        /// The command line of the process.
19016        /// If the cmdline has spaces in it, then we use the characters from
19017        /// position 0 to the first instance of the space char (' ') as the name
19018        /// of the process. If no spaces are present, then the entire cmdline is
19019        /// used as the name.
19020        #[prost(string, optional, tag="3")]
19021        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
19022    }
19023}
19024// End of protos/perfetto/trace/generic_kernel/generic_task.proto
19025
19026// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
19027
19028/// Events for emitting information about GPU counters.
19029///
19030/// There are two "modes" to use these protos:
19031///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
19032///       but has the limitation that counter ids are*global* so must only be
19033///       emitted by a single producer or requires coordination between different
19034///       producers. This is the mechanism which *must* be used by Android OEMS
19035///       to be complaint with CDD/CTS tests.
19036///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
19037///       more complex use-cases involving multiple producers, multiple GPUs etc.
19038#[derive(Clone, PartialEq, ::prost::Message)]
19039pub struct GpuCounterEvent {
19040    #[prost(message, repeated, tag="2")]
19041    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
19042    /// Identifier for GPU in a multi-gpu device.
19043    ///
19044    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
19045    /// `InternedGpuCounterDescriptor` takes precedence over this field.
19046    #[prost(int32, optional, tag="3")]
19047    pub gpu_id: ::core::option::Option<i32>,
19048    /// The specification for the GPU counters. Gives them information like the
19049    /// name of the counter, unit etc.
19050    #[prost(oneof="gpu_counter_event::Desc", tags="1, 4")]
19051    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
19052}
19053/// Nested message and enum types in `GpuCounterEvent`.
19054pub mod gpu_counter_event {
19055    #[derive(Clone, PartialEq, ::prost::Message)]
19056    pub struct GpuCounter {
19057        /// required. Identifier for counter.
19058        #[prost(uint32, optional, tag="1")]
19059        pub counter_id: ::core::option::Option<u32>,
19060        /// required. Value of the counter.
19061        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
19062        pub value: ::core::option::Option<gpu_counter::Value>,
19063    }
19064    /// Nested message and enum types in `GpuCounter`.
19065    pub mod gpu_counter {
19066        /// required. Value of the counter.
19067        #[derive(Clone, PartialEq, ::prost::Oneof)]
19068        pub enum Value {
19069            #[prost(int64, tag="2")]
19070            IntValue(i64),
19071            #[prost(double, tag="3")]
19072            DoubleValue(f64),
19073        }
19074    }
19075    /// The specification for the GPU counters. Gives them information like the
19076    /// name of the counter, unit etc.
19077    #[derive(Clone, PartialEq, ::prost::Oneof)]
19078    pub enum Desc {
19079        /// Must be specified on first trace packet of each session if using mode 1.
19080        /// (e.g. if you're an Android GPU vendor).
19081        #[prost(message, tag="1")]
19082        CounterDescriptor(super::GpuCounterDescriptor),
19083        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
19084        /// on first trace packet of the trusted sequence if using mode 2.
19085        #[prost(uint64, tag="4")]
19086        CounterDescriptorIid(u64),
19087    }
19088}
19089/// Interned GPU counter descriptor for sequence-scoped counter specs.
19090#[derive(Clone, PartialEq, ::prost::Message)]
19091pub struct InternedGpuCounterDescriptor {
19092    #[prost(uint64, optional, tag="1")]
19093    pub iid: ::core::option::Option<u64>,
19094    #[prost(message, optional, tag="2")]
19095    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
19096    /// optional. Identifier for GPU in a multi-gpu device.
19097    #[prost(int32, optional, tag="3")]
19098    pub gpu_id: ::core::option::Option<i32>,
19099}
19100// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
19101
19102// Begin of protos/perfetto/trace/gpu/gpu_log.proto
19103
19104/// Message for logging events GPU data producer.
19105#[derive(Clone, PartialEq, ::prost::Message)]
19106pub struct GpuLog {
19107    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
19108    pub severity: ::core::option::Option<i32>,
19109    #[prost(string, optional, tag="2")]
19110    pub tag: ::core::option::Option<::prost::alloc::string::String>,
19111    #[prost(string, optional, tag="3")]
19112    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
19113}
19114/// Nested message and enum types in `GpuLog`.
19115pub mod gpu_log {
19116    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19117    #[repr(i32)]
19118    pub enum Severity {
19119        LogSeverityUnspecified = 0,
19120        LogSeverityVerbose = 1,
19121        LogSeverityDebug = 2,
19122        LogSeverityInfo = 3,
19123        LogSeverityWarning = 4,
19124        LogSeverityError = 5,
19125    }
19126    impl Severity {
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                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
19134                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
19135                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
19136                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
19137                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
19138                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
19139            }
19140        }
19141    }
19142}
19143// End of protos/perfetto/trace/gpu/gpu_log.proto
19144
19145// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
19146
19147/// next id: 19
19148#[derive(Clone, PartialEq, ::prost::Message)]
19149pub struct GpuRenderStageEvent {
19150    /// required. Unique ID for the event.
19151    #[prost(uint64, optional, tag="1")]
19152    pub event_id: ::core::option::Option<u64>,
19153    /// optional. Duration of the event in nanoseconds. If unset, this is a
19154    /// single time point event.
19155    #[prost(uint64, optional, tag="2")]
19156    pub duration: ::core::option::Option<u64>,
19157    /// required. ID to a hardware queue description in the specifications.
19158    /// InternedGpuRenderStageSpecification
19159    #[prost(uint64, optional, tag="13")]
19160    pub hw_queue_iid: ::core::option::Option<u64>,
19161    /// required. ID to a render stage description in the specifications.
19162    /// InternedGpuRenderStageSpecification
19163    #[prost(uint64, optional, tag="14")]
19164    pub stage_iid: ::core::option::Option<u64>,
19165    /// optional. Identifier for GPU in a multi-gpu device.
19166    #[prost(int32, optional, tag="11")]
19167    pub gpu_id: ::core::option::Option<i32>,
19168    /// required. Graphics context for the event.
19169    /// For OpenGL, this is the GL context.
19170    /// For Vulkan, this is the VkDevice.
19171    #[prost(uint64, optional, tag="5")]
19172    pub context: ::core::option::Option<u64>,
19173    /// optional. The render target for this event.
19174    /// For OpenGL, this is the GL frame buffer handle.
19175    /// For Vulkan, this is the VkFrameBuffer handle.
19176    #[prost(uint64, optional, tag="8")]
19177    pub render_target_handle: ::core::option::Option<u64>,
19178    /// optional. Submission ID generated by the UMD.
19179    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
19180    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
19181    /// to a single API submission should share the same ID.
19182    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
19183    #[prost(uint32, optional, tag="10")]
19184    pub submission_id: ::core::option::Option<u32>,
19185    #[prost(message, repeated, tag="6")]
19186    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
19187    // VULKAN SPECIFICS
19188
19189    /// optional. The Vulkan render pass handle.
19190    #[prost(uint64, optional, tag="9")]
19191    pub render_pass_handle: ::core::option::Option<u64>,
19192    /// optional. An ID for the render pass instance. This is used to correlate
19193    /// different events on different queues produced by the same Vulkan render
19194    /// pass instance.
19195    #[prost(uint64, optional, tag="16")]
19196    pub render_pass_instance_id: ::core::option::Option<u64>,
19197    /// optional. A bit mask representing which render subpasses contributed to
19198    /// this render stage event.  Subpass index 0 is represented by setting the
19199    /// LSB of the mask.  Additional mask can be added for subpass index greater
19200    /// than 63.
19201    #[prost(uint64, repeated, packed="false", tag="15")]
19202    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
19203    /// optional. The Vulkan command buffer handle.
19204    #[prost(uint64, optional, tag="12")]
19205    pub command_buffer_handle: ::core::option::Option<u64>,
19206    /// optional. Custom name for this render stage event. When set, this
19207    /// provides a name for the stage instead of using the name from the stage
19208    /// specification.
19209    #[prost(string, optional, tag="17")]
19210    pub name: ::core::option::Option<::prost::alloc::string::String>,
19211    /// Event IDs of other GpuRenderStageEvents that this event
19212    /// had to wait on before it could run.
19213    #[prost(uint64, repeated, packed="false", tag="18")]
19214    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
19215    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
19216    /// InternedGpuRenderStageSpecification instead.
19217    #[deprecated]
19218    #[prost(message, optional, tag="7")]
19219    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
19220    /// Deprecated. Use hw_queue_iid instead;
19221    #[deprecated]
19222    #[prost(int32, optional, tag="3")]
19223    pub hw_queue_id: ::core::option::Option<i32>,
19224    /// Deprecated. Use stage_iid instead;
19225    #[deprecated]
19226    #[prost(int32, optional, tag="4")]
19227    pub stage_id: ::core::option::Option<i32>,
19228}
19229/// Nested message and enum types in `GpuRenderStageEvent`.
19230pub mod gpu_render_stage_event {
19231    /// optional. Additional data for the user. This may include attributes for
19232    /// the event like resource ids, shaders, etc.
19233    #[derive(Clone, PartialEq, ::prost::Message)]
19234    pub struct ExtraData {
19235        #[prost(string, optional, tag="1")]
19236        pub name: ::core::option::Option<::prost::alloc::string::String>,
19237        #[prost(string, optional, tag="2")]
19238        pub value: ::core::option::Option<::prost::alloc::string::String>,
19239    }
19240    // DEPRECATED
19241
19242    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
19243    /// The first trace packet of each session should include a Specifications
19244    /// to enumerate *all* IDs that will be used. The timestamp of this packet
19245    /// must be earlier than all other packets. Only one packet with Specifications
19246    /// is expected.
19247    #[derive(Clone, PartialEq, ::prost::Message)]
19248    pub struct Specifications {
19249        #[prost(message, optional, tag="1")]
19250        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
19251        /// Labels to categorize the hw Queue this event goes on.
19252        #[prost(message, repeated, tag="2")]
19253        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
19254        /// Labels to categorize render stage(binning, render, compute etc).
19255        #[prost(message, repeated, tag="3")]
19256        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
19257    }
19258    /// Nested message and enum types in `Specifications`.
19259    pub mod specifications {
19260        #[derive(Clone, PartialEq, ::prost::Message)]
19261        pub struct ContextSpec {
19262            #[prost(uint64, optional, tag="1")]
19263            pub context: ::core::option::Option<u64>,
19264            #[prost(int32, optional, tag="2")]
19265            pub pid: ::core::option::Option<i32>,
19266        }
19267        #[derive(Clone, PartialEq, ::prost::Message)]
19268        pub struct Description {
19269            #[prost(string, optional, tag="1")]
19270            pub name: ::core::option::Option<::prost::alloc::string::String>,
19271            #[prost(string, optional, tag="2")]
19272            pub description: ::core::option::Option<::prost::alloc::string::String>,
19273        }
19274    }
19275}
19276// Interned data.
19277
19278/// The iid is the numeric value of either the GL Context or the VkDevice
19279/// handle.
19280#[derive(Clone, PartialEq, ::prost::Message)]
19281pub struct InternedGraphicsContext {
19282    #[prost(uint64, optional, tag="1")]
19283    pub iid: ::core::option::Option<u64>,
19284    #[prost(int32, optional, tag="2")]
19285    pub pid: ::core::option::Option<i32>,
19286    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
19287    pub api: ::core::option::Option<i32>,
19288}
19289/// Nested message and enum types in `InternedGraphicsContext`.
19290pub mod interned_graphics_context {
19291    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19292    #[repr(i32)]
19293    pub enum Api {
19294        Undefined = 0,
19295        OpenGl = 1,
19296        Vulkan = 2,
19297        OpenCl = 3,
19298        Cuda = 4,
19299        Hip = 5,
19300    }
19301    impl Api {
19302        /// String value of the enum field names used in the ProtoBuf definition.
19303        ///
19304        /// The values are not transformed in any way and thus are considered stable
19305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19306        pub fn as_str_name(&self) -> &'static str {
19307            match self {
19308                Api::Undefined => "UNDEFINED",
19309                Api::OpenGl => "OPEN_GL",
19310                Api::Vulkan => "VULKAN",
19311                Api::OpenCl => "OPEN_CL",
19312                Api::Cuda => "CUDA",
19313                Api::Hip => "HIP",
19314            }
19315        }
19316    }
19317}
19318#[derive(Clone, PartialEq, ::prost::Message)]
19319pub struct InternedGpuRenderStageSpecification {
19320    #[prost(uint64, optional, tag="1")]
19321    pub iid: ::core::option::Option<u64>,
19322    #[prost(string, optional, tag="2")]
19323    pub name: ::core::option::Option<::prost::alloc::string::String>,
19324    #[prost(string, optional, tag="3")]
19325    pub description: ::core::option::Option<::prost::alloc::string::String>,
19326    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
19327    pub category: ::core::option::Option<i32>,
19328}
19329/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
19330pub mod interned_gpu_render_stage_specification {
19331    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19332    #[repr(i32)]
19333    pub enum RenderStageCategory {
19334        Other = 0,
19335        Graphics = 1,
19336        Compute = 2,
19337    }
19338    impl RenderStageCategory {
19339        /// String value of the enum field names used in the ProtoBuf definition.
19340        ///
19341        /// The values are not transformed in any way and thus are considered stable
19342        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19343        pub fn as_str_name(&self) -> &'static str {
19344            match self {
19345                RenderStageCategory::Other => "OTHER",
19346                RenderStageCategory::Graphics => "GRAPHICS",
19347                RenderStageCategory::Compute => "COMPUTE",
19348            }
19349        }
19350    }
19351}
19352// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
19353
19354// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
19355
19356/// Message for recording the Vulkan call.
19357#[derive(Clone, PartialEq, ::prost::Message)]
19358pub struct VulkanApiEvent {
19359    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
19360    pub event: ::core::option::Option<vulkan_api_event::Event>,
19361}
19362/// Nested message and enum types in `VulkanApiEvent`.
19363pub mod vulkan_api_event {
19364    /// For recording vkSetDebugUtilsObjectNameEXT and
19365    /// vkDebugMarkerSetObjectNameEXT
19366    #[derive(Clone, PartialEq, ::prost::Message)]
19367    pub struct VkDebugUtilsObjectName {
19368        #[prost(uint32, optional, tag="1")]
19369        pub pid: ::core::option::Option<u32>,
19370        #[prost(uint64, optional, tag="2")]
19371        pub vk_device: ::core::option::Option<u64>,
19372        /// VkObjectType.  Value must match
19373        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
19374        #[prost(int32, optional, tag="3")]
19375        pub object_type: ::core::option::Option<i32>,
19376        #[prost(uint64, optional, tag="4")]
19377        pub object: ::core::option::Option<u64>,
19378        #[prost(string, optional, tag="5")]
19379        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
19380    }
19381    /// For recording vkQueueSubmit call.
19382    #[derive(Clone, PartialEq, ::prost::Message)]
19383    pub struct VkQueueSubmit {
19384        #[prost(uint64, optional, tag="1")]
19385        pub duration_ns: ::core::option::Option<u64>,
19386        #[prost(uint32, optional, tag="2")]
19387        pub pid: ::core::option::Option<u32>,
19388        #[prost(uint32, optional, tag="3")]
19389        pub tid: ::core::option::Option<u32>,
19390        #[prost(uint64, optional, tag="4")]
19391        pub vk_queue: ::core::option::Option<u64>,
19392        #[prost(uint64, repeated, packed="false", tag="5")]
19393        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
19394        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
19395        /// submission_id must match GpuRenderStageEvent.submission_id if the
19396        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
19397        #[prost(uint32, optional, tag="6")]
19398        pub submission_id: ::core::option::Option<u32>,
19399    }
19400    #[derive(Clone, PartialEq, ::prost::Oneof)]
19401    pub enum Event {
19402        #[prost(message, tag="1")]
19403        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
19404        #[prost(message, tag="2")]
19405        VkQueueSubmit(VkQueueSubmit),
19406    }
19407}
19408// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
19409
19410// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19411
19412/// All the information that cannot be sent within a VulkanMemoryEvent message,
19413/// are sent as annotations to the main memory event. One example is the
19414/// properties of the object that consumes the allocated memory, for example, a
19415/// buffer or an image.
19416/// key_iid and string_iid are both interned strings. Original string value is
19417/// stored in vulkan_memory_keys from
19418/// protos/perfetto/trace/interned_data/interned_data.proto.
19419#[derive(Clone, PartialEq, ::prost::Message)]
19420pub struct VulkanMemoryEventAnnotation {
19421    #[prost(uint64, optional, tag="1")]
19422    pub key_iid: ::core::option::Option<u64>,
19423    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
19424    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
19425}
19426/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
19427pub mod vulkan_memory_event_annotation {
19428    #[derive(Clone, PartialEq, ::prost::Oneof)]
19429    pub enum Value {
19430        #[prost(int64, tag="2")]
19431        IntValue(i64),
19432        #[prost(double, tag="3")]
19433        DoubleValue(f64),
19434        #[prost(uint64, tag="4")]
19435        StringIid(u64),
19436    }
19437}
19438/// Each VulkanMemoryEvent encompasses information regarding one single function
19439/// call that results in reserving, binding or freeing host or GPU memory. There
19440/// is a special message type, ANNOTATIONS, which is used to communicate
19441/// information that are not directly related to a memory event, nonetheless are
19442/// essential to understand the memory usage. An example is the size and memory
19443/// types of the memory heaps.
19444///
19445/// Next reserved id: 10 (up to 15).
19446/// Next id: 21.
19447#[derive(Clone, PartialEq, ::prost::Message)]
19448pub struct VulkanMemoryEvent {
19449    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
19450    pub source: ::core::option::Option<i32>,
19451    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
19452    pub operation: ::core::option::Option<i32>,
19453    #[prost(int64, optional, tag="3")]
19454    pub timestamp: ::core::option::Option<i64>,
19455    #[prost(uint32, optional, tag="4")]
19456    pub pid: ::core::option::Option<u32>,
19457    #[prost(fixed64, optional, tag="5")]
19458    pub memory_address: ::core::option::Option<u64>,
19459    #[prost(uint64, optional, tag="6")]
19460    pub memory_size: ::core::option::Option<u64>,
19461    /// Interned string. Original string value is stored in function_names from
19462    /// protos/perfetto/trace/interned_data/interned_data.proto.
19463    #[prost(uint64, optional, tag="7")]
19464    pub caller_iid: ::core::option::Option<u64>,
19465    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
19466    pub allocation_scope: ::core::option::Option<i32>,
19467    /// Extra related information, e.g., create configs, etc.
19468    #[prost(message, repeated, tag="9")]
19469    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19470    /// Field IDs used for device memory (low sampling rate)
19471    #[prost(fixed64, optional, tag="16")]
19472    pub device: ::core::option::Option<u64>,
19473    #[prost(fixed64, optional, tag="17")]
19474    pub device_memory: ::core::option::Option<u64>,
19475    #[prost(uint32, optional, tag="18")]
19476    pub memory_type: ::core::option::Option<u32>,
19477    #[prost(uint32, optional, tag="19")]
19478    pub heap: ::core::option::Option<u32>,
19479    #[prost(fixed64, optional, tag="20")]
19480    pub object_handle: ::core::option::Option<u64>,
19481}
19482/// Nested message and enum types in `VulkanMemoryEvent`.
19483pub mod vulkan_memory_event {
19484    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19485    #[repr(i32)]
19486    pub enum Source {
19487        Unspecified = 0,
19488        Driver = 1,
19489        Device = 2,
19490        DeviceMemory = 3,
19491        Buffer = 4,
19492        Image = 5,
19493    }
19494    impl Source {
19495        /// String value of the enum field names used in the ProtoBuf definition.
19496        ///
19497        /// The values are not transformed in any way and thus are considered stable
19498        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19499        pub fn as_str_name(&self) -> &'static str {
19500            match self {
19501                Source::Unspecified => "SOURCE_UNSPECIFIED",
19502                Source::Driver => "SOURCE_DRIVER",
19503                Source::Device => "SOURCE_DEVICE",
19504                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19505                Source::Buffer => "SOURCE_BUFFER",
19506                Source::Image => "SOURCE_IMAGE",
19507            }
19508        }
19509    }
19510    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19511    #[repr(i32)]
19512    pub enum Operation {
19513        OpUnspecified = 0,
19514        /// alloc, create
19515        OpCreate = 1,
19516        /// free, destroy(non-bound)
19517        OpDestroy = 2,
19518        /// bind buffer and image
19519        OpBind = 3,
19520        /// destroy (bound)
19521        OpDestroyBound = 4,
19522        /// only annotations
19523        OpAnnotations = 5,
19524    }
19525    impl Operation {
19526        /// String value of the enum field names used in the ProtoBuf definition.
19527        ///
19528        /// The values are not transformed in any way and thus are considered stable
19529        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19530        pub fn as_str_name(&self) -> &'static str {
19531            match self {
19532                Operation::OpUnspecified => "OP_UNSPECIFIED",
19533                Operation::OpCreate => "OP_CREATE",
19534                Operation::OpDestroy => "OP_DESTROY",
19535                Operation::OpBind => "OP_BIND",
19536                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
19537                Operation::OpAnnotations => "OP_ANNOTATIONS",
19538            }
19539        }
19540    }
19541    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19542    #[repr(i32)]
19543    pub enum AllocationScope {
19544        ScopeUnspecified = 0,
19545        ScopeCommand = 1,
19546        ScopeObject = 2,
19547        ScopeCache = 3,
19548        ScopeDevice = 4,
19549        ScopeInstance = 5,
19550    }
19551    impl AllocationScope {
19552        /// String value of the enum field names used in the ProtoBuf definition.
19553        ///
19554        /// The values are not transformed in any way and thus are considered stable
19555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19556        pub fn as_str_name(&self) -> &'static str {
19557            match self {
19558                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19559                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
19560                AllocationScope::ScopeObject => "SCOPE_OBJECT",
19561                AllocationScope::ScopeCache => "SCOPE_CACHE",
19562                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
19563                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
19564            }
19565        }
19566    }
19567}
19568// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19569
19570// Begin of protos/perfetto/trace/profiling/profile_common.proto
19571
19572/// The interning fields in this file can refer to 2 different intern tables,
19573/// depending on the message they are used in. If the interned fields are present
19574/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19575/// should be used. If the intered fields are present in the
19576/// StreamingProfilePacket proto, then the intern tables included in all of the
19577/// previous InternedData message with same sequence ID should be used.
19578/// TODO(fmayer): Move to the intern tables to a common location.
19579#[derive(Clone, PartialEq, ::prost::Message)]
19580pub struct InternedString {
19581    /// Interning key. Starts from 1, 0 is the same as "not set".
19582    #[prost(uint64, optional, tag="1")]
19583    pub iid: ::core::option::Option<u64>,
19584    /// The actual string.
19585    #[prost(bytes="vec", optional, tag="2")]
19586    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19587}
19588/// Source line info.
19589#[derive(Clone, PartialEq, ::prost::Message)]
19590pub struct Line {
19591    #[prost(string, optional, tag="1")]
19592    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19593    #[prost(string, optional, tag="2")]
19594    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19595    #[prost(uint32, optional, tag="3")]
19596    pub line_number: ::core::option::Option<u32>,
19597}
19598/// Symbols for a given address in a module.
19599#[derive(Clone, PartialEq, ::prost::Message)]
19600pub struct AddressSymbols {
19601    #[prost(uint64, optional, tag="1")]
19602    pub address: ::core::option::Option<u64>,
19603    /// Source lines that correspond to this address.
19604    ///
19605    /// These are repeated because when inlining happens, multiple functions'
19606    /// frames can be at a single address. Imagine function Foo calling the
19607    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19608    /// both Foo and the std::vector<int> constructor when we symbolize the
19609    /// address.
19610    #[prost(message, repeated, tag="2")]
19611    pub lines: ::prost::alloc::vec::Vec<Line>,
19612}
19613/// Symbols for addresses seen in a module.
19614/// Used in re-symbolisation of complete traces.
19615#[derive(Clone, PartialEq, ::prost::Message)]
19616pub struct ModuleSymbols {
19617    /// Fully qualified path to the mapping.
19618    /// E.g. /system/lib64/libc.so.
19619    #[prost(string, optional, tag="1")]
19620    pub path: ::core::option::Option<::prost::alloc::string::String>,
19621    /// .note.gnu.build-id on Linux (not hex encoded).
19622    /// uuid on MacOS.
19623    /// Module GUID on Windows.
19624    #[prost(string, optional, tag="2")]
19625    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19626    #[prost(message, repeated, tag="3")]
19627    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19628}
19629#[derive(Clone, PartialEq, ::prost::Message)]
19630pub struct Mapping {
19631    /// Interning key.
19632    /// Starts from 1, 0 is the same as "not set".
19633    #[prost(uint64, optional, tag="1")]
19634    pub iid: ::core::option::Option<u64>,
19635    /// Interning key.
19636    /// Starts from 1, 0 is the same as "not set".
19637    #[prost(uint64, optional, tag="2")]
19638    pub build_id: ::core::option::Option<u64>,
19639    // The linker may create multiple memory mappings for the same shared
19640    // library.
19641    // This is so that the ELF header is mapped as read only, while the
19642    // executable memory is mapped as executable only.
19643    // The details of this depend on the linker, a possible mapping of an ELF
19644    // file is this:
19645    //          +----------------------+
19646    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
19647    //          +---------+------------+
19648    //          |         |
19649    //          | read    | executable
19650    //          v mapping v mapping
19651    //          +----------------------+
19652    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
19653    //          +------------------+---+
19654    //          ^         ^        ^
19655    //          +         +        +
19656    //        start     exact    relpc
19657    //        offset   offset    0x1800
19658    //        0x0000   0x1000
19659    //
19660    // exact_offset is the offset into the library file of this mapping.
19661    // start_offset is the offset into the library file of the first mapping
19662    // for that library. For native libraries (.so files) this should be 0.
19663
19664    /// This is not set on Android 10.
19665    #[prost(uint64, optional, tag="8")]
19666    pub exact_offset: ::core::option::Option<u64>,
19667    #[prost(uint64, optional, tag="3")]
19668    pub start_offset: ::core::option::Option<u64>,
19669    #[prost(uint64, optional, tag="4")]
19670    pub start: ::core::option::Option<u64>,
19671    #[prost(uint64, optional, tag="5")]
19672    pub end: ::core::option::Option<u64>,
19673    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19674    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19675    /// by libunwindstack) when doing offline resymbolisation.
19676    ///
19677    /// For an executable ELF PT_LOAD segment, this is:
19678    ///    p_vaddr - p_offset
19679    ///
19680    /// Where p_offset means that the code is at that offset into the ELF file on
19681    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19682    /// to where the linker loads the ELF into the address space. For most ELFs,
19683    /// the two values are identical and therefore load_bias is zero.
19684    #[prost(uint64, optional, tag="6")]
19685    pub load_bias: ::core::option::Option<u64>,
19686    /// E.g. ["system", "lib64", "libc.so"]
19687    /// id of string.
19688    #[prost(uint64, repeated, packed="false", tag="7")]
19689    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19690}
19691#[derive(Clone, PartialEq, ::prost::Message)]
19692pub struct Frame {
19693    /// Interning key. Starts from 1, 0 is the same as "not set".
19694    #[prost(uint64, optional, tag="1")]
19695    pub iid: ::core::option::Option<u64>,
19696    /// E.g. "fopen"
19697    /// id of string.
19698    #[prost(uint64, optional, tag="2")]
19699    pub function_name_id: ::core::option::Option<u64>,
19700    /// The mapping in which this frame's instruction pointer resides.
19701    /// iid of Mapping.iid.
19702    ///
19703    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19704    /// this frame has no associated memory mapping (e.g., symbolized frames
19705    /// without address information).
19706    ///
19707    /// Starts from 1, 0 is the same as "not set".
19708    #[prost(uint64, optional, tag="3")]
19709    pub mapping_id: ::core::option::Option<u64>,
19710    /// Instruction pointer relative to the start of the mapping.
19711    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19712    #[prost(uint64, optional, tag="4")]
19713    pub rel_pc: ::core::option::Option<u64>,
19714    /// Source file path for this frame.
19715    /// This is typically set during online symbolization when symbol information
19716    /// is available at trace collection time. If not set, source file paths may be
19717    /// added later via offline symbolization (see ModuleSymbols).
19718    ///
19719    /// Starts from 1, 0 is the same as "not set".
19720    ///
19721    /// iid of InternedData.source_paths.
19722    #[prost(uint64, optional, tag="5")]
19723    pub source_path_iid: ::core::option::Option<u64>,
19724    /// Line number in the source file for this frame.
19725    /// This is typically set during online symbolization when symbol information
19726    /// is available at trace collection time. If not set, line numbers may be
19727    /// added later via offline symbolization (see ModuleSymbols).
19728    #[prost(uint32, optional, tag="6")]
19729    pub line_number: ::core::option::Option<u32>,
19730}
19731#[derive(Clone, PartialEq, ::prost::Message)]
19732pub struct Callstack {
19733    /// Interning key. Starts from 1, 0 is the same as "not set".
19734    #[prost(uint64, optional, tag="1")]
19735    pub iid: ::core::option::Option<u64>,
19736    /// Frames of this callstack. Bottom frame first.
19737    #[prost(uint64, repeated, packed="false", tag="2")]
19738    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19739}
19740// End of protos/perfetto/trace/profiling/profile_common.proto
19741
19742// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19743
19744#[derive(Clone, PartialEq, ::prost::Message)]
19745pub struct HistogramName {
19746    #[prost(uint64, optional, tag="1")]
19747    pub iid: ::core::option::Option<u64>,
19748    #[prost(string, optional, tag="2")]
19749    pub name: ::core::option::Option<::prost::alloc::string::String>,
19750}
19751/// An individual histogram sample logged via Chrome's UMA metrics system.
19752#[derive(Clone, PartialEq, ::prost::Message)]
19753pub struct ChromeHistogramSample {
19754    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
19755    /// both must be present.
19756    #[prost(uint64, optional, tag="1")]
19757    pub name_hash: ::core::option::Option<u64>,
19758    #[prost(string, optional, tag="2")]
19759    pub name: ::core::option::Option<::prost::alloc::string::String>,
19760    #[prost(int64, optional, tag="3")]
19761    pub sample: ::core::option::Option<i64>,
19762    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
19763    #[prost(uint64, optional, tag="4")]
19764    pub name_iid: ::core::option::Option<u64>,
19765}
19766// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19767
19768// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
19769
19770/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
19771/// macros. Users of the Perfetto SDK should prefer to use the
19772/// perfetto::TracedValue API to fill these protos, rather than filling them
19773/// manually.
19774///
19775/// Debug annotations are intended for debug use and are not considered a stable
19776/// API of the trace contents. Trace-based metrics that use debug annotation
19777/// values are prone to breakage, so please rely on typed TrackEvent fields for
19778/// these instead.
19779///
19780/// DebugAnnotations support nested arrays and dictionaries. Each entry is
19781/// encoded as a single DebugAnnotation message. Only dictionary entries
19782/// set the "name" field. The TrackEvent message forms an implicit root
19783/// dictionary.
19784///
19785/// Example TrackEvent with nested annotations:
19786///    track_event {
19787///      debug_annotations {
19788///        name: "foo"
19789///        dict_entries {
19790///          name: "a"
19791///          bool_value: true
19792///        }
19793///        dict_entries {
19794///          name: "b"
19795///          int_value: 123
19796///        }
19797///      }
19798///      debug_annotations {
19799///        name: "bar"
19800///        array_values {
19801///          string_value: "hello"
19802///        }
19803///        array_values {
19804///          string_value: "world"
19805///        }
19806///      }
19807///    }
19808///
19809/// Next ID: 18.
19810/// Reserved ID: 15
19811#[derive(Clone, PartialEq, ::prost::Message)]
19812pub struct DebugAnnotation {
19813    #[prost(bytes="vec", optional, tag="14")]
19814    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19815    #[prost(message, repeated, tag="11")]
19816    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
19817    #[prost(message, repeated, tag="12")]
19818    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
19819    /// Name fields are set only for dictionary entries.
19820    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
19821    pub name_field: ::core::option::Option<debug_annotation::NameField>,
19822    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
19823    pub value: ::core::option::Option<debug_annotation::Value>,
19824    /// Used to embed arbitrary proto messages (which are also typically used to
19825    /// represent typed TrackEvent arguments). |proto_type_name| or
19826    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19827    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19828    /// proto messages. See |TracedValue::WriteProto| for more details.
19829    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
19830    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
19831}
19832/// Nested message and enum types in `DebugAnnotation`.
19833pub mod debug_annotation {
19834    /// Deprecated legacy way to use nested values. Only kept for
19835    /// backwards-compatibility in TraceProcessor. May be removed in the future -
19836    /// code filling protos should use |dict_entries| and |array_values| instead.
19837    #[derive(Clone, PartialEq, ::prost::Message)]
19838    pub struct NestedValue {
19839        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
19840        pub nested_type: ::core::option::Option<i32>,
19841        #[prost(string, repeated, tag="2")]
19842        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19843        #[prost(message, repeated, tag="3")]
19844        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
19845        #[prost(message, repeated, tag="4")]
19846        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
19847        #[prost(int64, optional, tag="5")]
19848        pub int_value: ::core::option::Option<i64>,
19849        #[prost(double, optional, tag="6")]
19850        pub double_value: ::core::option::Option<f64>,
19851        #[prost(bool, optional, tag="7")]
19852        pub bool_value: ::core::option::Option<bool>,
19853        #[prost(string, optional, tag="8")]
19854        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
19855    }
19856    /// Nested message and enum types in `NestedValue`.
19857    pub mod nested_value {
19858        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19859        #[repr(i32)]
19860        pub enum NestedType {
19861            /// leaf value.
19862            Unspecified = 0,
19863            Dict = 1,
19864            Array = 2,
19865        }
19866        impl NestedType {
19867            /// String value of the enum field names used in the ProtoBuf definition.
19868            ///
19869            /// The values are not transformed in any way and thus are considered stable
19870            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19871            pub fn as_str_name(&self) -> &'static str {
19872                match self {
19873                    NestedType::Unspecified => "UNSPECIFIED",
19874                    NestedType::Dict => "DICT",
19875                    NestedType::Array => "ARRAY",
19876                }
19877            }
19878        }
19879    }
19880    /// Name fields are set only for dictionary entries.
19881    #[derive(Clone, PartialEq, ::prost::Oneof)]
19882    pub enum NameField {
19883        /// interned DebugAnnotationName.
19884        #[prost(uint64, tag="1")]
19885        NameIid(u64),
19886        /// non-interned variant.
19887        #[prost(string, tag="10")]
19888        Name(::prost::alloc::string::String),
19889    }
19890    #[derive(Clone, PartialEq, ::prost::Oneof)]
19891    pub enum Value {
19892        #[prost(bool, tag="2")]
19893        BoolValue(bool),
19894        #[prost(uint64, tag="3")]
19895        UintValue(u64),
19896        #[prost(int64, tag="4")]
19897        IntValue(i64),
19898        #[prost(double, tag="5")]
19899        DoubleValue(f64),
19900        /// Pointers are stored in a separate type as the JSON output treats them
19901        /// differently from other uint64 values.
19902        #[prost(uint64, tag="7")]
19903        PointerValue(u64),
19904        /// Deprecated. Use dict_entries / array_values instead.
19905        #[prost(message, tag="8")]
19906        NestedValue(NestedValue),
19907        /// Legacy instrumentation may not support conversion of nested data to
19908        /// NestedValue yet.
19909        #[prost(string, tag="9")]
19910        LegacyJsonValue(::prost::alloc::string::String),
19911        /// interned and non-interned variants of strings.
19912        #[prost(string, tag="6")]
19913        StringValue(::prost::alloc::string::String),
19914        /// Corresponds to |debug_annotation_string_values| field in InternedData.
19915        #[prost(uint64, tag="17")]
19916        StringValueIid(u64),
19917    }
19918    /// Used to embed arbitrary proto messages (which are also typically used to
19919    /// represent typed TrackEvent arguments). |proto_type_name| or
19920    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19921    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19922    /// proto messages. See |TracedValue::WriteProto| for more details.
19923    #[derive(Clone, PartialEq, ::prost::Oneof)]
19924    pub enum ProtoTypeDescriptor {
19925        #[prost(string, tag="16")]
19926        ProtoTypeName(::prost::alloc::string::String),
19927        /// interned DebugAnnotationValueTypeName.
19928        #[prost(uint64, tag="13")]
19929        ProtoTypeNameIid(u64),
19930    }
19931}
19932// --------------------
19933// Interned data types:
19934// --------------------
19935
19936#[derive(Clone, PartialEq, ::prost::Message)]
19937pub struct DebugAnnotationName {
19938    #[prost(uint64, optional, tag="1")]
19939    pub iid: ::core::option::Option<u64>,
19940    #[prost(string, optional, tag="2")]
19941    pub name: ::core::option::Option<::prost::alloc::string::String>,
19942}
19943/// See the |proto_type_descriptor| comment.
19944#[derive(Clone, PartialEq, ::prost::Message)]
19945pub struct DebugAnnotationValueTypeName {
19946    #[prost(uint64, optional, tag="1")]
19947    pub iid: ::core::option::Option<u64>,
19948    #[prost(string, optional, tag="2")]
19949    pub name: ::core::option::Option<::prost::alloc::string::String>,
19950}
19951// End of protos/perfetto/trace/track_event/debug_annotation.proto
19952
19953// Begin of protos/perfetto/trace/track_event/log_message.proto
19954
19955#[derive(Clone, PartialEq, ::prost::Message)]
19956pub struct LogMessage {
19957    /// interned SourceLocation.
19958    #[prost(uint64, optional, tag="1")]
19959    pub source_location_iid: ::core::option::Option<u64>,
19960    /// interned LogMessageBody.
19961    #[prost(uint64, optional, tag="2")]
19962    pub body_iid: ::core::option::Option<u64>,
19963    #[prost(enumeration="log_message::Priority", optional, tag="3")]
19964    pub prio: ::core::option::Option<i32>,
19965}
19966/// Nested message and enum types in `LogMessage`.
19967pub mod log_message {
19968    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19969    #[repr(i32)]
19970    pub enum Priority {
19971        PrioUnspecified = 0,
19972        PrioUnused = 1,
19973        PrioVerbose = 2,
19974        PrioDebug = 3,
19975        PrioInfo = 4,
19976        PrioWarn = 5,
19977        PrioError = 6,
19978        PrioFatal = 7,
19979    }
19980    impl Priority {
19981        /// String value of the enum field names used in the ProtoBuf definition.
19982        ///
19983        /// The values are not transformed in any way and thus are considered stable
19984        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19985        pub fn as_str_name(&self) -> &'static str {
19986            match self {
19987                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
19988                Priority::PrioUnused => "PRIO_UNUSED",
19989                Priority::PrioVerbose => "PRIO_VERBOSE",
19990                Priority::PrioDebug => "PRIO_DEBUG",
19991                Priority::PrioInfo => "PRIO_INFO",
19992                Priority::PrioWarn => "PRIO_WARN",
19993                Priority::PrioError => "PRIO_ERROR",
19994                Priority::PrioFatal => "PRIO_FATAL",
19995            }
19996        }
19997    }
19998}
19999// --------------------
20000// Interned data types:
20001// --------------------
20002
20003#[derive(Clone, PartialEq, ::prost::Message)]
20004pub struct LogMessageBody {
20005    #[prost(uint64, optional, tag="1")]
20006    pub iid: ::core::option::Option<u64>,
20007    #[prost(string, optional, tag="2")]
20008    pub body: ::core::option::Option<::prost::alloc::string::String>,
20009}
20010// End of protos/perfetto/trace/track_event/log_message.proto
20011
20012// Begin of protos/perfetto/trace/track_event/source_location.proto
20013
20014// --------------------
20015// Interned data types:
20016// --------------------
20017
20018/// A source location, represented as a native symbol.
20019/// This is similar to `message Frame` from
20020/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20021/// source code locations (for example in track event args), not stack frames.
20022#[derive(Clone, PartialEq, ::prost::Message)]
20023pub struct UnsymbolizedSourceLocation {
20024    #[prost(uint64, optional, tag="1")]
20025    pub iid: ::core::option::Option<u64>,
20026    #[prost(uint64, optional, tag="2")]
20027    pub mapping_id: ::core::option::Option<u64>,
20028    #[prost(uint64, optional, tag="3")]
20029    pub rel_pc: ::core::option::Option<u64>,
20030}
20031#[derive(Clone, PartialEq, ::prost::Message)]
20032pub struct SourceLocation {
20033    #[prost(uint64, optional, tag="1")]
20034    pub iid: ::core::option::Option<u64>,
20035    #[prost(string, optional, tag="2")]
20036    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20037    #[prost(string, optional, tag="3")]
20038    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20039    #[prost(uint32, optional, tag="4")]
20040    pub line_number: ::core::option::Option<u32>,
20041}
20042// End of protos/perfetto/trace/track_event/source_location.proto
20043
20044// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
20045
20046/// A list of processes connected to the tracing service.
20047#[derive(Clone, PartialEq, ::prost::Message)]
20048pub struct ChromeActiveProcesses {
20049    #[prost(int32, repeated, packed="false", tag="1")]
20050    pub pid: ::prost::alloc::vec::Vec<i32>,
20051}
20052// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
20053
20054/// Trace event arguments for application state changes.
20055#[derive(Clone, PartialEq, ::prost::Message)]
20056pub struct ChromeApplicationStateInfo {
20057    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
20058    pub application_state: ::core::option::Option<i32>,
20059}
20060/// Nested message and enum types in `ChromeApplicationStateInfo`.
20061pub mod chrome_application_state_info {
20062    /// Enum definition taken from:
20063    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20064    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20065    #[repr(i32)]
20066    pub enum ChromeApplicationState {
20067        ApplicationStateUnknown = 0,
20068        ApplicationStateHasRunningActivities = 1,
20069        ApplicationStateHasPausedActivities = 2,
20070        ApplicationStateHasStoppedActivities = 3,
20071        ApplicationStateHasDestroyedActivities = 4,
20072    }
20073    impl ChromeApplicationState {
20074        /// String value of the enum field names used in the ProtoBuf definition.
20075        ///
20076        /// The values are not transformed in any way and thus are considered stable
20077        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20078        pub fn as_str_name(&self) -> &'static str {
20079            match self {
20080                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20081                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
20082                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
20083                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
20084                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
20085            }
20086        }
20087    }
20088}
20089/// Next id: 18
20090#[derive(Clone, PartialEq, ::prost::Message)]
20091pub struct ChromeCompositorSchedulerState {
20092    #[prost(message, optional, tag="1")]
20093    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20094    #[prost(bool, optional, tag="2")]
20095    pub observing_begin_frame_source: ::core::option::Option<bool>,
20096    #[prost(bool, optional, tag="3")]
20097    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20098    #[prost(bool, optional, tag="4")]
20099    pub pending_begin_frame_task: ::core::option::Option<bool>,
20100    #[prost(bool, optional, tag="5")]
20101    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20102    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
20103    pub inside_action: ::core::option::Option<i32>,
20104    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
20105    pub deadline_mode: ::core::option::Option<i32>,
20106    #[prost(int64, optional, tag="9")]
20107    pub deadline_us: ::core::option::Option<i64>,
20108    #[prost(int64, optional, tag="10")]
20109    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20110    #[prost(int64, optional, tag="11")]
20111    pub now_us: ::core::option::Option<i64>,
20112    #[prost(int64, optional, tag="12")]
20113    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20114    #[prost(int64, optional, tag="13")]
20115    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20116    #[prost(message, optional, tag="14")]
20117    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20118    #[prost(message, optional, tag="15")]
20119    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20120    #[prost(message, optional, tag="16")]
20121    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20122    #[prost(message, optional, tag="17")]
20123    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20124}
20125/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20126pub mod chrome_compositor_scheduler_state {
20127    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20128    #[repr(i32)]
20129    pub enum BeginImplFrameDeadlineMode {
20130        DeadlineModeUnspecified = 0,
20131        DeadlineModeNone = 1,
20132        DeadlineModeImmediate = 2,
20133        DeadlineModeRegular = 3,
20134        DeadlineModeLate = 4,
20135        DeadlineModeBlocked = 5,
20136    }
20137    impl BeginImplFrameDeadlineMode {
20138        /// String value of the enum field names used in the ProtoBuf definition.
20139        ///
20140        /// The values are not transformed in any way and thus are considered stable
20141        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20142        pub fn as_str_name(&self) -> &'static str {
20143            match self {
20144                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20145                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
20146                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20147                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20148                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
20149                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20150            }
20151        }
20152    }
20153}
20154/// Describes the current values stored in the Chrome Compositor state machine.
20155/// Next id: 3
20156#[derive(Clone, PartialEq, ::prost::Message)]
20157pub struct ChromeCompositorStateMachine {
20158    #[prost(message, optional, tag="1")]
20159    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20160    #[prost(message, optional, tag="2")]
20161    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20162}
20163/// Nested message and enum types in `ChromeCompositorStateMachine`.
20164pub mod chrome_compositor_state_machine {
20165    /// Next id: 6
20166    #[derive(Clone, PartialEq, ::prost::Message)]
20167    pub struct MajorState {
20168        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
20169        pub next_action: ::core::option::Option<i32>,
20170        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
20171        pub begin_impl_frame_state: ::core::option::Option<i32>,
20172        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
20173        pub begin_main_frame_state: ::core::option::Option<i32>,
20174        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
20175        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20176        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
20177        pub forced_redraw_state: ::core::option::Option<i32>,
20178    }
20179    /// Nested message and enum types in `MajorState`.
20180    pub mod major_state {
20181        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20182        #[repr(i32)]
20183        pub enum BeginImplFrameState {
20184            BeginImplFrameUnspecified = 0,
20185            BeginImplFrameIdle = 1,
20186            BeginImplFrameInsideBeginFrame = 2,
20187            BeginImplFrameInsideDeadline = 3,
20188        }
20189        impl BeginImplFrameState {
20190            /// String value of the enum field names used in the ProtoBuf definition.
20191            ///
20192            /// The values are not transformed in any way and thus are considered stable
20193            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20194            pub fn as_str_name(&self) -> &'static str {
20195                match self {
20196                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20197                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20198                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
20199                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
20200                }
20201            }
20202        }
20203        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20204        #[repr(i32)]
20205        pub enum BeginMainFrameState {
20206            BeginMainFrameUnspecified = 0,
20207            BeginMainFrameIdle = 1,
20208            BeginMainFrameSent = 2,
20209            BeginMainFrameReadyToCommit = 3,
20210        }
20211        impl BeginMainFrameState {
20212            /// String value of the enum field names used in the ProtoBuf definition.
20213            ///
20214            /// The values are not transformed in any way and thus are considered stable
20215            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20216            pub fn as_str_name(&self) -> &'static str {
20217                match self {
20218                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
20219                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
20220                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
20221                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
20222                }
20223            }
20224        }
20225        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20226        #[repr(i32)]
20227        pub enum LayerTreeFrameSinkState {
20228            LayerTreeFrameUnspecified = 0,
20229            LayerTreeFrameNone = 1,
20230            LayerTreeFrameActive = 2,
20231            LayerTreeFrameCreating = 3,
20232            LayerTreeFrameWaitingForFirstCommit = 4,
20233            LayerTreeFrameWaitingForFirstActivation = 5,
20234        }
20235        impl LayerTreeFrameSinkState {
20236            /// String value of the enum field names used in the ProtoBuf definition.
20237            ///
20238            /// The values are not transformed in any way and thus are considered stable
20239            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20240            pub fn as_str_name(&self) -> &'static str {
20241                match self {
20242                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
20243                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
20244                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
20245                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
20246                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
20247                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
20248                }
20249            }
20250        }
20251        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20252        #[repr(i32)]
20253        pub enum ForcedRedrawOnTimeoutState {
20254            ForcedRedrawUnspecified = 0,
20255            ForcedRedrawIdle = 1,
20256            ForcedRedrawWaitingForCommit = 2,
20257            ForcedRedrawWaitingForActivation = 3,
20258            ForcedRedrawWaitingForDraw = 4,
20259        }
20260        impl ForcedRedrawOnTimeoutState {
20261            /// String value of the enum field names used in the ProtoBuf definition.
20262            ///
20263            /// The values are not transformed in any way and thus are considered stable
20264            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20265            pub fn as_str_name(&self) -> &'static str {
20266                match self {
20267                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
20268                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
20269                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
20270                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
20271                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
20272                }
20273            }
20274        }
20275    }
20276    /// Next id: 47
20277    #[derive(Clone, PartialEq, ::prost::Message)]
20278    pub struct MinorState {
20279        #[prost(int32, optional, tag="1")]
20280        pub commit_count: ::core::option::Option<i32>,
20281        #[prost(int32, optional, tag="2")]
20282        pub current_frame_number: ::core::option::Option<i32>,
20283        #[prost(int32, optional, tag="3")]
20284        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
20285        #[prost(int32, optional, tag="4")]
20286        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
20287        #[prost(int32, optional, tag="5")]
20288        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
20289        #[prost(bool, optional, tag="6")]
20290        pub did_draw: ::core::option::Option<bool>,
20291        #[prost(bool, optional, tag="7")]
20292        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
20293        #[prost(bool, optional, tag="8")]
20294        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
20295        #[prost(bool, optional, tag="9")]
20296        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
20297        #[prost(bool, optional, tag="10")]
20298        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
20299        #[prost(bool, optional, tag="11")]
20300        pub did_commit_during_frame: ::core::option::Option<bool>,
20301        #[prost(bool, optional, tag="12")]
20302        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
20303        #[prost(bool, optional, tag="13")]
20304        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
20305        #[prost(bool, optional, tag="14")]
20306        pub did_prepare_tiles: ::core::option::Option<bool>,
20307        #[prost(int32, optional, tag="15")]
20308        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
20309        #[prost(int32, optional, tag="16")]
20310        pub pending_submit_frames: ::core::option::Option<i32>,
20311        #[prost(int32, optional, tag="17")]
20312        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
20313        #[prost(bool, optional, tag="18")]
20314        pub needs_redraw: ::core::option::Option<bool>,
20315        #[prost(bool, optional, tag="19")]
20316        pub needs_prepare_tiles: ::core::option::Option<bool>,
20317        #[prost(bool, optional, tag="20")]
20318        pub needs_begin_main_frame: ::core::option::Option<bool>,
20319        #[prost(bool, optional, tag="21")]
20320        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
20321        #[prost(bool, optional, tag="22")]
20322        pub visible: ::core::option::Option<bool>,
20323        #[prost(bool, optional, tag="23")]
20324        pub begin_frame_source_paused: ::core::option::Option<bool>,
20325        #[prost(bool, optional, tag="24")]
20326        pub can_draw: ::core::option::Option<bool>,
20327        #[prost(bool, optional, tag="25")]
20328        pub resourceless_draw: ::core::option::Option<bool>,
20329        #[prost(bool, optional, tag="26")]
20330        pub has_pending_tree: ::core::option::Option<bool>,
20331        #[prost(bool, optional, tag="27")]
20332        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
20333        #[prost(bool, optional, tag="28")]
20334        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
20335        #[prost(bool, optional, tag="29")]
20336        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
20337        #[prost(bool, optional, tag="30")]
20338        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
20339        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
20340        pub tree_priority: ::core::option::Option<i32>,
20341        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
20342        pub scroll_handler_state: ::core::option::Option<i32>,
20343        #[prost(bool, optional, tag="33")]
20344        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
20345        #[prost(bool, optional, tag="34")]
20346        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
20347        #[prost(bool, optional, tag="36")]
20348        pub video_needs_begin_frames: ::core::option::Option<bool>,
20349        #[prost(bool, optional, tag="37")]
20350        pub defer_begin_main_frame: ::core::option::Option<bool>,
20351        #[prost(bool, optional, tag="38")]
20352        pub last_commit_had_no_updates: ::core::option::Option<bool>,
20353        #[prost(bool, optional, tag="39")]
20354        pub did_draw_in_last_frame: ::core::option::Option<bool>,
20355        #[prost(bool, optional, tag="40")]
20356        pub did_submit_in_last_frame: ::core::option::Option<bool>,
20357        #[prost(bool, optional, tag="41")]
20358        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
20359        #[prost(bool, optional, tag="42")]
20360        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
20361        #[prost(bool, optional, tag="43")]
20362        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
20363        #[prost(bool, optional, tag="44")]
20364        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
20365        #[prost(bool, optional, tag="45")]
20366        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
20367        #[prost(bool, optional, tag="46")]
20368        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
20369    }
20370    /// Nested message and enum types in `MinorState`.
20371    pub mod minor_state {
20372        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20373        #[repr(i32)]
20374        pub enum TreePriority {
20375            Unspecified = 0,
20376            SamePriorityForBothTrees = 1,
20377            SmoothnessTakesPriority = 2,
20378            NewContentTakesPriority = 3,
20379        }
20380        impl TreePriority {
20381            /// String value of the enum field names used in the ProtoBuf definition.
20382            ///
20383            /// The values are not transformed in any way and thus are considered stable
20384            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20385            pub fn as_str_name(&self) -> &'static str {
20386                match self {
20387                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
20388                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
20389                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
20390                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
20391                }
20392            }
20393        }
20394        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20395        #[repr(i32)]
20396        pub enum ScrollHandlerState {
20397            ScrollHandlerUnspecified = 0,
20398            ScrollAffectsScrollHandler = 1,
20399            ScrollDoesNotAffectScrollHandler = 2,
20400        }
20401        impl ScrollHandlerState {
20402            /// String value of the enum field names used in the ProtoBuf definition.
20403            ///
20404            /// The values are not transformed in any way and thus are considered stable
20405            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20406            pub fn as_str_name(&self) -> &'static str {
20407                match self {
20408                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
20409                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
20410                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
20411                }
20412            }
20413        }
20414    }
20415}
20416/// Next id: 13
20417#[derive(Clone, PartialEq, ::prost::Message)]
20418pub struct BeginFrameArgs {
20419    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
20420    pub r#type: ::core::option::Option<i32>,
20421    #[prost(uint64, optional, tag="2")]
20422    pub source_id: ::core::option::Option<u64>,
20423    #[prost(uint64, optional, tag="3")]
20424    pub sequence_number: ::core::option::Option<u64>,
20425    #[prost(int64, optional, tag="4")]
20426    pub frame_time_us: ::core::option::Option<i64>,
20427    #[prost(int64, optional, tag="5")]
20428    pub deadline_us: ::core::option::Option<i64>,
20429    #[prost(int64, optional, tag="6")]
20430    pub interval_delta_us: ::core::option::Option<i64>,
20431    #[prost(bool, optional, tag="7")]
20432    pub on_critical_path: ::core::option::Option<bool>,
20433    #[prost(bool, optional, tag="8")]
20434    pub animate_only: ::core::option::Option<bool>,
20435    #[prost(int64, optional, tag="12")]
20436    pub frames_throttled_since_last: ::core::option::Option<i64>,
20437    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
20438    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
20439}
20440/// Nested message and enum types in `BeginFrameArgs`.
20441pub mod begin_frame_args {
20442    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
20443    /// drop this in the proto representation, and instead make the JSON format
20444    /// "subtype" field become the type field.
20445    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20446    #[repr(i32)]
20447    pub enum BeginFrameArgsType {
20448        Unspecified = 0,
20449        Invalid = 1,
20450        Normal = 2,
20451        Missed = 3,
20452    }
20453    impl BeginFrameArgsType {
20454        /// String value of the enum field names used in the ProtoBuf definition.
20455        ///
20456        /// The values are not transformed in any way and thus are considered stable
20457        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20458        pub fn as_str_name(&self) -> &'static str {
20459            match self {
20460                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
20461                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
20462                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
20463                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
20464            }
20465        }
20466    }
20467    #[derive(Clone, PartialEq, ::prost::Oneof)]
20468    pub enum CreatedFrom {
20469        /// The interned SourceLocation.
20470        #[prost(uint64, tag="9")]
20471        SourceLocationIid(u64),
20472        /// The SourceLocation that this args was created from.
20473        /// TODO(nuskos): Eventually we will support interning inside of
20474        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
20475        /// since we can emit it as part of the InternedData message. When we can
20476        /// remove this |source_location|.
20477        #[prost(message, tag="10")]
20478        SourceLocation(super::SourceLocation),
20479    }
20480}
20481/// Next id: 7
20482#[derive(Clone, PartialEq, ::prost::Message)]
20483pub struct BeginImplFrameArgs {
20484    #[prost(int64, optional, tag="1")]
20485    pub updated_at_us: ::core::option::Option<i64>,
20486    #[prost(int64, optional, tag="2")]
20487    pub finished_at_us: ::core::option::Option<i64>,
20488    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
20489    pub state: ::core::option::Option<i32>,
20490    #[prost(message, optional, tag="6")]
20491    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
20492    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
20493    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
20494}
20495/// Nested message and enum types in `BeginImplFrameArgs`.
20496pub mod begin_impl_frame_args {
20497    #[derive(Clone, PartialEq, ::prost::Message)]
20498    pub struct TimestampsInUs {
20499        #[prost(int64, optional, tag="1")]
20500        pub interval_delta: ::core::option::Option<i64>,
20501        #[prost(int64, optional, tag="2")]
20502        pub now_to_deadline_delta: ::core::option::Option<i64>,
20503        #[prost(int64, optional, tag="3")]
20504        pub frame_time_to_now_delta: ::core::option::Option<i64>,
20505        #[prost(int64, optional, tag="4")]
20506        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
20507        #[prost(int64, optional, tag="5")]
20508        pub now: ::core::option::Option<i64>,
20509        #[prost(int64, optional, tag="6")]
20510        pub frame_time: ::core::option::Option<i64>,
20511        #[prost(int64, optional, tag="7")]
20512        pub deadline: ::core::option::Option<i64>,
20513    }
20514    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20515    #[repr(i32)]
20516    pub enum State {
20517        BeginFrameFinished = 0,
20518        BeginFrameUsing = 1,
20519    }
20520    impl State {
20521        /// String value of the enum field names used in the ProtoBuf definition.
20522        ///
20523        /// The values are not transformed in any way and thus are considered stable
20524        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20525        pub fn as_str_name(&self) -> &'static str {
20526            match self {
20527                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
20528                State::BeginFrameUsing => "BEGIN_FRAME_USING",
20529            }
20530        }
20531    }
20532    #[derive(Clone, PartialEq, ::prost::Oneof)]
20533    pub enum Args {
20534        /// Only set if |state| is BEGIN_FRAME_FINISHED.
20535        #[prost(message, tag="4")]
20536        CurrentArgs(super::BeginFrameArgs),
20537        /// Only set if |state| is BEGIN_FRAME_USING.
20538        #[prost(message, tag="5")]
20539        LastArgs(super::BeginFrameArgs),
20540    }
20541}
20542#[derive(Clone, PartialEq, ::prost::Message)]
20543pub struct BeginFrameObserverState {
20544    #[prost(int64, optional, tag="1")]
20545    pub dropped_begin_frame_args: ::core::option::Option<i64>,
20546    #[prost(message, optional, tag="2")]
20547    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20548}
20549#[derive(Clone, PartialEq, ::prost::Message)]
20550pub struct BeginFrameSourceState {
20551    #[prost(uint32, optional, tag="1")]
20552    pub source_id: ::core::option::Option<u32>,
20553    #[prost(bool, optional, tag="2")]
20554    pub paused: ::core::option::Option<bool>,
20555    #[prost(uint32, optional, tag="3")]
20556    pub num_observers: ::core::option::Option<u32>,
20557    #[prost(message, optional, tag="4")]
20558    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20559}
20560#[derive(Clone, PartialEq, ::prost::Message)]
20561pub struct CompositorTimingHistory {
20562    #[prost(int64, optional, tag="1")]
20563    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
20564    #[prost(int64, optional, tag="2")]
20565    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
20566    #[prost(int64, optional, tag="3")]
20567    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
20568    #[prost(int64, optional, tag="4")]
20569    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
20570    #[prost(int64, optional, tag="5")]
20571    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
20572    #[prost(int64, optional, tag="6")]
20573    pub activate_estimate_delta_us: ::core::option::Option<i64>,
20574    #[prost(int64, optional, tag="7")]
20575    pub draw_estimate_delta_us: ::core::option::Option<i64>,
20576}
20577// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
20578
20579// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
20580
20581/// Details about ContentSettings trace events.
20582#[derive(Clone, PartialEq, ::prost::Message)]
20583pub struct ChromeContentSettingsEventInfo {
20584    /// The number of user defined hostname patterns for content settings at
20585    /// browser start. Similar to UMA histogram
20586    /// 'ContentSettings.NumberOfExceptions'.
20587    #[prost(uint32, optional, tag="1")]
20588    pub number_of_exceptions: ::core::option::Option<u32>,
20589}
20590// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20591
20592/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
20593/// in
20594/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20595/// instead.
20596#[derive(Clone, PartialEq, ::prost::Message)]
20597pub struct ChromeFrameReporter {
20598    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
20599    pub state: ::core::option::Option<i32>,
20600    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
20601    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
20602    pub reason: ::core::option::Option<i32>,
20603    #[prost(uint64, optional, tag="3")]
20604    pub frame_source: ::core::option::Option<u64>,
20605    #[prost(uint64, optional, tag="4")]
20606    pub frame_sequence: ::core::option::Option<u64>,
20607    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
20608    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
20609    /// smoothness.
20610    #[prost(bool, optional, tag="5")]
20611    pub affects_smoothness: ::core::option::Option<bool>,
20612    /// The type of active scroll.
20613    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
20614    pub scroll_state: ::core::option::Option<i32>,
20615    /// If any main thread animation is active during this frame.
20616    #[prost(bool, optional, tag="7")]
20617    pub has_main_animation: ::core::option::Option<bool>,
20618    /// If any compositor thread animation is active during this frame.
20619    #[prost(bool, optional, tag="8")]
20620    pub has_compositor_animation: ::core::option::Option<bool>,
20621    /// If any touch-driven UX (not scroll) is active during this frame.
20622    #[prost(bool, optional, tag="9")]
20623    pub has_smooth_input_main: ::core::option::Option<bool>,
20624    /// Whether the frame contained any missing content (i.e. whether there was
20625    /// checkerboarding in the frame).  If has_missing_content,
20626    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
20627    /// values, has_missing_content should equal checkerboarded_needs_raster ||
20628    /// checkerboarded_needs_record.
20629    #[prost(bool, optional, tag="10")]
20630    pub has_missing_content: ::core::option::Option<bool>,
20631    /// The id of layer_tree_host that the frame has been produced for.
20632    #[prost(uint64, optional, tag="11")]
20633    pub layer_tree_host_id: ::core::option::Option<u64>,
20634    /// If total latency of PipelineReporter exceeds a certain limit.
20635    #[prost(bool, optional, tag="12")]
20636    pub has_high_latency: ::core::option::Option<bool>,
20637    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
20638    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
20639    /// (i.e. dropped frames when there are no partial compositor updates).
20640    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
20641    pub frame_type: ::core::option::Option<i32>,
20642    /// The breakdown stage of PipelineReporter that is most likely accountable for
20643    /// high latency.
20644    #[prost(string, repeated, tag="14")]
20645    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20646    /// Whether the frame contained any content that is not fully rastered.
20647    #[prost(bool, optional, tag="15")]
20648    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
20649    /// Whether the frame contained any content that is not fully recorded.
20650    #[prost(bool, optional, tag="16")]
20651    pub checkerboarded_needs_record: ::core::option::Option<bool>,
20652    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
20653    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
20654    #[prost(int64, optional, tag="17")]
20655    pub surface_frame_trace_id: ::core::option::Option<i64>,
20656    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
20657    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
20658    #[prost(int64, optional, tag="18")]
20659    pub display_trace_id: ::core::option::Option<i64>,
20660}
20661/// Nested message and enum types in `ChromeFrameReporter`.
20662pub mod chrome_frame_reporter {
20663    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20664    #[repr(i32)]
20665    pub enum State {
20666        /// The frame did not have any updates to present.
20667        NoUpdateDesired = 0,
20668        /// The frame presented all the desired updates (i.e. any updates requested
20669        /// from both the compositor thread and main-threads were handled).
20670        PresentedAll = 1,
20671        /// The frame was presented with some updates, but also missed some updates
20672        /// (e.g. missed updates from the main-thread, but included updates from the
20673        /// compositor thread).
20674        PresentedPartial = 2,
20675        /// The frame was dropped, i.e. some updates were desired for the frame, but
20676        /// was not presented.
20677        Dropped = 3,
20678    }
20679    impl State {
20680        /// String value of the enum field names used in the ProtoBuf definition.
20681        ///
20682        /// The values are not transformed in any way and thus are considered stable
20683        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20684        pub fn as_str_name(&self) -> &'static str {
20685            match self {
20686                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
20687                State::PresentedAll => "STATE_PRESENTED_ALL",
20688                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
20689                State::Dropped => "STATE_DROPPED",
20690            }
20691        }
20692    }
20693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20694    #[repr(i32)]
20695    pub enum FrameDropReason {
20696        ReasonUnspecified = 0,
20697        /// Frame was dropped by the display-compositor.
20698        /// The display-compositor may drop a frame some times (e.g. the frame missed
20699        /// the deadline, or was blocked on surface-sync, etc.)
20700        ReasonDisplayCompositor = 1,
20701        /// Frame was dropped because of the main-thread.
20702        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
20703        /// is running expensive javascript, or doing a lot of layout updates, etc.
20704        ReasonMainThread = 2,
20705        /// Frame was dropped by the client compositor.
20706        /// The client compositor can drop some frames too (e.g. attempting to
20707        /// recover latency, missing the deadline, etc.).
20708        ReasonClientCompositor = 3,
20709    }
20710    impl FrameDropReason {
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                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
20718                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
20719                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
20720                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
20721            }
20722        }
20723    }
20724    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20725    #[repr(i32)]
20726    pub enum ScrollState {
20727        ScrollNone = 0,
20728        ScrollMainThread = 1,
20729        ScrollCompositorThread = 2,
20730        ScrollRaster = 3,
20731        /// Used when it can't be determined whether a scroll is in progress or not.
20732        ScrollUnknown = 4,
20733    }
20734    impl ScrollState {
20735        /// String value of the enum field names used in the ProtoBuf definition.
20736        ///
20737        /// The values are not transformed in any way and thus are considered stable
20738        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20739        pub fn as_str_name(&self) -> &'static str {
20740            match self {
20741                ScrollState::ScrollNone => "SCROLL_NONE",
20742                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
20743                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
20744                ScrollState::ScrollRaster => "SCROLL_RASTER",
20745                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
20746            }
20747        }
20748    }
20749    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20750    #[repr(i32)]
20751    pub enum FrameType {
20752        Forked = 0,
20753        Backfill = 1,
20754    }
20755    impl FrameType {
20756        /// String value of the enum field names used in the ProtoBuf definition.
20757        ///
20758        /// The values are not transformed in any way and thus are considered stable
20759        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20760        pub fn as_str_name(&self) -> &'static str {
20761            match self {
20762                FrameType::Forked => "FORKED",
20763                FrameType::Backfill => "BACKFILL",
20764            }
20765        }
20766    }
20767}
20768// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20769
20770// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20771
20772/// Details about one of Chrome's keyed services associated with the event.
20773#[derive(Clone, PartialEq, ::prost::Message)]
20774pub struct ChromeKeyedService {
20775    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
20776    /// Chrome, these are static strings known at compile time).
20777    #[prost(string, optional, tag="1")]
20778    pub name: ::core::option::Option<::prost::alloc::string::String>,
20779}
20780// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20781
20782// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
20783
20784#[derive(Clone, PartialEq, ::prost::Message)]
20785pub struct ChromeLatencyInfo {
20786    #[prost(int64, optional, tag="1")]
20787    pub trace_id: ::core::option::Option<i64>,
20788    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
20789    pub step: ::core::option::Option<i32>,
20790    #[prost(int32, optional, tag="3")]
20791    pub frame_tree_node_id: ::core::option::Option<i32>,
20792    #[prost(message, repeated, tag="4")]
20793    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
20794    #[prost(bool, optional, tag="5")]
20795    pub is_coalesced: ::core::option::Option<bool>,
20796    #[prost(int64, optional, tag="6")]
20797    pub gesture_scroll_id: ::core::option::Option<i64>,
20798    #[prost(int64, optional, tag="7")]
20799    pub touch_id: ::core::option::Option<i64>,
20800    /// The type of input corresponding to this `ChromeLatencyInfo`.
20801    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
20802    pub input_type: ::core::option::Option<i32>,
20803}
20804/// Nested message and enum types in `ChromeLatencyInfo`.
20805pub mod chrome_latency_info {
20806    #[derive(Clone, PartialEq, ::prost::Message)]
20807    pub struct ComponentInfo {
20808        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
20809        pub component_type: ::core::option::Option<i32>,
20810        /// Microsecond timestamp in CLOCK_MONOTONIC domain
20811        #[prost(uint64, optional, tag="2")]
20812        pub time_us: ::core::option::Option<u64>,
20813    }
20814    /// NEXT ID: 12
20815    /// All step are optional but the enum is ordered (not by number) below in the
20816    /// order we expect them to appear if they are emitted in trace in a blocking
20817    /// fashion.
20818    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20819    #[repr(i32)]
20820    pub enum Step {
20821        Unspecified = 0,
20822        /// Emitted on the browser main thread.
20823        SendInputEventUi = 3,
20824        /// Happens on the renderer's compositor.
20825        HandleInputEventImpl = 5,
20826        DidHandleInputAndOverscroll = 8,
20827        /// Occurs on the Renderer's main thread.
20828        HandleInputEventMain = 4,
20829        MainThreadScrollUpdate = 2,
20830        HandleInputEventMainCommit = 1,
20831        /// Could be emitted on both the renderer's main OR compositor.
20832        HandledInputEventMainOrImpl = 9,
20833        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
20834        /// renderer's compositor and this will be emitted.
20835        HandledInputEventImpl = 10,
20836        /// Renderer's compositor.
20837        SwapBuffers = 6,
20838        /// Happens on the VizCompositor in the GPU process.
20839        DrawAndSwap = 7,
20840        /// Happens on the GPU main thread after the swap has completed.
20841        ///
20842        /// See above for NEXT ID, enum steps are not ordered by tag number.
20843        FinishedSwapBuffers = 11,
20844    }
20845    impl Step {
20846        /// String value of the enum field names used in the ProtoBuf definition.
20847        ///
20848        /// The values are not transformed in any way and thus are considered stable
20849        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20850        pub fn as_str_name(&self) -> &'static str {
20851            match self {
20852                Step::Unspecified => "STEP_UNSPECIFIED",
20853                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
20854                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
20855                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
20856                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
20857                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
20858                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
20859                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
20860                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
20861                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
20862                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
20863                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
20864            }
20865        }
20866    }
20867    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
20868    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
20869    /// practices.
20870    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20871    #[repr(i32)]
20872    pub enum LatencyComponentType {
20873        ComponentUnspecified = 0,
20874        ComponentInputEventLatencyBeginRwh = 1,
20875        ComponentInputEventLatencyScrollUpdateOriginal = 2,
20876        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
20877        ComponentInputEventLatencyOriginal = 4,
20878        ComponentInputEventLatencyUi = 5,
20879        ComponentInputEventLatencyRendererMain = 6,
20880        ComponentInputEventLatencyRenderingScheduledMain = 7,
20881        ComponentInputEventLatencyRenderingScheduledImpl = 8,
20882        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
20883        ComponentInputEventLatencyAckRwh = 10,
20884        ComponentInputEventLatencyRendererSwap = 11,
20885        ComponentDisplayCompositorReceivedFrame = 12,
20886        ComponentInputEventGpuSwapBuffer = 13,
20887        ComponentInputEventLatencyFrameSwap = 14,
20888    }
20889    impl LatencyComponentType {
20890        /// String value of the enum field names used in the ProtoBuf definition.
20891        ///
20892        /// The values are not transformed in any way and thus are considered stable
20893        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20894        pub fn as_str_name(&self) -> &'static str {
20895            match self {
20896                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
20897                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
20898                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
20899                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
20900                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
20901                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
20902                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
20903                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
20904                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
20905                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
20906                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
20907                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
20908                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
20909                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
20910                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
20911            }
20912        }
20913    }
20914    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20915    #[repr(i32)]
20916    pub enum InputType {
20917        UnspecifiedOrOther = 0,
20918        TouchMoved = 1,
20919        GestureScrollBegin = 2,
20920        GestureScrollUpdate = 3,
20921        GestureScrollEnd = 4,
20922        GestureTap = 5,
20923        GestureTapCancel = 6,
20924    }
20925    impl InputType {
20926        /// String value of the enum field names used in the ProtoBuf definition.
20927        ///
20928        /// The values are not transformed in any way and thus are considered stable
20929        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20930        pub fn as_str_name(&self) -> &'static str {
20931            match self {
20932                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
20933                InputType::TouchMoved => "TOUCH_MOVED",
20934                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
20935                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
20936                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
20937                InputType::GestureTap => "GESTURE_TAP",
20938                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
20939            }
20940        }
20941    }
20942}
20943// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
20944
20945// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20946
20947/// Details about a legacy Chrome IPC message that is either sent by the event.
20948/// TODO(eseckler): Also use this message on the receiving side?
20949#[derive(Clone, PartialEq, ::prost::Message)]
20950pub struct ChromeLegacyIpc {
20951    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
20952    /// enum, e.g. FrameMsgStart,
20953    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
20954    pub message_class: ::core::option::Option<i32>,
20955    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
20956    /// IPC_MESSAGE_START macros.
20957    #[prost(uint32, optional, tag="2")]
20958    pub message_line: ::core::option::Option<u32>,
20959}
20960/// Nested message and enum types in `ChromeLegacyIpc`.
20961pub mod chrome_legacy_ipc {
20962    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20963    #[repr(i32)]
20964    pub enum MessageClass {
20965        ClassUnspecified = 0,
20966        ClassAutomation = 1,
20967        ClassFrame = 2,
20968        ClassPage = 3,
20969        ClassView = 4,
20970        ClassWidget = 5,
20971        ClassInput = 6,
20972        ClassTest = 7,
20973        ClassWorker = 8,
20974        ClassNacl = 9,
20975        ClassGpuChannel = 10,
20976        ClassMedia = 11,
20977        ClassPpapi = 12,
20978        ClassChrome = 13,
20979        ClassDrag = 14,
20980        ClassPrint = 15,
20981        ClassExtension = 16,
20982        ClassTextInputClient = 17,
20983        ClassBlinkTest = 18,
20984        ClassAccessibility = 19,
20985        ClassPrerender = 20,
20986        ClassChromoting = 21,
20987        ClassBrowserPlugin = 22,
20988        ClassAndroidWebView = 23,
20989        ClassNaclHost = 24,
20990        ClassEncryptedMedia = 25,
20991        ClassCast = 26,
20992        ClassGinJavaBridge = 27,
20993        ClassChromeUtilityPrinting = 28,
20994        ClassOzoneGpu = 29,
20995        ClassWebTest = 30,
20996        ClassNetworkHints = 31,
20997        ClassExtensionsGuestView = 32,
20998        ClassGuestView = 33,
20999        ClassMediaPlayerDelegate = 34,
21000        ClassExtensionWorker = 35,
21001        ClassSubresourceFilter = 36,
21002        ClassUnfreezableFrame = 37,
21003    }
21004    impl MessageClass {
21005        /// String value of the enum field names used in the ProtoBuf definition.
21006        ///
21007        /// The values are not transformed in any way and thus are considered stable
21008        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21009        pub fn as_str_name(&self) -> &'static str {
21010            match self {
21011                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
21012                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
21013                MessageClass::ClassFrame => "CLASS_FRAME",
21014                MessageClass::ClassPage => "CLASS_PAGE",
21015                MessageClass::ClassView => "CLASS_VIEW",
21016                MessageClass::ClassWidget => "CLASS_WIDGET",
21017                MessageClass::ClassInput => "CLASS_INPUT",
21018                MessageClass::ClassTest => "CLASS_TEST",
21019                MessageClass::ClassWorker => "CLASS_WORKER",
21020                MessageClass::ClassNacl => "CLASS_NACL",
21021                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
21022                MessageClass::ClassMedia => "CLASS_MEDIA",
21023                MessageClass::ClassPpapi => "CLASS_PPAPI",
21024                MessageClass::ClassChrome => "CLASS_CHROME",
21025                MessageClass::ClassDrag => "CLASS_DRAG",
21026                MessageClass::ClassPrint => "CLASS_PRINT",
21027                MessageClass::ClassExtension => "CLASS_EXTENSION",
21028                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
21029                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
21030                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
21031                MessageClass::ClassPrerender => "CLASS_PRERENDER",
21032                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
21033                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
21034                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
21035                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
21036                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
21037                MessageClass::ClassCast => "CLASS_CAST",
21038                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
21039                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
21040                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
21041                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
21042                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
21043                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
21044                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
21045                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
21046                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
21047                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
21048                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
21049            }
21050        }
21051    }
21052}
21053// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
21054
21055// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
21056
21057/// Details about Chrome message pump events
21058#[derive(Clone, PartialEq, ::prost::Message)]
21059pub struct ChromeMessagePump {
21060    /// True if there are sent messages in the queue.
21061    #[prost(bool, optional, tag="1")]
21062    pub sent_messages_in_queue: ::core::option::Option<bool>,
21063    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
21064    /// invoke.
21065    #[prost(uint64, optional, tag="2")]
21066    pub io_handler_location_iid: ::core::option::Option<u64>,
21067}
21068// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
21069
21070// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
21071
21072/// Contains information to identify mojo handling events. The trace events in
21073/// mojo are common for all mojo interfaces and this information is used to
21074/// identify who is the caller or callee.
21075#[derive(Clone, PartialEq, ::prost::Message)]
21076pub struct ChromeMojoEventInfo {
21077    /// Contains the interface name or the file name of the creator of a mojo
21078    /// handle watcher, recorded when an event if notified to the watcher. The code
21079    /// that runs within the track event belongs to the interface.
21080    #[prost(string, optional, tag="1")]
21081    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21082    /// The hash of the IPC message that is being handled.
21083    #[prost(uint32, optional, tag="2")]
21084    pub ipc_hash: ::core::option::Option<u32>,
21085    /// A static string representing the mojo interface name of the message that is
21086    /// being handled.
21087    #[prost(string, optional, tag="3")]
21088    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21089    /// Refers to an interned UnsymbolizedSourceLocation.
21090    /// The UnsymbolizedSourceLocation contains the interface method that's being
21091    /// handled, represented as a native symbol.
21092    /// The native symbol can be symbolized after the trace is recorded.
21093    /// Not using a symbolized source location for official Chromium builds to
21094    /// reduce binary size - emitting file/function names as strings into the
21095    /// trace requires storing them in the binary, which causes a significant
21096    /// binary size bloat for Chromium.
21097    #[prost(uint64, optional, tag="4")]
21098    pub mojo_interface_method_iid: ::core::option::Option<u64>,
21099    /// Indicate whether this is a message or reply.
21100    #[prost(bool, optional, tag="5")]
21101    pub is_reply: ::core::option::Option<bool>,
21102    /// The payload size of the message being sent through mojo messages.
21103    #[prost(uint64, optional, tag="6")]
21104    pub payload_size: ::core::option::Option<u64>,
21105    /// Represents the size of the message. Includes all headers and user payload.
21106    #[prost(uint64, optional, tag="7")]
21107    pub data_num_bytes: ::core::option::Option<u64>,
21108}
21109#[derive(Clone, PartialEq, ::prost::Message)]
21110pub struct ChromeRendererSchedulerState {
21111    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
21112    pub rail_mode: ::core::option::Option<i32>,
21113    #[prost(bool, optional, tag="2")]
21114    pub is_backgrounded: ::core::option::Option<bool>,
21115    #[prost(bool, optional, tag="3")]
21116    pub is_hidden: ::core::option::Option<bool>,
21117}
21118// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
21119
21120// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
21121
21122/// Details about a UI interaction initiated by the user, such as opening or
21123/// closing a tab or a context menu.
21124#[derive(Clone, PartialEq, ::prost::Message)]
21125pub struct ChromeUserEvent {
21126    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
21127    /// Chrome, these are usually static strings known at compile time, or
21128    /// concatenations of multiple such static strings).
21129    #[prost(string, optional, tag="1")]
21130    pub action: ::core::option::Option<::prost::alloc::string::String>,
21131    /// MD5 hash of the action string.
21132    #[prost(uint64, optional, tag="2")]
21133    pub action_hash: ::core::option::Option<u64>,
21134}
21135// End of protos/perfetto/trace/track_event/chrome_user_event.proto
21136
21137// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
21138
21139/// Details about HWNDMessageHandler trace events.
21140#[derive(Clone, PartialEq, ::prost::Message)]
21141pub struct ChromeWindowHandleEventInfo {
21142    #[prost(uint32, optional, tag="1")]
21143    pub dpi: ::core::option::Option<u32>,
21144    #[prost(uint32, optional, tag="2")]
21145    pub message_id: ::core::option::Option<u32>,
21146    #[prost(fixed64, optional, tag="3")]
21147    pub hwnd_ptr: ::core::option::Option<u64>,
21148}
21149// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
21150
21151// Begin of protos/perfetto/trace/track_event/screenshot.proto
21152
21153#[derive(Clone, PartialEq, ::prost::Message)]
21154pub struct Screenshot {
21155    /// The JPEG (Joint Photographic Experts Group) file format.
21156    #[prost(bytes="vec", optional, tag="1")]
21157    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21158    /// The PAM (Portable Arbitrary Map) file format.
21159    #[prost(bytes="vec", optional, tag="2")]
21160    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21161    /// The PPM (Portable Pixmap) file format.
21162    #[prost(bytes="vec", optional, tag="3")]
21163    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21164}
21165// End of protos/perfetto/trace/track_event/screenshot.proto
21166
21167// Begin of protos/perfetto/trace/track_event/task_execution.proto
21168
21169/// TrackEvent arguments describing the execution of a task.
21170#[derive(Clone, PartialEq, ::prost::Message)]
21171pub struct TaskExecution {
21172    /// Source location that the task was posted from.
21173    /// interned SourceLocation.
21174    #[prost(uint64, optional, tag="1")]
21175    pub posted_from_iid: ::core::option::Option<u64>,
21176}
21177// Begin of protos/perfetto/trace/track_event/track_event.proto
21178
21179// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
21180// protos are still subject to change. Don't depend on them staying as they are.
21181
21182/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
21183/// which describe activity on a track, such as a thread or asynchronous event
21184/// track. The track is specified using separate TrackDescriptor messages and
21185/// referred to via the track's UUID.
21186///
21187/// A simple TrackEvent packet specifies a timestamp, category, name and type:
21188/// ```protobuf
21189///    trace_packet {
21190///      timestamp: 1000
21191///      track_event {
21192///        categories: \["my_cat"\]
21193///        name: "my_event"
21194///        type: TYPE_INSTANT
21195///       }
21196///     }
21197/// ```
21198///
21199/// To associate an event with a custom track (e.g. a thread), the track is
21200/// defined in a separate packet and referred to from the TrackEvent by its UUID:
21201/// ```protobuf
21202///    trace_packet {
21203///      track_descriptor {
21204///        track_uuid: 1234
21205///        name: "my_track"
21206///
21207///        // Optionally, associate the track with a thread.
21208///        thread_descriptor {
21209///          pid: 10
21210///          tid: 10
21211///          ..
21212///        }
21213///      }
21214///    }
21215/// ```
21216///
21217/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
21218///
21219/// ```protobuf
21220///    trace_packet {
21221///      timestamp: 1200
21222///      track_event {
21223///        track_uuid: 1234
21224///        categories: \["my_cat"\]
21225///        name: "my_slice"
21226///        type: TYPE_SLICE_BEGIN
21227///      }
21228///    }
21229///    trace_packet {
21230///      timestamp: 1400
21231///      track_event {
21232///        track_uuid: 1234
21233///        type: TYPE_SLICE_END
21234///      }
21235///    }
21236/// ```
21237/// TrackEvents also support optimizations to reduce data repetition and encoded
21238/// data size, e.g. through data interning (names, categories, ...) and delta
21239/// encoding of timestamps/counters. For details, see the InternedData message.
21240/// Further, default values for attributes of events on the same sequence (e.g.
21241/// their default track association) can be emitted as part of a
21242/// TrackEventDefaults message.
21243///
21244/// Next reserved id: 13 (up to 15). Next id: 57.
21245#[derive(Clone, PartialEq, ::prost::Message)]
21246pub struct TrackEvent {
21247    /// Names of categories of the event. In the client library, categories are a
21248    /// way to turn groups of individual events on or off.
21249    /// interned EventCategoryName.
21250    #[prost(uint64, repeated, packed="false", tag="3")]
21251    pub category_iids: ::prost::alloc::vec::Vec<u64>,
21252    /// non-interned variant.
21253    #[prost(string, repeated, tag="22")]
21254    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21255    #[prost(enumeration="track_event::Type", optional, tag="9")]
21256    pub r#type: ::core::option::Option<i32>,
21257    /// Identifies the track of the event. The default value may be overridden
21258    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
21259    /// sequence (in most cases sequence = one thread). If no value is specified
21260    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
21261    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
21262    #[prost(uint64, optional, tag="11")]
21263    pub track_uuid: ::core::option::Option<u64>,
21264    /// To encode counter values more efficiently, we support attaching additional
21265    /// counter values to a TrackEvent of any type. All values will share the same
21266    /// timestamp specified in the TracePacket. The value at
21267    /// extra_counter_values\[N\] is for the counter track referenced by
21268    /// extra_counter_track_uuids\[N\].
21269    ///
21270    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
21271    /// should always be equal or more uuids than values. It is valid to set more
21272    /// uuids (e.g. via defaults) than values. If uuids are specified in
21273    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
21274    /// default uuid list.
21275    ///
21276    /// For example, this allows snapshotting the thread time clock at each
21277    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
21278    #[prost(uint64, repeated, packed="false", tag="31")]
21279    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21280    #[prost(int64, repeated, packed="false", tag="12")]
21281    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
21282    /// Counter snapshots using floating point instead of integer values.
21283    #[prost(uint64, repeated, packed="false", tag="45")]
21284    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21285    #[prost(double, repeated, packed="false", tag="46")]
21286    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
21287    /// IDs of flows originating, passing through, or ending at this event.
21288    /// Flow IDs are global within a trace.
21289    ///
21290    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
21291    /// an input event may be handled on one thread but cause another event on
21292    /// a different thread - a flow between the two events can associate them.
21293    ///
21294    /// The direction of the flows between events is inferred from the events'
21295    /// timestamps. The earliest event with the same flow ID becomes the source
21296    /// of the flow. Any events thereafter are intermediate steps of the flow,
21297    /// until the flow terminates at the last event with the flow ID.
21298    ///
21299    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
21300    /// that the same ID can later be reused for another flow.
21301    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
21302    #[deprecated]
21303    #[prost(uint64, repeated, packed="false", tag="36")]
21304    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21305    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
21306    /// consumption.
21307    #[prost(fixed64, repeated, packed="false", tag="47")]
21308    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
21309    /// List of flow ids which should terminate on this event, otherwise same as
21310    /// |flow_ids|.
21311    /// Any one flow ID should be either listed as part of |flow_ids| OR
21312    /// |terminating_flow_ids|, not both.
21313    /// DEPRECATED. Only kept for backwards compatibility.  Use
21314    /// |terminating_flow_ids|.
21315    #[deprecated]
21316    #[prost(uint64, repeated, packed="false", tag="42")]
21317    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21318    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
21319    /// "terminating_flow_ids" to reduce memory consumption.
21320    #[prost(fixed64, repeated, packed="false", tag="48")]
21321    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
21322    /// Debug annotations associated with this event. These are arbitrary key-value
21323    /// pairs that can be used to attach additional information to the event.
21324    /// See DebugAnnotation message for details on supported value types.
21325    ///
21326    /// For example, debug annotations can be used to attach a URL or resource
21327    /// identifier to a network request event. Arrays, dictionaries and full
21328    /// nested structures (e.g. arrays of dictionaries of dictionaries)
21329    /// are supported.
21330    #[prost(message, repeated, tag="4")]
21331    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
21332    // ---------------------------------------------------------------------------
21333    // TrackEvent arguments:
21334    // ---------------------------------------------------------------------------
21335    //
21336    // NOTE: The fields below this point are NOT part of the stable public API.
21337    // They are primarily intended for internal use by Chrome and Android. These
21338    // fields may change or be removed without notice. For custom/synthetic
21339    // traces, prefer using the fields above (name, categories, type, flows,
21340    // correlation_id, callstack, etc.) along with custom debug_annotations.
21341
21342    /// Typed event arguments:
21343    #[prost(message, optional, tag="5")]
21344    pub task_execution: ::core::option::Option<TaskExecution>,
21345    #[prost(message, optional, tag="21")]
21346    pub log_message: ::core::option::Option<LogMessage>,
21347    #[prost(message, optional, tag="24")]
21348    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
21349    #[prost(message, optional, tag="25")]
21350    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
21351    #[prost(message, optional, tag="26")]
21352    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
21353    #[prost(message, optional, tag="27")]
21354    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
21355    #[prost(message, optional, tag="28")]
21356    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
21357    #[prost(message, optional, tag="29")]
21358    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
21359    /// DEPRECATED. Only kept for backwards compatibility. Use the
21360    /// |ChromeTrackEvent.frame_reporter| extension in
21361    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21362    /// instead.
21363    #[deprecated]
21364    #[prost(message, optional, tag="32")]
21365    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
21366    #[prost(message, optional, tag="39")]
21367    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
21368    #[prost(message, optional, tag="40")]
21369    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
21370    #[prost(message, optional, tag="41")]
21371    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
21372    #[prost(message, optional, tag="43")]
21373    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
21374    #[prost(message, optional, tag="49")]
21375    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
21376    #[prost(message, optional, tag="50")]
21377    pub screenshot: ::core::option::Option<Screenshot>,
21378    #[prost(message, optional, tag="35")]
21379    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
21380    #[prost(message, optional, tag="38")]
21381    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
21382    #[prost(message, optional, tag="6")]
21383    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
21384    /// Optional name of the event for its display in trace viewer. May be left
21385    /// unspecified for events with typed arguments.
21386    ///
21387    /// Note that metrics should not rely on event names, as they are prone to
21388    /// changing. Instead, they should use typed arguments to identify the events
21389    /// they are interested in.
21390    #[prost(oneof="track_event::NameField", tags="10, 23")]
21391    pub name_field: ::core::option::Option<track_event::NameField>,
21392    /// A new value for a counter track. |track_uuid| should refer to a track with
21393    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21394    /// efficient encoding of counter values that are sampled at the beginning/end
21395    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21396    /// Counter values can optionally be encoded in as delta values (positive or
21397    /// negative) on each packet sequence (see CounterIncrementalBase).
21398    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
21399    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
21400    /// An opaque identifier to correlate this slice with other slices that are
21401    /// considered part of the same logical operation, even if they are not
21402    /// causally connected. Examples uses of a correlation id might be the number
21403    /// of frame going through various stages of rendering in a GPU, the id for an
21404    /// RPC request going through a distributed system, or the id of a network
21405    /// request going through various stages of processing by the kernel.
21406    ///
21407    /// NOTE: if the events *are* causually connected, you probably want to use
21408    /// flows instead of OR in addition to correlation ids.
21409    ///
21410    /// UIs can use this identifier to visually link these slices, for instance,
21411    /// by assigning them a consistent color or highlighting the entire correlated
21412    /// set when one slice is hovered.
21413    ///
21414    /// Only one field within this 'oneof' should be set to define the correlation.
21415    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
21416    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
21417    /// Callstack associated with this event. This captures the program stack at
21418    /// the time the event occurred, useful for understanding what code path led
21419    /// to the event.
21420    ///
21421    /// Two variants are supported:
21422    /// - callstack: Inline callstack data (simpler when trace size is not a
21423    ///    concern or callstacks are unique)
21424    /// - callstack_iid: Reference to an interned Callstack in InternedData
21425    ///    (efficient for repeated callstacks)
21426    ///
21427    /// Only one of these fields should be set.
21428    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
21429    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
21430    /// This field is used only if the source location represents the function that
21431    /// executes during this event.
21432    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
21433    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
21434    // ---------------------------------------------------------------------------
21435    // Deprecated / legacy event fields, which will be removed in the future:
21436    // ---------------------------------------------------------------------------
21437
21438    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21439    /// TracePacket instead.
21440    ///
21441    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21442    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
21443    pub timestamp: ::core::option::Option<track_event::Timestamp>,
21444    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21445    /// encode thread time instead.
21446    ///
21447    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21448    /// microseconds.
21449    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
21450    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
21451    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21452    /// encode thread instruction count instead.
21453    ///
21454    /// Value of the instruction counter for the current thread.
21455    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
21456    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
21457}
21458/// Nested message and enum types in `TrackEvent`.
21459pub mod track_event {
21460    /// Inline callstack for TrackEvents when interning is not needed.
21461    /// This is a simplified version of the profiling Callstack/Frame messages,
21462    /// designed for cases where trace size is not critical or callstacks are
21463    /// unique.
21464    ///
21465    /// Use this for simple callstacks with function names and source locations.
21466    /// For binary/library information (mappings, build IDs, relative PCs), use
21467    /// interned callstacks via callstack_iid instead.
21468    #[derive(Clone, PartialEq, ::prost::Message)]
21469    pub struct Callstack {
21470        /// Frames of this callstack, ordered from bottom (outermost) to top
21471        /// (innermost). For example, if main() calls foo() which calls bar(), the
21472        /// frames would be: [main, foo, bar]
21473        #[prost(message, repeated, tag="1")]
21474        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
21475    }
21476    /// Nested message and enum types in `Callstack`.
21477    pub mod callstack {
21478        /// Frame within an inline callstack.
21479        #[derive(Clone, PartialEq, ::prost::Message)]
21480        pub struct Frame {
21481            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
21482            #[prost(string, optional, tag="1")]
21483            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
21484            /// Optional: Source file path, e.g., "/src/foo.cc"
21485            #[prost(string, optional, tag="2")]
21486            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
21487            /// Optional: Line number in the source file
21488            #[prost(uint32, optional, tag="3")]
21489            pub line_number: ::core::option::Option<u32>,
21490        }
21491    }
21492    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
21493    /// event attributes are initially simply proxied for conversion to a JSON
21494    /// trace. We intend to gradually transition these attributes to similar native
21495    /// features in TrackEvent (e.g. async + flow events), or deprecate them
21496    /// without replacement where transition is unsuitable.
21497    ///
21498    /// Next reserved id: 16 (up to 16).
21499    /// Next id: 20.
21500    #[derive(Clone, PartialEq, ::prost::Message)]
21501    pub struct LegacyEvent {
21502        /// Deprecated, use TrackEvent::name(_iid) instead.
21503        /// interned EventName.
21504        #[prost(uint64, optional, tag="1")]
21505        pub name_iid: ::core::option::Option<u64>,
21506        #[prost(int32, optional, tag="2")]
21507        pub phase: ::core::option::Option<i32>,
21508        #[prost(int64, optional, tag="3")]
21509        pub duration_us: ::core::option::Option<i64>,
21510        #[prost(int64, optional, tag="4")]
21511        pub thread_duration_us: ::core::option::Option<i64>,
21512        /// Elapsed retired instruction count during the event.
21513        #[prost(int64, optional, tag="15")]
21514        pub thread_instruction_delta: ::core::option::Option<i64>,
21515        /// Additional optional scope for |id|.
21516        #[prost(string, optional, tag="7")]
21517        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
21518        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
21519        #[prost(bool, optional, tag="9")]
21520        pub use_async_tts: ::core::option::Option<bool>,
21521        /// Idenfifies a flow. Flow events with the same bind_id are connected.
21522        #[prost(uint64, optional, tag="8")]
21523        pub bind_id: ::core::option::Option<u64>,
21524        /// Use the enclosing slice as binding point for a flow end event instead of
21525        /// the next slice. Flow start/step events always bind to the enclosing
21526        /// slice.
21527        #[prost(bool, optional, tag="12")]
21528        pub bind_to_enclosing: ::core::option::Option<bool>,
21529        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
21530        pub flow_direction: ::core::option::Option<i32>,
21531        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
21532        pub instant_event_scope: ::core::option::Option<i32>,
21533        /// Override the pid/tid if the writer needs to emit events on behalf of
21534        /// another process/thread. This should be the exception. Normally, the
21535        /// pid+tid from ThreadDescriptor is used.
21536        #[prost(int32, optional, tag="18")]
21537        pub pid_override: ::core::option::Option<i32>,
21538        #[prost(int32, optional, tag="19")]
21539        pub tid_override: ::core::option::Option<i32>,
21540        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
21541        pub id: ::core::option::Option<legacy_event::Id>,
21542    }
21543    /// Nested message and enum types in `LegacyEvent`.
21544    pub mod legacy_event {
21545        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21546        #[repr(i32)]
21547        pub enum FlowDirection {
21548            FlowUnspecified = 0,
21549            FlowIn = 1,
21550            FlowOut = 2,
21551            FlowInout = 3,
21552        }
21553        impl FlowDirection {
21554            /// String value of the enum field names used in the ProtoBuf definition.
21555            ///
21556            /// The values are not transformed in any way and thus are considered stable
21557            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21558            pub fn as_str_name(&self) -> &'static str {
21559                match self {
21560                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
21561                    FlowDirection::FlowIn => "FLOW_IN",
21562                    FlowDirection::FlowOut => "FLOW_OUT",
21563                    FlowDirection::FlowInout => "FLOW_INOUT",
21564                }
21565            }
21566        }
21567        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21568        #[repr(i32)]
21569        pub enum InstantEventScope {
21570            ScopeUnspecified = 0,
21571            ScopeGlobal = 1,
21572            ScopeProcess = 2,
21573            ScopeThread = 3,
21574        }
21575        impl InstantEventScope {
21576            /// String value of the enum field names used in the ProtoBuf definition.
21577            ///
21578            /// The values are not transformed in any way and thus are considered stable
21579            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21580            pub fn as_str_name(&self) -> &'static str {
21581                match self {
21582                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
21583                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
21584                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
21585                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
21586                }
21587            }
21588        }
21589        #[derive(Clone, PartialEq, ::prost::Oneof)]
21590        pub enum Id {
21591            #[prost(uint64, tag="6")]
21592            UnscopedId(u64),
21593            #[prost(uint64, tag="10")]
21594            LocalId(u64),
21595            #[prost(uint64, tag="11")]
21596            GlobalId(u64),
21597        }
21598    }
21599    // TODO(eseckler): Support using binary symbols for category/event names.
21600
21601    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
21602    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21603    #[repr(i32)]
21604    pub enum Type {
21605        Unspecified = 0,
21606        /// Slice events are events that have a begin and end timestamp, i.e. a
21607        /// duration. They can be nested similar to a callstack: If, on the same
21608        /// track, event B begins after event A, but before A ends, B is a child
21609        /// event of A and will be drawn as a nested event underneath A in the UI.
21610        /// Note that child events should always end before their parents (e.g. B
21611        /// before A).
21612        ///
21613        /// Each slice event is formed by a pair of BEGIN + END events. The END event
21614        /// does not need to repeat any TrackEvent fields it has in common with its
21615        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
21616        /// END pair will be merged during trace import.
21617        ///
21618        /// Note that we deliberately chose not to support COMPLETE events (which
21619        /// would specify a duration directly) since clients would need to delay
21620        /// writing them until the slice is completed, which can result in reordered
21621        /// events in the trace and loss of unfinished events at the end of a trace.
21622        SliceBegin = 1,
21623        SliceEnd = 2,
21624        /// Instant events are nestable events without duration. They can be children
21625        /// of slice events on the same track.
21626        Instant = 3,
21627        /// Event that provides a value for a counter track. |track_uuid| should
21628        /// refer to a counter track and |counter_value| set to the new value. Note
21629        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
21630        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
21631        Counter = 4,
21632    }
21633    impl Type {
21634        /// String value of the enum field names used in the ProtoBuf definition.
21635        ///
21636        /// The values are not transformed in any way and thus are considered stable
21637        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21638        pub fn as_str_name(&self) -> &'static str {
21639            match self {
21640                Type::Unspecified => "TYPE_UNSPECIFIED",
21641                Type::SliceBegin => "TYPE_SLICE_BEGIN",
21642                Type::SliceEnd => "TYPE_SLICE_END",
21643                Type::Instant => "TYPE_INSTANT",
21644                Type::Counter => "TYPE_COUNTER",
21645            }
21646        }
21647    }
21648    /// Optional name of the event for its display in trace viewer. May be left
21649    /// unspecified for events with typed arguments.
21650    ///
21651    /// Note that metrics should not rely on event names, as they are prone to
21652    /// changing. Instead, they should use typed arguments to identify the events
21653    /// they are interested in.
21654    #[derive(Clone, PartialEq, ::prost::Oneof)]
21655    pub enum NameField {
21656        /// interned EventName.
21657        #[prost(uint64, tag="10")]
21658        NameIid(u64),
21659        /// non-interned variant.
21660        #[prost(string, tag="23")]
21661        Name(::prost::alloc::string::String),
21662    }
21663    /// A new value for a counter track. |track_uuid| should refer to a track with
21664    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21665    /// efficient encoding of counter values that are sampled at the beginning/end
21666    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21667    /// Counter values can optionally be encoded in as delta values (positive or
21668    /// negative) on each packet sequence (see CounterIncrementalBase).
21669    #[derive(Clone, PartialEq, ::prost::Oneof)]
21670    pub enum CounterValueField {
21671        #[prost(int64, tag="30")]
21672        CounterValue(i64),
21673        #[prost(double, tag="44")]
21674        DoubleCounterValue(f64),
21675    }
21676    /// An opaque identifier to correlate this slice with other slices that are
21677    /// considered part of the same logical operation, even if they are not
21678    /// causally connected. Examples uses of a correlation id might be the number
21679    /// of frame going through various stages of rendering in a GPU, the id for an
21680    /// RPC request going through a distributed system, or the id of a network
21681    /// request going through various stages of processing by the kernel.
21682    ///
21683    /// NOTE: if the events *are* causually connected, you probably want to use
21684    /// flows instead of OR in addition to correlation ids.
21685    ///
21686    /// UIs can use this identifier to visually link these slices, for instance,
21687    /// by assigning them a consistent color or highlighting the entire correlated
21688    /// set when one slice is hovered.
21689    ///
21690    /// Only one field within this 'oneof' should be set to define the correlation.
21691    #[derive(Clone, PartialEq, ::prost::Oneof)]
21692    pub enum CorrelationIdField {
21693        /// A 64-bit unsigned integer used as the correlation ID.
21694        ///
21695        /// Best for performance and compact traces if the identifier is naturally
21696        /// numerical or can be easily mapped to one by the trace producer.
21697        #[prost(uint64, tag="52")]
21698        CorrelationId(u64),
21699        /// A string value used as the correlation ID.
21700        ///
21701        /// Offers maximum flexibility for human-readable or complex identifiers
21702        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
21703        /// size. For frequently repeated string identifiers, consider
21704        /// 'correlation_id_string_iid'.
21705        #[prost(string, tag="53")]
21706        CorrelationIdStr(::prost::alloc::string::String),
21707        /// An interned string identifier (an IID) for correlation.
21708        ///
21709        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
21710        /// field within the packet sequence's InternedData. This approach combines
21711        /// the descriptiveness and uniqueness of strings with the efficiency of
21712        /// integer IDs for storage and comparison, especially for identifiers that
21713        /// repeat across many events.
21714        #[prost(uint64, tag="54")]
21715        CorrelationIdStrIid(u64),
21716    }
21717    /// Callstack associated with this event. This captures the program stack at
21718    /// the time the event occurred, useful for understanding what code path led
21719    /// to the event.
21720    ///
21721    /// Two variants are supported:
21722    /// - callstack: Inline callstack data (simpler when trace size is not a
21723    ///    concern or callstacks are unique)
21724    /// - callstack_iid: Reference to an interned Callstack in InternedData
21725    ///    (efficient for repeated callstacks)
21726    ///
21727    /// Only one of these fields should be set.
21728    #[derive(Clone, PartialEq, ::prost::Oneof)]
21729    pub enum CallstackField {
21730        /// Inline callstack data. Use this for simplicity when interning is not
21731        /// needed (e.g., for unique callstacks or when trace size is not critical).
21732        #[prost(message, tag="55")]
21733        Callstack(Callstack),
21734        /// Reference to interned Callstack (see InternedData.callstacks).
21735        /// This is the efficient option when callstacks are repeated.
21736        ///
21737        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
21738        #[prost(uint64, tag="56")]
21739        CallstackIid(u64),
21740    }
21741    /// This field is used only if the source location represents the function that
21742    /// executes during this event.
21743    #[derive(Clone, PartialEq, ::prost::Oneof)]
21744    pub enum SourceLocationField {
21745        /// Non-interned field.
21746        #[prost(message, tag="33")]
21747        SourceLocation(super::SourceLocation),
21748        /// Interned field.
21749        #[prost(uint64, tag="34")]
21750        SourceLocationIid(u64),
21751    }
21752    // ---------------------------------------------------------------------------
21753    // Deprecated / legacy event fields, which will be removed in the future:
21754    // ---------------------------------------------------------------------------
21755
21756    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21757    /// TracePacket instead.
21758    ///
21759    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21760    #[derive(Clone, PartialEq, ::prost::Oneof)]
21761    pub enum Timestamp {
21762        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21763        /// calculate the absolute timestamp value, sum up all delta values of the
21764        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21765        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21766        /// be positive.
21767        #[prost(int64, tag="1")]
21768        TimestampDeltaUs(i64),
21769        /// Absolute value (e.g. a manually specified timestamp in the macro).
21770        /// This is a one-off value that does not affect delta timestamp computation
21771        /// in subsequent TrackEvents.
21772        #[prost(int64, tag="16")]
21773        TimestampAbsoluteUs(i64),
21774    }
21775    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21776    /// encode thread time instead.
21777    ///
21778    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21779    /// microseconds.
21780    #[derive(Clone, PartialEq, ::prost::Oneof)]
21781    pub enum ThreadTime {
21782        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21783        /// calculate the absolute timestamp value, sum up all delta values of the
21784        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21785        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21786        /// be positive.
21787        #[prost(int64, tag="2")]
21788        ThreadTimeDeltaUs(i64),
21789        /// This is a one-off absolute value that does not affect delta timestamp
21790        /// computation in subsequent TrackEvents.
21791        #[prost(int64, tag="17")]
21792        ThreadTimeAbsoluteUs(i64),
21793    }
21794    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21795    /// encode thread instruction count instead.
21796    ///
21797    /// Value of the instruction counter for the current thread.
21798    #[derive(Clone, PartialEq, ::prost::Oneof)]
21799    pub enum ThreadInstructionCount {
21800        /// Same encoding as |thread_time| field above.
21801        #[prost(int64, tag="8")]
21802        ThreadInstructionCountDelta(i64),
21803        #[prost(int64, tag="20")]
21804        ThreadInstructionCountAbsolute(i64),
21805    }
21806}
21807/// Default values for fields of all TrackEvents on the same packet sequence.
21808/// Should be emitted as part of TracePacketDefaults whenever incremental state
21809/// is cleared. It's defined here because field IDs should match those of the
21810/// corresponding fields in TrackEvent.
21811#[derive(Clone, PartialEq, ::prost::Message)]
21812pub struct TrackEventDefaults {
21813    #[prost(uint64, optional, tag="11")]
21814    pub track_uuid: ::core::option::Option<u64>,
21815    #[prost(uint64, repeated, packed="false", tag="31")]
21816    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21817    #[prost(uint64, repeated, packed="false", tag="45")]
21818    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21819}
21820// --------------------
21821// Interned data types:
21822// --------------------
21823
21824#[derive(Clone, PartialEq, ::prost::Message)]
21825pub struct EventCategory {
21826    #[prost(uint64, optional, tag="1")]
21827    pub iid: ::core::option::Option<u64>,
21828    #[prost(string, optional, tag="2")]
21829    pub name: ::core::option::Option<::prost::alloc::string::String>,
21830}
21831#[derive(Clone, PartialEq, ::prost::Message)]
21832pub struct EventName {
21833    #[prost(uint64, optional, tag="1")]
21834    pub iid: ::core::option::Option<u64>,
21835    #[prost(string, optional, tag="2")]
21836    pub name: ::core::option::Option<::prost::alloc::string::String>,
21837}
21838// End of protos/perfetto/trace/track_event/track_event.proto
21839
21840// Begin of protos/perfetto/trace/interned_data/interned_data.proto
21841
21842// ------------------------------ DATA INTERNING: ------------------------------
21843// Interning indexes are built up gradually by adding the entries contained in
21844// each TracePacket of the same packet sequence (packets emitted by the same
21845// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
21846// can only refer to interned data from other packets in the same sequence.
21847//
21848// The writer will emit new entries when it encounters new internable values
21849// that aren't yet in the index. Data in current and subsequent TracePackets can
21850// then refer to the entry by its position (interning ID, abbreviated "iid") in
21851// its index. An interning ID with value 0 is considered invalid (not set).
21852//
21853// Because of the incremental build-up, the interning index will miss data when
21854// TracePackets are lost, e.g. because a chunk was overridden in the central
21855// ring buffer. To avoid invalidation of the whole trace in such a case, the
21856// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
21857// When packet loss occurs, the reader will only lose interning data up to the
21858// next reset.
21859// -----------------------------------------------------------------------------
21860
21861/// Message that contains new entries for the interning indices of a packet
21862/// sequence.
21863///
21864/// The writer will usually emit new entries in the same TracePacket that first
21865/// refers to them (since the last reset of interning state). They may also be
21866/// emitted proactively in advance of referring to them in later packets.
21867///
21868/// Next reserved id: 8 (up to 15).
21869/// Next id: 48.
21870///
21871/// TODO(eseckler): Replace iid fields inside interned messages with
21872/// map<iid, message> type fields in InternedData.
21873#[derive(Clone, PartialEq, ::prost::Message)]
21874pub struct InternedData {
21875    /// Each field's message type needs to specify an |iid| field, which is the ID
21876    /// of the entry in the field's interning index. Each field constructs its own
21877    /// index, thus interning IDs are scoped to the tracing session and field
21878    /// (usually as a counter for efficient var-int encoding), and optionally to
21879    /// the incremental state generation of the packet sequence.
21880    #[prost(message, repeated, tag="1")]
21881    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
21882    #[prost(message, repeated, tag="2")]
21883    pub event_names: ::prost::alloc::vec::Vec<EventName>,
21884    #[prost(message, repeated, tag="3")]
21885    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
21886    #[prost(message, repeated, tag="27")]
21887    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
21888    #[prost(message, repeated, tag="4")]
21889    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
21890    #[prost(message, repeated, tag="28")]
21891    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
21892    #[prost(message, repeated, tag="20")]
21893    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
21894    #[prost(message, repeated, tag="25")]
21895    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
21896    // Note: field IDs up to 15 should be used for frequent data only.
21897
21898    /// Build IDs of exectuable files.
21899    #[prost(message, repeated, tag="16")]
21900    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
21901    /// Paths to executable files.
21902    #[prost(message, repeated, tag="17")]
21903    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
21904    /// Paths to source files.
21905    #[prost(message, repeated, tag="18")]
21906    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
21907    /// Names of functions used in frames below.
21908    #[prost(message, repeated, tag="5")]
21909    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
21910    /// Executable files mapped into processes.
21911    #[prost(message, repeated, tag="19")]
21912    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21913    /// Frames of callstacks of a program.
21914    #[prost(message, repeated, tag="6")]
21915    pub frames: ::prost::alloc::vec::Vec<Frame>,
21916    /// A callstack of a program.
21917    #[prost(message, repeated, tag="7")]
21918    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21919    /// Additional Vulkan information sent in a VulkanMemoryEvent message
21920    #[prost(message, repeated, tag="22")]
21921    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
21922    /// Graphics context of a render stage event.  This represent the GL
21923    /// context for an OpenGl app or the VkDevice for a Vulkan app.
21924    #[prost(message, repeated, tag="23")]
21925    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
21926    /// Description of a GPU hardware queue or render stage.
21927    #[prost(message, repeated, tag="24")]
21928    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
21929    /// This is set when FtraceConfig.symbolize_ksyms = true.
21930    /// The id of each symbol the number that will be reported in ftrace events
21931    /// like sched_block_reason.caller and is obtained from a monotonic counter.
21932    /// The same symbol can have different indexes in different bundles.
21933    /// This is is NOT the real address. This is to avoid disclosing KASLR through
21934    /// traces.
21935    #[prost(message, repeated, tag="26")]
21936    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
21937    /// Interned string values in the DebugAnnotation proto.
21938    #[prost(message, repeated, tag="29")]
21939    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
21940    /// Interned packet context for android.network_packets.
21941    #[prost(message, repeated, tag="30")]
21942    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
21943    /// Interned name of a js function. We only intern js functions as there is a
21944    /// lot of duplication for them, but less so for other strings in the V8 data
21945    /// source.
21946    #[prost(message, repeated, tag="31")]
21947    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
21948    /// Js functions can be emitted multiple times for various compilation tiers,
21949    /// so it makes sense to deduplicate all this.
21950    #[prost(message, repeated, tag="32")]
21951    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
21952    /// Interned JS script (there is one associated with each JS function)
21953    #[prost(message, repeated, tag="33")]
21954    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
21955    /// Interned Wasm script (there is one associated with each Wasm function)
21956    #[prost(message, repeated, tag="34")]
21957    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
21958    /// Every V8 event is associated with an isolate, intern the isolate to remove
21959    /// duplication.
21960    #[prost(message, repeated, tag="35")]
21961    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
21962    /// Interned protolog strings args.
21963    #[prost(message, repeated, tag="36")]
21964    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
21965    /// Interned protolog stacktraces.
21966    #[prost(message, repeated, tag="37")]
21967    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
21968    /// viewcapture
21969    #[prost(message, repeated, tag="38")]
21970    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
21971    #[prost(message, repeated, tag="39")]
21972    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
21973    #[prost(message, repeated, tag="40")]
21974    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
21975    #[prost(message, repeated, tag="41")]
21976    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
21977    #[prost(message, repeated, tag="45")]
21978    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
21979    #[prost(message, repeated, tag="46")]
21980    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
21981    /// Interned context for android.app_wakelocks.
21982    #[prost(message, repeated, tag="42")]
21983    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
21984    /// Interned correlation ids in track_event.
21985    #[prost(message, repeated, tag="43")]
21986    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
21987    /// Interned job names for Android Job Names. These are separate from
21988    /// other strings because they are under app control.
21989    #[prost(message, repeated, tag="44")]
21990    pub android_job_name: ::prost::alloc::vec::Vec<AndroidJobName>,
21991    /// Description of GPU counters available in a data source.
21992    #[prost(message, repeated, tag="47")]
21993    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
21994}
21995#[derive(Clone, PartialEq, ::prost::Message)]
21996pub struct AndroidJobName {
21997    #[prost(uint64, optional, tag="1")]
21998    pub iid: ::core::option::Option<u64>,
21999    #[prost(string, optional, tag="2")]
22000    pub name: ::core::option::Option<::prost::alloc::string::String>,
22001}
22002// End of protos/perfetto/trace/interned_data/interned_data.proto
22003
22004// Begin of protos/perfetto/trace/memory_graph.proto
22005
22006// Message definitions for app-reported memory breakdowns. At the moment, this
22007// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
22008// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
22009// This is unrelated to the native or java heap profilers (those protos live
22010// in //protos/perfetto/trace/profiling/).
22011
22012#[derive(Clone, PartialEq, ::prost::Message)]
22013pub struct MemoryTrackerSnapshot {
22014    /// Unique ID that represents the global memory dump.
22015    #[prost(uint64, optional, tag="1")]
22016    pub global_dump_id: ::core::option::Option<u64>,
22017    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
22018    pub level_of_detail: ::core::option::Option<i32>,
22019    #[prost(message, repeated, tag="3")]
22020    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
22021}
22022/// Nested message and enum types in `MemoryTrackerSnapshot`.
22023pub mod memory_tracker_snapshot {
22024    /// Memory snapshot of a process. The snapshot contains memory data that is
22025    /// from 2 different sources, namely system stats and instrumentation stats.
22026    /// The system memory usage stats come from the OS based on standard API
22027    /// available in the platform to query memory usage. The instrumentation stats
22028    /// are added by instrumenting specific piece of code which tracks memory
22029    /// allocations and deallocations made by a small sub-system within the
22030    /// application.
22031    /// The system stats of the global memory snapshot are recorded as part of
22032    /// ProcessStats and SmapsPacket fields in trace packet with the same
22033    /// timestamp.
22034    #[derive(Clone, PartialEq, ::prost::Message)]
22035    pub struct ProcessSnapshot {
22036        /// Process ID of the process
22037        #[prost(int32, optional, tag="1")]
22038        pub pid: ::core::option::Option<i32>,
22039        #[prost(message, repeated, tag="2")]
22040        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
22041        #[prost(message, repeated, tag="3")]
22042        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
22043    }
22044    /// Nested message and enum types in `ProcessSnapshot`.
22045    pub mod process_snapshot {
22046        // Memory dumps are represented as a graph of memory nodes which contain
22047        // statistics. To avoid double counting the same memory across different
22048        // nodes, edges are used to mark nodes that account for the same memory. See
22049        // this doc for examples of the usage:
22050        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
22051
22052        /// A single node in the memory graph.
22053        #[derive(Clone, PartialEq, ::prost::Message)]
22054        pub struct MemoryNode {
22055            /// Unique ID of the node across all processes involved in the global
22056            /// memory dump. The ID is only unique within this particular global dump
22057            /// identified by GlobalMemoryDumpPacket.global_dump_id.
22058            #[prost(uint64, optional, tag="1")]
22059            pub id: ::core::option::Option<u64>,
22060            /// Absolute name is a unique name for the memory node within the process
22061            /// with ProcessMemoryDump.pid. The name can contain multiple parts
22062            /// separated by '/', which traces the edges of the node from the root
22063            /// node.
22064            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
22065            /// node "buffer1" in a graph structure of:
22066            ///    root -> partition_allocator -> array_buffers -> buffer1.
22067            #[prost(string, optional, tag="2")]
22068            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
22069            /// A weak node means that the instrumentation that added the current node
22070            /// is unsure about the existence of the actual memory. Unless a "strong"
22071            /// (non-weak is default) node that has an edge to the current node exists
22072            /// in the current global dump, the current node will be discarded.
22073            #[prost(bool, optional, tag="3")]
22074            pub weak: ::core::option::Option<bool>,
22075            /// Size of the node in bytes, used to compute the effective size of the
22076            /// nodes without double counting.
22077            #[prost(uint64, optional, tag="4")]
22078            pub size_bytes: ::core::option::Option<u64>,
22079            #[prost(message, repeated, tag="5")]
22080            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
22081        }
22082        /// Nested message and enum types in `MemoryNode`.
22083        pub mod memory_node {
22084            /// Entries in the memory node that contain statistics and additional
22085            /// debuggable information about the memory. The size of the node is
22086            /// tracked separately in the |size_bytes| field.
22087            #[derive(Clone, PartialEq, ::prost::Message)]
22088            pub struct MemoryNodeEntry {
22089                #[prost(string, optional, tag="1")]
22090                pub name: ::core::option::Option<::prost::alloc::string::String>,
22091                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
22092                pub units: ::core::option::Option<i32>,
22093                /// Contains either one of uint64 or string value.
22094                #[prost(uint64, optional, tag="3")]
22095                pub value_uint64: ::core::option::Option<u64>,
22096                #[prost(string, optional, tag="4")]
22097                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
22098            }
22099            /// Nested message and enum types in `MemoryNodeEntry`.
22100            pub mod memory_node_entry {
22101                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22102                #[repr(i32)]
22103                pub enum Units {
22104                    Unspecified = 0,
22105                    Bytes = 1,
22106                    Count = 2,
22107                }
22108                impl Units {
22109                    /// String value of the enum field names used in the ProtoBuf definition.
22110                    ///
22111                    /// The values are not transformed in any way and thus are considered stable
22112                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22113                    pub fn as_str_name(&self) -> &'static str {
22114                        match self {
22115                            Units::Unspecified => "UNSPECIFIED",
22116                            Units::Bytes => "BYTES",
22117                            Units::Count => "COUNT",
22118                        }
22119                    }
22120                }
22121            }
22122        }
22123        /// A directed edge that connects any 2 nodes in the graph above. These are
22124        /// in addition to the inherent edges added due to the tree structure of the
22125        /// node's absolute names.
22126        /// Node with id |source_id| owns the node with id |target_id|, and has the
22127        /// effect of attributing the memory usage of target to source. |importance|
22128        /// is optional and relevant only for the cases of co-ownership, where it
22129        /// acts as a z-index: the owner with the highest importance will be
22130        /// attributed target's memory.
22131        #[derive(Clone, PartialEq, ::prost::Message)]
22132        pub struct MemoryEdge {
22133            #[prost(uint64, optional, tag="1")]
22134            pub source_id: ::core::option::Option<u64>,
22135            #[prost(uint64, optional, tag="2")]
22136            pub target_id: ::core::option::Option<u64>,
22137            #[prost(uint32, optional, tag="3")]
22138            pub importance: ::core::option::Option<u32>,
22139            #[prost(bool, optional, tag="4")]
22140            pub overridable: ::core::option::Option<bool>,
22141        }
22142    }
22143    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22144    #[repr(i32)]
22145    pub enum LevelOfDetail {
22146        DetailFull = 0,
22147        DetailLight = 1,
22148        DetailBackground = 2,
22149    }
22150    impl LevelOfDetail {
22151        /// String value of the enum field names used in the ProtoBuf definition.
22152        ///
22153        /// The values are not transformed in any way and thus are considered stable
22154        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22155        pub fn as_str_name(&self) -> &'static str {
22156            match self {
22157                LevelOfDetail::DetailFull => "DETAIL_FULL",
22158                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
22159                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
22160            }
22161        }
22162    }
22163}
22164// End of protos/perfetto/trace/memory_graph.proto
22165
22166// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
22167
22168/// Used to trace the execution of perfetto itself.
22169#[derive(Clone, PartialEq, ::prost::Message)]
22170pub struct PerfettoMetatrace {
22171    /// Only when using |event_id|.
22172    #[prost(uint64, optional, tag="3")]
22173    pub event_duration_ns: ::core::option::Option<u64>,
22174    /// Only when using |counter_id|.
22175    #[prost(int32, optional, tag="4")]
22176    pub counter_value: ::core::option::Option<i32>,
22177    /// ID of the thread that emitted the event.
22178    #[prost(uint32, optional, tag="5")]
22179    pub thread_id: ::core::option::Option<u32>,
22180    /// If true the meta-tracing ring buffer had overruns and hence some data is
22181    /// missing from this point.
22182    #[prost(bool, optional, tag="6")]
22183    pub has_overruns: ::core::option::Option<bool>,
22184    /// Args for the event.
22185    #[prost(message, repeated, tag="7")]
22186    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
22187    #[prost(message, repeated, tag="10")]
22188    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
22189    /// See base/metatrace_events.h for definitions.
22190    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
22191    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
22192}
22193/// Nested message and enum types in `PerfettoMetatrace`.
22194pub mod perfetto_metatrace {
22195    #[derive(Clone, PartialEq, ::prost::Message)]
22196    pub struct Arg {
22197        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
22198        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
22199        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
22200        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
22201    }
22202    /// Nested message and enum types in `Arg`.
22203    pub mod arg {
22204        #[derive(Clone, PartialEq, ::prost::Oneof)]
22205        pub enum KeyOrInternedKey {
22206            #[prost(string, tag="1")]
22207            Key(::prost::alloc::string::String),
22208            #[prost(uint64, tag="3")]
22209            KeyIid(u64),
22210        }
22211        #[derive(Clone, PartialEq, ::prost::Oneof)]
22212        pub enum ValueOrInternedValue {
22213            #[prost(string, tag="2")]
22214            Value(::prost::alloc::string::String),
22215            #[prost(uint64, tag="4")]
22216            ValueIid(u64),
22217        }
22218    }
22219    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
22220    /// |value_iid| above.
22221    #[derive(Clone, PartialEq, ::prost::Message)]
22222    pub struct InternedString {
22223        #[prost(uint64, optional, tag="1")]
22224        pub iid: ::core::option::Option<u64>,
22225        #[prost(string, optional, tag="2")]
22226        pub value: ::core::option::Option<::prost::alloc::string::String>,
22227    }
22228    /// See base/metatrace_events.h for definitions.
22229    #[derive(Clone, PartialEq, ::prost::Oneof)]
22230    pub enum RecordType {
22231        #[prost(uint32, tag="1")]
22232        EventId(u32),
22233        #[prost(uint32, tag="2")]
22234        CounterId(u32),
22235        /// For trace processor metatracing.
22236        #[prost(string, tag="8")]
22237        EventName(::prost::alloc::string::String),
22238        #[prost(uint64, tag="11")]
22239        EventNameIid(u64),
22240        #[prost(string, tag="9")]
22241        CounterName(::prost::alloc::string::String),
22242    }
22243}
22244// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
22245
22246// Begin of protos/perfetto/trace/perfetto/trace_provenance.proto
22247
22248#[derive(Clone, PartialEq, ::prost::Message)]
22249pub struct TraceProvenance {
22250    #[prost(message, repeated, tag="2")]
22251    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
22252}
22253/// Nested message and enum types in `TraceProvenance`.
22254pub mod trace_provenance {
22255    #[derive(Clone, PartialEq, ::prost::Message)]
22256    pub struct Sequence {
22257        /// The trusted_packet_sequence_id reported in each TracePacket.
22258        #[prost(uint32, optional, tag="1")]
22259        pub id: ::core::option::Option<u32>,
22260        /// ID of the producer, as per Producer.id.
22261        #[prost(int32, optional, tag="2")]
22262        pub producer_id: ::core::option::Option<i32>,
22263    }
22264    /// Describes a trace buffer and all the sequences writing to it.
22265    #[derive(Clone, PartialEq, ::prost::Message)]
22266    pub struct Buffer {
22267        #[prost(message, repeated, tag="1")]
22268        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
22269    }
22270}
22271// End of protos/perfetto/trace/perfetto/trace_provenance.proto
22272
22273// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
22274
22275/// Events emitted by the tracing service.
22276/// Next id: 12.
22277#[derive(Clone, PartialEq, ::prost::Message)]
22278pub struct TracingServiceEvent {
22279    /// When each of the following booleans are set to true, they report the
22280    /// point in time (through TracePacket's timestamp) where the condition
22281    /// they describe happened.
22282    /// The order of the booleans below matches the timestamp ordering
22283    /// they would generally be expected to have.
22284    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
22285    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
22286}
22287/// Nested message and enum types in `TracingServiceEvent`.
22288pub mod tracing_service_event {
22289    #[derive(Clone, PartialEq, ::prost::Message)]
22290    pub struct DataSources {
22291        #[prost(message, repeated, tag="1")]
22292        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
22293    }
22294    /// Nested message and enum types in `DataSources`.
22295    pub mod data_sources {
22296        #[derive(Clone, PartialEq, ::prost::Message)]
22297        pub struct DataSource {
22298            #[prost(string, optional, tag="1")]
22299            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
22300            #[prost(string, optional, tag="2")]
22301            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
22302        }
22303    }
22304    /// When each of the following booleans are set to true, they report the
22305    /// point in time (through TracePacket's timestamp) where the condition
22306    /// they describe happened.
22307    /// The order of the booleans below matches the timestamp ordering
22308    /// they would generally be expected to have.
22309    #[derive(Clone, PartialEq, ::prost::Oneof)]
22310    pub enum EventType {
22311        /// Emitted when we start tracing and specifically, this will be before any
22312        /// producer is notified about the existence of this trace. This is always
22313        /// emitted before the all_data_sources_started event. This event is also
22314        /// guaranteed to be seen (byte-offset wise) before any data packets from
22315        /// producers.
22316        #[prost(bool, tag="2")]
22317        TracingStarted(bool),
22318        /// Emitted after all data sources saw the start event and ACKed it.
22319        /// This identifies the point in time when it's safe to assume that all data
22320        /// sources have been recording events.
22321        #[prost(bool, tag="1")]
22322        AllDataSourcesStarted(bool),
22323        /// Emitted when a flush is started.
22324        #[prost(bool, tag="9")]
22325        FlushStarted(bool),
22326        /// Emitted when all data sources have been flushed successfully or with an
22327        /// error (including timeouts). This can generally happen many times over the
22328        /// course of the trace.
22329        #[prost(bool, tag="3")]
22330        AllDataSourcesFlushed(bool),
22331        /// Emitted when reading back the central tracing buffers has been completed.
22332        /// If |write_into_file| is specified, this can happen many times over the
22333        /// course of the trace.
22334        #[prost(bool, tag="4")]
22335        ReadTracingBuffersCompleted(bool),
22336        /// Emitted after tracing has been disabled and specifically, this will be
22337        /// after all packets from producers have been included in the central
22338        /// tracing buffer.
22339        #[prost(bool, tag="5")]
22340        TracingDisabled(bool),
22341        /// Emitted if perfetto --save-for-bugreport was invoked while the current
22342        /// tracing session was running and it had the highest bugreport_score. In
22343        /// this case the original consumer will see a nearly empty trace, because
22344        /// the contents are routed onto the bugreport file. This event flags the
22345        /// situation explicitly. Traces that contain this marker should be discarded
22346        /// by test infrastructures / pipelines.
22347        /// Deprecated since Android U, where --save-for-bugreport uses
22348        /// non-destructive cloning.
22349        #[prost(bool, tag="6")]
22350        SeizedForBugreport(bool),
22351        /// Emitted when not all data sources in all producers reply to a start
22352        /// request after some time.
22353        #[prost(message, tag="7")]
22354        SlowStartingDataSources(DataSources),
22355        /// Emitted when the last flush request has failed. Lists data sources that
22356        /// did not reply on time.
22357        #[prost(message, tag="8")]
22358        LastFlushSlowDataSources(DataSources),
22359        /// If this was a cloned tracing session, emitted when the tracing serice
22360        /// started the clone operation.
22361        #[prost(bool, tag="10")]
22362        CloneStarted(bool),
22363        /// If this was a cloned tracing session, emitted when the tracing service
22364        /// finished the clone operation (for a specific buffer).
22365        #[prost(uint32, tag="11")]
22366        BufferCloned(u32),
22367    }
22368}
22369// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
22370
22371// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
22372
22373/// Energy consumer based on aidl class:
22374/// android.hardware.power.stats.EnergyConsumer.
22375#[derive(Clone, PartialEq, ::prost::Message)]
22376pub struct AndroidEnergyConsumer {
22377    /// Unique ID of this energy consumer.  Matches the ID in a
22378    /// AndroidEnergyEstimationBreakdown.
22379    #[prost(int32, optional, tag="1")]
22380    pub energy_consumer_id: ::core::option::Option<i32>,
22381    /// For a group of energy consumers of the same logical type, sorting by
22382    /// ordinal gives their physical order. Ordinals must be consecutive integers
22383    /// starting from 0.
22384    #[prost(int32, optional, tag="2")]
22385    pub ordinal: ::core::option::Option<i32>,
22386    /// Type of this energy consumer.
22387    #[prost(string, optional, tag="3")]
22388    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22389    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
22390    /// framework.
22391    #[prost(string, optional, tag="4")]
22392    pub name: ::core::option::Option<::prost::alloc::string::String>,
22393}
22394#[derive(Clone, PartialEq, ::prost::Message)]
22395pub struct AndroidEnergyConsumerDescriptor {
22396    #[prost(message, repeated, tag="1")]
22397    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
22398}
22399// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
22400
22401// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22402
22403/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
22404/// This proto represents the aidl class:
22405/// android.hardware.power.stats.EnergyConsumerResult.
22406#[derive(Clone, PartialEq, ::prost::Message)]
22407pub struct AndroidEnergyEstimationBreakdown {
22408    /// The first trace packet of each session should include a energy consumer
22409    /// descriptor.
22410    #[prost(message, optional, tag="1")]
22411    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
22412    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
22413    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
22414    /// should be sent at the beginning of a trace.
22415    #[prost(int32, optional, tag="2")]
22416    pub energy_consumer_id: ::core::option::Option<i32>,
22417    /// Total accumulated energy since boot in microwatt-seconds (uWs)
22418    #[prost(int64, optional, tag="3")]
22419    pub energy_uws: ::core::option::Option<i64>,
22420    /// Optional attributed energy per Android ID / Linux UID for this
22421    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
22422    /// to total accumulated energy.
22423    #[prost(message, repeated, tag="4")]
22424    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
22425}
22426/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
22427pub mod android_energy_estimation_breakdown {
22428    #[derive(Clone, PartialEq, ::prost::Message)]
22429    pub struct EnergyUidBreakdown {
22430        /// Android ID/Linux UID, the accumulated energy is attributed to.
22431        #[prost(int32, optional, tag="1")]
22432        pub uid: ::core::option::Option<i32>,
22433        /// Accumulated energy since boot in microwatt-seconds (uWs).
22434        #[prost(int64, optional, tag="2")]
22435        pub energy_uws: ::core::option::Option<i64>,
22436    }
22437}
22438// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22439
22440// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
22441
22442#[derive(Clone, PartialEq, ::prost::Message)]
22443pub struct EntityStateResidency {
22444    /// This is only emitted at the beginning of the trace.
22445    #[prost(message, repeated, tag="1")]
22446    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
22447    #[prost(message, repeated, tag="2")]
22448    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
22449}
22450/// Nested message and enum types in `EntityStateResidency`.
22451pub mod entity_state_residency {
22452    #[derive(Clone, PartialEq, ::prost::Message)]
22453    pub struct PowerEntityState {
22454        /// Index corresponding to the entity
22455        #[prost(int32, optional, tag="1")]
22456        pub entity_index: ::core::option::Option<i32>,
22457        /// Index corresponding to the state
22458        #[prost(int32, optional, tag="2")]
22459        pub state_index: ::core::option::Option<i32>,
22460        /// Name of the entity. This is device-specific, determined by the PowerStats
22461        /// HAL, and cannot be configured by the user. An example would be
22462        /// "Bluetooth".
22463        #[prost(string, optional, tag="3")]
22464        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
22465        /// Name of the state. This is device-specific, determined by the PowerStats
22466        /// HAL, and cannot be configured by the user. An example would be
22467        /// "Active".
22468        #[prost(string, optional, tag="4")]
22469        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
22470    }
22471    #[derive(Clone, PartialEq, ::prost::Message)]
22472    pub struct StateResidency {
22473        /// Index corresponding to PowerEntityState.entity_index
22474        #[prost(int32, optional, tag="1")]
22475        pub entity_index: ::core::option::Option<i32>,
22476        /// Index corresponding to PowerEntityState.state_index
22477        #[prost(int32, optional, tag="2")]
22478        pub state_index: ::core::option::Option<i32>,
22479        /// Time since boot that this entity has been in this state
22480        #[prost(uint64, optional, tag="3")]
22481        pub total_time_in_state_ms: ::core::option::Option<u64>,
22482        /// Total number of times since boot that the entity has entered this state
22483        #[prost(uint64, optional, tag="4")]
22484        pub total_state_entry_count: ::core::option::Option<u64>,
22485        /// Timestamp of the last time the entity entered this state
22486        #[prost(uint64, optional, tag="5")]
22487        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
22488    }
22489}
22490// End of protos/perfetto/trace/power/android_entity_state_residency.proto
22491
22492// Begin of protos/perfetto/trace/power/battery_counters.proto
22493
22494#[derive(Clone, PartialEq, ::prost::Message)]
22495pub struct BatteryCounters {
22496    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
22497    #[prost(int64, optional, tag="1")]
22498    pub charge_counter_uah: ::core::option::Option<i64>,
22499    /// Remaining battery capacity percentage of total capacity
22500    #[prost(float, optional, tag="2")]
22501    pub capacity_percent: ::core::option::Option<f32>,
22502    /// Instantaneous battery current in microamperes(µA).
22503    /// Negative values indicate current being drained from the battery and
22504    /// positive values indicate current feeding the battery from a charge source
22505    /// (USB).
22506    ///
22507    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
22508    #[prost(int64, optional, tag="3")]
22509    pub current_ua: ::core::option::Option<i64>,
22510    /// Instantaneous battery current in microamperes(µA).
22511    #[prost(int64, optional, tag="4")]
22512    pub current_avg_ua: ::core::option::Option<i64>,
22513    /// Battery name, emitted only on multiple batteries.
22514    #[prost(string, optional, tag="5")]
22515    pub name: ::core::option::Option<::prost::alloc::string::String>,
22516    /// Battery capacity in microwatt-hours(µWh).
22517    #[prost(int64, optional, tag="6")]
22518    pub energy_counter_uwh: ::core::option::Option<i64>,
22519    /// Battery voltage in microvolts(µV).
22520    #[prost(int64, optional, tag="7")]
22521    pub voltage_uv: ::core::option::Option<i64>,
22522}
22523// End of protos/perfetto/trace/power/battery_counters.proto
22524
22525// Begin of protos/perfetto/trace/power/power_rails.proto
22526
22527#[derive(Clone, PartialEq, ::prost::Message)]
22528pub struct PowerRails {
22529    /// This is only emitted at the beginning of the trace.
22530    #[prost(message, repeated, tag="1")]
22531    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
22532    #[prost(message, repeated, tag="2")]
22533    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
22534    /// A unique session id that can be used to match energy data to sets of
22535    /// descriptors. The indices used by rail descriptors and energy data packets
22536    /// are meant to be unique to a given session uuid. When multiple data sources
22537    /// are running in parallel, each data source should use a unique id.
22538    #[prost(uint64, optional, tag="3")]
22539    pub session_uuid: ::core::option::Option<u64>,
22540}
22541/// Nested message and enum types in `PowerRails`.
22542pub mod power_rails {
22543    #[derive(Clone, PartialEq, ::prost::Message)]
22544    pub struct RailDescriptor {
22545        /// Index corresponding to the rail
22546        #[prost(uint32, optional, tag="1")]
22547        pub index: ::core::option::Option<u32>,
22548        /// Name of the rail
22549        #[prost(string, optional, tag="2")]
22550        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
22551        /// Name of the subsystem to which this rail belongs
22552        #[prost(string, optional, tag="3")]
22553        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
22554        /// Hardware sampling rate (Hz).
22555        #[prost(uint32, optional, tag="4")]
22556        pub sampling_rate: ::core::option::Option<u32>,
22557    }
22558    #[derive(Clone, PartialEq, ::prost::Message)]
22559    pub struct EnergyData {
22560        /// Index corresponding to RailDescriptor.index
22561        #[prost(uint32, optional, tag="1")]
22562        pub index: ::core::option::Option<u32>,
22563        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
22564        #[prost(uint64, optional, tag="2")]
22565        pub timestamp_ms: ::core::option::Option<u64>,
22566        /// Accumulated energy since device boot in microwatt-seconds (uWs).
22567        #[prost(uint64, optional, tag="3")]
22568        pub energy: ::core::option::Option<u64>,
22569    }
22570}
22571// End of protos/perfetto/trace/power/power_rails.proto
22572
22573// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
22574
22575#[derive(Clone, PartialEq, ::prost::Message)]
22576pub struct ObfuscatedMember {
22577    /// This is the obfuscated field name relative to the class containing the
22578    /// ObfuscatedMember.
22579    #[prost(string, optional, tag="1")]
22580    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22581    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
22582    /// field name including its class. Otherwise, this is this the unqualified
22583    /// deobfuscated field name relative to the class containing this
22584    /// ObfuscatedMember.
22585    #[prost(string, optional, tag="2")]
22586    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22587    /// R8 inline method support: line number ranges for disambiguation.
22588    /// When multiple methods map to the same obfuscated name, the line number
22589    /// from the stack frame is used to select the correct mapping.
22590    ///
22591    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
22592    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
22593    /// - source_line_start/end = 10:12 (line range in original source)
22594    ///
22595    /// Methods with the same obfuscated_name and overlapping obfuscated line
22596    /// ranges form an inline chain, ordered innermost (inlined) first.
22597    #[prost(uint32, optional, tag="3")]
22598    pub obfuscated_line_start: ::core::option::Option<u32>,
22599    #[prost(uint32, optional, tag="4")]
22600    pub obfuscated_line_end: ::core::option::Option<u32>,
22601    #[prost(uint32, optional, tag="5")]
22602    pub source_line_start: ::core::option::Option<u32>,
22603    #[prost(uint32, optional, tag="6")]
22604    pub source_line_end: ::core::option::Option<u32>,
22605}
22606#[derive(Clone, PartialEq, ::prost::Message)]
22607pub struct ObfuscatedClass {
22608    #[prost(string, optional, tag="1")]
22609    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22610    #[prost(string, optional, tag="2")]
22611    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22612    /// fields.
22613    #[prost(message, repeated, tag="3")]
22614    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22615    #[prost(message, repeated, tag="4")]
22616    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22617}
22618#[derive(Clone, PartialEq, ::prost::Message)]
22619pub struct DeobfuscationMapping {
22620    #[prost(string, optional, tag="1")]
22621    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
22622    #[prost(int64, optional, tag="2")]
22623    pub version_code: ::core::option::Option<i64>,
22624    #[prost(message, repeated, tag="3")]
22625    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
22626}
22627// Begin of protos/perfetto/trace/profiling/heap_graph.proto
22628
22629#[derive(Clone, PartialEq, ::prost::Message)]
22630pub struct HeapGraphRoot {
22631    /// Objects retained by this root.
22632    #[prost(uint64, repeated, tag="1")]
22633    pub object_ids: ::prost::alloc::vec::Vec<u64>,
22634    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
22635    pub root_type: ::core::option::Option<i32>,
22636}
22637/// Nested message and enum types in `HeapGraphRoot`.
22638pub mod heap_graph_root {
22639    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22640    #[repr(i32)]
22641    pub enum Type {
22642        RootUnknown = 0,
22643        RootJniGlobal = 1,
22644        RootJniLocal = 2,
22645        RootJavaFrame = 3,
22646        RootNativeStack = 4,
22647        RootStickyClass = 5,
22648        RootThreadBlock = 6,
22649        RootMonitorUsed = 7,
22650        RootThreadObject = 8,
22651        RootInternedString = 9,
22652        RootFinalizing = 10,
22653        RootDebugger = 11,
22654        RootReferenceCleanup = 12,
22655        RootVmInternal = 13,
22656        RootJniMonitor = 14,
22657    }
22658    impl Type {
22659        /// String value of the enum field names used in the ProtoBuf definition.
22660        ///
22661        /// The values are not transformed in any way and thus are considered stable
22662        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22663        pub fn as_str_name(&self) -> &'static str {
22664            match self {
22665                Type::RootUnknown => "ROOT_UNKNOWN",
22666                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
22667                Type::RootJniLocal => "ROOT_JNI_LOCAL",
22668                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
22669                Type::RootNativeStack => "ROOT_NATIVE_STACK",
22670                Type::RootStickyClass => "ROOT_STICKY_CLASS",
22671                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
22672                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
22673                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
22674                Type::RootInternedString => "ROOT_INTERNED_STRING",
22675                Type::RootFinalizing => "ROOT_FINALIZING",
22676                Type::RootDebugger => "ROOT_DEBUGGER",
22677                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
22678                Type::RootVmInternal => "ROOT_VM_INTERNAL",
22679                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
22680            }
22681        }
22682    }
22683}
22684#[derive(Clone, PartialEq, ::prost::Message)]
22685pub struct HeapGraphType {
22686    /// TODO(fmayer): Consider removing this and using the index in the repeaed
22687    /// field to save space.
22688    #[prost(uint64, optional, tag="1")]
22689    pub id: ::core::option::Option<u64>,
22690    #[prost(uint64, optional, tag="2")]
22691    pub location_id: ::core::option::Option<u64>,
22692    #[prost(string, optional, tag="3")]
22693    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
22694    /// Size of objects of this type.
22695    #[prost(uint64, optional, tag="4")]
22696    pub object_size: ::core::option::Option<u64>,
22697    #[prost(uint64, optional, tag="5")]
22698    pub superclass_id: ::core::option::Option<u64>,
22699    /// Indices for InternedData.field_names for the names of the fields of
22700    /// instances of this class. This does NOT include the fields from
22701    /// superclasses. The consumer of this data needs to walk all super
22702    /// classes to get a full lists of fields. Objects always write the
22703    /// fields in order of most specific class to the furthest up superclass.
22704    #[prost(uint64, repeated, tag="6")]
22705    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22706    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
22707    pub kind: ::core::option::Option<i32>,
22708    #[prost(uint64, optional, tag="8")]
22709    pub classloader_id: ::core::option::Option<u64>,
22710}
22711/// Nested message and enum types in `HeapGraphType`.
22712pub mod heap_graph_type {
22713    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22714    #[repr(i32)]
22715    pub enum Kind {
22716        Unknown = 0,
22717        Normal = 1,
22718        Noreferences = 2,
22719        String = 3,
22720        Array = 4,
22721        Class = 5,
22722        Classloader = 6,
22723        Dexcache = 7,
22724        SoftReference = 8,
22725        WeakReference = 9,
22726        FinalizerReference = 10,
22727        PhantomReference = 11,
22728    }
22729    impl Kind {
22730        /// String value of the enum field names used in the ProtoBuf definition.
22731        ///
22732        /// The values are not transformed in any way and thus are considered stable
22733        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22734        pub fn as_str_name(&self) -> &'static str {
22735            match self {
22736                Kind::Unknown => "KIND_UNKNOWN",
22737                Kind::Normal => "KIND_NORMAL",
22738                Kind::Noreferences => "KIND_NOREFERENCES",
22739                Kind::String => "KIND_STRING",
22740                Kind::Array => "KIND_ARRAY",
22741                Kind::Class => "KIND_CLASS",
22742                Kind::Classloader => "KIND_CLASSLOADER",
22743                Kind::Dexcache => "KIND_DEXCACHE",
22744                Kind::SoftReference => "KIND_SOFT_REFERENCE",
22745                Kind::WeakReference => "KIND_WEAK_REFERENCE",
22746                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
22747                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
22748            }
22749        }
22750    }
22751}
22752#[derive(Clone, PartialEq, ::prost::Message)]
22753pub struct HeapGraphObject {
22754    /// Index for InternedData.types for the name of the type of this object.
22755    #[prost(uint64, optional, tag="2")]
22756    pub type_id: ::core::option::Option<u64>,
22757    /// Bytes occupied by this objects.
22758    #[prost(uint64, optional, tag="3")]
22759    pub self_size: ::core::option::Option<u64>,
22760    /// Add this to all non-zero values in reference_object_id. This is used to
22761    /// get more compact varint encoding.
22762    ///
22763    /// The name is confusing, but this has always been used as a base for
22764    /// reference_object_id. The field should be named reference_object_id_base.
22765    #[prost(uint64, optional, tag="6")]
22766    pub reference_field_id_base: ::core::option::Option<u64>,
22767    /// Indices for InternedData.field_names for the name of the field referring
22768    /// to the object. For Android S+ and for instances of normal classes (e.g.
22769    /// not instances of java.lang.Class or arrays), this is instead set in the
22770    /// corresponding HeapGraphType, and this is left empty.
22771    #[prost(uint64, repeated, tag="4")]
22772    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22773    /// Ids of the Object that is referred to.
22774    #[prost(uint64, repeated, tag="5")]
22775    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
22776    /// To reduce the space required we only emit the heap type if it has changed
22777    /// from the previous object we recorded.
22778    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
22779    pub heap_type_delta: ::core::option::Option<i32>,
22780    /// Ids of the Objects referred by this object, not via fields, but via
22781    /// internal runtime structures.
22782    #[prost(uint64, repeated, tag="10")]
22783    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
22784    // =================================================================
22785    // |                      Object value fields                      |
22786    // =================================================================
22787
22788    /// `libcore.util.NativeAllocationRegistry.size`: Maps to the size (bytes) of
22789    /// the corresponding objects registered with the native allocation registry.
22790    /// N.B. this can be an approximation.
22791    #[prost(int64, optional, tag="8")]
22792    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
22793    /// Bitmap-specific field captures, only applicable to objects of this type.
22794    /// `android.graphics.Bitmap.mId`: Used for storage type and deduplication.
22795    #[prost(int64, optional, tag="11")]
22796    pub bitmap_id_field: ::core::option::Option<i64>,
22797    /// `android.graphics.Bitmap.mSourceId`: Used to identify the source process.
22798    #[prost(int64, optional, tag="12")]
22799    pub bitmap_source_id_field: ::core::option::Option<i64>,
22800    /// `android.graphics.Bitmap.mWidth`: Width in pixels
22801    #[prost(uint32, optional, tag="13")]
22802    pub bitmap_width_field: ::core::option::Option<u32>,
22803    /// `android.graphics.Bitmap.mHeight`: Height in pixels
22804    #[prost(uint32, optional, tag="14")]
22805    pub bitmap_height_field: ::core::option::Option<u32>,
22806    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
22807    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
22808}
22809/// Nested message and enum types in `HeapGraphObject`.
22810pub mod heap_graph_object {
22811    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22812    #[repr(i32)]
22813    pub enum HeapType {
22814        Unknown = 0,
22815        App = 1,
22816        Zygote = 2,
22817        BootImage = 3,
22818    }
22819    impl HeapType {
22820        /// String value of the enum field names used in the ProtoBuf definition.
22821        ///
22822        /// The values are not transformed in any way and thus are considered stable
22823        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22824        pub fn as_str_name(&self) -> &'static str {
22825            match self {
22826                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
22827                HeapType::App => "HEAP_TYPE_APP",
22828                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
22829                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
22830            }
22831        }
22832    }
22833    #[derive(Clone, PartialEq, ::prost::Oneof)]
22834    pub enum Identifier {
22835        #[prost(uint64, tag="1")]
22836        Id(u64),
22837        #[prost(uint64, tag="7")]
22838        IdDelta(u64),
22839    }
22840}
22841#[derive(Clone, PartialEq, ::prost::Message)]
22842pub struct HeapGraph {
22843    #[prost(int32, optional, tag="1")]
22844    pub pid: ::core::option::Option<i32>,
22845    /// This contains all objects at the time this dump was taken. Some of these
22846    /// will be live, some of those unreachable (garbage). To find the live
22847    /// objects, the client needs to build the transitive closure of objects
22848    /// reachable from |roots|.
22849    /// All objects not contained within that transitive closure are garbage that
22850    /// has not yet been collected.
22851    #[prost(message, repeated, tag="2")]
22852    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
22853    /// Roots at the time this dump was taken.
22854    /// All live objects are reachable from the roots. All other objects are
22855    /// garbage.
22856    #[prost(message, repeated, tag="7")]
22857    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
22858    /// Types used in HeapGraphObjects.
22859    #[prost(message, repeated, tag="9")]
22860    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
22861    /// Field names for references in managed heap graph.
22862    #[prost(message, repeated, tag="4")]
22863    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
22864    /// Paths of files used in managed heap graph.
22865    #[prost(message, repeated, tag="8")]
22866    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
22867    #[prost(bool, optional, tag="5")]
22868    pub continued: ::core::option::Option<bool>,
22869    #[prost(uint64, optional, tag="6")]
22870    pub index: ::core::option::Option<u64>,
22871}
22872// End of protos/perfetto/trace/profiling/heap_graph.proto
22873
22874// Begin of protos/perfetto/trace/profiling/profile_packet.proto
22875
22876// This file contains a mixture of messages emitted by various sampling
22877// profilers:
22878//
22879// Memory allocator profiling
22880// ----------------
22881// ProfilePacket:
22882//    The packet emitted by heapprofd, which started off as a native heap
22883//    (malloc/free) profiler, but now supports custom allocators as well. Each
22884//    packet contains a preaggregated state of the heap at snapshot time, which
22885//    report the total allocated/free bytes per callstack (plus other info such
22886//    as the number of samples).
22887// StreamingAllocation/StreamingFree:
22888//    Emitted by heapprofd when configured in streaming mode (i.e. when
22889//    stream_allocations = true). This is only for local testing, and doesn't
22890//    report callstacks (only address time and size of each alloc/free). It can
22891//    lead to enormous traces, as it contains the stream of each alloc/free call.
22892//
22893// Callstack sampling
22894// ------------------
22895// StreamingProfilePacket:
22896//    The packet emitted by the chromium in-process sampling profiler, which is
22897//    based on periodically sending a signal to itself, and unwinding the stack
22898//    in the signal handler. Each packet contains a series of individual stack
22899//    samples for a Chromium thread.
22900//
22901// Callstack and performance counter sampling
22902// ---------------------
22903// PerfSample:
22904//    The packet emitted by traced_perf sampling performance profiler based on
22905//    the perf_event_open syscall. Each packet represents an individual sample
22906//    of a performance counter (which might be a timer), and optionally a
22907//    callstack of the process that was scheduled at the time of the sample.
22908//
22909
22910/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
22911/// involve more than one ProfilePacket if the snapshot is big (when |continued|
22912/// is true). The cardinality and grouping is as follows:
22913/// A ProfilePacket contains:
22914///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
22915///     one heap per process (the main malloc/free heap), but there can be more if
22916///     the process is using the heapprofd API to profile custom allocators.
22917///   - Globally interned strings, mappings and frames (to allow de-duplicating
22918///     frames/mapping in common between different processes).
22919/// A ProcessHeapSamples contains:
22920///   - The process and heap identifier.
22921///   - A number of HeapSample, one for each callsite that had some alloc/frees.
22922///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
22923/// A HeapSample contains statistics about callsites:
22924///   - Total number of bytes allocated and freed from that callsite.
22925///   - Total number of alloc/free calls sampled.
22926///   - Stats at the local maximum when dump_at_max = true.
22927/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
22928#[derive(Clone, PartialEq, ::prost::Message)]
22929pub struct ProfilePacket {
22930    /// The following interning tables are only used in Android version Q.
22931    /// In newer versions, these tables are in InternedData
22932    /// (see protos/perfetto/trace/interned_data) and are shared across
22933    /// multiple ProfilePackets.
22934    /// For backwards compatibility, consumers need to first look up interned
22935    /// data in the tables within the ProfilePacket, and then, if they are empty,
22936    /// look up in the InternedData instead.
22937    #[prost(message, repeated, tag="1")]
22938    pub strings: ::prost::alloc::vec::Vec<InternedString>,
22939    #[prost(message, repeated, tag="4")]
22940    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22941    #[prost(message, repeated, tag="2")]
22942    pub frames: ::prost::alloc::vec::Vec<Frame>,
22943    #[prost(message, repeated, tag="3")]
22944    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22945    #[prost(message, repeated, tag="5")]
22946    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
22947    /// If this is true, the next ProfilePacket in this package_sequence_id is a
22948    /// continuation of this one.
22949    /// To get all samples for a process, accummulate its
22950    /// ProcessHeapSamples.samples until you see continued=false.
22951    #[prost(bool, optional, tag="6")]
22952    pub continued: ::core::option::Option<bool>,
22953    /// Index of this ProfilePacket on its package_sequence_id. Can be used
22954    /// to detect dropped data.
22955    /// Verify these are consecutive.
22956    #[prost(uint64, optional, tag="7")]
22957    pub index: ::core::option::Option<u64>,
22958}
22959/// Nested message and enum types in `ProfilePacket`.
22960pub mod profile_packet {
22961    /// Next ID: 9
22962    #[derive(Clone, PartialEq, ::prost::Message)]
22963    pub struct HeapSample {
22964        #[prost(uint64, optional, tag="1")]
22965        pub callstack_id: ::core::option::Option<u64>,
22966        /// bytes allocated at this callstack.
22967        #[prost(uint64, optional, tag="2")]
22968        pub self_allocated: ::core::option::Option<u64>,
22969        /// bytes allocated at this callstack that have been freed.
22970        #[prost(uint64, optional, tag="3")]
22971        pub self_freed: ::core::option::Option<u64>,
22972        /// Bytes allocated by this callstack but not freed at the time the malloc
22973        /// heap usage of this process was maximal. This is only set if dump_at_max
22974        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
22975        /// self_idle will not be set.
22976        #[prost(uint64, optional, tag="8")]
22977        pub self_max: ::core::option::Option<u64>,
22978        /// Number of allocations that were sampled at this callstack but not freed
22979        /// at the time the malloc heap usage of this process was maximal. This is
22980        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
22981        /// self_allocated, self_freed and self_idle will not be set.
22982        #[prost(uint64, optional, tag="9")]
22983        pub self_max_count: ::core::option::Option<u64>,
22984        /// timestamp \[opt\]
22985        #[prost(uint64, optional, tag="4")]
22986        pub timestamp: ::core::option::Option<u64>,
22987        /// Number of allocations that were sampled at this callstack.
22988        #[prost(uint64, optional, tag="5")]
22989        pub alloc_count: ::core::option::Option<u64>,
22990        /// Number of allocations that were sampled at this callstack that have been
22991        /// freed.
22992        #[prost(uint64, optional, tag="6")]
22993        pub free_count: ::core::option::Option<u64>,
22994    }
22995    #[derive(Clone, PartialEq, ::prost::Message)]
22996    pub struct Histogram {
22997        #[prost(message, repeated, tag="1")]
22998        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
22999    }
23000    /// Nested message and enum types in `Histogram`.
23001    pub mod histogram {
23002        #[derive(Clone, PartialEq, ::prost::Message)]
23003        pub struct Bucket {
23004            /// This bucket counts values from the previous bucket's (or -infinity if
23005            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
23006            /// (exclusive).
23007            #[prost(uint64, optional, tag="1")]
23008            pub upper_limit: ::core::option::Option<u64>,
23009            /// This is the highest bucket. This is set instead of the upper_limit. Any
23010            /// values larger or equal to the previous bucket's upper_limit are counted
23011            /// in this bucket.
23012            #[prost(bool, optional, tag="2")]
23013            pub max_bucket: ::core::option::Option<bool>,
23014            /// Number of values that fall into this range.
23015            #[prost(uint64, optional, tag="3")]
23016            pub count: ::core::option::Option<u64>,
23017        }
23018    }
23019    #[derive(Clone, PartialEq, ::prost::Message)]
23020    pub struct ProcessStats {
23021        #[prost(uint64, optional, tag="1")]
23022        pub unwinding_errors: ::core::option::Option<u64>,
23023        #[prost(uint64, optional, tag="2")]
23024        pub heap_samples: ::core::option::Option<u64>,
23025        #[prost(uint64, optional, tag="3")]
23026        pub map_reparses: ::core::option::Option<u64>,
23027        #[prost(message, optional, tag="4")]
23028        pub unwinding_time_us: ::core::option::Option<Histogram>,
23029        #[prost(uint64, optional, tag="5")]
23030        pub total_unwinding_time_us: ::core::option::Option<u64>,
23031        #[prost(uint64, optional, tag="6")]
23032        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
23033    }
23034    #[derive(Clone, PartialEq, ::prost::Message)]
23035    pub struct ProcessHeapSamples {
23036        #[prost(uint64, optional, tag="1")]
23037        pub pid: ::core::option::Option<u64>,
23038        /// This process was profiled from startup.
23039        /// If false, this process was already running when profiling started.
23040        #[prost(bool, optional, tag="3")]
23041        pub from_startup: ::core::option::Option<bool>,
23042        /// This process was not profiled because a concurrent session was active.
23043        /// If this is true, samples will be empty.
23044        #[prost(bool, optional, tag="4")]
23045        pub rejected_concurrent: ::core::option::Option<bool>,
23046        /// This process disconnected while it was profiled.
23047        /// If false, the process outlived the profiling session.
23048        #[prost(bool, optional, tag="6")]
23049        pub disconnected: ::core::option::Option<bool>,
23050        /// If disconnected, this disconnect was caused by the client overrunning
23051        /// the buffer.
23052        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
23053        /// on new S builds.
23054        #[prost(bool, optional, tag="7")]
23055        pub buffer_overran: ::core::option::Option<bool>,
23056        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
23057        pub client_error: ::core::option::Option<i32>,
23058        /// If disconnected, this disconnected was caused by the shared memory
23059        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
23060        /// MEMORY CORRUPTION.
23061        #[prost(bool, optional, tag="8")]
23062        pub buffer_corrupted: ::core::option::Option<bool>,
23063        /// If disconnected, this disconnect was caused by heapprofd exceeding
23064        /// guardrails during this profiling session.
23065        #[prost(bool, optional, tag="10")]
23066        pub hit_guardrail: ::core::option::Option<bool>,
23067        #[prost(string, optional, tag="11")]
23068        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
23069        #[prost(uint64, optional, tag="12")]
23070        pub sampling_interval_bytes: ::core::option::Option<u64>,
23071        #[prost(uint64, optional, tag="13")]
23072        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
23073        /// Timestamp of the state of the target process that this dump represents.
23074        /// This can be different to the timestamp of the TracePackets for various
23075        /// reasons:
23076        /// * If disconnected is set above, this is the timestamp of last state
23077        ///    heapprofd had of the process before it disconnected.
23078        /// * Otherwise, if the rate of events produced by the process is high,
23079        ///    heapprofd might be behind.
23080        ///
23081        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
23082        ///                to have a type enum that we can reuse here.
23083        #[prost(uint64, optional, tag="9")]
23084        pub timestamp: ::core::option::Option<u64>,
23085        /// Metadata about heapprofd.
23086        #[prost(message, optional, tag="5")]
23087        pub stats: ::core::option::Option<ProcessStats>,
23088        #[prost(message, repeated, tag="2")]
23089        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
23090    }
23091    /// Nested message and enum types in `ProcessHeapSamples`.
23092    pub mod process_heap_samples {
23093        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23094        #[repr(i32)]
23095        pub enum ClientError {
23096            None = 0,
23097            HitTimeout = 1,
23098            InvalidStackBounds = 2,
23099        }
23100        impl ClientError {
23101            /// String value of the enum field names used in the ProtoBuf definition.
23102            ///
23103            /// The values are not transformed in any way and thus are considered stable
23104            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23105            pub fn as_str_name(&self) -> &'static str {
23106                match self {
23107                    ClientError::None => "CLIENT_ERROR_NONE",
23108                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
23109                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
23110                }
23111            }
23112        }
23113    }
23114}
23115/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23116/// testing. Doesn't report the callsite.
23117#[derive(Clone, PartialEq, ::prost::Message)]
23118pub struct StreamingAllocation {
23119    /// TODO(fmayer): Add callstack.
23120    #[prost(uint64, repeated, packed="false", tag="1")]
23121    pub address: ::prost::alloc::vec::Vec<u64>,
23122    #[prost(uint64, repeated, packed="false", tag="2")]
23123    pub size: ::prost::alloc::vec::Vec<u64>,
23124    #[prost(uint64, repeated, packed="false", tag="3")]
23125    pub sample_size: ::prost::alloc::vec::Vec<u64>,
23126    #[prost(uint64, repeated, packed="false", tag="4")]
23127    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
23128    #[prost(uint32, repeated, packed="false", tag="5")]
23129    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23130    #[prost(uint64, repeated, packed="false", tag="6")]
23131    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23132}
23133/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23134/// testing. Doesn't report the callsite.
23135#[derive(Clone, PartialEq, ::prost::Message)]
23136pub struct StreamingFree {
23137    /// TODO(fmayer): Add callstack.
23138    #[prost(uint64, repeated, packed="false", tag="1")]
23139    pub address: ::prost::alloc::vec::Vec<u64>,
23140    #[prost(uint32, repeated, packed="false", tag="2")]
23141    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23142    #[prost(uint64, repeated, packed="false", tag="3")]
23143    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23144}
23145/// Packet emitted by the chromium in-process signal-based callstack sampler.
23146/// Represents a series of individual stack samples (sampled at discrete points
23147/// in time), rather than aggregated over an interval.
23148#[derive(Clone, PartialEq, ::prost::Message)]
23149pub struct StreamingProfilePacket {
23150    /// Index into InternedData.callstacks
23151    #[prost(uint64, repeated, packed="false", tag="1")]
23152    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
23153    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
23154    /// this with ClockSnapshot-based delta encoding instead.
23155    #[prost(int64, repeated, packed="false", tag="2")]
23156    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
23157    #[prost(int32, optional, tag="3")]
23158    pub process_priority: ::core::option::Option<i32>,
23159}
23160/// Namespace for the contained enums.
23161#[derive(Clone, PartialEq, ::prost::Message)]
23162pub struct Profiling {
23163}
23164/// Nested message and enum types in `Profiling`.
23165pub mod profiling {
23166    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23167    #[repr(i32)]
23168    pub enum CpuMode {
23169        ModeUnknown = 0,
23170        ModeKernel = 1,
23171        ModeUser = 2,
23172        /// The following values aren't expected, but included for completeness:
23173        ModeHypervisor = 3,
23174        ModeGuestKernel = 4,
23175        ModeGuestUser = 5,
23176    }
23177    impl CpuMode {
23178        /// String value of the enum field names used in the ProtoBuf definition.
23179        ///
23180        /// The values are not transformed in any way and thus are considered stable
23181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23182        pub fn as_str_name(&self) -> &'static str {
23183            match self {
23184                CpuMode::ModeUnknown => "MODE_UNKNOWN",
23185                CpuMode::ModeKernel => "MODE_KERNEL",
23186                CpuMode::ModeUser => "MODE_USER",
23187                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
23188                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
23189                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
23190            }
23191        }
23192    }
23193    /// Enumeration of libunwindstack's error codes.
23194    /// NB: the integral representations of the two enums are different.
23195    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23196    #[repr(i32)]
23197    pub enum StackUnwindError {
23198        UnwindErrorUnknown = 0,
23199        UnwindErrorNone = 1,
23200        UnwindErrorMemoryInvalid = 2,
23201        UnwindErrorUnwindInfo = 3,
23202        UnwindErrorUnsupported = 4,
23203        UnwindErrorInvalidMap = 5,
23204        UnwindErrorMaxFramesExceeded = 6,
23205        UnwindErrorRepeatedFrame = 7,
23206        UnwindErrorInvalidElf = 8,
23207        UnwindErrorSystemCall = 9,
23208        UnwindErrorThreadTimeout = 10,
23209        UnwindErrorThreadDoesNotExist = 11,
23210        UnwindErrorBadArch = 12,
23211        UnwindErrorMapsParse = 13,
23212        UnwindErrorInvalidParameter = 14,
23213        UnwindErrorPtraceCall = 15,
23214    }
23215    impl StackUnwindError {
23216        /// String value of the enum field names used in the ProtoBuf definition.
23217        ///
23218        /// The values are not transformed in any way and thus are considered stable
23219        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23220        pub fn as_str_name(&self) -> &'static str {
23221            match self {
23222                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
23223                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
23224                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
23225                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
23226                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
23227                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
23228                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
23229                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
23230                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
23231                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
23232                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
23233                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
23234                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
23235                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
23236                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
23237                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
23238            }
23239        }
23240    }
23241}
23242/// Packet emitted by the traced_perf sampling performance profiler, which
23243/// gathers data via the perf_event_open syscall. Each packet contains an
23244/// individual sample with a counter value, and optionally a
23245/// callstack.
23246///
23247/// Timestamps are within the root packet. The config can specify the clock, or
23248/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
23249/// timeframe, the default was CLOCK_BOOTTIME.
23250///
23251/// There are several distinct views of this message:
23252/// * indication of kernel buffer data loss (kernel_records_lost set)
23253/// * indication of skipped samples (sample_skipped_reason set)
23254/// * notable event in the sampling implementation (producer_event set)
23255/// * normal sample (timebase_count set, typically also callstack_iid)
23256#[derive(Clone, PartialEq, ::prost::Message)]
23257pub struct PerfSample {
23258    #[prost(uint32, optional, tag="1")]
23259    pub cpu: ::core::option::Option<u32>,
23260    #[prost(uint32, optional, tag="2")]
23261    pub pid: ::core::option::Option<u32>,
23262    #[prost(uint32, optional, tag="3")]
23263    pub tid: ::core::option::Option<u32>,
23264    /// Execution state that the process was sampled at.
23265    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
23266    pub cpu_mode: ::core::option::Option<i32>,
23267    /// Value of the timebase counter (since the event was configured, no deltas).
23268    #[prost(uint64, optional, tag="6")]
23269    pub timebase_count: ::core::option::Option<u64>,
23270    /// Value of the followers counter (since the event was configured, no deltas).
23271    #[prost(uint64, repeated, packed="false", tag="7")]
23272    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
23273    /// Unwound callstack. Might be partial, in which case a synthetic "error"
23274    /// frame is appended, and |unwind_error| is set accordingly.
23275    #[prost(uint64, optional, tag="4")]
23276    pub callstack_iid: ::core::option::Option<u64>,
23277    /// If set, indicates that this message is not a sample, but rather an
23278    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
23279    /// loss occurs when the kernel has insufficient ring buffer capacity to write
23280    /// a record (which gets discarded). A record in this context is an individual
23281    /// ring buffer entry, and counts more than just sample records.
23282    ///
23283    /// The |timestamp| of the packet corresponds to the time that the producer
23284    /// wrote the packet for trace-sorting purposes alone, and should not be
23285    /// interpreted relative to the sample timestamps. This field is sufficient to
23286    /// detect that *some* kernel data loss happened within the trace, but not the
23287    /// specific time bounds of that loss (which would require tracking precedessor
23288    /// & successor timestamps, which is not deemed necessary at the moment).
23289    #[prost(uint64, optional, tag="17")]
23290    pub kernel_records_lost: ::core::option::Option<u64>,
23291    #[prost(message, optional, tag="19")]
23292    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
23293    /// If set, stack unwinding was incomplete due to an error.
23294    /// Unset values should be treated as UNWIND_ERROR_NONE.
23295    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
23296    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
23297    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
23298    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
23299}
23300/// Nested message and enum types in `PerfSample`.
23301pub mod perf_sample {
23302    /// A notable event within the sampling implementation.
23303    #[derive(Clone, PartialEq, ::prost::Message)]
23304    pub struct ProducerEvent {
23305        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
23306        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
23307    }
23308    /// Nested message and enum types in `ProducerEvent`.
23309    pub mod producer_event {
23310        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23311        #[repr(i32)]
23312        pub enum DataSourceStopReason {
23313            ProfilerStopUnknown = 0,
23314            ProfilerStopGuardrail = 1,
23315        }
23316        impl DataSourceStopReason {
23317            /// String value of the enum field names used in the ProtoBuf definition.
23318            ///
23319            /// The values are not transformed in any way and thus are considered stable
23320            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23321            pub fn as_str_name(&self) -> &'static str {
23322                match self {
23323                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
23324                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
23325                }
23326            }
23327        }
23328        #[derive(Clone, PartialEq, ::prost::Oneof)]
23329        pub enum OptionalSourceStopReason {
23330            #[prost(enumeration="DataSourceStopReason", tag="1")]
23331            SourceStopReason(i32),
23332        }
23333    }
23334    /// If set, indicates that the profiler encountered a sample that was relevant,
23335    /// but was skipped.
23336    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23337    #[repr(i32)]
23338    pub enum SampleSkipReason {
23339        ProfilerSkipUnknown = 0,
23340        ProfilerSkipReadStage = 1,
23341        ProfilerSkipUnwindStage = 2,
23342        ProfilerSkipUnwindEnqueue = 3,
23343        ProfilerSkipNotInScope = 4,
23344    }
23345    impl SampleSkipReason {
23346        /// String value of the enum field names used in the ProtoBuf definition.
23347        ///
23348        /// The values are not transformed in any way and thus are considered stable
23349        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23350        pub fn as_str_name(&self) -> &'static str {
23351            match self {
23352                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
23353                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
23354                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
23355                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
23356                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
23357            }
23358        }
23359    }
23360    /// If set, stack unwinding was incomplete due to an error.
23361    /// Unset values should be treated as UNWIND_ERROR_NONE.
23362    #[derive(Clone, PartialEq, ::prost::Oneof)]
23363    pub enum OptionalUnwindError {
23364        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
23365        UnwindError(i32),
23366    }
23367    #[derive(Clone, PartialEq, ::prost::Oneof)]
23368    pub enum OptionalSampleSkippedReason {
23369        #[prost(enumeration="SampleSkipReason", tag="18")]
23370        SampleSkippedReason(i32),
23371    }
23372}
23373/// Submessage for TracePacketDefaults.
23374#[derive(Clone, PartialEq, ::prost::Message)]
23375pub struct PerfSampleDefaults {
23376    /// The sampling timebase. Might not be identical to the data source config if
23377    /// the implementation decided to default/override some parameters.
23378    #[prost(message, optional, tag="1")]
23379    pub timebase: ::core::option::Option<perf_events::Timebase>,
23380    /// Description of followers event
23381    #[prost(message, repeated, tag="4")]
23382    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
23383    /// If the config requested process sharding, report back the count and which
23384    /// of those bins was selected. Never changes for the duration of a trace.
23385    #[prost(uint32, optional, tag="2")]
23386    pub process_shard_count: ::core::option::Option<u32>,
23387    #[prost(uint32, optional, tag="3")]
23388    pub chosen_process_shard: ::core::option::Option<u32>,
23389}
23390// End of protos/perfetto/trace/profiling/profile_packet.proto
23391
23392// Begin of protos/perfetto/trace/profiling/smaps.proto
23393
23394#[derive(Clone, PartialEq, ::prost::Message)]
23395pub struct SmapsEntry {
23396    #[prost(string, optional, tag="1")]
23397    pub path: ::core::option::Option<::prost::alloc::string::String>,
23398    #[prost(uint64, optional, tag="2")]
23399    pub size_kb: ::core::option::Option<u64>,
23400    #[prost(uint64, optional, tag="3")]
23401    pub private_dirty_kb: ::core::option::Option<u64>,
23402    #[prost(uint64, optional, tag="4")]
23403    pub swap_kb: ::core::option::Option<u64>,
23404    /// for field upload (instead of path).
23405    #[prost(string, optional, tag="5")]
23406    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
23407    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
23408    #[prost(uint64, optional, tag="6")]
23409    pub start_address: ::core::option::Option<u64>,
23410    #[prost(uint64, optional, tag="7")]
23411    pub module_timestamp: ::core::option::Option<u64>,
23412    #[prost(string, optional, tag="8")]
23413    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
23414    #[prost(string, optional, tag="9")]
23415    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
23416    #[prost(uint32, optional, tag="10")]
23417    pub protection_flags: ::core::option::Option<u32>,
23418    #[prost(uint64, optional, tag="11")]
23419    pub private_clean_resident_kb: ::core::option::Option<u64>,
23420    #[prost(uint64, optional, tag="12")]
23421    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
23422    #[prost(uint64, optional, tag="13")]
23423    pub shared_clean_resident_kb: ::core::option::Option<u64>,
23424    #[prost(uint64, optional, tag="14")]
23425    pub locked_kb: ::core::option::Option<u64>,
23426    #[prost(uint64, optional, tag="15")]
23427    pub proportional_resident_kb: ::core::option::Option<u64>,
23428}
23429#[derive(Clone, PartialEq, ::prost::Message)]
23430pub struct SmapsPacket {
23431    #[prost(uint32, optional, tag="1")]
23432    pub pid: ::core::option::Option<u32>,
23433    #[prost(message, repeated, tag="2")]
23434    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
23435}
23436// End of protos/perfetto/trace/profiling/smaps.proto
23437
23438// Begin of protos/perfetto/trace/ps/process_stats.proto
23439
23440/// Per-process periodically sampled stats. These samples are wrapped in a
23441/// dedicated message (as opposite to be fields in process_tree.proto) because
23442/// they are dumped at a different rate than cmdline and thread list.
23443/// Note: not all of these stats will be present in every ProcessStats message
23444/// and sometimes processes may be missing. This is because counters are
23445/// cached to reduce emission of counters which do not change.
23446#[derive(Clone, PartialEq, ::prost::Message)]
23447pub struct ProcessStats {
23448    #[prost(message, repeated, tag="1")]
23449    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
23450    /// The time at which we finish collecting this batch of samples;
23451    /// the top-level packet timestamp is the time at which
23452    /// we begin collection.
23453    #[prost(uint64, optional, tag="2")]
23454    pub collection_end_timestamp: ::core::option::Option<u64>,
23455}
23456/// Nested message and enum types in `ProcessStats`.
23457pub mod process_stats {
23458    /// Per-thread periodically sampled stats.
23459    /// Note: not all of these stats will be present in every message. See the note
23460    /// for ProcessStats.
23461    #[derive(Clone, PartialEq, ::prost::Message)]
23462    pub struct Thread {
23463        #[prost(int32, optional, tag="1")]
23464        pub tid: ::core::option::Option<i32>,
23465    }
23466    #[derive(Clone, PartialEq, ::prost::Message)]
23467    pub struct FdInfo {
23468        #[prost(uint64, optional, tag="1")]
23469        pub fd: ::core::option::Option<u64>,
23470        #[prost(string, optional, tag="2")]
23471        pub path: ::core::option::Option<::prost::alloc::string::String>,
23472    }
23473    #[derive(Clone, PartialEq, ::prost::Message)]
23474    pub struct Process {
23475        #[prost(int32, optional, tag="1")]
23476        pub pid: ::core::option::Option<i32>,
23477        #[prost(message, repeated, tag="11")]
23478        pub threads: ::prost::alloc::vec::Vec<Thread>,
23479        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
23480        #[prost(uint64, optional, tag="2")]
23481        pub vm_size_kb: ::core::option::Option<u64>,
23482        #[prost(uint64, optional, tag="3")]
23483        pub vm_rss_kb: ::core::option::Option<u64>,
23484        #[prost(uint64, optional, tag="4")]
23485        pub rss_anon_kb: ::core::option::Option<u64>,
23486        #[prost(uint64, optional, tag="5")]
23487        pub rss_file_kb: ::core::option::Option<u64>,
23488        #[prost(uint64, optional, tag="6")]
23489        pub rss_shmem_kb: ::core::option::Option<u64>,
23490        #[prost(uint64, optional, tag="7")]
23491        pub vm_swap_kb: ::core::option::Option<u64>,
23492        #[prost(uint64, optional, tag="8")]
23493        pub vm_locked_kb: ::core::option::Option<u64>,
23494        /// When adding a new field remember to update kProcMemCounterSize in
23495        /// the trace processor.
23496        #[prost(uint64, optional, tag="9")]
23497        pub vm_hwm_kb: ::core::option::Option<u64>,
23498        #[prost(int64, optional, tag="10")]
23499        pub oom_score_adj: ::core::option::Option<i64>,
23500        /// The peak resident set size is resettable in newer Posix kernels.
23501        /// This field specifies if reset is supported and if the writer had reset
23502        /// the peaks after each process stats recording.
23503        #[prost(bool, optional, tag="12")]
23504        pub is_peak_rss_resettable: ::core::option::Option<bool>,
23505        /// Private, shared and swap footprint of the process as measured by
23506        /// Chrome. To know more about these metrics refer to:
23507        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
23508        #[prost(uint32, optional, tag="13")]
23509        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
23510        #[prost(uint32, optional, tag="14")]
23511        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
23512        #[prost(message, repeated, tag="15")]
23513        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
23514        /// These fields are set only when scan_smaps_rollup=true
23515        #[prost(uint64, optional, tag="16")]
23516        pub smr_rss_kb: ::core::option::Option<u64>,
23517        #[prost(uint64, optional, tag="17")]
23518        pub smr_pss_kb: ::core::option::Option<u64>,
23519        #[prost(uint64, optional, tag="18")]
23520        pub smr_pss_anon_kb: ::core::option::Option<u64>,
23521        #[prost(uint64, optional, tag="19")]
23522        pub smr_pss_file_kb: ::core::option::Option<u64>,
23523        #[prost(uint64, optional, tag="20")]
23524        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
23525        #[prost(uint64, optional, tag="23")]
23526        pub smr_swap_pss_kb: ::core::option::Option<u64>,
23527        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
23528        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23529        /// Resolution of "clock ticks", usually 10ms.
23530        #[prost(uint64, optional, tag="21")]
23531        pub runtime_user_mode: ::core::option::Option<u64>,
23532        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
23533        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23534        /// Resolution of "clock ticks", usually 10ms.
23535        #[prost(uint64, optional, tag="22")]
23536        pub runtime_kernel_mode: ::core::option::Option<u64>,
23537        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
23538        #[prost(uint64, optional, tag="24")]
23539        pub dmabuf_rss_kb: ::core::option::Option<u64>,
23540    }
23541}
23542// End of protos/perfetto/trace/ps/process_stats.proto
23543
23544// Begin of protos/perfetto/trace/ps/process_tree.proto
23545
23546/// Metadata about the processes and threads in the trace.
23547/// Note: this proto was designed to be filled in by traced_probes and should
23548/// only be populated with accurate information coming from the system. Other
23549/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
23550/// in TrackDescriptor.
23551#[derive(Clone, PartialEq, ::prost::Message)]
23552pub struct ProcessTree {
23553    /// List of processes and threads in the client. These lists are incremental
23554    /// and not exhaustive. A process and its threads might show up separately in
23555    /// different ProcessTree messages. A thread might event not show up at all, if
23556    /// no sched_switch activity was detected, for instance:
23557    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
23558    /// #1 { threads: [{pid: 12, tgid: 10}] }
23559    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
23560    #[prost(message, repeated, tag="1")]
23561    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
23562    #[prost(message, repeated, tag="2")]
23563    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
23564    /// The time at which we finish collecting this process tree;
23565    /// the top-level packet timestamp is the time at which
23566    /// we begin collection.
23567    #[prost(uint64, optional, tag="3")]
23568    pub collection_end_timestamp: ::core::option::Option<u64>,
23569}
23570/// Nested message and enum types in `ProcessTree`.
23571pub mod process_tree {
23572    /// Representation of a thread.
23573    #[derive(Clone, PartialEq, ::prost::Message)]
23574    pub struct Thread {
23575        /// The thread ID (as per gettid()) in the root PID namespace.
23576        #[prost(int32, optional, tag="1")]
23577        pub tid: ::core::option::Option<i32>,
23578        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
23579        #[prost(int32, optional, tag="3")]
23580        pub tgid: ::core::option::Option<i32>,
23581        /// The name of the thread.
23582        #[prost(string, optional, tag="2")]
23583        pub name: ::core::option::Option<::prost::alloc::string::String>,
23584        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
23585        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
23586        /// level thread ID) omitted.
23587        #[prost(int32, repeated, packed="false", tag="4")]
23588        pub nstid: ::prost::alloc::vec::Vec<i32>,
23589    }
23590    /// Representation of a process.
23591    #[derive(Clone, PartialEq, ::prost::Message)]
23592    pub struct Process {
23593        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
23594        /// PID namespace.
23595        #[prost(int32, optional, tag="1")]
23596        pub pid: ::core::option::Option<i32>,
23597        /// The parent process ID, as per getppid().
23598        #[prost(int32, optional, tag="2")]
23599        pub ppid: ::core::option::Option<i32>,
23600        /// The command line for the process, as per /proc/pid/cmdline, broken up on
23601        /// NUL bytes.
23602        /// If it is a kernel thread or a zombie, there will only be one cmdline
23603        /// field and it will contain /proc/pid/comm.
23604        #[prost(string, repeated, tag="3")]
23605        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23606        /// If true, the |cmdline| field was filled with the main thread's "comm"
23607        /// field instead.
23608        /// Introduced in: perfetto v50.
23609        #[prost(bool, optional, tag="9")]
23610        pub cmdline_is_comm: ::core::option::Option<bool>,
23611        /// The uid for the process, as per /proc/pid/status.
23612        #[prost(int32, optional, tag="5")]
23613        pub uid: ::core::option::Option<i32>,
23614        /// The non-root-level process IDs if the process runs in a PID namespace.
23615        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
23616        /// (root-level process ID) omitted.
23617        #[prost(int32, repeated, packed="false", tag="6")]
23618        pub nspid: ::prost::alloc::vec::Vec<i32>,
23619        /// Timestamp of when the process was created, in nanoseconds
23620        /// from boot. Parsed from starttime in /proc/pid/stat.
23621        /// Recorded if record_process_age config option is set.
23622        /// Resolution of "clock ticks", usually 10ms.
23623        #[prost(uint64, optional, tag="7")]
23624        pub process_start_from_boot: ::core::option::Option<u64>,
23625        /// If true, the process is a kernel thread.
23626        /// Set only on linux v6.4+. For traces from older devices, it is possible to
23627        /// infer most kthreads by checking that they're a descendant of kthreadd
23628        /// (pid=2), or are the idle process (pid=0).
23629        /// Introduced in: perfetto v50.
23630        #[prost(bool, optional, tag="8")]
23631        pub is_kthread: ::core::option::Option<bool>,
23632    }
23633}
23634// End of protos/perfetto/trace/ps/process_tree.proto
23635
23636// Begin of protos/perfetto/trace/remote_clock_sync.proto
23637
23638/// Records the parameters for aligning clock readings between machines.
23639#[derive(Clone, PartialEq, ::prost::Message)]
23640pub struct RemoteClockSync {
23641    #[prost(message, repeated, tag="1")]
23642    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
23643}
23644/// Nested message and enum types in `RemoteClockSync`.
23645pub mod remote_clock_sync {
23646    /// Synchronized clock snapshots taken on both sides of the relay port (the
23647    /// tracing service and the relay service). A round of clock synchronization
23648    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
23649    /// snapshot -> client snapshot -> host snapshot.
23650    #[derive(Clone, PartialEq, ::prost::Message)]
23651    pub struct SyncedClocks {
23652        #[prost(message, optional, tag="2")]
23653        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
23654        #[prost(message, optional, tag="3")]
23655        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
23656    }
23657}
23658// End of protos/perfetto/trace/remote_clock_sync.proto
23659
23660// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
23661
23662/// Deliberate empty message. See comment on StatsdAtom#atom below.
23663#[derive(Clone, PartialEq, ::prost::Message)]
23664pub struct Atom {
23665}
23666/// One or more statsd atoms. This must continue to match:
23667/// perfetto/protos/third_party/statsd/shell_data.proto
23668/// So that we can efficiently add data from statsd directly to the
23669/// trace.
23670#[derive(Clone, PartialEq, ::prost::Message)]
23671pub struct StatsdAtom {
23672    /// Atom should be filled with an Atom proto from:
23673    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
23674    /// We don't reference Atom directly here since we don't want to import
23675    /// Atom.proto and all its transitive dependencies into Perfetto.
23676    /// atom and timestamp_nanos have the same cardinality
23677    #[prost(message, repeated, tag="1")]
23678    pub atom: ::prost::alloc::vec::Vec<Atom>,
23679    #[prost(int64, repeated, packed="false", tag="2")]
23680    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
23681}
23682// End of protos/perfetto/trace/statsd/statsd_atom.proto
23683
23684// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
23685
23686/// Various Linux system stat counters from /proc.
23687/// The fields in this message can be reported at different rates and with
23688/// different granularity. See sys_stats_config.proto.
23689#[derive(Clone, PartialEq, ::prost::Message)]
23690pub struct SysStats {
23691    #[prost(message, repeated, tag="1")]
23692    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
23693    #[prost(message, repeated, tag="2")]
23694    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
23695    /// One entry per cpu.
23696    #[prost(message, repeated, tag="3")]
23697    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
23698    /// Num processes forked since boot.
23699    /// Populated only if FORK_COUNT in config.stat_counters.
23700    #[prost(uint64, optional, tag="4")]
23701    pub num_forks: ::core::option::Option<u64>,
23702    // Number of interrupts, broken by IRQ number.
23703    // Populated only if IRQ_COUNTS in config.stat_counters.
23704
23705    /// Total num of irqs serviced since boot.
23706    #[prost(uint64, optional, tag="5")]
23707    pub num_irq_total: ::core::option::Option<u64>,
23708    #[prost(message, repeated, tag="6")]
23709    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23710    // Number of softirqs, broken by softirq number.
23711    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
23712
23713    /// Total num of softirqs since boot.
23714    #[prost(uint64, optional, tag="7")]
23715    pub num_softirq_total: ::core::option::Option<u64>,
23716    /// Per-softirq count.
23717    #[prost(message, repeated, tag="8")]
23718    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23719    /// The time at which we finish collecting this set of samples;
23720    /// the top-level packet timestamp is the time at which
23721    /// we begin collection.
23722    #[prost(uint64, optional, tag="9")]
23723    pub collection_end_timestamp: ::core::option::Option<u64>,
23724    /// One entry per device.
23725    #[prost(message, repeated, tag="10")]
23726    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
23727    /// Cpu current frequency from
23728    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
23729    /// One entry per cpu. Report 0 for offline cpu
23730    #[prost(uint32, repeated, packed="false", tag="11")]
23731    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
23732    /// One entry per each node's zones.
23733    #[prost(message, repeated, tag="12")]
23734    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
23735    /// One entry per disk device.
23736    #[prost(message, repeated, tag="13")]
23737    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
23738    /// One entry per PsiResource type.
23739    #[prost(message, repeated, tag="14")]
23740    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
23741    #[prost(message, repeated, tag="15")]
23742    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
23743    #[prost(message, repeated, tag="16")]
23744    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
23745    /// Read GPU frequency info on Intel/AMD devices.
23746    #[prost(uint64, repeated, packed="false", tag="17")]
23747    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
23748}
23749/// Nested message and enum types in `SysStats`.
23750pub mod sys_stats {
23751    /// Counters from /proc/meminfo. Values are in KB.
23752    #[derive(Clone, PartialEq, ::prost::Message)]
23753    pub struct MeminfoValue {
23754        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
23755        pub key: ::core::option::Option<i32>,
23756        #[prost(uint64, optional, tag="2")]
23757        pub value: ::core::option::Option<u64>,
23758    }
23759    /// Counter from /proc/vmstat. Units are often pages, not KB.
23760    #[derive(Clone, PartialEq, ::prost::Message)]
23761    pub struct VmstatValue {
23762        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
23763        pub key: ::core::option::Option<i32>,
23764        #[prost(uint64, optional, tag="2")]
23765        pub value: ::core::option::Option<u64>,
23766    }
23767    /// Times in each mode, since boot. Unit: nanoseconds.
23768    #[derive(Clone, PartialEq, ::prost::Message)]
23769    pub struct CpuTimes {
23770        #[prost(uint32, optional, tag="1")]
23771        pub cpu_id: ::core::option::Option<u32>,
23772        /// Time spent in user mode.
23773        #[prost(uint64, optional, tag="2")]
23774        pub user_ns: ::core::option::Option<u64>,
23775        /// Time spent in user mode (low prio).
23776        #[prost(uint64, optional, tag="3")]
23777        pub user_nice_ns: ::core::option::Option<u64>,
23778        /// Time spent in system mode.
23779        #[prost(uint64, optional, tag="4")]
23780        pub system_mode_ns: ::core::option::Option<u64>,
23781        /// Time spent in the idle task.
23782        #[prost(uint64, optional, tag="5")]
23783        pub idle_ns: ::core::option::Option<u64>,
23784        /// Time spent waiting for I/O.
23785        #[prost(uint64, optional, tag="6")]
23786        pub io_wait_ns: ::core::option::Option<u64>,
23787        /// Time spent servicing interrupts.
23788        #[prost(uint64, optional, tag="7")]
23789        pub irq_ns: ::core::option::Option<u64>,
23790        /// Time spent servicing softirqs.
23791        #[prost(uint64, optional, tag="8")]
23792        pub softirq_ns: ::core::option::Option<u64>,
23793        /// Time spent executing something else on host than this guest.
23794        #[prost(uint64, optional, tag="9")]
23795        pub steal_ns: ::core::option::Option<u64>,
23796    }
23797    #[derive(Clone, PartialEq, ::prost::Message)]
23798    pub struct InterruptCount {
23799        #[prost(int32, optional, tag="1")]
23800        pub irq: ::core::option::Option<i32>,
23801        #[prost(uint64, optional, tag="2")]
23802        pub count: ::core::option::Option<u64>,
23803    }
23804    /// Frequencies for /sys/class/devfreq/ entries in kHz.
23805    #[derive(Clone, PartialEq, ::prost::Message)]
23806    pub struct DevfreqValue {
23807        #[prost(string, optional, tag="1")]
23808        pub key: ::core::option::Option<::prost::alloc::string::String>,
23809        #[prost(uint64, optional, tag="2")]
23810        pub value: ::core::option::Option<u64>,
23811    }
23812    #[derive(Clone, PartialEq, ::prost::Message)]
23813    pub struct BuddyInfo {
23814        #[prost(string, optional, tag="1")]
23815        pub node: ::core::option::Option<::prost::alloc::string::String>,
23816        #[prost(string, optional, tag="2")]
23817        pub zone: ::core::option::Option<::prost::alloc::string::String>,
23818        #[prost(uint32, repeated, packed="false", tag="3")]
23819        pub order_pages: ::prost::alloc::vec::Vec<u32>,
23820    }
23821    /// Counters from /proc/diskstats.
23822    #[derive(Clone, PartialEq, ::prost::Message)]
23823    pub struct DiskStat {
23824        #[prost(string, optional, tag="1")]
23825        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
23826        #[prost(uint64, optional, tag="2")]
23827        pub read_sectors: ::core::option::Option<u64>,
23828        #[prost(uint64, optional, tag="3")]
23829        pub read_time_ms: ::core::option::Option<u64>,
23830        #[prost(uint64, optional, tag="4")]
23831        pub write_sectors: ::core::option::Option<u64>,
23832        #[prost(uint64, optional, tag="5")]
23833        pub write_time_ms: ::core::option::Option<u64>,
23834        #[prost(uint64, optional, tag="6")]
23835        pub discard_sectors: ::core::option::Option<u64>,
23836        #[prost(uint64, optional, tag="7")]
23837        pub discard_time_ms: ::core::option::Option<u64>,
23838        #[prost(uint64, optional, tag="8")]
23839        pub flush_count: ::core::option::Option<u64>,
23840        #[prost(uint64, optional, tag="9")]
23841        pub flush_time_ms: ::core::option::Option<u64>,
23842    }
23843    /// Reading from /proc/pressure/*.
23844    #[derive(Clone, PartialEq, ::prost::Message)]
23845    pub struct PsiSample {
23846        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
23847        pub resource: ::core::option::Option<i32>,
23848        /// Total absolute stall time (in nanos) for a given resource.
23849        /// While PSI readings are in micros, we store in nanos for consistency with
23850        /// most other time-based counters.
23851        #[prost(uint64, optional, tag="2")]
23852        pub total_ns: ::core::option::Option<u64>,
23853    }
23854    /// Nested message and enum types in `PsiSample`.
23855    pub mod psi_sample {
23856        /// Type of resource that may have exhibited pressure stalls.
23857        ///     * _SOME indicates some resource tasks stalled.
23858        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
23859        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23860        #[repr(i32)]
23861        pub enum PsiResource {
23862            Unspecified = 0,
23863            CpuSome = 1,
23864            CpuFull = 2,
23865            IoSome = 3,
23866            IoFull = 4,
23867            MemorySome = 5,
23868            MemoryFull = 6,
23869        }
23870        impl PsiResource {
23871            /// String value of the enum field names used in the ProtoBuf definition.
23872            ///
23873            /// The values are not transformed in any way and thus are considered stable
23874            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23875            pub fn as_str_name(&self) -> &'static str {
23876                match self {
23877                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
23878                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
23879                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
23880                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
23881                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
23882                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
23883                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
23884                }
23885            }
23886        }
23887    }
23888    /// Reading from /sys/class/thermal/*.
23889    #[derive(Clone, PartialEq, ::prost::Message)]
23890    pub struct ThermalZone {
23891        #[prost(string, optional, tag="1")]
23892        pub name: ::core::option::Option<::prost::alloc::string::String>,
23893        #[prost(uint64, optional, tag="2")]
23894        pub temp: ::core::option::Option<u64>,
23895        #[prost(string, optional, tag="3")]
23896        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23897    }
23898    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
23899    #[derive(Clone, PartialEq, ::prost::Message)]
23900    pub struct CpuIdleStateEntry {
23901        /// Name of the idle state, e.g. C1-C10
23902        #[prost(string, optional, tag="1")]
23903        pub state: ::core::option::Option<::prost::alloc::string::String>,
23904        #[prost(uint64, optional, tag="2")]
23905        pub duration_us: ::core::option::Option<u64>,
23906    }
23907    #[derive(Clone, PartialEq, ::prost::Message)]
23908    pub struct CpuIdleState {
23909        #[prost(uint32, optional, tag="1")]
23910        pub cpu_id: ::core::option::Option<u32>,
23911        #[prost(message, repeated, tag="2")]
23912        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
23913    }
23914}
23915// End of protos/perfetto/trace/sys_stats/sys_stats.proto
23916
23917// Begin of protos/perfetto/trace/system_info/cpu_info.proto
23918
23919/// Information about CPUs from procfs and sysfs.
23920#[derive(Clone, PartialEq, ::prost::Message)]
23921pub struct CpuInfo {
23922    /// Describes available CPUs, one entry per CPU.
23923    #[prost(message, repeated, tag="1")]
23924    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
23925}
23926/// Nested message and enum types in `CpuInfo`.
23927pub mod cpu_info {
23928    #[derive(Clone, PartialEq, ::prost::Message)]
23929    pub struct ArmCpuIdentifier {
23930        /// Implementer code
23931        #[prost(uint32, optional, tag="1")]
23932        pub implementer: ::core::option::Option<u32>,
23933        /// Architecture code
23934        #[prost(uint32, optional, tag="2")]
23935        pub architecture: ::core::option::Option<u32>,
23936        /// CPU variant
23937        #[prost(uint32, optional, tag="3")]
23938        pub variant: ::core::option::Option<u32>,
23939        /// CPU part
23940        #[prost(uint32, optional, tag="4")]
23941        pub part: ::core::option::Option<u32>,
23942        /// CPU revision
23943        #[prost(uint32, optional, tag="5")]
23944        pub revision: ::core::option::Option<u32>,
23945    }
23946    /// Information about a single CPU.
23947    #[derive(Clone, PartialEq, ::prost::Message)]
23948    pub struct Cpu {
23949        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
23950        /// Example: "AArch64 Processor rev 12 (aarch64)"
23951        #[prost(string, optional, tag="1")]
23952        pub processor: ::core::option::Option<::prost::alloc::string::String>,
23953        /// Frequencies from
23954        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
23955        /// where X is the index of this CPU.
23956        #[prost(uint32, repeated, packed="false", tag="2")]
23957        pub frequencies: ::prost::alloc::vec::Vec<u32>,
23958        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
23959        /// the index of this CPU.
23960        #[prost(uint32, optional, tag="3")]
23961        pub capacity: ::core::option::Option<u32>,
23962        /// Features is a bitmap containing a bit set for each feature defined in
23963        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
23964        /// index.
23965        #[prost(uint64, optional, tag="5")]
23966        pub features: ::core::option::Option<u64>,
23967        /// Code to identify the CPU
23968        #[prost(oneof="cpu::Identifier", tags="4")]
23969        pub identifier: ::core::option::Option<cpu::Identifier>,
23970    }
23971    /// Nested message and enum types in `Cpu`.
23972    pub mod cpu {
23973        /// Code to identify the CPU
23974        #[derive(Clone, PartialEq, ::prost::Oneof)]
23975        pub enum Identifier {
23976            #[prost(message, tag="4")]
23977            ArmIdentifier(super::ArmCpuIdentifier),
23978        }
23979    }
23980}
23981// End of protos/perfetto/trace/system_info/cpu_info.proto
23982
23983// Begin of protos/perfetto/trace/system_info/gpu_info.proto
23984
23985/// Information about GPUs on the device.
23986#[derive(Clone, PartialEq, ::prost::Message)]
23987pub struct GpuInfo {
23988    /// Describes available GPUs, one entry per GPU. The index in the list
23989    /// corresponds to the gpu_id used elsewhere in the trace.
23990    #[prost(message, repeated, tag="1")]
23991    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
23992}
23993/// Nested message and enum types in `GpuInfo`.
23994pub mod gpu_info {
23995    /// Information about a single GPU.
23996    #[derive(Clone, PartialEq, ::prost::Message)]
23997    pub struct Gpu {
23998        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
23999        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
24000        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
24001        /// share the same name, consider appending an index to distinguish them
24002        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
24003        #[prost(string, optional, tag="1")]
24004        pub name: ::core::option::Option<::prost::alloc::string::String>,
24005        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
24006        #[prost(string, optional, tag="2")]
24007        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
24008        /// GPU model/product identifier.
24009        #[prost(string, optional, tag="3")]
24010        pub model: ::core::option::Option<::prost::alloc::string::String>,
24011        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
24012        #[prost(string, optional, tag="4")]
24013        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
24014        /// 16-byte device UUID when available.
24015        #[prost(bytes="vec", optional, tag="5")]
24016        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
24017        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
24018        #[prost(string, optional, tag="7")]
24019        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
24020        #[prost(message, repeated, tag="6")]
24021        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
24022    }
24023    /// Nested message and enum types in `Gpu`.
24024    pub mod gpu {
24025        /// Arbitrary key-value pairs for vendor-specific info
24026        /// (driver version, memory size, compute capability, clock speeds, etc.).
24027        #[derive(Clone, PartialEq, ::prost::Message)]
24028        pub struct KeyValue {
24029            #[prost(string, optional, tag="1")]
24030            pub key: ::core::option::Option<::prost::alloc::string::String>,
24031            #[prost(string, optional, tag="2")]
24032            pub value: ::core::option::Option<::prost::alloc::string::String>,
24033        }
24034    }
24035}
24036// End of protos/perfetto/trace/system_info/gpu_info.proto
24037
24038// Begin of protos/perfetto/trace/test_event.proto
24039
24040/// Event used by testing code.
24041#[derive(Clone, PartialEq, ::prost::Message)]
24042pub struct TestEvent {
24043    /// Arbitrary string used in tests.
24044    #[prost(string, optional, tag="1")]
24045    pub str: ::core::option::Option<::prost::alloc::string::String>,
24046    /// The current value of the random number sequence used in tests.
24047    #[prost(uint32, optional, tag="2")]
24048    pub seq_value: ::core::option::Option<u32>,
24049    /// Monotonically increased on each packet.
24050    #[prost(uint64, optional, tag="3")]
24051    pub counter: ::core::option::Option<u64>,
24052    /// No more packets should follow (from the current sequence).
24053    #[prost(bool, optional, tag="4")]
24054    pub is_last: ::core::option::Option<bool>,
24055    #[prost(message, optional, tag="5")]
24056    pub payload: ::core::option::Option<test_event::TestPayload>,
24057    #[prost(message, optional, tag="6")]
24058    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
24059    #[prost(message, optional, tag="7")]
24060    pub protovm_incremental_state: ::core::option::Option<test_event::ProtoVmIncrementalState>,
24061}
24062/// Nested message and enum types in `TestEvent`.
24063pub mod test_event {
24064    #[derive(Clone, PartialEq, ::prost::Message)]
24065    pub struct TestPayload {
24066        #[prost(string, repeated, tag="1")]
24067        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24068        #[prost(message, repeated, tag="2")]
24069        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
24070        #[prost(string, optional, tag="4")]
24071        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
24072        #[prost(int32, optional, tag="5")]
24073        pub single_int: ::core::option::Option<i32>,
24074        #[prost(int32, repeated, packed="false", tag="6")]
24075        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
24076        /// When 0 this is the bottom-most nested message.
24077        #[prost(uint32, optional, tag="3")]
24078        pub remaining_nesting_depth: ::core::option::Option<u32>,
24079        #[prost(message, repeated, tag="7")]
24080        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
24081    }
24082    /// Simple ProtoVm patch and incremental state formats used for integration
24083    /// testing
24084    #[derive(Clone, PartialEq, ::prost::Message)]
24085    pub struct ProtoVmPatch {
24086        #[prost(string, optional, tag="1")]
24087        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
24088        #[prost(int32, optional, tag="2")]
24089        pub int_to_merge: ::core::option::Option<i32>,
24090    }
24091    #[derive(Clone, PartialEq, ::prost::Message)]
24092    pub struct ProtoVmIncrementalState {
24093        #[prost(string, optional, tag="1")]
24094        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
24095        #[prost(int32, optional, tag="2")]
24096        pub int_merged: ::core::option::Option<i32>,
24097    }
24098}
24099// End of protos/perfetto/trace/test_event.proto
24100
24101// Begin of protos/perfetto/trace/trace_packet_defaults.proto
24102
24103/// Default values for TracePacket fields that hold for a particular TraceWriter
24104/// packet sequence. This message contains a subset of the TracePacket fields
24105/// with matching IDs. When provided, these fields define the default values
24106/// that should be applied, at import time, to all TracePacket(s) with the same
24107/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
24108///
24109/// Should be reemitted whenever incremental state is cleared on the sequence.
24110#[derive(Clone, PartialEq, ::prost::Message)]
24111pub struct TracePacketDefaults {
24112    #[prost(uint32, optional, tag="58")]
24113    pub timestamp_clock_id: ::core::option::Option<u32>,
24114    /// Default values for TrackEvents (e.g. default track).
24115    #[prost(message, optional, tag="11")]
24116    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
24117    /// Defaults for perf profiler packets (PerfSample).
24118    #[prost(message, optional, tag="12")]
24119    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
24120    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
24121    /// V8RegexpCode)
24122    #[prost(message, optional, tag="99")]
24123    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
24124}
24125// Begin of protos/perfetto/trace/trace_uuid.proto
24126
24127/// A random unique ID that identifies the trace.
24128/// This message has been introduced in v32. Prior to that, the UUID was
24129/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
24130/// This has been moved to a standalone packet to deal with new use-cases for
24131/// go/gapless-aot, where the same tracing session can be serialized several
24132/// times, in which case the UUID is changed on each snapshot and does not match
24133/// the one in the TraceConfig.
24134#[derive(Clone, PartialEq, ::prost::Message)]
24135pub struct TraceUuid {
24136    #[prost(int64, optional, tag="1")]
24137    pub msb: ::core::option::Option<i64>,
24138    #[prost(int64, optional, tag="2")]
24139    pub lsb: ::core::option::Option<i64>,
24140}
24141// End of protos/perfetto/trace/trace_uuid.proto
24142
24143// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
24144
24145/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
24146/// usually by the process's main thread.
24147///
24148/// Next id: 9.
24149#[derive(Clone, PartialEq, ::prost::Message)]
24150pub struct ProcessDescriptor {
24151    #[prost(int32, optional, tag="1")]
24152    pub pid: ::core::option::Option<i32>,
24153    #[prost(string, repeated, tag="2")]
24154    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24155    #[prost(string, optional, tag="6")]
24156    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
24157    #[prost(int32, optional, tag="5")]
24158    pub process_priority: ::core::option::Option<i32>,
24159    /// Process start time in nanoseconds.
24160    /// The timestamp refers to the trace clock by default. Other clock IDs
24161    /// provided in TracePacket are not supported.
24162    #[prost(int64, optional, tag="7")]
24163    pub start_timestamp_ns: ::core::option::Option<i64>,
24164    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
24165    pub chrome_process_type: ::core::option::Option<i32>,
24166    /// To support old UI. New UI should determine default sorting by process_type.
24167    #[prost(int32, optional, tag="3")]
24168    pub legacy_sort_index: ::core::option::Option<i32>,
24169    /// Labels can be used to further describe properties of the work performed by
24170    /// the process. For example, these can be used by Chrome renderer process to
24171    /// provide titles of frames being rendered.
24172    #[prost(string, repeated, tag="8")]
24173    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24174}
24175/// Nested message and enum types in `ProcessDescriptor`.
24176pub mod process_descriptor {
24177    // ---------------------------------------------------------------------------
24178    // Deprecated / legacy fields, which will be removed in the future:
24179    // ---------------------------------------------------------------------------
24180
24181    /// See chromium's content::ProcessType.
24182    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24183    #[repr(i32)]
24184    pub enum ChromeProcessType {
24185        ProcessUnspecified = 0,
24186        ProcessBrowser = 1,
24187        ProcessRenderer = 2,
24188        ProcessUtility = 3,
24189        ProcessZygote = 4,
24190        ProcessSandboxHelper = 5,
24191        ProcessGpu = 6,
24192        ProcessPpapiPlugin = 7,
24193        ProcessPpapiBroker = 8,
24194    }
24195    impl ChromeProcessType {
24196        /// String value of the enum field names used in the ProtoBuf definition.
24197        ///
24198        /// The values are not transformed in any way and thus are considered stable
24199        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24200        pub fn as_str_name(&self) -> &'static str {
24201            match self {
24202                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
24203                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
24204                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
24205                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
24206                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
24207                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
24208                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
24209                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
24210                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
24211            }
24212        }
24213    }
24214}
24215// End of protos/perfetto/trace/track_event/process_descriptor.proto
24216
24217// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
24218
24219/// This message specifies the "range of interest" for track events. With the
24220/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
24221/// Trace Processor drops track events outside of this range.
24222#[derive(Clone, PartialEq, ::prost::Message)]
24223pub struct TrackEventRangeOfInterest {
24224    #[prost(int64, optional, tag="1")]
24225    pub start_us: ::core::option::Option<i64>,
24226}
24227// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
24228
24229/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
24230/// usually by the thread's trace writer.
24231///
24232/// Next id: 9.
24233#[derive(Clone, PartialEq, ::prost::Message)]
24234pub struct ThreadDescriptor {
24235    #[prost(int32, optional, tag="1")]
24236    pub pid: ::core::option::Option<i32>,
24237    #[prost(int64, optional, tag="2")]
24238    pub tid: ::core::option::Option<i64>,
24239    #[prost(string, optional, tag="5")]
24240    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
24241    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
24242    pub chrome_thread_type: ::core::option::Option<i32>,
24243    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
24244    /// and timestamp_clock_id fields instead.
24245    #[prost(int64, optional, tag="6")]
24246    pub reference_timestamp_us: ::core::option::Option<i64>,
24247    /// Absolute reference values. Clock values in subsequent TrackEvents can be
24248    /// encoded accumulatively and relative to these. This reduces their var-int
24249    /// encoding size.
24250    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
24251    #[prost(int64, optional, tag="7")]
24252    pub reference_thread_time_us: ::core::option::Option<i64>,
24253    #[prost(int64, optional, tag="8")]
24254    pub reference_thread_instruction_count: ::core::option::Option<i64>,
24255    /// To support old UI. New UI should determine default sorting by thread_type.
24256    #[prost(int32, optional, tag="3")]
24257    pub legacy_sort_index: ::core::option::Option<i32>,
24258}
24259/// Nested message and enum types in `ThreadDescriptor`.
24260pub mod thread_descriptor {
24261    // ---------------------------------------------------------------------------
24262    // Deprecated / legacy fields, which will be removed in the future:
24263    // ---------------------------------------------------------------------------
24264
24265    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24266    #[repr(i32)]
24267    pub enum ChromeThreadType {
24268        ChromeThreadUnspecified = 0,
24269        ChromeThreadMain = 1,
24270        ChromeThreadIo = 2,
24271        /// Scheduler:
24272        ChromeThreadPoolBgWorker = 3,
24273        ChromeThreadPoolFgWorker = 4,
24274        ChromeThreadPoolFbBlocking = 5,
24275        ChromeThreadPoolBgBlocking = 6,
24276        ChromeThreadPoolService = 7,
24277        /// Compositor:
24278        ChromeThreadCompositor = 8,
24279        ChromeThreadVizCompositor = 9,
24280        ChromeThreadCompositorWorker = 10,
24281        /// Renderer:
24282        ChromeThreadServiceWorker = 11,
24283        /// Tracing related threads:
24284        ChromeThreadMemoryInfra = 50,
24285        ChromeThreadSamplingProfiler = 51,
24286    }
24287    impl ChromeThreadType {
24288        /// String value of the enum field names used in the ProtoBuf definition.
24289        ///
24290        /// The values are not transformed in any way and thus are considered stable
24291        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24292        pub fn as_str_name(&self) -> &'static str {
24293            match self {
24294                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
24295                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
24296                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
24297                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
24298                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
24299                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
24300                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
24301                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
24302                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
24303                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
24304                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
24305                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
24306                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
24307                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
24308            }
24309        }
24310    }
24311}
24312// End of protos/perfetto/trace/track_event/thread_descriptor.proto
24313
24314// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
24315
24316/// Describes the attributes for a Chrome process. Must be paired with a
24317/// ProcessDescriptor in the same TrackDescriptor.
24318///
24319/// Next id: 6.
24320#[derive(Clone, PartialEq, ::prost::Message)]
24321pub struct ChromeProcessDescriptor {
24322    /// This is a chrome_enums::ProcessType from
24323    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
24324    /// be imported here because of a dependency loop.
24325    #[prost(int32, optional, tag="1")]
24326    pub process_type: ::core::option::Option<i32>,
24327    #[prost(int32, optional, tag="2")]
24328    pub process_priority: ::core::option::Option<i32>,
24329    /// To support old UI. New UI should determine default sorting by process_type.
24330    #[prost(int32, optional, tag="3")]
24331    pub legacy_sort_index: ::core::option::Option<i32>,
24332    /// Name of the hosting app for WebView. Used to match renderer processes to
24333    /// their hosting apps.
24334    #[prost(string, optional, tag="4")]
24335    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
24336    /// The ID to link crashes to trace.
24337    /// Notes:
24338    /// * The ID is per process. So, each trace may contain many IDs, and you need
24339    ///    to look for the ID from crashed process to find the crash report.
24340    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
24341    ///    get an uploaded trace, since uploads could have failed.
24342    /// * On the other hand, if there was a crash during the session and trace was
24343    ///    uploaded, it is very likely to find a crash report with the trace ID.
24344    /// * This is not crash ID or trace ID. It is just a random 64-bit number
24345    ///    recorded in both traces and crashes. It is possible to have collisions,
24346    ///    though very rare.
24347    #[prost(uint64, optional, tag="5")]
24348    pub crash_trace_id: ::core::option::Option<u64>,
24349}
24350// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
24351
24352// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
24353
24354/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
24355/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
24356/// in the same TrackDescriptor.
24357///
24358/// Next id: 3.
24359#[derive(Clone, PartialEq, ::prost::Message)]
24360pub struct ChromeThreadDescriptor {
24361    /// This is a chrome_enums::ThreadType from
24362    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
24363    /// be imported here because of a dependency loop.
24364    #[prost(int32, optional, tag="1")]
24365    pub thread_type: ::core::option::Option<i32>,
24366    /// To support old UI. New UI should determine default sorting by thread_type.
24367    #[prost(int32, optional, tag="2")]
24368    pub legacy_sort_index: ::core::option::Option<i32>,
24369    /// Indicates whether the thread's tid specified in the thread descriptor is
24370    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
24371    #[prost(bool, optional, tag="3")]
24372    pub is_sandboxed_tid: ::core::option::Option<bool>,
24373}
24374// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
24375
24376// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
24377
24378/// Defines properties of a counter track, e.g. for built-in counters (thread
24379/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
24380/// a specific app component).
24381///
24382/// Counter tracks only support TYPE_COUNTER track events, which specify new
24383/// values for the counter. For counters that require per-slice values, counter
24384/// values can instead be provided in a more efficient encoding via TrackEvent's
24385/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
24386/// slice-type events cannot be emitted onto a counter track.
24387///
24388/// Values for counters that are only emitted on a single packet sequence can
24389/// optionally be delta-encoded, see |is_incremental|.
24390///
24391/// Next id: 7.
24392#[derive(Clone, PartialEq, ::prost::Message)]
24393pub struct CounterDescriptor {
24394    /// For built-in counters (e.g. thread time). Custom user-specified counters
24395    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
24396    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
24397    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
24398    pub r#type: ::core::option::Option<i32>,
24399    /// Names of categories of the counter (usually for user-specified counters).
24400    /// In the client library, categories are a way to turn groups of individual
24401    /// counters (or events) on or off.
24402    #[prost(string, repeated, tag="2")]
24403    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24404    /// Type of the counter's values. Built-in counters imply a value for this
24405    /// field.
24406    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
24407    pub unit: ::core::option::Option<i32>,
24408    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
24409    /// name can be used instead.
24410    #[prost(string, optional, tag="6")]
24411    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
24412    /// Multiplication factor of this counter's values, e.g. to supply
24413    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
24414    #[prost(int64, optional, tag="4")]
24415    pub unit_multiplier: ::core::option::Option<i64>,
24416    /// Whether values for this counter are provided as delta values. Only
24417    /// supported for counters that are emitted on a single packet-sequence (e.g.
24418    /// thread time). Counter values in subsequent packets on the current packet
24419    /// sequence will be interpreted as delta values from the sequence's most
24420    /// recent value for the counter. When incremental state is cleared, the
24421    /// counter value is considered to be reset to 0. Thus, the first value after
24422    /// incremental state is cleared is effectively an absolute value.
24423    #[prost(bool, optional, tag="5")]
24424    pub is_incremental: ::core::option::Option<bool>,
24425    // TODO(eseckler): Support arguments describing the counter (?).
24426    // repeated DebugAnnotation debug_annotations;
24427
24428    /// When visualizing multiple counter tracks, it is often useful to have them
24429    /// share the same Y-axis range. This allows for easy comparison of their
24430    /// values.
24431    ///
24432    /// All counter tracks with the same |y_axis_share_key| and the same parent
24433    /// track (e.g. grouped under the same process track) will share their y-axis
24434    /// range in the UI.
24435    #[prost(string, optional, tag="7")]
24436    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
24437}
24438/// Nested message and enum types in `CounterDescriptor`.
24439pub mod counter_descriptor {
24440    /// Built-in counters, usually with special meaning in the client library,
24441    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
24442    /// track name from the enum value if none is provided in TrackDescriptor.
24443    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24444    #[repr(i32)]
24445    pub enum BuiltinCounterType {
24446        CounterUnspecified = 0,
24447        // Thread-scoped counters. The thread's track should be specified via
24448        // |parent_uuid| in the TrackDescriptor for such a counter.
24449
24450        /// implies UNIT_TIME_NS.
24451        CounterThreadTimeNs = 1,
24452        /// implies UNIT_COUNT.
24453        CounterThreadInstructionCount = 2,
24454    }
24455    impl BuiltinCounterType {
24456        /// String value of the enum field names used in the ProtoBuf definition.
24457        ///
24458        /// The values are not transformed in any way and thus are considered stable
24459        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24460        pub fn as_str_name(&self) -> &'static str {
24461            match self {
24462                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
24463                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
24464                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
24465            }
24466        }
24467    }
24468    /// Type of the values for the counters - to supply lower granularity units,
24469    /// see also |unit_multiplier|.
24470    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24471    #[repr(i32)]
24472    pub enum Unit {
24473        Unspecified = 0,
24474        TimeNs = 1,
24475        Count = 2,
24476        /// TODO(eseckler): Support more units as necessary.
24477        SizeBytes = 3,
24478    }
24479    impl Unit {
24480        /// String value of the enum field names used in the ProtoBuf definition.
24481        ///
24482        /// The values are not transformed in any way and thus are considered stable
24483        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24484        pub fn as_str_name(&self) -> &'static str {
24485            match self {
24486                Unit::Unspecified => "UNIT_UNSPECIFIED",
24487                Unit::TimeNs => "UNIT_TIME_NS",
24488                Unit::Count => "UNIT_COUNT",
24489                Unit::SizeBytes => "UNIT_SIZE_BYTES",
24490            }
24491        }
24492    }
24493}
24494// End of protos/perfetto/trace/track_event/counter_descriptor.proto
24495
24496// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
24497
24498/// Defines a track for TrackEvents. Slices and instant events on the same track
24499/// will be nested based on their timestamps, see TrackEvent::Type.
24500///
24501/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
24502/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
24503/// when the ring buffer wraps, it should be reemitted whenever incremental state
24504/// is cleared.
24505///
24506/// As a fallback, TrackEvents emitted without an explicit track association will
24507/// be associated with an implicit trace-global track (uuid = 0), see also
24508/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
24509/// TrackDescriptor for this implicit track.
24510///
24511/// Next id: 18.
24512#[derive(Clone, PartialEq, ::prost::Message)]
24513pub struct TrackDescriptor {
24514    /// Unique ID that identifies this track. This ID is global to the whole trace.
24515    /// Producers should ensure that it is unlikely to clash with IDs emitted by
24516    /// other producers. A value of 0 denotes the implicit trace-global track.
24517    ///
24518    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
24519    /// event id + id_scope, pid, and/or tid to compute this ID.
24520    #[prost(uint64, optional, tag="1")]
24521    pub uuid: ::core::option::Option<u64>,
24522    /// A parent track reference can be used to describe relationships between
24523    /// tracks. For example, to define an asynchronous track which is scoped to a
24524    /// specific process, specify the uuid for that process's process track here.
24525    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
24526    /// thread, specify the uuid for that thread's thread track here. In general,
24527    /// setting a parent will *nest* that track under the parent in the UI and in
24528    /// the trace processor data model (with the important exception noted below).
24529    ///
24530    /// If not specified, the track will be a root track, i.e. not nested under any
24531    /// other track.
24532    ///
24533    /// Note: if the `thread` or `process` fields are set, this value will be
24534    /// *ignored* as priority is given to those fields.
24535    ///
24536    /// Note: if the parent is set to a track with `thread` or `process` fields
24537    /// set, the track will *not* be nested under the parent in the UI and in the
24538    /// trace processor data model. Instead, the track will inherit the parent's
24539    /// thread/process association and will appear as a *sibling* of the parent.
24540    /// This semantic exists for back-compat reasons as the UI used to work this
24541    /// way for years and changing this leads to a lot of traces subtly breaking.
24542    /// If you want to force nesting, create *another* intermediate track to act as
24543    /// the parent.
24544    #[prost(uint64, optional, tag="5")]
24545    pub parent_uuid: ::core::option::Option<u64>,
24546    /// A human-readable description of the track providing more context about its
24547    /// data. In the UI, this is shown in a popup when the track's help button is
24548    /// clicked.
24549    #[prost(string, optional, tag="14")]
24550    pub description: ::core::option::Option<::prost::alloc::string::String>,
24551    /// Associate the track with a process, making it the process-global track.
24552    /// There should only be one such track per process (usually for instant
24553    /// events; trace processor uses this fact to detect pid reuse). If you need
24554    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
24555    ///
24556    /// Trace processor will merge events on a process track with slice-type events
24557    /// from other sources (e.g. ftrace) for the same process into a single
24558    /// timeline view.
24559    #[prost(message, optional, tag="3")]
24560    pub process: ::core::option::Option<ProcessDescriptor>,
24561    #[prost(message, optional, tag="6")]
24562    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
24563    /// Associate the track with a thread, indicating that the track's events
24564    /// describe synchronous code execution on the thread. There should only be one
24565    /// such track per thread (trace processor uses this fact to detect tid reuse).
24566    ///
24567    /// Trace processor will merge events on a thread track with slice-type events
24568    /// from other sources (e.g. ftrace) for the same thread into a single timeline
24569    /// view.
24570    #[prost(message, optional, tag="4")]
24571    pub thread: ::core::option::Option<ThreadDescriptor>,
24572    #[prost(message, optional, tag="7")]
24573    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
24574    /// Descriptor for a counter track. If set, the track will only support
24575    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
24576    /// |extra_counter_values|).
24577    #[prost(message, optional, tag="8")]
24578    pub counter: ::core::option::Option<CounterDescriptor>,
24579    /// If true, forces Trace Processor to use separate tracks for track events
24580    /// and system events for the same thread.
24581    ///
24582    /// Track events timestamps in Chrome have microsecond resolution, while
24583    /// system events use nanoseconds. It results in broken event nesting when
24584    /// track events and system events share a track.
24585    #[prost(bool, optional, tag="9")]
24586    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
24587    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
24588    pub child_ordering: ::core::option::Option<i32>,
24589    /// An opaque value which allows specifying how two sibling tracks should be
24590    /// ordered relative to each other: tracks with lower ranks will appear before
24591    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
24592    /// 0.
24593    ///
24594    /// Note: this option is only relevant for tracks where the parent has
24595    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
24596    ///
24597    /// Note: for tracks where the parent has `thread` or `process` are set, this
24598    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
24599    /// See `parent_uuid` for details.
24600    #[prost(int32, optional, tag="12")]
24601    pub sibling_order_rank: ::core::option::Option<i32>,
24602    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
24603    pub sibling_merge_behavior: ::core::option::Option<i32>,
24604    /// Name of the track.
24605    ///
24606    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24607    /// emitted before any `TrackEvent`s on the same track.
24608    ///
24609    /// Note: any name specified here will be *ignored* for the root thread scoped
24610    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24611    /// case, the name of the track is shared by many different data sources and so
24612    /// is centrally controlled by trace processor.
24613    ///
24614    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24615    /// a descriptor *has* to be emitted multiple times (e.g. between different
24616    /// processes), it's recommended to ensure that the name is consistent across
24617    /// all TrackDescriptors with the same `uuid`.
24618    ///
24619    /// If the the above recommendation is not followed and the same uuid is
24620    /// emitted with different names, it is implementation defined how the final
24621    /// name will be chosen and may change at any time.
24622    ///
24623    /// The current implementation of trace processor chooses the name in the
24624    /// following way, depending on the value of the `sibling_merge_behavior`
24625    /// field:
24626    ///
24627    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24628    ///    * The *last* non-null name in the whole trace according to trace order
24629    ///      will be used.
24630    ///    * If no non-null name is present in the whole trace, the trace processor
24631    ///      may fall back to other sources to provide a name for the track (e.g.
24632    ///      the first event name for slice tracks, the counter name for counter
24633    ///      tracks). This is implementation defined and may change at any time.
24634    ///
24635    /// 2. If `sibling_merge_behavior` is set to any other value:
24636    ///    * The first non-null name before the first event on the track *or on any
24637    ///      descendant tracks* is processed will be used. For example, consider
24638    ///      the following sequence of events:
24639    ///        ts=100: TrackDescriptor(uuid=A)
24640    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24641    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24642    ///        ts=400: TrackEvent(track_uuid=B)
24643    ///      In this case, the name for track A will be "Track A" because the
24644    ///      descriptor with the name was emitted before the first event on a
24645    ///      descendant track (B).
24646    ///    * If no non-null name is present before the event is processed, the trace
24647    ///      processor may fall back to other sources to provide a name for the
24648    ///      track (e.g. the first event name for slice tracks, the counter name for
24649    ///      counter tracks). This is implementation defined and may change at any
24650    ///      time.
24651    ///    * Note on processing order: In the standard trace processor pipeline,
24652    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24653    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24654    ///      track, all its descriptors in the trace are processed before its
24655    ///      events. Consequently, the "first non-null name before the first event"
24656    ///      will be the name from the first `TrackDescriptor` for that track in the
24657    ///      trace file that has a non-null name. However, in a streaming parsing
24658    ///      scenario, the timestamp order of descriptors and events is significant,
24659    ///      and a descriptor arriving after an event has been processed will not be
24660    ///      used to name the track.
24661    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
24662    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
24663    /// An opaque value which allows specifying which tracks should be merged
24664    /// together.
24665    ///
24666    /// Only meaningful when `sibling_merge_behavior` is set to
24667    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24668    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
24669    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
24670}
24671/// Nested message and enum types in `TrackDescriptor`.
24672pub mod track_descriptor {
24673    /// Specifies how the UI should display child tracks of this track (i.e. tracks
24674    /// where `parent_uuid` is specified to this track `uuid`). Note that this
24675    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
24676    /// this if it has a good reason not to do so.
24677    ///
24678    /// Note: for tracks where `thread` or `process` are set, this option is
24679    /// *ignored*. See `parent_uuid` for details.
24680    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24681    #[repr(i32)]
24682    pub enum ChildTracksOrdering {
24683        /// The default ordering, with no bearing on how the UI will visualise the
24684        /// tracks.
24685        Unknown = 0,
24686        /// Order tracks by `name` or `static_name` depending on which one has been
24687        /// specified.
24688        Lexicographic = 1,
24689        /// Order tracks by the first `ts` event in a track.
24690        Chronological = 2,
24691        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
24692        /// the lower values will be shown before tracks with higher values. Tracks
24693        /// with no value will be treated as having 0 rank.
24694        Explicit = 3,
24695    }
24696    impl ChildTracksOrdering {
24697        /// String value of the enum field names used in the ProtoBuf definition.
24698        ///
24699        /// The values are not transformed in any way and thus are considered stable
24700        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24701        pub fn as_str_name(&self) -> &'static str {
24702            match self {
24703                ChildTracksOrdering::Unknown => "UNKNOWN",
24704                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
24705                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
24706                ChildTracksOrdering::Explicit => "EXPLICIT",
24707            }
24708        }
24709    }
24710    /// Specifies how the analysis tools should "merge" different sibling
24711    /// TrackEvent tracks.
24712    ///
24713    /// For two or more tracks to be merged, they must be "eligible" siblings.
24714    /// Eligibility is determined by the following rules:
24715    /// 1. All tracks must have the same parent.
24716    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
24717    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
24718    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24719    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
24720    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
24721    ///
24722    /// Specifically:
24723    ///    - in the UI, all tracks which are merged together will be
24724    ///      displayed as a single "visual" track.
24725    ///    - in the trace processor, all tracks which are merged together will be
24726    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
24727    ///      of tracks which have an active event at the same time.
24728    ///
24729    /// When tracks are merged togther, the properties for the merged track will be
24730    /// chosen from the source tracks based on the following rules:
24731    ///    - for `sibling_order_rank`: the rank of the merged track will be the
24732    ///      smallest rank among the source tracks.
24733    ///    - for all other properties: the property taken is unspecified and can
24734    ///      be any value provided by one of the source tracks. This can lead to
24735    ///      non-deterministic behavior.
24736    ///       - examples of other properties include `name`, `child_ordering` etc.
24737    ///       - because of this, it's strongly recommended to ensure that all source
24738    ///         tracks have the same value for these properties.
24739    ///       - the trace processor will also emit an error stat if it detects
24740    ///         that the properties are not the same across all source tracks.
24741    ///
24742    /// Note: merging is done *recursively* so entire trees of tracks can be merged
24743    /// together. To make this clearer, consider an example track hierarchy (in
24744    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
24745    /// track line, like "Updater", is its 'name' property):
24746    ///
24747    ///    Initial track hierarchy:
24748    ///      SystemActivity
24749    ///      ├── AuthService (smk: "auth_main_cluster")
24750    ///      │   └── LoginOp (smk: "login_v1")
24751    ///      ├── AuthService (smk: "auth_main_cluster")
24752    ///      │   └── LoginOp (smk: "login_v1")
24753    ///      ├── AuthService (smk: "auth_backup_cluster")
24754    ///      │   └── GuestOp (smk: "guest_v1")
24755    ///      └── UserProfileService (smk: "profile_cluster")
24756    ///          └── GetProfileOp (smk: "getprofile_v1")
24757    ///
24758    /// Merging outcomes:
24759    ///
24760    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
24761    ///    - The first two "AuthService" tracks merge because they share
24762    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
24763    ///      aligning with recommendations. The merged track is named "AuthService".
24764    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
24765    ///      remains separate, as its `sibling_merge_key` is different.
24766    ///    - "UserProfileService" also remains separate.
24767    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
24768    ///      "LoginOp" get merged as they have the same sibling merge key.
24769    ///
24770    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
24771    ///      SystemActivity
24772    ///      ├── AuthService (merged by smk: "auth_main_cluster")
24773    ///      │   ├── LoginOp (merged by smk: "login_v1")
24774    ///      ├── AuthService (smk: "auth_backup_cluster")
24775    ///      │   └── GuestOp (smk: "guest_v1")
24776    ///      └── UserProfileService (smk: "profile_cluster")
24777    ///          └── GetProfileOp (smk: "getprofile_v1")
24778    ///
24779    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
24780    ///    - All three tracks named "AuthService" merge because they share the same
24781    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
24782    ///      for this merged track would be taken from one of the source tracks
24783    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
24784    ///      relevant if its children had key-based merge behaviors.
24785    ///    - "UserProfileService" remains separate due to its different name.
24786    ///    - Within the single merged "AuthService" track:
24787    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
24788    ///      they have the same name.
24789    ///
24790    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
24791    ///      SystemActivity
24792    ///      ├── AuthService (merged from 3 "AuthService" tracks)
24793    ///      │   ├── LoginOp (smk: "login_v1")
24794    ///      │   └── GuestOp (smk: "guest_v1")
24795    ///      └── UserProfileService (smk: "profile_cluster")
24796    ///          └── GetProfileOp (smk: "getprofile_v1")
24797    ///
24798    /// Note: for tracks where `thread` or `process` are set, this option is
24799    /// *ignored*. See `parent_uuid` for details.
24800    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24801    #[repr(i32)]
24802    pub enum SiblingMergeBehavior {
24803        /// When unspecified or not set, defaults to
24804        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24805        Unspecified = 0,
24806        /// Merge this track with eligible siblings which have the same `name`.
24807        ///
24808        /// This is the default behavior.option.
24809        ///
24810        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
24811        /// worked this way for years and inherited this behavior from
24812        /// chrome://tracing which has worked this way for even longer
24813        ByTrackName = 1,
24814        /// Never merge this track with any siblings. Useful if if this track has a
24815        /// specific meaning and you want to see separately from any others.
24816        None = 2,
24817        /// Merge this track with eligible siblings which have the same
24818        /// `sibling_merge_key`.
24819        BySiblingMergeKey = 3,
24820    }
24821    impl SiblingMergeBehavior {
24822        /// String value of the enum field names used in the ProtoBuf definition.
24823        ///
24824        /// The values are not transformed in any way and thus are considered stable
24825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24826        pub fn as_str_name(&self) -> &'static str {
24827            match self {
24828                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
24829                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
24830                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
24831                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
24832            }
24833        }
24834    }
24835    /// Name of the track.
24836    ///
24837    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24838    /// emitted before any `TrackEvent`s on the same track.
24839    ///
24840    /// Note: any name specified here will be *ignored* for the root thread scoped
24841    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24842    /// case, the name of the track is shared by many different data sources and so
24843    /// is centrally controlled by trace processor.
24844    ///
24845    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24846    /// a descriptor *has* to be emitted multiple times (e.g. between different
24847    /// processes), it's recommended to ensure that the name is consistent across
24848    /// all TrackDescriptors with the same `uuid`.
24849    ///
24850    /// If the the above recommendation is not followed and the same uuid is
24851    /// emitted with different names, it is implementation defined how the final
24852    /// name will be chosen and may change at any time.
24853    ///
24854    /// The current implementation of trace processor chooses the name in the
24855    /// following way, depending on the value of the `sibling_merge_behavior`
24856    /// field:
24857    ///
24858    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24859    ///    * The *last* non-null name in the whole trace according to trace order
24860    ///      will be used.
24861    ///    * If no non-null name is present in the whole trace, the trace processor
24862    ///      may fall back to other sources to provide a name for the track (e.g.
24863    ///      the first event name for slice tracks, the counter name for counter
24864    ///      tracks). This is implementation defined and may change at any time.
24865    ///
24866    /// 2. If `sibling_merge_behavior` is set to any other value:
24867    ///    * The first non-null name before the first event on the track *or on any
24868    ///      descendant tracks* is processed will be used. For example, consider
24869    ///      the following sequence of events:
24870    ///        ts=100: TrackDescriptor(uuid=A)
24871    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24872    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24873    ///        ts=400: TrackEvent(track_uuid=B)
24874    ///      In this case, the name for track A will be "Track A" because the
24875    ///      descriptor with the name was emitted before the first event on a
24876    ///      descendant track (B).
24877    ///    * If no non-null name is present before the event is processed, the trace
24878    ///      processor may fall back to other sources to provide a name for the
24879    ///      track (e.g. the first event name for slice tracks, the counter name for
24880    ///      counter tracks). This is implementation defined and may change at any
24881    ///      time.
24882    ///    * Note on processing order: In the standard trace processor pipeline,
24883    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24884    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24885    ///      track, all its descriptors in the trace are processed before its
24886    ///      events. Consequently, the "first non-null name before the first event"
24887    ///      will be the name from the first `TrackDescriptor` for that track in the
24888    ///      trace file that has a non-null name. However, in a streaming parsing
24889    ///      scenario, the timestamp order of descriptors and events is significant,
24890    ///      and a descriptor arriving after an event has been processed will not be
24891    ///      used to name the track.
24892    #[derive(Clone, PartialEq, ::prost::Oneof)]
24893    pub enum StaticOrDynamicName {
24894        #[prost(string, tag="2")]
24895        Name(::prost::alloc::string::String),
24896        /// This field is only set by the SDK when perfetto::StaticString is
24897        /// provided.
24898        #[prost(string, tag="10")]
24899        StaticName(::prost::alloc::string::String),
24900        /// Equivalent to name, used just to mark that the data is coming from
24901        /// android.os.Trace.
24902        #[prost(string, tag="13")]
24903        AtraceName(::prost::alloc::string::String),
24904    }
24905    /// An opaque value which allows specifying which tracks should be merged
24906    /// together.
24907    ///
24908    /// Only meaningful when `sibling_merge_behavior` is set to
24909    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24910    #[derive(Clone, PartialEq, ::prost::Oneof)]
24911    pub enum SiblingMergeKeyField {
24912        #[prost(string, tag="16")]
24913        SiblingMergeKey(::prost::alloc::string::String),
24914        #[prost(uint64, tag="17")]
24915        SiblingMergeKeyInt(u64),
24916    }
24917}
24918// End of protos/perfetto/trace/track_event/track_descriptor.proto
24919
24920// Begin of protos/perfetto/trace/translation/translation_table.proto
24921
24922/// Translation rules for the trace processor.
24923/// See the comments for each rule type for specific meaning.
24924#[derive(Clone, PartialEq, ::prost::Message)]
24925pub struct TranslationTable {
24926    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
24927    pub table: ::core::option::Option<translation_table::Table>,
24928}
24929/// Nested message and enum types in `TranslationTable`.
24930pub mod translation_table {
24931    #[derive(Clone, PartialEq, ::prost::Oneof)]
24932    pub enum Table {
24933        #[prost(message, tag="1")]
24934        ChromeHistogram(super::ChromeHistorgramTranslationTable),
24935        #[prost(message, tag="2")]
24936        ChromeUserEvent(super::ChromeUserEventTranslationTable),
24937        #[prost(message, tag="3")]
24938        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
24939        #[prost(message, tag="4")]
24940        SliceName(super::SliceNameTranslationTable),
24941        #[prost(message, tag="5")]
24942        ProcessTrackName(super::ProcessTrackNameTranslationTable),
24943        #[prost(message, tag="6")]
24944        ChromeStudy(super::ChromeStudyTranslationTable),
24945    }
24946}
24947/// Chrome histogram sample hash -> name translation rules.
24948#[derive(Clone, PartialEq, ::prost::Message)]
24949pub struct ChromeHistorgramTranslationTable {
24950    #[prost(map="uint64, string", tag="1")]
24951    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24952}
24953/// Chrome user event action hash -> name translation rules.
24954#[derive(Clone, PartialEq, ::prost::Message)]
24955pub struct ChromeUserEventTranslationTable {
24956    #[prost(map="uint64, string", tag="1")]
24957    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24958}
24959/// Chrome performance mark translation rules.
24960#[derive(Clone, PartialEq, ::prost::Message)]
24961pub struct ChromePerformanceMarkTranslationTable {
24962    #[prost(map="uint32, string", tag="1")]
24963    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24964    #[prost(map="uint32, string", tag="2")]
24965    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24966}
24967/// Raw -> deobfuscated slice name translation rules.
24968#[derive(Clone, PartialEq, ::prost::Message)]
24969pub struct SliceNameTranslationTable {
24970    #[prost(map="string, string", tag="1")]
24971    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24972}
24973/// Raw -> deobfuscated process track name translation rules.
24974#[derive(Clone, PartialEq, ::prost::Message)]
24975pub struct ProcessTrackNameTranslationTable {
24976    #[prost(map="string, string", tag="1")]
24977    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24978}
24979/// Chrome study hash -> name translation rules.
24980#[derive(Clone, PartialEq, ::prost::Message)]
24981pub struct ChromeStudyTranslationTable {
24982    #[prost(map="uint64, string", tag="1")]
24983    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24984}
24985// End of protos/perfetto/trace/translation/translation_table.proto
24986
24987// Begin of protos/perfetto/trace/trigger.proto
24988
24989/// When a TracingSession receives a trigger it records the boot time nanoseconds
24990/// in the TracePacket's timestamp field as well as the name of the producer that
24991/// triggered it. We emit this data so filtering can be done on triggers received
24992/// in the trace.
24993#[derive(Clone, PartialEq, ::prost::Message)]
24994pub struct Trigger {
24995    /// Name of the trigger which was received.
24996    #[prost(string, optional, tag="1")]
24997    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
24998    /// The actual producer that activated |trigger|.
24999    #[prost(string, optional, tag="2")]
25000    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
25001    /// The verified UID of the producer.
25002    #[prost(int32, optional, tag="3")]
25003    pub trusted_producer_uid: ::core::option::Option<i32>,
25004    /// The value of stop_delay_ms from the configuration.
25005    #[prost(uint64, optional, tag="4")]
25006    pub stop_delay_ms: ::core::option::Option<u64>,
25007}
25008// End of protos/perfetto/trace/trigger.proto
25009
25010// Begin of protos/perfetto/trace/ui_state.proto
25011
25012/// Common state for UIs visualizing Perfetto traces.
25013/// This message can be appended as a TracePacket by UIs to save the
25014/// visible state (e.g. scroll position/zoom state) for future opening
25015/// of the trace.
25016/// Design doc: go/trace-ui-state.
25017#[derive(Clone, PartialEq, ::prost::Message)]
25018pub struct UiState {
25019    /// The start and end bounds of the viewport of the UI in nanoseconds.
25020    ///
25021    /// This is the absolute time associated to slices and other events in
25022    /// trace processor tables (i.e. the |ts| column of most tables)
25023    #[prost(int64, optional, tag="1")]
25024    pub timeline_start_ts: ::core::option::Option<i64>,
25025    #[prost(int64, optional, tag="2")]
25026    pub timeline_end_ts: ::core::option::Option<i64>,
25027    #[prost(message, optional, tag="3")]
25028    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
25029}
25030/// Nested message and enum types in `UiState`.
25031pub mod ui_state {
25032    /// Indicates that the given process should be highlighted by the UI.
25033    #[derive(Clone, PartialEq, ::prost::Message)]
25034    pub struct HighlightProcess {
25035        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
25036        pub selector: ::core::option::Option<highlight_process::Selector>,
25037    }
25038    /// Nested message and enum types in `HighlightProcess`.
25039    pub mod highlight_process {
25040        #[derive(Clone, PartialEq, ::prost::Oneof)]
25041        pub enum Selector {
25042            /// The pid of the process to highlight. This is useful for UIs to focus
25043            /// on tracks of a particular process in the trace.
25044            ///
25045            /// If more than one process in a trace has the same pid, it is UI
25046            /// implementation specific how the process to be focused will be
25047            /// chosen.
25048            #[prost(uint32, tag="1")]
25049            Pid(u32),
25050            /// The command line of the process to highlight; for most Android apps,
25051            /// this is the package name of the app. This is useful for UIs to focus
25052            /// on a particular app in the trace.
25053            ///
25054            /// If more than one process hasthe same cmdline, it is UI implementation
25055            /// specific how the process to be focused will be chosen.
25056            #[prost(string, tag="2")]
25057            Cmdline(::prost::alloc::string::String),
25058        }
25059    }
25060}
25061// Begin of protos/perfetto/trace/trace_packet.proto
25062
25063/// TracePacket is the root object of a Perfetto trace.
25064/// A Perfetto trace is a linear sequence of TracePacket(s).
25065///
25066/// The tracing service guarantees that all TracePacket(s) written by a given
25067/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
25068/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
25069/// to the Consumer (or written into the trace file).
25070/// TracePacket(s) written by different TraceWriter(s), hence even different
25071/// data sources, can be seen in arbitrary order.
25072/// The consumer can re-establish a total order, if interested, using the packet
25073/// timestamps, after having synchronized the different clocks onto a global
25074/// clock.
25075///
25076/// The tracing service is agnostic of the content of TracePacket, with the
25077/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
25078/// the service itself.
25079///
25080/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
25081///
25082/// Next reserved id: 14 (up to 15).
25083/// Next id: 128.
25084#[derive(Clone, PartialEq, ::prost::Message)]
25085pub struct TracePacket {
25086    /// The timestamp of the TracePacket.
25087    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
25088    /// Android). It can be overridden using a different timestamp_clock_id.
25089    /// The clock domain definition in ClockSnapshot can also override:
25090    /// - The unit (default: 1ns).
25091    /// - The absolute vs delta encoding (default: absolute timestamp).
25092    #[prost(uint64, optional, tag="8")]
25093    pub timestamp: ::core::option::Option<u64>,
25094    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
25095    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
25096    /// producer-defined clock id.
25097    /// If unspecified and if no default per-sequence value has been provided via
25098    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
25099    #[prost(uint32, optional, tag="58")]
25100    pub timestamp_clock_id: ::core::option::Option<u32>,
25101    /// Trusted process id of the producer which generated this packet, written by
25102    /// the service.
25103    #[prost(int32, optional, tag="79")]
25104    pub trusted_pid: ::core::option::Option<i32>,
25105    /// Incrementally emitted interned data, valid only on the packet's sequence
25106    /// (packets with the same |trusted_packet_sequence_id|). The writer will
25107    /// usually emit new interned data in the same TracePacket that first refers to
25108    /// it (since the last reset of interning state). It may also be emitted
25109    /// proactively in advance of referring to them in later packets.
25110    #[prost(message, optional, tag="12")]
25111    pub interned_data: ::core::option::Option<InternedData>,
25112    #[prost(uint32, optional, tag="13")]
25113    pub sequence_flags: ::core::option::Option<u32>,
25114    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
25115    #[prost(bool, optional, tag="41")]
25116    pub incremental_state_cleared: ::core::option::Option<bool>,
25117    /// Default values for fields of later TracePackets emitted on this packet's
25118    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
25119    /// It must be reemitted when incremental state is cleared (see
25120    /// |incremental_state_cleared|).
25121    /// Requires that any future packet emitted on the same sequence specifies
25122    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
25123    /// TracePacketDefaults always override the global defaults for any future
25124    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
25125    #[prost(message, optional, tag="59")]
25126    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
25127    /// Flag set by the service if, for the current packet sequence (see
25128    /// |trusted_packet_sequence_id|), either:
25129    /// * this is the first packet, or
25130    /// * one or multiple packets were dropped since the last packet that the
25131    ///    consumer read from the sequence. This can happen if chunks in the trace
25132    ///    buffer are overridden before the consumer could read them when the trace
25133    ///    is configured in ring buffer mode.
25134    ///
25135    /// When packet loss occurs, incrementally emitted data (including interned
25136    /// data) on the sequence should be considered invalid up until the next packet
25137    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
25138    #[prost(bool, optional, tag="42")]
25139    pub previous_packet_dropped: ::core::option::Option<bool>,
25140    /// Flag set by a producer (starting from SDK v29) if, for the current packet
25141    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
25142    ///
25143    /// This flag can be used for distinguishing the two situations when
25144    /// processing the trace:
25145    /// 1. There are no prior events for the sequence because of data loss, e.g.
25146    ///     due to ring buffer wrapping.
25147    /// 2. There are no prior events for the sequence because it didn't start
25148    ///     before this packet (= there's definitely no preceding data loss).
25149    ///
25150    /// Given that older SDK versions do not support this flag, this flag not
25151    /// being present for a particular sequence does not necessarily imply data
25152    /// loss.
25153    #[prost(bool, optional, tag="87")]
25154    pub first_packet_on_sequence: ::core::option::Option<bool>,
25155    /// The machine ID for identifying trace packets in a multi-machine tracing
25156    /// session. Is emitted by the tracing service for producers running on a
25157    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
25158    #[prost(uint32, optional, tag="98")]
25159    pub machine_id: ::core::option::Option<u32>,
25160    #[prost(oneof="trace_packet::Data", tags="2, 9, 4, 5, 6, 7, 11, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 56, 57, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 80, 81, 82, 83, 84, 86, 91, 124, 125, 126, 127, 128, 61, 64, 60, 43, 44, 1, 36, 50, 72, 88, 92, 90, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 114, 115, 116, 117, 118, 120, 122, 119, 121, 123, 900")]
25161    pub data: ::core::option::Option<trace_packet::Data>,
25162    /// Trusted user id of the producer which generated this packet. Keep in sync
25163    /// with TrustedPacket.trusted_uid.
25164    ///
25165    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25166    /// instead.
25167    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
25168    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
25169    /// Service-assigned identifier of the packet sequence this packet belongs to.
25170    /// Uniquely identifies a producer + writer pair within the tracing session. A
25171    /// value of zero denotes an invalid ID. Keep in sync with
25172    /// TrustedPacket.trusted_packet_sequence_id.
25173    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
25174    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
25175}
25176/// Nested message and enum types in `TracePacket`.
25177pub mod trace_packet {
25178    /// Encapsulates the state and configuration of the ProtoVM instances running
25179    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
25180    /// and use them to inflate patches into full-state packets.
25181    /// Note: this message can't be defined in a dedicated file because it has a
25182    /// recursive dependency with TracePacket (see 'state' field below).
25183    #[derive(Clone, PartialEq, ::prost::Message)]
25184    pub struct ProtoVms {
25185        #[prost(message, repeated, tag="1")]
25186        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
25187    }
25188    /// Nested message and enum types in `ProtoVms`.
25189    pub mod proto_vms {
25190        #[derive(Clone, PartialEq, ::prost::Message)]
25191        pub struct Instance {
25192            #[prost(message, optional, tag="1")]
25193            pub program: ::core::option::Option<super::super::VmProgram>,
25194            #[prost(message, optional, tag="2")]
25195            pub state: ::core::option::Option<super::super::TracePacket>,
25196            #[prost(uint32, optional, tag="3")]
25197            pub memory_limit_kb: ::core::option::Option<u32>,
25198            #[prost(int32, repeated, packed="false", tag="4")]
25199            pub producer_id: ::prost::alloc::vec::Vec<i32>,
25200        }
25201    }
25202    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25203    #[repr(i32)]
25204    pub enum SequenceFlags {
25205        SeqUnspecified = 0,
25206        /// Set by the writer to indicate that it will re-emit any incremental data
25207        /// for the packet's sequence before referring to it again. This includes
25208        /// interned data as well as periodically emitted data like
25209        /// Process/ThreadDescriptors. This flag only affects the current packet
25210        /// sequence (see |trusted_packet_sequence_id|).
25211        ///
25212        /// When set, this TracePacket and subsequent TracePackets on the same
25213        /// sequence will not refer to any incremental data emitted before this
25214        /// TracePacket. For example, previously emitted interned data will be
25215        /// re-emitted if it is referred to again.
25216        ///
25217        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
25218        /// to skip packets in the sequence until the next one with this flag set, to
25219        /// ensure intact incremental data.
25220        SeqIncrementalStateCleared = 1,
25221        /// This packet requires incremental state, such as TracePacketDefaults or
25222        /// InternedData, to be parsed correctly. The trace reader should skip this
25223        /// packet if incremental state is not valid on this sequence, i.e. if no
25224        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
25225        /// current |trusted_packet_sequence_id|.
25226        SeqNeedsIncrementalState = 2,
25227    }
25228    impl SequenceFlags {
25229        /// String value of the enum field names used in the ProtoBuf definition.
25230        ///
25231        /// The values are not transformed in any way and thus are considered stable
25232        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25233        pub fn as_str_name(&self) -> &'static str {
25234            match self {
25235                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
25236                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
25237                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
25238            }
25239        }
25240    }
25241    #[derive(Clone, PartialEq, ::prost::Oneof)]
25242    pub enum Data {
25243        #[prost(message, tag="2")]
25244        ProcessTree(super::ProcessTree),
25245        #[prost(message, tag="9")]
25246        ProcessStats(super::ProcessStats),
25247        #[prost(message, tag="4")]
25248        InodeFileMap(super::InodeFileMap),
25249        #[prost(message, tag="5")]
25250        ChromeEvents(super::ChromeEventBundle),
25251        #[prost(message, tag="6")]
25252        ClockSnapshot(super::ClockSnapshot),
25253        #[prost(message, tag="7")]
25254        SysStats(super::SysStats),
25255        #[prost(message, tag="11")]
25256        TrackEvent(super::TrackEvent),
25257        // IDs up to 15 are reserved. They take only one byte to encode their
25258        // preamble so should be used for frequent events.
25259
25260        #[prost(message, tag="89")]
25261        TraceUuid(super::TraceUuid),
25262        #[prost(message, tag="33")]
25263        TraceConfig(super::TraceConfig),
25264        #[prost(message, tag="34")]
25265        FtraceStats(super::FtraceStats),
25266        #[prost(message, tag="35")]
25267        TraceStats(super::TraceStats),
25268        #[prost(message, tag="37")]
25269        ProfilePacket(super::ProfilePacket),
25270        #[prost(message, tag="74")]
25271        StreamingAllocation(super::StreamingAllocation),
25272        #[prost(message, tag="75")]
25273        StreamingFree(super::StreamingFree),
25274        #[prost(message, tag="38")]
25275        Battery(super::BatteryCounters),
25276        #[prost(message, tag="40")]
25277        PowerRails(super::PowerRails),
25278        #[prost(message, tag="39")]
25279        AndroidLog(super::AndroidLogPacket),
25280        #[prost(message, tag="45")]
25281        SystemInfo(super::SystemInfo),
25282        #[prost(message, tag="46")]
25283        Trigger(super::Trigger),
25284        #[prost(message, tag="109")]
25285        ChromeTrigger(super::ChromeTrigger),
25286        #[prost(message, tag="47")]
25287        PackagesList(super::PackagesList),
25288        #[prost(message, tag="48")]
25289        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
25290        #[prost(message, tag="49")]
25291        PerfettoMetatrace(super::PerfettoMetatrace),
25292        #[prost(message, tag="51")]
25293        ChromeMetadata(super::ChromeMetadataPacket),
25294        #[prost(message, tag="52")]
25295        GpuCounterEvent(super::GpuCounterEvent),
25296        #[prost(message, tag="53")]
25297        GpuRenderStageEvent(super::GpuRenderStageEvent),
25298        #[prost(message, tag="54")]
25299        StreamingProfilePacket(super::StreamingProfilePacket),
25300        #[prost(message, tag="56")]
25301        HeapGraph(super::HeapGraph),
25302        #[prost(message, tag="57")]
25303        GraphicsFrameEvent(super::GraphicsFrameEvent),
25304        #[prost(message, tag="62")]
25305        VulkanMemoryEvent(super::VulkanMemoryEvent),
25306        #[prost(message, tag="63")]
25307        GpuLog(super::GpuLog),
25308        #[prost(message, tag="65")]
25309        VulkanApiEvent(super::VulkanApiEvent),
25310        #[prost(message, tag="66")]
25311        PerfSample(super::PerfSample),
25312        #[prost(message, tag="67")]
25313        CpuInfo(super::CpuInfo),
25314        #[prost(message, tag="68")]
25315        SmapsPacket(super::SmapsPacket),
25316        #[prost(message, tag="69")]
25317        ServiceEvent(super::TracingServiceEvent),
25318        #[prost(message, tag="70")]
25319        InitialDisplayState(super::InitialDisplayState),
25320        #[prost(message, tag="71")]
25321        GpuMemTotalEvent(super::GpuMemTotalEvent),
25322        #[prost(message, tag="73")]
25323        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
25324        #[prost(message, tag="76")]
25325        FrameTimelineEvent(super::FrameTimelineEvent),
25326        #[prost(message, tag="77")]
25327        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
25328        #[prost(message, tag="78")]
25329        UiState(super::UiState),
25330        #[prost(message, tag="80")]
25331        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
25332        #[prost(message, tag="81")]
25333        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
25334        #[prost(message, tag="82")]
25335        TranslationTable(super::TranslationTable),
25336        #[prost(message, tag="83")]
25337        AndroidGameInterventionList(super::AndroidGameInterventionList),
25338        #[prost(message, tag="84")]
25339        StatsdAtom(super::StatsdAtom),
25340        #[prost(message, tag="86")]
25341        AndroidSystemProperty(super::AndroidSystemProperty),
25342        #[prost(message, tag="91")]
25343        EntityStateResidency(super::EntityStateResidency),
25344        #[prost(message, tag="124")]
25345        TraceProvenance(super::TraceProvenance),
25346        #[prost(message, tag="125")]
25347        Protovms(ProtoVms),
25348        #[prost(message, tag="126")]
25349        TraceAttributes(super::TraceAttributes),
25350        #[prost(message, tag="127")]
25351        AndroidAflags(super::AndroidAflags),
25352        #[prost(message, tag="128")]
25353        GpuInfo(super::GpuInfo),
25354        /// Only used in profile packets.
25355        #[prost(message, tag="61")]
25356        ModuleSymbols(super::ModuleSymbols),
25357        #[prost(message, tag="64")]
25358        DeobfuscationMapping(super::DeobfuscationMapping),
25359        /// Only used by TrackEvent.
25360        #[prost(message, tag="60")]
25361        TrackDescriptor(super::TrackDescriptor),
25362        /// Deprecated, use TrackDescriptor instead.
25363        #[prost(message, tag="43")]
25364        ProcessDescriptor(super::ProcessDescriptor),
25365        /// Deprecated, use TrackDescriptor instead.
25366        #[prost(message, tag="44")]
25367        ThreadDescriptor(super::ThreadDescriptor),
25368        /// Events from the Linux kernel ftrace infrastructure.
25369        #[prost(message, tag="1")]
25370        FtraceEvents(super::FtraceEventBundle),
25371        /// This field is emitted at periodic intervals (~10s) and
25372        /// contains always the binary representation of the UUID
25373        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
25374        /// efficiently partition long traces without having to fully parse them.
25375        #[prost(bytes, tag="36")]
25376        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
25377        /// Zero or more proto encoded trace packets compressed using deflate.
25378        /// Each compressed_packets TracePacket (including the two field ids and
25379        /// sizes) should be less than 512KB.
25380        #[prost(bytes, tag="50")]
25381        CompressedPackets(::prost::alloc::vec::Vec<u8>),
25382        /// Data sources can extend the trace proto with custom extension protos (see
25383        /// docs/design-docs/extensions.md). When they do that, the descriptor of
25384        /// their extension proto descriptor is serialized in this packet. This
25385        /// allows trace_processor to deserialize extended messages using reflection
25386        /// even if the extension proto is not checked in the Perfetto repo.
25387        #[prost(message, tag="72")]
25388        ExtensionDescriptor(super::ExtensionDescriptor),
25389        /// Represents a single packet sent or received by the network.
25390        #[prost(message, tag="88")]
25391        NetworkPacket(super::NetworkPacketEvent),
25392        /// Represents one or more packets sent or received by the network.
25393        #[prost(message, tag="92")]
25394        NetworkPacketBundle(super::NetworkPacketBundle),
25395        /// The "range of interest" for track events. See the message definition
25396        /// comments for more details.
25397        #[prost(message, tag="90")]
25398        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
25399        /// Winscope traces
25400        #[prost(message, tag="93")]
25401        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
25402        #[prost(message, tag="94")]
25403        SurfaceflingerTransactions(super::TransactionTraceEntry),
25404        #[prost(message, tag="96")]
25405        ShellTransition(super::ShellTransition),
25406        #[prost(message, tag="97")]
25407        ShellHandlerMappings(super::ShellHandlerMappings),
25408        #[prost(message, tag="104")]
25409        ProtologMessage(super::ProtoLogMessage),
25410        #[prost(message, tag="105")]
25411        ProtologViewerConfig(super::ProtoLogViewerConfig),
25412        #[prost(message, tag="112")]
25413        WinscopeExtensions(super::WinscopeExtensions),
25414        /// Events from the Windows etw infrastructure.
25415        #[prost(message, tag="95")]
25416        EtwEvents(super::EtwTraceEventBundle),
25417        #[prost(message, tag="99")]
25418        V8JsCode(super::V8JsCode),
25419        #[prost(message, tag="100")]
25420        V8InternalCode(super::V8InternalCode),
25421        #[prost(message, tag="101")]
25422        V8WasmCode(super::V8WasmCode),
25423        #[prost(message, tag="102")]
25424        V8RegExpCode(super::V8RegExpCode),
25425        #[prost(message, tag="103")]
25426        V8CodeMove(super::V8CodeMove),
25427        /// Clock synchronization with remote machines.
25428        #[prost(message, tag="107")]
25429        RemoteClockSync(super::RemoteClockSync),
25430        #[prost(message, tag="110")]
25431        PixelModemEvents(super::PixelModemEvents),
25432        #[prost(message, tag="111")]
25433        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
25434        #[prost(message, tag="113")]
25435        CloneSnapshotTrigger(super::Trigger),
25436        #[prost(message, tag="114")]
25437        BluetoothTraceEvent(super::BluetoothTraceEvent),
25438        #[prost(message, tag="115")]
25439        KernelWakelockData(super::KernelWakelockData),
25440        #[prost(message, tag="116")]
25441        AppWakelockBundle(super::AppWakelockBundle),
25442        /// Generic events for a standard kernel implementation
25443        #[prost(message, tag="117")]
25444        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
25445        #[prost(message, tag="118")]
25446        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
25447        #[prost(message, tag="120")]
25448        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
25449        #[prost(message, tag="122")]
25450        GenericKernelProcessTree(super::GenericKernelProcessTree),
25451        #[prost(message, tag="119")]
25452        CpuPerUidData(super::CpuPerUidData),
25453        #[prost(message, tag="121")]
25454        EvdevEvent(super::EvdevEvent),
25455        #[prost(message, tag="123")]
25456        UserList(super::AndroidUserList),
25457        /// This field is only used for testing.
25458        /// In previous versions of this proto this field had the id 268435455
25459        /// This caused many problems:
25460        /// - protozero decoder does not handle field ids larger than 999.
25461        /// - old versions of protoc produce Java bindings with syntax errors when
25462        ///    the field id is large enough.
25463        #[prost(message, tag="900")]
25464        ForTesting(super::TestEvent),
25465    }
25466    /// Trusted user id of the producer which generated this packet. Keep in sync
25467    /// with TrustedPacket.trusted_uid.
25468    ///
25469    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25470    /// instead.
25471    #[derive(Clone, PartialEq, ::prost::Oneof)]
25472    pub enum OptionalTrustedUid {
25473        #[prost(int32, tag="3")]
25474        TrustedUid(i32),
25475    }
25476    /// Service-assigned identifier of the packet sequence this packet belongs to.
25477    /// Uniquely identifies a producer + writer pair within the tracing session. A
25478    /// value of zero denotes an invalid ID. Keep in sync with
25479    /// TrustedPacket.trusted_packet_sequence_id.
25480    #[derive(Clone, PartialEq, ::prost::Oneof)]
25481    pub enum OptionalTrustedPacketSequenceId {
25482        #[prost(uint32, tag="10")]
25483        TrustedPacketSequenceId(u32),
25484    }
25485}
25486// End of protos/perfetto/trace/trace_packet.proto
25487
25488// Begin of protos/perfetto/trace/trace.proto
25489
25490#[derive(Clone, PartialEq, ::prost::Message)]
25491pub struct Trace {
25492    #[prost(message, repeated, tag="1")]
25493    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
25494}
25495#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25496#[repr(i32)]
25497pub enum VmCursorEnum {
25498    VmCursorUnspecified = 0,
25499    VmCursorSrc = 1,
25500    VmCursorDst = 2,
25501    VmCursorBoth = 3,
25502}
25503impl VmCursorEnum {
25504    /// String value of the enum field names used in the ProtoBuf definition.
25505    ///
25506    /// The values are not transformed in any way and thus are considered stable
25507    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25508    pub fn as_str_name(&self) -> &'static str {
25509        match self {
25510            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
25511            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
25512            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
25513            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
25514        }
25515    }
25516}
25517// End of protos/perfetto/common/tracing_service_state.proto
25518
25519// Begin of protos/perfetto/common/builtin_clock.proto
25520
25521/// Builtin clock domains used in Perfetto traces.
25522///
25523/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
25524/// representing the trace file's own timeline. Each trace file gets its own
25525/// instance (scoped by trace file index).
25526///
25527/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
25528/// fallback: if the first timestamp conversion uses a clock other than the
25529/// trace file clock and no explicit clock snapshot data exists, the trace time
25530/// is switched to BOOTTIME. This fallback does not fire for modern traces that
25531/// include ClockSnapshots or that only use the trace file clock directly.
25532///
25533/// The `primary_trace_clock` field in ClockSnapshot can definitively override
25534/// the trace time clock regardless of the above.
25535#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25536#[repr(i32)]
25537pub enum BuiltinClock {
25538    Unknown = 0,
25539    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
25540    Realtime = 1,
25541    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
25542    RealtimeCoarse = 2,
25543    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
25544    Monotonic = 3,
25545    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
25546    MonotonicCoarse = 4,
25547    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
25548    MonotonicRaw = 5,
25549    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
25550    /// For proto traces, this is used as a backwards-compatible fallback trace
25551    /// time clock when no explicit clock snapshots are present.
25552    Boottime = 6,
25553    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
25554    Tsc = 9,
25555    /// Corresponds to the perf event clock (PERF_CLOCK).
25556    Perf = 10,
25557    /// A synthetic clock representing the trace file's own timeline. Each trace
25558    /// file gets its own instance (scoped by trace file index). This is the
25559    /// default trace time clock before any clock snapshot or format-specific
25560    /// override takes effect.
25561    TraceFile = 11,
25562    MaxId = 63,
25563}
25564impl BuiltinClock {
25565    /// String value of the enum field names used in the ProtoBuf definition.
25566    ///
25567    /// The values are not transformed in any way and thus are considered stable
25568    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25569    pub fn as_str_name(&self) -> &'static str {
25570        match self {
25571            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
25572            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
25573            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
25574            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
25575            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
25576            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
25577            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
25578            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
25579            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
25580            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
25581            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
25582        }
25583    }
25584}
25585// End of protos/perfetto/common/builtin_clock.proto
25586
25587// Begin of protos/perfetto/common/semantic_type.proto
25588
25589/// Semantic types for string fields. This tells the filter what kind of
25590/// data the field contains, so it can apply the right filtering rules.
25591/// See /rfcs/0011-subset-string-filter-rules.md for design details.
25592/// Introduced in: Perfetto v54.
25593#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25594#[repr(i32)]
25595pub enum SemanticType {
25596    Unspecified = 0,
25597    Atrace = 1,
25598    Job = 2,
25599    Wakelock = 3,
25600}
25601impl SemanticType {
25602    /// String value of the enum field names used in the ProtoBuf definition.
25603    ///
25604    /// The values are not transformed in any way and thus are considered stable
25605    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25606    pub fn as_str_name(&self) -> &'static str {
25607        match self {
25608            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
25609            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
25610            SemanticType::Job => "SEMANTIC_TYPE_JOB",
25611            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
25612        }
25613    }
25614}
25615// End of protos/perfetto/config/android/android_input_event_config.proto
25616
25617// Begin of protos/perfetto/common/android_log_constants.proto
25618
25619/// Values from NDK's android/log.h.
25620#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25621#[repr(i32)]
25622pub enum AndroidLogId {
25623    /// MAIN.
25624    LidDefault = 0,
25625    LidRadio = 1,
25626    LidEvents = 2,
25627    LidSystem = 3,
25628    LidCrash = 4,
25629    LidStats = 5,
25630    LidSecurity = 6,
25631    LidKernel = 7,
25632}
25633impl AndroidLogId {
25634    /// String value of the enum field names used in the ProtoBuf definition.
25635    ///
25636    /// The values are not transformed in any way and thus are considered stable
25637    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25638    pub fn as_str_name(&self) -> &'static str {
25639        match self {
25640            AndroidLogId::LidDefault => "LID_DEFAULT",
25641            AndroidLogId::LidRadio => "LID_RADIO",
25642            AndroidLogId::LidEvents => "LID_EVENTS",
25643            AndroidLogId::LidSystem => "LID_SYSTEM",
25644            AndroidLogId::LidCrash => "LID_CRASH",
25645            AndroidLogId::LidStats => "LID_STATS",
25646            AndroidLogId::LidSecurity => "LID_SECURITY",
25647            AndroidLogId::LidKernel => "LID_KERNEL",
25648        }
25649    }
25650}
25651#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25652#[repr(i32)]
25653pub enum AndroidLogPriority {
25654    PrioUnspecified = 0,
25655    /// _DEFAULT, but should never be seen in logs.
25656    PrioUnused = 1,
25657    PrioVerbose = 2,
25658    PrioDebug = 3,
25659    PrioInfo = 4,
25660    PrioWarn = 5,
25661    PrioError = 6,
25662    PrioFatal = 7,
25663}
25664impl AndroidLogPriority {
25665    /// String value of the enum field names used in the ProtoBuf definition.
25666    ///
25667    /// The values are not transformed in any way and thus are considered stable
25668    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25669    pub fn as_str_name(&self) -> &'static str {
25670        match self {
25671            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
25672            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
25673            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
25674            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
25675            AndroidLogPriority::PrioInfo => "PRIO_INFO",
25676            AndroidLogPriority::PrioWarn => "PRIO_WARN",
25677            AndroidLogPriority::PrioError => "PRIO_ERROR",
25678            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
25679        }
25680    }
25681}
25682// End of protos/perfetto/config/android/pixel_modem_config.proto
25683
25684// Begin of protos/perfetto/common/protolog_common.proto
25685
25686#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25687#[repr(i32)]
25688pub enum ProtoLogLevel {
25689    ProtologLevelUndefined = 0,
25690    ProtologLevelDebug = 1,
25691    ProtologLevelVerbose = 2,
25692    ProtologLevelInfo = 3,
25693    ProtologLevelWarn = 4,
25694    ProtologLevelError = 5,
25695    ProtologLevelWtf = 6,
25696}
25697impl ProtoLogLevel {
25698    /// String value of the enum field names used in the ProtoBuf definition.
25699    ///
25700    /// The values are not transformed in any way and thus are considered stable
25701    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25702    pub fn as_str_name(&self) -> &'static str {
25703        match self {
25704            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
25705            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
25706            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
25707            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
25708            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
25709            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
25710            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
25711        }
25712    }
25713}
25714// End of protos/perfetto/config/qnx/qnx_config.proto
25715
25716// Begin of protos/perfetto/config/statsd/atom_ids.proto
25717
25718/// This enum is obtained by post-processing
25719/// AOSP/frameworks/proto_logging/stats/atoms.proto through
25720/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
25721/// enum value for each proto field defined in the upstream atoms.proto.
25722#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25723#[repr(i32)]
25724pub enum AtomId {
25725    AtomUnspecified = 0,
25726    AtomBleScanStateChanged = 2,
25727    AtomProcessStateChanged = 3,
25728    AtomBleScanResultReceived = 4,
25729    AtomSensorStateChanged = 5,
25730    AtomGpsScanStateChanged = 6,
25731    AtomSyncStateChanged = 7,
25732    AtomScheduledJobStateChanged = 8,
25733    AtomScreenBrightnessChanged = 9,
25734    AtomWakelockStateChanged = 10,
25735    AtomLongPartialWakelockStateChanged = 11,
25736    AtomMobileRadioPowerStateChanged = 12,
25737    AtomWifiRadioPowerStateChanged = 13,
25738    AtomActivityManagerSleepStateChanged = 14,
25739    AtomMemoryFactorStateChanged = 15,
25740    AtomExcessiveCpuUsageReported = 16,
25741    AtomCachedKillReported = 17,
25742    AtomProcessMemoryStatReported = 18,
25743    AtomLauncherEvent = 19,
25744    AtomBatterySaverModeStateChanged = 20,
25745    AtomDeviceIdleModeStateChanged = 21,
25746    AtomDeviceIdlingModeStateChanged = 22,
25747    AtomAudioStateChanged = 23,
25748    AtomMediaCodecStateChanged = 24,
25749    AtomCameraStateChanged = 25,
25750    AtomFlashlightStateChanged = 26,
25751    AtomUidProcessStateChanged = 27,
25752    AtomProcessLifeCycleStateChanged = 28,
25753    AtomScreenStateChanged = 29,
25754    AtomBatteryLevelChanged = 30,
25755    AtomChargingStateChanged = 31,
25756    AtomPluggedStateChanged = 32,
25757    AtomInteractiveStateChanged = 33,
25758    AtomTouchEventReported = 34,
25759    AtomWakeupAlarmOccurred = 35,
25760    AtomKernelWakeupReported = 36,
25761    AtomWifiLockStateChanged = 37,
25762    AtomWifiSignalStrengthChanged = 38,
25763    AtomWifiScanStateChanged = 39,
25764    AtomPhoneSignalStrengthChanged = 40,
25765    AtomSettingChanged = 41,
25766    AtomActivityForegroundStateChanged = 42,
25767    AtomIsolatedUidChanged = 43,
25768    AtomPacketWakeupOccurred = 44,
25769    AtomWallClockTimeShifted = 45,
25770    AtomAnomalyDetected = 46,
25771    AtomAppBreadcrumbReported = 47,
25772    AtomAppStartOccurred = 48,
25773    AtomAppStartCanceled = 49,
25774    AtomAppStartFullyDrawn = 50,
25775    AtomLmkKillOccurred = 51,
25776    AtomPictureInPictureStateChanged = 52,
25777    AtomWifiMulticastLockStateChanged = 53,
25778    AtomAppStartMemoryStateCaptured = 55,
25779    AtomShutdownSequenceReported = 56,
25780    AtomBootSequenceReported = 57,
25781    AtomOverlayStateChanged = 59,
25782    AtomForegroundServiceStateChanged = 60,
25783    AtomCallStateChanged = 61,
25784    AtomKeyguardStateChanged = 62,
25785    AtomKeyguardBouncerStateChanged = 63,
25786    AtomKeyguardBouncerPasswordEntered = 64,
25787    AtomAppDied = 65,
25788    AtomResourceConfigurationChanged = 66,
25789    AtomBluetoothEnabledStateChanged = 67,
25790    AtomBluetoothConnectionStateChanged = 68,
25791    AtomGpsSignalQualityChanged = 69,
25792    AtomUsbConnectorStateChanged = 70,
25793    AtomSpeakerImpedanceReported = 71,
25794    AtomHardwareFailed = 72,
25795    AtomPhysicalDropDetected = 73,
25796    AtomChargeCyclesReported = 74,
25797    AtomMobileConnectionStateChanged = 75,
25798    AtomMobileRadioTechnologyChanged = 76,
25799    AtomUsbDeviceAttached = 77,
25800    AtomAppCrashOccurred = 78,
25801    AtomAnrOccurred = 79,
25802    AtomWtfOccurred = 80,
25803    AtomLowMemReported = 81,
25804    AtomGenericAtom = 82,
25805    AtomVibratorStateChanged = 84,
25806    AtomDeferredJobStatsReported = 85,
25807    AtomThermalThrottling = 86,
25808    AtomBiometricAcquired = 87,
25809    AtomBiometricAuthenticated = 88,
25810    AtomBiometricErrorOccurred = 89,
25811    AtomUiEventReported = 90,
25812    AtomBatteryHealthSnapshot = 91,
25813    AtomSlowIo = 92,
25814    AtomBatteryCausedShutdown = 93,
25815    AtomPhoneServiceStateChanged = 94,
25816    AtomPhoneStateChanged = 95,
25817    AtomUserRestrictionChanged = 96,
25818    AtomSettingsUiChanged = 97,
25819    AtomConnectivityStateChanged = 98,
25820    AtomServiceStateChanged = 99,
25821    AtomServiceLaunchReported = 100,
25822    AtomFlagFlipUpdateOccurred = 101,
25823    AtomBinaryPushStateChanged = 102,
25824    AtomDevicePolicyEvent = 103,
25825    AtomDocsUiFileOpCanceled = 104,
25826    AtomDocsUiFileOpCopyMoveModeReported = 105,
25827    AtomDocsUiFileOpFailure = 106,
25828    AtomDocsUiProviderFileOp = 107,
25829    AtomDocsUiInvalidScopedAccessRequest = 108,
25830    AtomDocsUiLaunchReported = 109,
25831    AtomDocsUiRootVisited = 110,
25832    AtomDocsUiStartupMs = 111,
25833    AtomDocsUiUserActionReported = 112,
25834    AtomWifiEnabledStateChanged = 113,
25835    AtomWifiRunningStateChanged = 114,
25836    AtomAppCompacted = 115,
25837    AtomNetworkDnsEventReported = 116,
25838    AtomDocsUiPickerLaunchedFromReported = 117,
25839    AtomDocsUiPickResultReported = 118,
25840    AtomDocsUiSearchModeReported = 119,
25841    AtomDocsUiSearchTypeReported = 120,
25842    AtomDataStallEvent = 121,
25843    AtomRescuePartyResetReported = 122,
25844    AtomSignedConfigReported = 123,
25845    AtomGnssNiEventReported = 124,
25846    AtomBluetoothLinkLayerConnectionEvent = 125,
25847    AtomBluetoothAclConnectionStateChanged = 126,
25848    AtomBluetoothScoConnectionStateChanged = 127,
25849    AtomAppDowngraded = 128,
25850    AtomAppOptimizedAfterDowngraded = 129,
25851    AtomLowStorageStateChanged = 130,
25852    AtomGnssNfwNotificationReported = 131,
25853    AtomGnssConfigurationReported = 132,
25854    AtomUsbPortOverheatEventReported = 133,
25855    AtomNfcErrorOccurred = 134,
25856    AtomNfcStateChanged = 135,
25857    AtomNfcBeamOccurred = 136,
25858    AtomNfcCardemulationOccurred = 137,
25859    AtomNfcTagOccurred = 138,
25860    AtomNfcHceTransactionOccurred = 139,
25861    AtomSeStateChanged = 140,
25862    AtomSeOmapiReported = 141,
25863    AtomBroadcastDispatchLatencyReported = 142,
25864    AtomAttentionManagerServiceResultReported = 143,
25865    AtomAdbConnectionChanged = 144,
25866    AtomSpeechDspStatReported = 145,
25867    AtomUsbContaminantReported = 146,
25868    AtomWatchdogRollbackOccurred = 147,
25869    AtomBiometricSystemHealthIssueDetected = 148,
25870    AtomBubbleUiChanged = 149,
25871    AtomScheduledJobConstraintChanged = 150,
25872    AtomBluetoothActiveDeviceChanged = 151,
25873    AtomBluetoothA2dpPlaybackStateChanged = 152,
25874    AtomBluetoothA2dpCodecConfigChanged = 153,
25875    AtomBluetoothA2dpCodecCapabilityChanged = 154,
25876    AtomBluetoothA2dpAudioUnderrunReported = 155,
25877    AtomBluetoothA2dpAudioOverrunReported = 156,
25878    AtomBluetoothDeviceRssiReported = 157,
25879    AtomBluetoothDeviceFailedContactCounterReported = 158,
25880    AtomBluetoothDeviceTxPowerLevelReported = 159,
25881    AtomBluetoothHciTimeoutReported = 160,
25882    AtomBluetoothQualityReportReported = 161,
25883    AtomBluetoothDeviceInfoReported = 162,
25884    AtomBluetoothRemoteVersionInfoReported = 163,
25885    AtomBluetoothSdpAttributeReported = 164,
25886    AtomBluetoothBondStateChanged = 165,
25887    AtomBluetoothClassicPairingEventReported = 166,
25888    AtomBluetoothSmpPairingEventReported = 167,
25889    AtomScreenTimeoutExtensionReported = 168,
25890    AtomProcessStartTime = 169,
25891    AtomPermissionGrantRequestResultReported = 170,
25892    AtomBluetoothSocketConnectionStateChanged = 171,
25893    AtomDeviceIdentifierAccessDenied = 172,
25894    AtomBubbleDeveloperErrorReported = 173,
25895    AtomAssistGestureStageReported = 174,
25896    AtomAssistGestureFeedbackReported = 175,
25897    AtomAssistGestureProgressReported = 176,
25898    AtomTouchGestureClassified = 177,
25899    AtomHiddenApiUsed = 178,
25900    AtomStyleUiChanged = 179,
25901    AtomPrivacyIndicatorsInteracted = 180,
25902    AtomAppInstallOnExternalStorageReported = 181,
25903    AtomNetworkStackReported = 182,
25904    AtomAppMovedStorageReported = 183,
25905    AtomBiometricEnrolled = 184,
25906    AtomSystemServerWatchdogOccurred = 185,
25907    AtomTombStoneOccurred = 186,
25908    AtomBluetoothClassOfDeviceReported = 187,
25909    AtomIntelligenceEventReported = 188,
25910    AtomThermalThrottlingSeverityStateChanged = 189,
25911    AtomRoleRequestResultReported = 190,
25912    AtomMediametricsAudiopolicyReported = 191,
25913    AtomMediametricsAudiorecordReported = 192,
25914    AtomMediametricsAudiothreadReported = 193,
25915    AtomMediametricsAudiotrackReported = 194,
25916    AtomMediametricsCodecReported = 195,
25917    AtomMediametricsDrmWidevineReported = 196,
25918    AtomMediametricsExtractorReported = 197,
25919    AtomMediametricsMediadrmReported = 198,
25920    AtomMediametricsNuplayerReported = 199,
25921    AtomMediametricsRecorderReported = 200,
25922    AtomMediametricsDrmmanagerReported = 201,
25923    AtomCarPowerStateChanged = 203,
25924    AtomGarageModeInfo = 204,
25925    AtomTestAtomReported = 205,
25926    AtomContentCaptureCallerMismatchReported = 206,
25927    AtomContentCaptureServiceEvents = 207,
25928    AtomContentCaptureSessionEvents = 208,
25929    AtomContentCaptureFlushed = 209,
25930    AtomLocationManagerApiUsageReported = 210,
25931    AtomReviewPermissionsFragmentResultReported = 211,
25932    AtomRuntimePermissionsUpgradeResult = 212,
25933    AtomGrantPermissionsActivityButtonActions = 213,
25934    AtomLocationAccessCheckNotificationAction = 214,
25935    AtomAppPermissionFragmentActionReported = 215,
25936    AtomAppPermissionFragmentViewed = 216,
25937    AtomAppPermissionsFragmentViewed = 217,
25938    AtomPermissionAppsFragmentViewed = 218,
25939    AtomTextSelectionEvent = 219,
25940    AtomTextLinkifyEvent = 220,
25941    AtomConversationActionsEvent = 221,
25942    AtomLanguageDetectionEvent = 222,
25943    AtomExclusionRectStateChanged = 223,
25944    AtomBackGestureReportedReported = 224,
25945    AtomUpdateEngineUpdateAttemptReported = 225,
25946    AtomUpdateEngineSuccessfulUpdateReported = 226,
25947    AtomCameraActionEvent = 227,
25948    AtomAppCompatibilityChangeReported = 228,
25949    AtomPerfettoUploaded = 229,
25950    AtomVmsClientConnectionStateChanged = 230,
25951    AtomMediaProviderScanOccurred = 233,
25952    AtomMediaContentDeleted = 234,
25953    AtomMediaProviderPermissionRequested = 235,
25954    AtomMediaProviderSchemaChanged = 236,
25955    AtomMediaProviderIdleMaintenanceFinished = 237,
25956    AtomRebootEscrowRecoveryReported = 238,
25957    AtomBootTimeEventDurationReported = 239,
25958    AtomBootTimeEventElapsedTimeReported = 240,
25959    AtomBootTimeEventUtcTimeReported = 241,
25960    AtomBootTimeEventErrorCodeReported = 242,
25961    AtomUserspaceRebootReported = 243,
25962    AtomNotificationReported = 244,
25963    AtomNotificationPanelReported = 245,
25964    AtomNotificationChannelModified = 246,
25965    AtomIntegrityCheckResultReported = 247,
25966    AtomIntegrityRulesPushed = 248,
25967    AtomCbMessageReported = 249,
25968    AtomCbMessageError = 250,
25969    AtomWifiHealthStatReported = 251,
25970    AtomWifiFailureStatReported = 252,
25971    AtomWifiConnectionResultReported = 253,
25972    AtomAppFreezeChanged = 254,
25973    AtomSnapshotMergeReported = 255,
25974    AtomForegroundServiceAppOpSessionEnded = 256,
25975    AtomDisplayJankReported = 257,
25976    AtomAppStandbyBucketChanged = 258,
25977    AtomSharesheetStarted = 259,
25978    AtomRankingSelected = 260,
25979    AtomTvsettingsUiInteracted = 261,
25980    AtomLauncherSnapshot = 262,
25981    AtomPackageInstallerV2Reported = 263,
25982    AtomUserLifecycleJourneyReported = 264,
25983    AtomUserLifecycleEventOccurred = 265,
25984    AtomAccessibilityShortcutReported = 266,
25985    AtomAccessibilityServiceReported = 267,
25986    AtomDocsUiDragAndDropReported = 268,
25987    AtomAppUsageEventOccurred = 269,
25988    AtomAutoRevokeNotificationClicked = 270,
25989    AtomAutoRevokeFragmentAppViewed = 271,
25990    AtomAutoRevokedAppInteraction = 272,
25991    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
25992    AtomEvsUsageStatsReported = 274,
25993    AtomAudioPowerUsageDataReported = 275,
25994    AtomTvTunerStateChanged = 276,
25995    AtomMediaoutputOpSwitchReported = 277,
25996    AtomCbMessageFiltered = 278,
25997    AtomTvTunerDvrStatus = 279,
25998    AtomTvCasSessionOpenStatus = 280,
25999    AtomAssistantInvocationReported = 281,
26000    AtomDisplayWakeReported = 282,
26001    AtomCarUserHalModifyUserRequestReported = 283,
26002    AtomCarUserHalModifyUserResponseReported = 284,
26003    AtomCarUserHalPostSwitchResponseReported = 285,
26004    AtomCarUserHalInitialUserInfoRequestReported = 286,
26005    AtomCarUserHalInitialUserInfoResponseReported = 287,
26006    AtomCarUserHalUserAssociationRequestReported = 288,
26007    AtomCarUserHalSetUserAssociationResponseReported = 289,
26008    AtomNetworkIpProvisioningReported = 290,
26009    AtomNetworkDhcpRenewReported = 291,
26010    AtomNetworkValidationReported = 292,
26011    AtomNetworkStackQuirkReported = 293,
26012    AtomMediametricsAudiorecorddeviceusageReported = 294,
26013    AtomMediametricsAudiothreaddeviceusageReported = 295,
26014    AtomMediametricsAudiotrackdeviceusageReported = 296,
26015    AtomMediametricsAudiodeviceconnectionReported = 297,
26016    AtomBlobCommitted = 298,
26017    AtomBlobLeased = 299,
26018    AtomBlobOpened = 300,
26019    AtomContactsProviderStatusReported = 301,
26020    AtomKeystoreKeyEventReported = 302,
26021    AtomNetworkTetheringReported = 303,
26022    AtomImeTouchReported = 304,
26023    AtomUiInteractionFrameInfoReported = 305,
26024    AtomUiActionLatencyReported = 306,
26025    AtomWifiDisconnectReported = 307,
26026    AtomWifiConnectionStateChanged = 308,
26027    AtomHdmiCecActiveSourceChanged = 309,
26028    AtomHdmiCecMessageReported = 310,
26029    AtomAirplaneMode = 311,
26030    AtomModemRestart = 312,
26031    AtomCarrierIdMismatchReported = 313,
26032    AtomCarrierIdTableUpdated = 314,
26033    AtomDataStallRecoveryReported = 315,
26034    AtomMediametricsMediaparserReported = 316,
26035    AtomTlsHandshakeReported = 317,
26036    AtomTextClassifierApiUsageReported = 318,
26037    AtomCarWatchdogKillStatsReported = 319,
26038    AtomMediametricsPlaybackReported = 320,
26039    AtomMediaNetworkInfoChanged = 321,
26040    AtomMediaPlaybackStateChanged = 322,
26041    AtomMediaPlaybackErrorReported = 323,
26042    AtomMediaPlaybackTrackChanged = 324,
26043    AtomWifiScanReported = 325,
26044    AtomWifiPnoScanReported = 326,
26045    AtomTifTuneChanged = 327,
26046    AtomAutoRotateReported = 328,
26047    AtomPerfettoTrigger = 329,
26048    AtomTranscodingData = 330,
26049    AtomImsServiceEntitlementUpdated = 331,
26050    AtomDeviceRotated = 333,
26051    AtomSimSpecificSettingsRestored = 334,
26052    AtomTextClassifierDownloadReported = 335,
26053    AtomPinStorageEvent = 336,
26054    AtomFaceDownReported = 337,
26055    AtomBluetoothHalCrashReasonReported = 338,
26056    AtomRebootEscrowPreparationReported = 339,
26057    AtomRebootEscrowLskfCaptureReported = 340,
26058    AtomRebootEscrowRebootReported = 341,
26059    AtomBinderLatencyReported = 342,
26060    AtomMediametricsAaudiostreamReported = 343,
26061    AtomMediaTranscodingSessionEnded = 344,
26062    AtomMagnificationUsageReported = 345,
26063    AtomMagnificationModeWithImeOnReported = 346,
26064    AtomAppSearchCallStatsReported = 347,
26065    AtomAppSearchPutDocumentStatsReported = 348,
26066    AtomDeviceControlChanged = 349,
26067    AtomDeviceStateChanged = 350,
26068    AtomInputdeviceRegistered = 351,
26069    AtomSmartspaceCardReported = 352,
26070    AtomAuthPromptAuthenticateInvoked = 353,
26071    AtomAuthManagerCanAuthenticateInvoked = 354,
26072    AtomAuthEnrollActionInvoked = 355,
26073    AtomAuthDeprecatedApiUsed = 356,
26074    AtomUnattendedRebootOccurred = 357,
26075    AtomLongRebootBlockingReported = 358,
26076    AtomLocationTimeZoneProviderStateChanged = 359,
26077    AtomFdtrackEventOccurred = 364,
26078    AtomTimeoutAutoExtendedReported = 365,
26079    AtomAlarmBatchDelivered = 367,
26080    AtomAlarmScheduled = 368,
26081    AtomCarWatchdogIoOveruseStatsReported = 369,
26082    AtomUserLevelHibernationStateChanged = 370,
26083    AtomAppSearchInitializeStatsReported = 371,
26084    AtomAppSearchQueryStatsReported = 372,
26085    AtomAppProcessDied = 373,
26086    AtomNetworkIpReachabilityMonitorReported = 374,
26087    AtomSlowInputEventReported = 375,
26088    AtomAnrOccurredProcessingStarted = 376,
26089    AtomAppSearchRemoveStatsReported = 377,
26090    AtomMediaCodecReported = 378,
26091    AtomPermissionUsageFragmentInteraction = 379,
26092    AtomPermissionDetailsInteraction = 380,
26093    AtomPrivacySensorToggleInteraction = 381,
26094    AtomPrivacyToggleDialogInteraction = 382,
26095    AtomAppSearchOptimizeStatsReported = 383,
26096    AtomNonA11yToolServiceWarningReport = 384,
26097    AtomAppCompatStateChanged = 386,
26098    AtomSizeCompatRestartButtonEventReported = 387,
26099    AtomSplitscreenUiChanged = 388,
26100    AtomNetworkDnsHandshakeReported = 389,
26101    AtomBluetoothCodePathCounter = 390,
26102    AtomBluetoothLeBatchScanReportDelay = 392,
26103    AtomAccessibilityFloatingMenuUiChanged = 393,
26104    AtomNeuralnetworksCompilationCompleted = 394,
26105    AtomNeuralnetworksExecutionCompleted = 395,
26106    AtomNeuralnetworksCompilationFailed = 396,
26107    AtomNeuralnetworksExecutionFailed = 397,
26108    AtomContextHubBooted = 398,
26109    AtomContextHubRestarted = 399,
26110    AtomContextHubLoadedNanoappSnapshotReported = 400,
26111    AtomChreCodeDownloadTransacted = 401,
26112    AtomUwbSessionInited = 402,
26113    AtomUwbSessionClosed = 403,
26114    AtomUwbFirstRangingReceived = 404,
26115    AtomUwbRangingMeasurementReceived = 405,
26116    AtomTextClassifierDownloadWorkScheduled = 406,
26117    AtomTextClassifierDownloadWorkCompleted = 407,
26118    AtomClipboardCleared = 408,
26119    AtomVmCreationRequested = 409,
26120    AtomNearbyDeviceScanStateChanged = 410,
26121    AtomApplicationLocalesChanged = 412,
26122    AtomMediametricsAudiotrackstatusReported = 413,
26123    AtomFoldStateDurationReported = 414,
26124    AtomLocationTimeZoneProviderControllerStateChanged = 415,
26125    AtomDisplayHbmStateChanged = 416,
26126    AtomDisplayHbmBrightnessChanged = 417,
26127    AtomPersistentUriPermissionsFlushed = 418,
26128    AtomEarlyBootCompOsArtifactsCheckReported = 419,
26129    AtomVbmetaDigestReported = 420,
26130    AtomApexInfoGathered = 421,
26131    AtomPvmInfoGathered = 422,
26132    AtomWearSettingsUiInteracted = 423,
26133    AtomTracingServiceReportEvent = 424,
26134    AtomMediametricsAudiorecordstatusReported = 425,
26135    AtomLauncherLatency = 426,
26136    AtomDropboxEntryDropped = 427,
26137    AtomWifiP2pConnectionReported = 428,
26138    AtomGameStateChanged = 429,
26139    AtomHotwordDetectorCreateRequested = 430,
26140    AtomHotwordDetectionServiceInitResultReported = 431,
26141    AtomHotwordDetectionServiceRestarted = 432,
26142    AtomHotwordDetectorKeyphraseTriggered = 433,
26143    AtomHotwordDetectorEvents = 434,
26144    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
26145    AtomContactsIndexerUpdateStatsReported = 440,
26146    AtomAppBackgroundRestrictionsInfo = 441,
26147    AtomMmsSmsProviderGetThreadIdFailed = 442,
26148    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
26149    AtomPermissionReminderNotificationInteracted = 444,
26150    AtomRecentPermissionDecisionsInteracted = 445,
26151    AtomGnssPsdsDownloadReported = 446,
26152    AtomLeAudioConnectionSessionReported = 447,
26153    AtomLeAudioBroadcastSessionReported = 448,
26154    AtomDreamUiEventReported = 449,
26155    AtomTaskManagerEventReported = 450,
26156    AtomCdmAssociationAction = 451,
26157    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
26158    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
26159    AtomAccessibilityTextReadingOptionsChanged = 454,
26160    AtomWifiSetupFailureCrashReported = 455,
26161    AtomUwbDeviceErrorReported = 456,
26162    AtomIsolatedCompilationScheduled = 457,
26163    AtomIsolatedCompilationEnded = 458,
26164    AtomOnsOpportunisticEsimProvisioningComplete = 459,
26165    AtomSystemServerPreWatchdogOccurred = 460,
26166    AtomTelephonyAnomalyDetected = 461,
26167    AtomLetterboxPositionChanged = 462,
26168    AtomRemoteKeyProvisioningAttempt = 463,
26169    AtomRemoteKeyProvisioningNetworkInfo = 464,
26170    AtomRemoteKeyProvisioningTiming = 465,
26171    AtomMediaoutputOpInteractionReport = 466,
26172    AtomSyncExemptionOccurred = 468,
26173    AtomAutofillPresentationEventReported = 469,
26174    AtomDockStateChanged = 470,
26175    AtomSafetySourceStateCollected = 471,
26176    AtomSafetyCenterSystemEventReported = 472,
26177    AtomSafetyCenterInteractionReported = 473,
26178    AtomSettingsProviderSettingChanged = 474,
26179    AtomBroadcastDeliveryEventReported = 475,
26180    AtomServiceRequestEventReported = 476,
26181    AtomProviderAcquisitionEventReported = 477,
26182    AtomBluetoothDeviceNameReported = 478,
26183    AtomCbConfigUpdated = 479,
26184    AtomCbModuleErrorReported = 480,
26185    AtomCbServiceFeatureChanged = 481,
26186    AtomCbReceiverFeatureChanged = 482,
26187    AtomPrivacySignalNotificationInteraction = 484,
26188    AtomPrivacySignalIssueCardInteraction = 485,
26189    AtomPrivacySignalsJobFailure = 486,
26190    AtomVibrationReported = 487,
26191    AtomUwbRangingStart = 489,
26192    AtomAppCompactedV2 = 491,
26193    AtomDisplayBrightnessChanged = 494,
26194    AtomActivityActionBlocked = 495,
26195    AtomNetworkDnsServerSupportReported = 504,
26196    AtomVmBooted = 505,
26197    AtomVmExited = 506,
26198    AtomAmbientBrightnessStatsReported = 507,
26199    AtomMediametricsSpatializercapabilitiesReported = 508,
26200    AtomMediametricsSpatializerdeviceenabledReported = 509,
26201    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
26202    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
26203    AtomHearingAidInfoReported = 513,
26204    AtomDeviceWideJobConstraintChanged = 514,
26205    AtomAmbientModeChanged = 515,
26206    AtomAnrLatencyReported = 516,
26207    AtomResourceApiInfo = 517,
26208    AtomSystemDefaultNetworkChanged = 518,
26209    AtomIwlanSetupDataCallResultReported = 519,
26210    AtomIwlanPdnDisconnectedReasonReported = 520,
26211    AtomAirplaneModeSessionReported = 521,
26212    AtomVmCpuStatusReported = 522,
26213    AtomVmMemStatusReported = 523,
26214    AtomPackageInstallationSessionReported = 524,
26215    AtomDefaultNetworkRematchInfo = 525,
26216    AtomNetworkSelectionPerformance = 526,
26217    AtomNetworkNsdReported = 527,
26218    AtomBluetoothDisconnectionReasonReported = 529,
26219    AtomBluetoothLocalVersionsReported = 530,
26220    AtomBluetoothRemoteSupportedFeaturesReported = 531,
26221    AtomBluetoothLocalSupportedFeaturesReported = 532,
26222    AtomBluetoothGattAppInfo = 533,
26223    AtomBrightnessConfigurationUpdated = 534,
26224    AtomWearMediaOutputSwitcherLaunched = 538,
26225    AtomWearMediaOutputSwitcherFinished = 539,
26226    AtomWearMediaOutputSwitcherConnectionReported = 540,
26227    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
26228    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
26229    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
26230    AtomPackageManagerSnapshotReported = 544,
26231    AtomPackageManagerAppsFilterCacheBuildReported = 545,
26232    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
26233    AtomLauncherImpressionEvent = 547,
26234    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
26235    AtomWsWatchFaceEdited = 551,
26236    AtomWsWatchFaceFavoriteActionReported = 552,
26237    AtomWsWatchFaceSetActionReported = 553,
26238    AtomPackageUninstallationReported = 554,
26239    AtomGameModeChanged = 555,
26240    AtomGameModeConfigurationChanged = 556,
26241    AtomBedtimeModeStateChanged = 557,
26242    AtomNetworkSliceSessionEnded = 558,
26243    AtomNetworkSliceDailyDataUsageReported = 559,
26244    AtomNfcTagTypeOccurred = 560,
26245    AtomNfcAidConflictOccurred = 561,
26246    AtomNfcReaderConflictOccurred = 562,
26247    AtomWsTileListChanged = 563,
26248    AtomGetTypeAccessedWithoutPermission = 564,
26249    AtomMobileBundledAppInfoGathered = 566,
26250    AtomWsWatchFaceComplicationSetChanged = 567,
26251    AtomMediaDrmCreated = 568,
26252    AtomMediaDrmErrored = 569,
26253    AtomMediaDrmSessionOpened = 570,
26254    AtomMediaDrmSessionClosed = 571,
26255    AtomUserSelectedResolution = 572,
26256    AtomUnsafeIntentEventReported = 573,
26257    AtomPerformanceHintSessionReported = 574,
26258    AtomMediametricsMidiDeviceCloseReported = 576,
26259    AtomBiometricTouchReported = 577,
26260    AtomHotwordAudioEgressEventReported = 578,
26261    AtomLocationEnabledStateChanged = 580,
26262    AtomImeRequestFinished = 581,
26263    AtomUsbComplianceWarningsReported = 582,
26264    AtomAppSupportedLocalesChanged = 583,
26265    AtomMediaProviderVolumeRecoveryReported = 586,
26266    AtomBiometricPropertiesCollected = 587,
26267    AtomKernelWakeupAttributed = 588,
26268    AtomScreenStateChangedV2 = 589,
26269    AtomWsBackupActionReported = 590,
26270    AtomWsRestoreActionReported = 591,
26271    AtomDeviceLogAccessEventReported = 592,
26272    AtomMediaSessionUpdated = 594,
26273    AtomWearOobeStateChanged = 595,
26274    AtomWsNotificationUpdated = 596,
26275    AtomNetworkValidationFailureStatsDailyReported = 601,
26276    AtomWsComplicationTapped = 602,
26277    AtomWsNotificationBlocking = 780,
26278    AtomWsNotificationBridgemodeUpdated = 822,
26279    AtomWsNotificationDismissalActioned = 823,
26280    AtomWsNotificationActioned = 824,
26281    AtomWsNotificationLatency = 880,
26282    AtomWifiBytesTransfer = 10000,
26283    AtomWifiBytesTransferByFgBg = 10001,
26284    AtomMobileBytesTransfer = 10002,
26285    AtomMobileBytesTransferByFgBg = 10003,
26286    AtomBluetoothBytesTransfer = 10006,
26287    AtomKernelWakelock = 10004,
26288    AtomSubsystemSleepState = 10005,
26289    AtomCpuTimePerUid = 10009,
26290    AtomCpuTimePerUidFreq = 10010,
26291    AtomWifiActivityInfo = 10011,
26292    AtomModemActivityInfo = 10012,
26293    AtomBluetoothActivityInfo = 10007,
26294    AtomProcessMemoryState = 10013,
26295    AtomSystemElapsedRealtime = 10014,
26296    AtomSystemUptime = 10015,
26297    AtomCpuActiveTime = 10016,
26298    AtomCpuClusterTime = 10017,
26299    AtomDiskSpace = 10018,
26300    AtomRemainingBatteryCapacity = 10019,
26301    AtomFullBatteryCapacity = 10020,
26302    AtomTemperature = 10021,
26303    AtomBinderCalls = 10022,
26304    AtomBinderCallsExceptions = 10023,
26305    AtomLooperStats = 10024,
26306    AtomDiskStats = 10025,
26307    AtomDirectoryUsage = 10026,
26308    AtomAppSize = 10027,
26309    AtomCategorySize = 10028,
26310    AtomProcStats = 10029,
26311    AtomBatteryVoltage = 10030,
26312    AtomNumFingerprintsEnrolled = 10031,
26313    AtomDiskIo = 10032,
26314    AtomPowerProfile = 10033,
26315    AtomProcStatsPkgProc = 10034,
26316    AtomProcessCpuTime = 10035,
26317    AtomCpuTimePerThreadFreq = 10037,
26318    AtomOnDevicePowerMeasurement = 10038,
26319    AtomDeviceCalculatedPowerUse = 10039,
26320    AtomProcessMemoryHighWaterMark = 10042,
26321    AtomBatteryLevel = 10043,
26322    AtomBuildInformation = 10044,
26323    AtomBatteryCycleCount = 10045,
26324    AtomDebugElapsedClock = 10046,
26325    AtomDebugFailingElapsedClock = 10047,
26326    AtomNumFacesEnrolled = 10048,
26327    AtomRoleHolder = 10049,
26328    AtomDangerousPermissionState = 10050,
26329    AtomTrainInfo = 10051,
26330    AtomTimeZoneDataInfo = 10052,
26331    AtomExternalStorageInfo = 10053,
26332    AtomGpuStatsGlobalInfo = 10054,
26333    AtomGpuStatsAppInfo = 10055,
26334    AtomSystemIonHeapSize = 10056,
26335    AtomAppsOnExternalStorageInfo = 10057,
26336    AtomFaceSettings = 10058,
26337    AtomCoolingDevice = 10059,
26338    AtomAppOps = 10060,
26339    AtomProcessSystemIonHeapSize = 10061,
26340    AtomSurfaceflingerStatsGlobalInfo = 10062,
26341    AtomSurfaceflingerStatsLayerInfo = 10063,
26342    AtomProcessMemorySnapshot = 10064,
26343    AtomVmsClientStats = 10065,
26344    AtomNotificationRemoteViews = 10066,
26345    AtomDangerousPermissionStateSampled = 10067,
26346    AtomGraphicsStats = 10068,
26347    AtomRuntimeAppOpAccess = 10069,
26348    AtomIonHeapSize = 10070,
26349    AtomPackageNotificationPreferences = 10071,
26350    AtomPackageNotificationChannelPreferences = 10072,
26351    AtomPackageNotificationChannelGroupPreferences = 10073,
26352    AtomGnssStats = 10074,
26353    AtomAttributedAppOps = 10075,
26354    AtomVoiceCallSession = 10076,
26355    AtomVoiceCallRatUsage = 10077,
26356    AtomSimSlotState = 10078,
26357    AtomSupportedRadioAccessFamily = 10079,
26358    AtomSettingSnapshot = 10080,
26359    AtomBlobInfo = 10081,
26360    AtomDataUsageBytesTransfer = 10082,
26361    AtomBytesTransferByTagAndMetered = 10083,
26362    AtomDndModeRule = 10084,
26363    AtomGeneralExternalStorageAccessStats = 10085,
26364    AtomIncomingSms = 10086,
26365    AtomOutgoingSms = 10087,
26366    AtomCarrierIdTableVersion = 10088,
26367    AtomDataCallSession = 10089,
26368    AtomCellularServiceState = 10090,
26369    AtomCellularDataServiceSwitch = 10091,
26370    AtomSystemMemory = 10092,
26371    AtomImsRegistrationTermination = 10093,
26372    AtomImsRegistrationStats = 10094,
26373    AtomCpuTimePerClusterFreq = 10095,
26374    AtomCpuCyclesPerUidCluster = 10096,
26375    AtomDeviceRotatedData = 10097,
26376    AtomCpuCyclesPerThreadGroupCluster = 10098,
26377    AtomMediaDrmActivityInfo = 10099,
26378    AtomOemManagedBytesTransfer = 10100,
26379    AtomGnssPowerStats = 10101,
26380    AtomTimeZoneDetectorState = 10102,
26381    AtomKeystore2StorageStats = 10103,
26382    AtomRkpPoolStats = 10104,
26383    AtomProcessDmabufMemory = 10105,
26384    AtomPendingAlarmInfo = 10106,
26385    AtomUserLevelHibernatedApps = 10107,
26386    AtomLauncherLayoutSnapshot = 10108,
26387    AtomGlobalHibernatedApps = 10109,
26388    AtomInputEventLatencySketch = 10110,
26389    AtomBatteryUsageStatsBeforeReset = 10111,
26390    AtomBatteryUsageStatsSinceReset = 10112,
26391    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
26392    AtomInstalledIncrementalPackage = 10114,
26393    AtomTelephonyNetworkRequests = 10115,
26394    AtomAppSearchStorageInfo = 10116,
26395    AtomVmstat = 10117,
26396    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
26397    AtomKeystore2KeyCreationWithAuthInfo = 10119,
26398    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
26399    AtomKeystore2AtomWithOverflow = 10121,
26400    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
26401    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
26402    AtomRkpErrorStats = 10124,
26403    AtomKeystore2CrashStats = 10125,
26404    AtomVendorApexInfo = 10126,
26405    AtomAccessibilityShortcutStats = 10127,
26406    AtomAccessibilityFloatingMenuStats = 10128,
26407    AtomDataUsageBytesTransferV2 = 10129,
26408    AtomMediaCapabilities = 10130,
26409    AtomCarWatchdogSystemIoUsageSummary = 10131,
26410    AtomCarWatchdogUidIoUsageSummary = 10132,
26411    AtomImsRegistrationFeatureTagStats = 10133,
26412    AtomRcsClientProvisioningStats = 10134,
26413    AtomRcsAcsProvisioningStats = 10135,
26414    AtomSipDelegateStats = 10136,
26415    AtomSipTransportFeatureTagStats = 10137,
26416    AtomSipMessageResponse = 10138,
26417    AtomSipTransportSession = 10139,
26418    AtomImsDedicatedBearerListenerEvent = 10140,
26419    AtomImsDedicatedBearerEvent = 10141,
26420    AtomImsRegistrationServiceDescStats = 10142,
26421    AtomUceEventStats = 10143,
26422    AtomPresenceNotifyEvent = 10144,
26423    AtomGbaEvent = 10145,
26424    AtomPerSimStatus = 10146,
26425    AtomGpuWorkPerUid = 10147,
26426    AtomPersistentUriPermissionsAmountPerPackage = 10148,
26427    AtomSignedPartitionInfo = 10149,
26428    AtomPinnedFileSizesPerPackage = 10150,
26429    AtomPendingIntentsPerPackage = 10151,
26430    AtomUserInfo = 10152,
26431    AtomTelephonyNetworkRequestsV2 = 10153,
26432    AtomDeviceTelephonyProperties = 10154,
26433    AtomRemoteKeyProvisioningErrorCounts = 10155,
26434    AtomSafetyState = 10156,
26435    AtomIncomingMms = 10157,
26436    AtomOutgoingMms = 10158,
26437    AtomMultiUserInfo = 10160,
26438    AtomNetworkBpfMapInfo = 10161,
26439    AtomOutgoingShortCodeSms = 10162,
26440    AtomConnectivityStateSample = 10163,
26441    AtomNetworkSelectionRematchReasonsInfo = 10164,
26442    AtomGameModeInfo = 10165,
26443    AtomGameModeConfiguration = 10166,
26444    AtomGameModeListener = 10167,
26445    AtomNetworkSliceRequestCount = 10168,
26446    AtomWsTileSnapshot = 10169,
26447    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
26448    AtomProcessState = 10171,
26449    AtomProcessAssociation = 10172,
26450    AtomAdpfSystemComponentInfo = 10173,
26451    AtomNotificationMemoryUse = 10174,
26452    AtomHdrCapabilities = 10175,
26453    AtomWsFavouriteWatchFaceListSnapshot = 10176,
26454    AtomAccessibilityCheckResultReported = 910,
26455    AtomAdaptiveAuthUnlockAfterLockReported = 820,
26456    AtomThermalStatusCalled = 772,
26457    AtomThermalHeadroomCalled = 773,
26458    AtomThermalHeadroomThresholdsCalled = 774,
26459    AtomAdpfHintSessionTidCleanup = 839,
26460    AtomThermalHeadroomThresholds = 10201,
26461    AtomAdpfSessionSnapshot = 10218,
26462    AtomJsscriptengineLatencyReported = 483,
26463    AtomAdServicesApiCalled = 435,
26464    AtomAdServicesMesurementReportsUploaded = 436,
26465    AtomMobileDataDownloadFileGroupStatusReported = 490,
26466    AtomMobileDataDownloadDownloadResultReported = 502,
26467    AtomAdServicesSettingsUsageReported = 493,
26468    AtomBackgroundFetchProcessReported = 496,
26469    AtomUpdateCustomAudienceProcessReported = 497,
26470    AtomRunAdBiddingProcessReported = 498,
26471    AtomRunAdScoringProcessReported = 499,
26472    AtomRunAdSelectionProcessReported = 500,
26473    AtomRunAdBiddingPerCaProcessReported = 501,
26474    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
26475    AtomAdServicesMeasurementRegistrations = 512,
26476    AtomAdServicesGetTopicsReported = 535,
26477    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
26478    AtomAdServicesEpochComputationClassifierReported = 537,
26479    AtomAdServicesBackCompatGetTopicsReported = 598,
26480    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
26481    AtomAdServicesMeasurementDebugKeys = 640,
26482    AtomAdServicesErrorReported = 662,
26483    AtomAdServicesBackgroundJobsExecutionReported = 663,
26484    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
26485    AtomAdServicesMeasurementAttribution = 674,
26486    AtomAdServicesMeasurementJobs = 675,
26487    AtomAdServicesMeasurementWipeout = 676,
26488    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
26489    AtomAdServicesEnrollmentDataStored = 697,
26490    AtomAdServicesEnrollmentFileDownloaded = 698,
26491    AtomAdServicesEnrollmentMatched = 699,
26492    AtomAdServicesConsentMigrated = 702,
26493    AtomAdServicesEnrollmentFailed = 714,
26494    AtomAdServicesMeasurementClickVerification = 756,
26495    AtomAdServicesEncryptionKeyFetched = 765,
26496    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
26497    AtomDestinationRegisteredBeacons = 767,
26498    AtomReportInteractionApiCalled = 768,
26499    AtomInteractionReportingTableCleared = 769,
26500    AtomAppManifestConfigHelperCalled = 788,
26501    AtomAdFilteringProcessJoinCaReported = 793,
26502    AtomAdFilteringProcessAdSelectionReported = 794,
26503    AtomAdCounterHistogramUpdaterReported = 795,
26504    AtomSignatureVerification = 807,
26505    AtomKAnonImmediateSignJoinStatusReported = 808,
26506    AtomKAnonBackgroundJobStatusReported = 809,
26507    AtomKAnonInitializeStatusReported = 810,
26508    AtomKAnonSignStatusReported = 811,
26509    AtomKAnonJoinStatusReported = 812,
26510    AtomKAnonKeyAttestationStatusReported = 813,
26511    AtomGetAdSelectionDataApiCalled = 814,
26512    AtomGetAdSelectionDataBuyerInputGenerated = 815,
26513    AtomBackgroundJobSchedulingReported = 834,
26514    AtomTopicsEncryptionEpochComputationReported = 840,
26515    AtomTopicsEncryptionGetTopicsReported = 841,
26516    AtomAdservicesShellCommandCalled = 842,
26517    AtomUpdateSignalsApiCalled = 843,
26518    AtomEncodingJobRun = 844,
26519    AtomEncodingJsFetch = 845,
26520    AtomEncodingJsExecution = 846,
26521    AtomPersistAdSelectionResultCalled = 847,
26522    AtomServerAuctionKeyFetchCalled = 848,
26523    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
26524    AtomAdServicesMeasurementProcessOdpRegistration = 864,
26525    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
26526    AtomSelectAdsFromOutcomesApiCalled = 876,
26527    AtomReportImpressionApiCalled = 877,
26528    AtomAdServicesEnrollmentTransactionStats = 885,
26529    AtomAdServicesCobaltLoggerEventReported = 902,
26530    AtomAdServicesCobaltPeriodicJobEventReported = 903,
26531    AtomUpdateSignalsProcessReported = 905,
26532    AtomTopicsScheduleEpochJobSettingReported = 930,
26533    AtomAiWallpapersButtonPressed = 706,
26534    AtomAiWallpapersTemplateSelected = 707,
26535    AtomAiWallpapersTermSelected = 708,
26536    AtomAiWallpapersWallpaperSet = 709,
26537    AtomAiWallpapersSessionSummary = 710,
26538    AtomApexInstallationRequested = 732,
26539    AtomApexInstallationStaged = 733,
26540    AtomApexInstallationEnded = 734,
26541    AtomAppSearchSetSchemaStatsReported = 385,
26542    AtomAppSearchSchemaMigrationStatsReported = 579,
26543    AtomAppSearchUsageSearchIntentStatsReported = 825,
26544    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
26545    AtomAppSearchAppsIndexerStatsReported = 909,
26546    AtomArtDatumReported = 332,
26547    AtomArtDeviceDatumReported = 550,
26548    AtomArtDatumDeltaReported = 565,
26549    AtomArtDex2oatReported = 929,
26550    AtomArtDeviceStatus = 10205,
26551    AtomBackgroundDexoptJobEnded = 467,
26552    AtomPrerebootDexoptJobEnded = 883,
26553    AtomOdrefreshReported = 366,
26554    AtomOdsignReported = 548,
26555    AtomAutofillUiEventReported = 603,
26556    AtomAutofillFillRequestReported = 604,
26557    AtomAutofillFillResponseReported = 605,
26558    AtomAutofillSaveEventReported = 606,
26559    AtomAutofillSessionCommitted = 607,
26560    AtomAutofillFieldClassificationEventReported = 659,
26561    AtomCarRecentsEventReported = 770,
26562    AtomCarCalmModeEventReported = 797,
26563    AtomCarWakeupFromSuspendReported = 852,
26564    AtomPluginInitialized = 655,
26565    AtomBluetoothHashedDeviceNameReported = 613,
26566    AtomBluetoothL2capCocClientConnection = 614,
26567    AtomBluetoothL2capCocServerConnection = 615,
26568    AtomBluetoothLeSessionConnected = 656,
26569    AtomRestrictedBluetoothDeviceNameReported = 666,
26570    AtomBluetoothProfileConnectionAttempted = 696,
26571    AtomBluetoothContentProfileErrorReported = 781,
26572    AtomBluetoothRfcommConnectionAttempted = 782,
26573    AtomRemoteDeviceInformationWithMetricId = 862,
26574    AtomLeAppScanStateChanged = 870,
26575    AtomLeRadioScanStopped = 871,
26576    AtomLeScanResultReceived = 872,
26577    AtomLeScanAbused = 873,
26578    AtomLeAdvStateChanged = 874,
26579    AtomLeAdvErrorReported = 875,
26580    AtomA2dpSessionReported = 904,
26581    AtomBluetoothCrossLayerEventReported = 916,
26582    AtomBroadcastAudioSessionReported = 927,
26583    AtomBroadcastAudioSyncReported = 928,
26584    AtomBluetoothRfcommConnectionReportedAtClose = 982,
26585    AtomBluetoothLeConnection = 988,
26586    AtomBroadcastSent = 922,
26587    AtomCameraFeatureCombinationQueryEvent = 900,
26588    AtomCertificateTransparencyLogListStateChanged = 934,
26589    AtomCertificateTransparencyLogListUpdateFailed = 972,
26590    AtomDailyKeepaliveInfoReported = 650,
26591    AtomNetworkRequestStateChanged = 779,
26592    AtomTetheringActiveSessionsReported = 925,
26593    AtomNetworkStatsRecorderFileOperated = 783,
26594    AtomCoreNetworkingTerribleErrorOccurred = 979,
26595    AtomApfSessionInfoReported = 777,
26596    AtomIpClientRaInfoReported = 778,
26597    AtomVpnConnectionStateChanged = 850,
26598    AtomVpnConnectionReported = 851,
26599    AtomCpuPolicy = 10199,
26600    AtomCredentialManagerApiCalled = 585,
26601    AtomCredentialManagerInitPhaseReported = 651,
26602    AtomCredentialManagerCandidatePhaseReported = 652,
26603    AtomCredentialManagerFinalPhaseReported = 653,
26604    AtomCredentialManagerTotalReported = 667,
26605    AtomCredentialManagerFinalnouidReported = 668,
26606    AtomCredentialManagerGetReported = 669,
26607    AtomCredentialManagerAuthClickReported = 670,
26608    AtomCredentialManagerApiv2Called = 671,
26609    AtomCronetEngineCreated = 703,
26610    AtomCronetTrafficReported = 704,
26611    AtomCronetEngineBuilderInitialized = 762,
26612    AtomCronetHttpFlagsInitialized = 763,
26613    AtomCronetInitialized = 764,
26614    AtomDesktopModeUiChanged = 818,
26615    AtomDesktopModeSessionTaskUpdate = 819,
26616    AtomDesktopModeTaskSizeUpdated = 935,
26617    AtomDeviceLockCheckInRequestReported = 726,
26618    AtomDeviceLockProvisioningCompleteReported = 727,
26619    AtomDeviceLockKioskAppRequestReported = 728,
26620    AtomDeviceLockCheckInRetryReported = 789,
26621    AtomDeviceLockProvisionFailureReported = 790,
26622    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
26623    AtomDevicePolicyManagementMode = 10216,
26624    AtomDevicePolicyState = 10217,
26625    AtomDisplayModeDirectorVoteChanged = 792,
26626    AtomExternalDisplayStateChanged = 806,
26627    AtomDndStateChanged = 657,
26628    AtomDreamSettingChanged = 705,
26629    AtomDreamSettingSnapshot = 10192,
26630    AtomExpressEventReported = 528,
26631    AtomExpressHistogramSampleReported = 593,
26632    AtomExpressUidEventReported = 644,
26633    AtomExpressUidHistogramSampleReported = 658,
26634    AtomFederatedComputeApiCalled = 712,
26635    AtomFederatedComputeTrainingEventReported = 771,
26636    AtomExampleIteratorNextLatencyReported = 838,
26637    AtomFullScreenIntentLaunched = 631,
26638    AtomBalAllowed = 632,
26639    AtomInTaskActivityStarted = 685,
26640    AtomDeviceOrientationChanged = 906,
26641    AtomCachedAppsHighWatermark = 10189,
26642    AtomStylusPredictionMetricsReported = 718,
26643    AtomUserRiskEventReported = 725,
26644    AtomMediaProjectionStateChanged = 729,
26645    AtomMediaProjectionTargetChanged = 730,
26646    AtomExcessiveBinderProxyCountReported = 853,
26647    AtomProxyBytesTransferByFgBg = 10200,
26648    AtomMobileBytesTransferByProcState = 10204,
26649    AtomBiometricFrrNotification = 817,
26650    AtomSensitiveContentMediaProjectionSession = 830,
26651    AtomSensitiveNotificationAppProtectionSession = 831,
26652    AtomSensitiveNotificationAppProtectionApplied = 832,
26653    AtomSensitiveNotificationRedaction = 833,
26654    AtomSensitiveContentAppProtection = 835,
26655    AtomAppRestrictionStateChanged = 866,
26656    AtomBatteryUsageStatsPerUid = 10209,
26657    AtomPostgcMemorySnapshot = 924,
26658    AtomPowerSaveTempAllowlistChanged = 926,
26659    AtomAppOpAccessTracked = 931,
26660    AtomContentOrFileUriEventReported = 933,
26661    AtomApplicationGrammaticalInflectionChanged = 584,
26662    AtomSystemGrammaticalInflectionChanged = 816,
26663    AtomBatteryHealth = 10220,
26664    AtomHdmiEarcStatusReported = 701,
26665    AtomHdmiSoundbarModeStatusReported = 724,
26666    AtomHealthConnectApiCalled = 616,
26667    AtomHealthConnectUsageStats = 617,
26668    AtomHealthConnectStorageStats = 618,
26669    AtomHealthConnectApiInvoked = 643,
26670    AtomExerciseRouteApiCalled = 654,
26671    AtomHealthConnectExportInvoked = 907,
26672    AtomHealthConnectImportInvoked = 918,
26673    AtomHealthConnectExportImportStatsReported = 919,
26674    AtomHealthConnectUiImpression = 623,
26675    AtomHealthConnectUiInteraction = 624,
26676    AtomHealthConnectAppOpenedReported = 625,
26677    AtomHotwordEgressSizeAtomReported = 761,
26678    AtomIkeSessionTerminated = 678,
26679    AtomIkeLivenessCheckSessionValidated = 760,
26680    AtomNegotiatedSecurityAssociation = 821,
26681    AtomKeyboardConfigured = 682,
26682    AtomKeyboardSystemsEventReported = 683,
26683    AtomInputdeviceUsageReported = 686,
26684    AtomInputEventLatencyReported = 932,
26685    AtomTouchpadUsage = 10191,
26686    AtomKernelOomKillOccurred = 754,
26687    AtomEmergencyStateChanged = 633,
26688    AtomChreSignificantMotionStateChanged = 868,
26689    AtomPopulationDensityProviderLoadingReported = 1002,
26690    AtomDensityBasedCoarseLocationsUsageReported = 1003,
26691    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
26692    AtomMediaCodecReclaimRequestCompleted = 600,
26693    AtomMediaCodecStarted = 641,
26694    AtomMediaCodecStopped = 642,
26695    AtomMediaCodecRendered = 684,
26696    AtomMediaEditingEndedReported = 798,
26697    AtomMteState = 10181,
26698    AtomMicroxrDeviceBootCompleteReported = 901,
26699    AtomNfcObserveModeStateChanged = 855,
26700    AtomNfcFieldChanged = 856,
26701    AtomNfcPollingLoopNotificationReported = 857,
26702    AtomNfcProprietaryCapabilitiesReported = 858,
26703    AtomOndevicepersonalizationApiCalled = 711,
26704    AtomComponentStateChangedReported = 863,
26705    AtomPdfLoadReported = 859,
26706    AtomPdfApiUsageReported = 860,
26707    AtomPdfSearchReported = 861,
26708    AtomPressureStallInformation = 10229,
26709    AtomPermissionRationaleDialogViewed = 645,
26710    AtomPermissionRationaleDialogActionReported = 646,
26711    AtomAppDataSharingUpdatesNotificationInteraction = 647,
26712    AtomAppDataSharingUpdatesFragmentViewed = 648,
26713    AtomAppDataSharingUpdatesFragmentActionReported = 649,
26714    AtomEnhancedConfirmationDialogResultReported = 827,
26715    AtomEnhancedConfirmationRestrictionCleared = 828,
26716    AtomPhotopickerSessionInfoReported = 886,
26717    AtomPhotopickerApiInfoReported = 887,
26718    AtomPhotopickerUiEventLogged = 888,
26719    AtomPhotopickerMediaItemStatusReported = 889,
26720    AtomPhotopickerPreviewInfoLogged = 890,
26721    AtomPhotopickerMenuInteractionLogged = 891,
26722    AtomPhotopickerBannerInteractionLogged = 892,
26723    AtomPhotopickerMediaLibraryInfoLogged = 893,
26724    AtomPhotopickerPageInfoLogged = 894,
26725    AtomPhotopickerMediaGridSyncInfoReported = 895,
26726    AtomPhotopickerAlbumSyncInfoReported = 896,
26727    AtomPhotopickerSearchInfoReported = 897,
26728    AtomSearchDataExtractionDetailsReported = 898,
26729    AtomEmbeddedPhotopickerInfoReported = 899,
26730    AtomAtom9999 = 9999,
26731    AtomAtom99999 = 99999,
26732    AtomScreenOffReported = 776,
26733    AtomScreenTimeoutOverrideReported = 836,
26734    AtomScreenInteractiveSessionReported = 837,
26735    AtomScreenDimReported = 867,
26736    AtomMediaProviderDatabaseRollbackReported = 784,
26737    AtomBackupSetupStatusReported = 785,
26738    AtomRangingSessionConfigured = 993,
26739    AtomRangingSessionStarted = 994,
26740    AtomRangingSessionClosed = 995,
26741    AtomRangingTechnologyStarted = 996,
26742    AtomRangingTechnologyStopped = 997,
26743    AtomRkpdPoolStats = 664,
26744    AtomRkpdClientOperation = 665,
26745    AtomSandboxApiCalled = 488,
26746    AtomSandboxActivityEventOccurred = 735,
26747    AtomSdkSandboxRestrictedAccessInSession = 796,
26748    AtomSandboxSdkStorage = 10159,
26749    AtomSelinuxAuditLog = 799,
26750    AtomSettingsSpaReported = 622,
26751    AtomTestExtensionAtomReported = 660,
26752    AtomTestRestrictedAtomReported = 672,
26753    AtomStatsSocketLossReported = 752,
26754    AtomLockscreenShortcutSelected = 611,
26755    AtomLockscreenShortcutTriggered = 612,
26756    AtomLauncherImpressionEventV2 = 716,
26757    AtomDisplaySwitchLatencyTracked = 753,
26758    AtomNotificationListenerService = 829,
26759    AtomNavHandleTouchPoints = 869,
26760    AtomCommunalHubWidgetEventReported = 908,
26761    AtomCommunalHubSnapshot = 10226,
26762    AtomEmergencyNumberDialed = 637,
26763    AtomCallStats = 10221,
26764    AtomCallAudioRouteStats = 10222,
26765    AtomTelecomApiStats = 10223,
26766    AtomTelecomErrorStats = 10224,
26767    AtomCellularRadioPowerStateChanged = 713,
26768    AtomEmergencyNumbersInfo = 10180,
26769    AtomDataNetworkValidation = 10207,
26770    AtomDataRatStateChanged = 854,
26771    AtomConnectedChannelChanged = 882,
26772    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
26773    AtomQualifiedRatListChanged = 634,
26774    AtomQnsImsCallDropStats = 635,
26775    AtomQnsFallbackRestrictionChanged = 636,
26776    AtomQnsRatPreferenceMismatchInfo = 10177,
26777    AtomQnsHandoverTimeMillis = 10178,
26778    AtomQnsHandoverPingpong = 10179,
26779    AtomSatelliteController = 10182,
26780    AtomSatelliteSession = 10183,
26781    AtomSatelliteIncomingDatagram = 10184,
26782    AtomSatelliteOutgoingDatagram = 10185,
26783    AtomSatelliteProvision = 10186,
26784    AtomSatelliteSosMessageRecommender = 10187,
26785    AtomCarrierRoamingSatelliteSession = 10211,
26786    AtomCarrierRoamingSatelliteControllerStats = 10212,
26787    AtomControllerStatsPerPackage = 10213,
26788    AtomSatelliteEntitlement = 10214,
26789    AtomSatelliteConfigUpdater = 10215,
26790    AtomSatelliteAccessController = 10219,
26791    AtomCellularIdentifierDisclosed = 800,
26792    AtomThreadnetworkTelemetryDataReported = 738,
26793    AtomThreadnetworkTopoEntryRepeated = 739,
26794    AtomThreadnetworkDeviceInfoReported = 740,
26795    AtomBootIntegrityInfoReported = 775,
26796    AtomTvLowPowerStandbyPolicy = 679,
26797    AtomExternalTvInputEvent = 717,
26798    AtomTestUprobestatsAtomReported = 915,
26799    AtomUwbActivityInfo = 10188,
26800    AtomMediatorUpdated = 721,
26801    AtomSysproxyBluetoothBytesTransfer = 10196,
26802    AtomSysproxyConnectionUpdated = 786,
26803    AtomWearCompanionConnectionState = 921,
26804    AtomMediaActionReported = 608,
26805    AtomMediaControlsLaunched = 609,
26806    AtomMediaSessionStateChanged = 677,
26807    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
26808    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
26809    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
26810    AtomWearModeStateChanged = 715,
26811    AtomRendererInitialized = 736,
26812    AtomSchemaVersionReceived = 737,
26813    AtomLayoutInspected = 741,
26814    AtomLayoutExpressionInspected = 742,
26815    AtomLayoutAnimationsInspected = 743,
26816    AtomMaterialComponentsInspected = 744,
26817    AtomTileRequested = 745,
26818    AtomStateResponseReceived = 746,
26819    AtomTileResponseReceived = 747,
26820    AtomInflationFinished = 748,
26821    AtomInflationFailed = 749,
26822    AtomIgnoredInflationFailuresReported = 750,
26823    AtomDrawableRendered = 751,
26824    AtomWearTimeSyncRequested = 911,
26825    AtomWearTimeUpdateStarted = 912,
26826    AtomWearTimeSyncAttemptCompleted = 913,
26827    AtomWearTimeChanged = 914,
26828    AtomWearAdaptiveSuspendStatsReported = 619,
26829    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
26830    AtomWearPowerAnomalyServiceEventStatsReported = 621,
26831    AtomWsWearTimeSession = 610,
26832    AtomWsIncomingCallActionReported = 626,
26833    AtomWsCallDisconnectionReported = 627,
26834    AtomWsCallDurationReported = 628,
26835    AtomWsCallUserExperienceLatencyReported = 629,
26836    AtomWsCallInteractionReported = 630,
26837    AtomWsOnBodyStateChanged = 787,
26838    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
26839    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
26840    AtomWsComplicationsImpactedNotificationEventReported = 804,
26841    AtomWsRemoteEventUsageReported = 920,
26842    AtomWsBugreportRequested = 936,
26843    AtomWsBugreportTriggered = 937,
26844    AtomWsBugreportFinished = 938,
26845    AtomWsBugreportResultReceived = 939,
26846    AtomWsStandaloneModeSnapshot = 10197,
26847    AtomWsFavoriteWatchFaceSnapshot = 10206,
26848    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
26849    AtomWsWatchFaceCustomizationSnapshot = 10227,
26850    AtomWearPowerMenuOpened = 731,
26851    AtomWearAssistantOpened = 755,
26852    AtomFirstOverlayStateChanged = 917,
26853    AtomWifiAwareNdpReported = 638,
26854    AtomWifiAwareAttachReported = 639,
26855    AtomWifiSelfRecoveryTriggered = 661,
26856    AtomSoftApStarted = 680,
26857    AtomSoftApStopped = 681,
26858    AtomWifiLockReleased = 687,
26859    AtomWifiLockDeactivated = 688,
26860    AtomWifiConfigSaved = 689,
26861    AtomWifiAwareResourceUsingChanged = 690,
26862    AtomWifiAwareHalApiCalled = 691,
26863    AtomWifiLocalOnlyRequestReceived = 692,
26864    AtomWifiLocalOnlyRequestScanTriggered = 693,
26865    AtomWifiThreadTaskExecuted = 694,
26866    AtomWifiStateChanged = 700,
26867    AtomPnoScanStarted = 719,
26868    AtomPnoScanStopped = 720,
26869    AtomWifiIsUnusableReported = 722,
26870    AtomWifiApCapabilitiesReported = 723,
26871    AtomSoftApStateChanged = 805,
26872    AtomScorerPredictionResultReported = 884,
26873    AtomWifiAwareCapabilities = 10190,
26874    AtomWifiModuleInfo = 10193,
26875    AtomWifiSettingInfo = 10194,
26876    AtomWifiComplexSettingInfo = 10195,
26877    AtomWifiConfiguredNetworkInfo = 10198,
26878}
26879impl AtomId {
26880    /// String value of the enum field names used in the ProtoBuf definition.
26881    ///
26882    /// The values are not transformed in any way and thus are considered stable
26883    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26884    pub fn as_str_name(&self) -> &'static str {
26885        match self {
26886            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
26887            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
26888            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
26889            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
26890            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
26891            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
26892            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
26893            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
26894            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
26895            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
26896            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
26897            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
26898            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
26899            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
26900            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
26901            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
26902            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
26903            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
26904            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
26905            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
26906            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
26907            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
26908            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
26909            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
26910            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
26911            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
26912            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
26913            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
26914            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
26915            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
26916            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
26917            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
26918            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
26919            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
26920            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
26921            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
26922            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
26923            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
26924            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
26925            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
26926            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
26927            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
26928            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
26929            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
26930            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
26931            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
26932            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
26933            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
26934            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
26935            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
26936            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
26937            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
26938            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
26939            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
26940            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
26941            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
26942            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
26943            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
26944            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
26945            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
26946            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
26947            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
26948            AtomId::AtomAppDied => "ATOM_APP_DIED",
26949            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
26950            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
26951            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
26952            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
26953            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
26954            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
26955            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
26956            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
26957            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
26958            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
26959            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
26960            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
26961            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
26962            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
26963            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
26964            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
26965            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
26966            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
26967            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
26968            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
26969            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
26970            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
26971            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
26972            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
26973            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
26974            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
26975            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
26976            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
26977            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
26978            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
26979            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
26980            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
26981            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
26982            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
26983            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
26984            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
26985            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
26986            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
26987            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
26988            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
26989            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
26990            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
26991            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
26992            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
26993            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
26994            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
26995            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
26996            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
26997            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
26998            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
26999            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
27000            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
27001            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
27002            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
27003            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
27004            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
27005            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
27006            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
27007            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
27008            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
27009            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
27010            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
27011            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
27012            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
27013            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
27014            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
27015            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
27016            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
27017            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
27018            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
27019            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
27020            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
27021            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
27022            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
27023            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
27024            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
27025            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
27026            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
27027            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
27028            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
27029            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
27030            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
27031            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
27032            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
27033            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
27034            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
27035            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
27036            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
27037            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
27038            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
27039            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
27040            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
27041            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
27042            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
27043            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
27044            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
27045            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
27046            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
27047            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
27048            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
27049            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
27050            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
27051            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
27052            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
27053            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
27054            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
27055            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
27056            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
27057            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
27058            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
27059            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
27060            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
27061            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
27062            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
27063            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
27064            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
27065            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
27066            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
27067            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
27068            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
27069            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
27070            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
27071            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
27072            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
27073            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
27074            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
27075            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
27076            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
27077            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
27078            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
27079            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
27080            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
27081            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
27082            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
27083            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
27084            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
27085            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
27086            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
27087            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
27088            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
27089            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
27090            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
27091            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
27092            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
27093            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
27094            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
27095            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
27096            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
27097            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
27098            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
27099            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
27100            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
27101            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
27102            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
27103            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
27104            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
27105            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
27106            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
27107            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
27108            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
27109            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
27110            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
27111            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
27112            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
27113            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
27114            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
27115            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
27116            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
27117            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
27118            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
27119            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
27120            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
27121            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
27122            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
27123            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
27124            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
27125            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
27126            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
27127            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
27128            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
27129            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
27130            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
27131            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
27132            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
27133            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
27134            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
27135            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
27136            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
27137            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
27138            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
27139            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
27140            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
27141            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
27142            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
27143            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
27144            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
27145            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
27146            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
27147            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
27148            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
27149            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
27150            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
27151            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
27152            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
27153            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
27154            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
27155            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
27156            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
27157            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
27158            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
27159            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
27160            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
27161            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
27162            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
27163            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
27164            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
27165            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
27166            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
27167            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
27168            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
27169            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
27170            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
27171            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
27172            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
27173            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
27174            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
27175            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
27176            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
27177            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
27178            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
27179            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
27180            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
27181            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
27182            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
27183            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
27184            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
27185            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
27186            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
27187            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
27188            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
27189            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
27190            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
27191            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
27192            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
27193            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
27194            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
27195            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
27196            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
27197            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
27198            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
27199            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
27200            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
27201            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
27202            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
27203            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
27204            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
27205            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
27206            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
27207            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
27208            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
27209            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
27210            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
27211            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
27212            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
27213            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
27214            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
27215            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
27216            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
27217            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
27218            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
27219            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
27220            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
27221            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
27222            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
27223            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
27224            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
27225            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
27226            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
27227            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
27228            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
27229            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
27230            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
27231            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
27232            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
27233            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
27234            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
27235            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
27236            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
27237            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
27238            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
27239            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
27240            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
27241            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
27242            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
27243            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
27244            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
27245            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
27246            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
27247            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
27248            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
27249            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
27250            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
27251            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
27252            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
27253            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
27254            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
27255            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
27256            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
27257            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
27258            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
27259            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
27260            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
27261            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
27262            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
27263            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
27264            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
27265            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
27266            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
27267            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
27268            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
27269            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
27270            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
27271            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
27272            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
27273            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
27274            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
27275            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
27276            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
27277            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
27278            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
27279            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
27280            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
27281            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
27282            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
27283            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
27284            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
27285            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
27286            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
27287            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
27288            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
27289            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
27290            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
27291            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
27292            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
27293            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
27294            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
27295            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
27296            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
27297            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
27298            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
27299            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
27300            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
27301            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
27302            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
27303            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
27304            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
27305            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
27306            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
27307            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
27308            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
27309            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
27310            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
27311            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
27312            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
27313            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
27314            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
27315            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
27316            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
27317            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
27318            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
27319            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
27320            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
27321            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
27322            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
27323            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
27324            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
27325            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
27326            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
27327            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
27328            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
27329            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
27330            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
27331            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
27332            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
27333            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
27334            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
27335            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
27336            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
27337            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
27338            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
27339            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
27340            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
27341            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
27342            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
27343            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
27344            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
27345            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
27346            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
27347            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
27348            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
27349            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
27350            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
27351            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
27352            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
27353            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
27354            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
27355            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
27356            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
27357            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
27358            AtomId::AtomVmExited => "ATOM_VM_EXITED",
27359            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
27360            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
27361            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
27362            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
27363            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
27364            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
27365            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
27366            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
27367            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
27368            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
27369            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
27370            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
27371            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
27372            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
27373            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
27374            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
27375            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
27376            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
27377            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
27378            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
27379            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
27380            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
27381            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
27382            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
27383            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
27384            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
27385            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
27386            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
27387            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
27388            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
27389            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
27390            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
27391            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
27392            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
27393            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
27394            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
27395            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
27396            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
27397            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
27398            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
27399            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
27400            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
27401            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
27402            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
27403            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
27404            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
27405            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
27406            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
27407            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
27408            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
27409            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
27410            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
27411            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
27412            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
27413            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
27414            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
27415            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
27416            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
27417            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
27418            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
27419            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
27420            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
27421            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
27422            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
27423            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
27424            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
27425            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
27426            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
27427            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
27428            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
27429            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
27430            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
27431            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
27432            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
27433            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
27434            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
27435            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
27436            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
27437            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
27438            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
27439            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
27440            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
27441            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
27442            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
27443            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
27444            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
27445            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
27446            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
27447            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
27448            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
27449            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
27450            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
27451            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
27452            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
27453            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
27454            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
27455            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
27456            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
27457            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
27458            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
27459            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
27460            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
27461            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
27462            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
27463            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
27464            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
27465            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
27466            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
27467            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
27468            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
27469            AtomId::AtomAppSize => "ATOM_APP_SIZE",
27470            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
27471            AtomId::AtomProcStats => "ATOM_PROC_STATS",
27472            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
27473            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
27474            AtomId::AtomDiskIo => "ATOM_DISK_IO",
27475            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
27476            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
27477            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
27478            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
27479            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
27480            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
27481            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
27482            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
27483            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
27484            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
27485            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
27486            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
27487            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
27488            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
27489            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
27490            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
27491            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
27492            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
27493            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
27494            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
27495            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
27496            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
27497            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
27498            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
27499            AtomId::AtomAppOps => "ATOM_APP_OPS",
27500            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
27501            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
27502            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
27503            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
27504            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
27505            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
27506            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
27507            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
27508            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
27509            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
27510            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
27511            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
27512            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
27513            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
27514            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
27515            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
27516            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
27517            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
27518            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
27519            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
27520            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
27521            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
27522            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
27523            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
27524            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
27525            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
27526            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
27527            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
27528            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
27529            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
27530            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
27531            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
27532            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
27533            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
27534            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
27535            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
27536            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
27537            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
27538            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
27539            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
27540            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
27541            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
27542            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
27543            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
27544            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
27545            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
27546            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
27547            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
27548            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
27549            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
27550            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
27551            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
27552            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
27553            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
27554            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
27555            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
27556            AtomId::AtomVmstat => "ATOM_VMSTAT",
27557            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
27558            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
27559            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
27560            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
27561            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
27562            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
27563            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
27564            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
27565            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
27566            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
27567            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
27568            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
27569            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
27570            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
27571            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
27572            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
27573            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
27574            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
27575            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
27576            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
27577            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
27578            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
27579            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
27580            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
27581            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
27582            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
27583            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
27584            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
27585            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
27586            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
27587            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
27588            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
27589            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
27590            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
27591            AtomId::AtomUserInfo => "ATOM_USER_INFO",
27592            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
27593            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
27594            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
27595            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
27596            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
27597            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
27598            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
27599            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
27600            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
27601            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
27602            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
27603            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
27604            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
27605            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
27606            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
27607            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
27608            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
27609            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
27610            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
27611            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
27612            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
27613            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
27614            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
27615            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
27616            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
27617            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
27618            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
27619            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
27620            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
27621            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
27622            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
27623            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
27624            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
27625            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
27626            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
27627            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
27628            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
27629            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
27630            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
27631            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
27632            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
27633            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
27634            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
27635            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
27636            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
27637            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
27638            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
27639            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27640            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
27641            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27642            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
27643            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
27644            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
27645            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
27646            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
27647            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
27648            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
27649            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
27650            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
27651            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
27652            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
27653            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
27654            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
27655            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
27656            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
27657            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
27658            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
27659            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
27660            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
27661            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
27662            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
27663            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
27664            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
27665            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
27666            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
27667            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
27668            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
27669            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
27670            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
27671            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
27672            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
27673            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
27674            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
27675            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
27676            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
27677            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
27678            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
27679            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
27680            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
27681            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
27682            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
27683            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
27684            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
27685            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
27686            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
27687            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
27688            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
27689            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
27690            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
27691            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
27692            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
27693            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
27694            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
27695            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
27696            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
27697            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
27698            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
27699            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
27700            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
27701            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
27702            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
27703            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
27704            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
27705            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
27706            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
27707            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
27708            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
27709            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
27710            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
27711            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
27712            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
27713            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
27714            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
27715            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
27716            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
27717            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
27718            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
27719            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
27720            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
27721            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
27722            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
27723            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
27724            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
27725            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
27726            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
27727            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
27728            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
27729            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
27730            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
27731            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
27732            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
27733            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
27734            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
27735            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
27736            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
27737            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
27738            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
27739            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
27740            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
27741            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
27742            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
27743            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
27744            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
27745            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
27746            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
27747            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
27748            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
27749            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
27750            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
27751            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
27752            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
27753            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
27754            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
27755            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
27756            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
27757            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
27758            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
27759            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
27760            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
27761            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
27762            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
27763            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
27764            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
27765            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
27766            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
27767            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
27768            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
27769            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
27770            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
27771            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
27772            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
27773            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
27774            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
27775            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
27776            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
27777            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
27778            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
27779            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
27780            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
27781            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
27782            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
27783            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
27784            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
27785            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
27786            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
27787            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
27788            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
27789            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
27790            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
27791            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
27792            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
27793            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
27794            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
27795            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
27796            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
27797            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
27798            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
27799            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
27800            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
27801            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
27802            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
27803            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
27804            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
27805            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
27806            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
27807            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
27808            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
27809            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
27810            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
27811            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
27812            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
27813            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
27814            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
27815            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
27816            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
27817            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
27818            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
27819            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
27820            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
27821            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
27822            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
27823            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
27824            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
27825            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
27826            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
27827            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
27828            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
27829            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
27830            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
27831            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
27832            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
27833            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
27834            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
27835            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
27836            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
27837            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
27838            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
27839            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
27840            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
27841            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
27842            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
27843            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
27844            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
27845            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
27846            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
27847            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
27848            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
27849            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
27850            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
27851            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
27852            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
27853            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
27854            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
27855            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
27856            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
27857            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
27858            AtomId::AtomMteState => "ATOM_MTE_STATE",
27859            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
27860            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
27861            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
27862            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
27863            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
27864            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
27865            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
27866            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
27867            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
27868            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
27869            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
27870            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
27871            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
27872            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
27873            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
27874            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
27875            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
27876            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
27877            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
27878            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
27879            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
27880            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
27881            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
27882            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
27883            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
27884            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
27885            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
27886            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
27887            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
27888            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
27889            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
27890            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
27891            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
27892            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
27893            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
27894            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
27895            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
27896            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
27897            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
27898            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
27899            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
27900            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
27901            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
27902            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
27903            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
27904            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
27905            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
27906            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
27907            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
27908            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
27909            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
27910            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
27911            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
27912            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
27913            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
27914            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
27915            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
27916            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
27917            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
27918            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
27919            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
27920            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
27921            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
27922            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
27923            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
27924            AtomId::AtomCallStats => "ATOM_CALL_STATS",
27925            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
27926            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
27927            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
27928            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
27929            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
27930            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
27931            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
27932            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
27933            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
27934            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
27935            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
27936            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
27937            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
27938            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
27939            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
27940            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
27941            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
27942            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
27943            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
27944            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
27945            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
27946            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
27947            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
27948            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
27949            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
27950            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
27951            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
27952            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
27953            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
27954            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
27955            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
27956            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
27957            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
27958            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
27959            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
27960            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
27961            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
27962            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
27963            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
27964            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
27965            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
27966            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
27967            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
27968            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
27969            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
27970            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
27971            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
27972            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
27973            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
27974            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
27975            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
27976            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
27977            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
27978            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
27979            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
27980            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
27981            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
27982            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
27983            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
27984            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
27985            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
27986            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
27987            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
27988            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
27989            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
27990            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
27991            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
27992            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
27993            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
27994            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
27995            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
27996            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
27997            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
27998            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
27999            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
28000            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
28001            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
28002            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
28003            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
28004            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
28005            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
28006            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
28007            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
28008            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
28009            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
28010            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
28011            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
28012            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
28013            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
28014            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
28015            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
28016            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
28017            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
28018            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
28019            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
28020            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
28021            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
28022            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
28023            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
28024            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
28025            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
28026            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
28027            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
28028            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
28029            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
28030            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
28031            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
28032            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
28033            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
28034            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
28035            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
28036            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
28037            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
28038            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
28039        }
28040    }
28041}
28042// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
28043
28044// Begin of protos/perfetto/common/sys_stats_counters.proto
28045
28046// When editing entries here remember also to update "sys_stats_counters.h" with
28047// the corresponding string definitions for the actual /proc files parser.
28048
28049/// Counter definitions for Linux's /proc/meminfo.
28050#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28051#[repr(i32)]
28052pub enum MeminfoCounters {
28053    MeminfoUnspecified = 0,
28054    MeminfoMemTotal = 1,
28055    MeminfoMemFree = 2,
28056    MeminfoMemAvailable = 3,
28057    MeminfoBuffers = 4,
28058    MeminfoCached = 5,
28059    MeminfoSwapCached = 6,
28060    MeminfoActive = 7,
28061    MeminfoInactive = 8,
28062    MeminfoActiveAnon = 9,
28063    MeminfoInactiveAnon = 10,
28064    MeminfoActiveFile = 11,
28065    MeminfoInactiveFile = 12,
28066    MeminfoUnevictable = 13,
28067    MeminfoMlocked = 14,
28068    MeminfoSwapTotal = 15,
28069    MeminfoSwapFree = 16,
28070    MeminfoDirty = 17,
28071    MeminfoWriteback = 18,
28072    MeminfoAnonPages = 19,
28073    MeminfoMapped = 20,
28074    MeminfoShmem = 21,
28075    MeminfoSlab = 22,
28076    MeminfoSlabReclaimable = 23,
28077    MeminfoSlabUnreclaimable = 24,
28078    MeminfoKernelStack = 25,
28079    MeminfoPageTables = 26,
28080    MeminfoCommitLimit = 27,
28081    MeminfoCommitedAs = 28,
28082    MeminfoVmallocTotal = 29,
28083    MeminfoVmallocUsed = 30,
28084    MeminfoVmallocChunk = 31,
28085    MeminfoCmaTotal = 32,
28086    MeminfoCmaFree = 33,
28087    MeminfoGpu = 34,
28088    MeminfoZram = 35,
28089    MeminfoMisc = 36,
28090    MeminfoIonHeap = 37,
28091    MeminfoIonHeapPool = 38,
28092}
28093impl MeminfoCounters {
28094    /// String value of the enum field names used in the ProtoBuf definition.
28095    ///
28096    /// The values are not transformed in any way and thus are considered stable
28097    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28098    pub fn as_str_name(&self) -> &'static str {
28099        match self {
28100            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
28101            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
28102            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
28103            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
28104            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
28105            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
28106            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
28107            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
28108            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
28109            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
28110            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
28111            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
28112            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
28113            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
28114            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
28115            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
28116            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
28117            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
28118            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
28119            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
28120            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
28121            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
28122            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
28123            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
28124            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
28125            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
28126            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
28127            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
28128            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
28129            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
28130            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
28131            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
28132            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
28133            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
28134            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
28135            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
28136            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
28137            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
28138            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
28139        }
28140    }
28141}
28142/// Counter definitions for Linux's /proc/vmstat.
28143#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28144#[repr(i32)]
28145pub enum VmstatCounters {
28146    VmstatUnspecified = 0,
28147    VmstatNrFreePages = 1,
28148    VmstatNrAllocBatch = 2,
28149    VmstatNrInactiveAnon = 3,
28150    VmstatNrActiveAnon = 4,
28151    VmstatNrInactiveFile = 5,
28152    VmstatNrActiveFile = 6,
28153    VmstatNrUnevictable = 7,
28154    VmstatNrMlock = 8,
28155    VmstatNrAnonPages = 9,
28156    VmstatNrMapped = 10,
28157    VmstatNrFilePages = 11,
28158    VmstatNrDirty = 12,
28159    VmstatNrWriteback = 13,
28160    VmstatNrSlabReclaimable = 14,
28161    VmstatNrSlabUnreclaimable = 15,
28162    VmstatNrPageTablePages = 16,
28163    VmstatNrKernelStack = 17,
28164    VmstatNrOverhead = 18,
28165    VmstatNrUnstable = 19,
28166    VmstatNrBounce = 20,
28167    VmstatNrVmscanWrite = 21,
28168    VmstatNrVmscanImmediateReclaim = 22,
28169    VmstatNrWritebackTemp = 23,
28170    VmstatNrIsolatedAnon = 24,
28171    VmstatNrIsolatedFile = 25,
28172    VmstatNrShmem = 26,
28173    VmstatNrDirtied = 27,
28174    VmstatNrWritten = 28,
28175    VmstatNrPagesScanned = 29,
28176    VmstatWorkingsetRefault = 30,
28177    VmstatWorkingsetActivate = 31,
28178    VmstatWorkingsetNodereclaim = 32,
28179    VmstatNrAnonTransparentHugepages = 33,
28180    VmstatNrFreeCma = 34,
28181    VmstatNrSwapcache = 35,
28182    VmstatNrDirtyThreshold = 36,
28183    VmstatNrDirtyBackgroundThreshold = 37,
28184    VmstatPgpgin = 38,
28185    VmstatPgpgout = 39,
28186    VmstatPgpgoutclean = 40,
28187    VmstatPswpin = 41,
28188    VmstatPswpout = 42,
28189    VmstatPgallocDma = 43,
28190    VmstatPgallocNormal = 44,
28191    VmstatPgallocMovable = 45,
28192    VmstatPgfree = 46,
28193    VmstatPgactivate = 47,
28194    VmstatPgdeactivate = 48,
28195    VmstatPgfault = 49,
28196    VmstatPgmajfault = 50,
28197    VmstatPgrefillDma = 51,
28198    VmstatPgrefillNormal = 52,
28199    VmstatPgrefillMovable = 53,
28200    VmstatPgstealKswapdDma = 54,
28201    VmstatPgstealKswapdNormal = 55,
28202    VmstatPgstealKswapdMovable = 56,
28203    VmstatPgstealDirectDma = 57,
28204    VmstatPgstealDirectNormal = 58,
28205    VmstatPgstealDirectMovable = 59,
28206    VmstatPgscanKswapdDma = 60,
28207    VmstatPgscanKswapdNormal = 61,
28208    VmstatPgscanKswapdMovable = 62,
28209    VmstatPgscanDirectDma = 63,
28210    VmstatPgscanDirectNormal = 64,
28211    VmstatPgscanDirectMovable = 65,
28212    VmstatPgscanDirectThrottle = 66,
28213    VmstatPginodesteal = 67,
28214    VmstatSlabsScanned = 68,
28215    VmstatKswapdInodesteal = 69,
28216    VmstatKswapdLowWmarkHitQuickly = 70,
28217    VmstatKswapdHighWmarkHitQuickly = 71,
28218    VmstatPageoutrun = 72,
28219    VmstatAllocstall = 73,
28220    VmstatPgrotated = 74,
28221    VmstatDropPagecache = 75,
28222    VmstatDropSlab = 76,
28223    VmstatPgmigrateSuccess = 77,
28224    VmstatPgmigrateFail = 78,
28225    VmstatCompactMigrateScanned = 79,
28226    VmstatCompactFreeScanned = 80,
28227    VmstatCompactIsolated = 81,
28228    VmstatCompactStall = 82,
28229    VmstatCompactFail = 83,
28230    VmstatCompactSuccess = 84,
28231    VmstatCompactDaemonWake = 85,
28232    VmstatUnevictablePgsCulled = 86,
28233    VmstatUnevictablePgsScanned = 87,
28234    VmstatUnevictablePgsRescued = 88,
28235    VmstatUnevictablePgsMlocked = 89,
28236    VmstatUnevictablePgsMunlocked = 90,
28237    VmstatUnevictablePgsCleared = 91,
28238    VmstatUnevictablePgsStranded = 92,
28239    VmstatNrZspages = 93,
28240    VmstatNrIonHeap = 94,
28241    VmstatNrGpuHeap = 95,
28242    VmstatAllocstallDma = 96,
28243    VmstatAllocstallMovable = 97,
28244    VmstatAllocstallNormal = 98,
28245    VmstatCompactDaemonFreeScanned = 99,
28246    VmstatCompactDaemonMigrateScanned = 100,
28247    VmstatNrFastrpc = 101,
28248    VmstatNrIndirectlyReclaimable = 102,
28249    VmstatNrIonHeapPool = 103,
28250    VmstatNrKernelMiscReclaimable = 104,
28251    VmstatNrShadowCallStackBytes = 105,
28252    VmstatNrShmemHugepages = 106,
28253    VmstatNrShmemPmdmapped = 107,
28254    VmstatNrUnreclaimablePages = 108,
28255    VmstatNrZoneActiveAnon = 109,
28256    VmstatNrZoneActiveFile = 110,
28257    VmstatNrZoneInactiveAnon = 111,
28258    VmstatNrZoneInactiveFile = 112,
28259    VmstatNrZoneUnevictable = 113,
28260    VmstatNrZoneWritePending = 114,
28261    VmstatOomKill = 115,
28262    VmstatPglazyfree = 116,
28263    VmstatPglazyfreed = 117,
28264    VmstatPgrefill = 118,
28265    VmstatPgscanDirect = 119,
28266    VmstatPgscanKswapd = 120,
28267    VmstatPgskipDma = 121,
28268    VmstatPgskipMovable = 122,
28269    VmstatPgskipNormal = 123,
28270    VmstatPgstealDirect = 124,
28271    VmstatPgstealKswapd = 125,
28272    VmstatSwapRa = 126,
28273    VmstatSwapRaHit = 127,
28274    VmstatWorkingsetRestore = 128,
28275    VmstatAllocstallDevice = 129,
28276    VmstatAllocstallDma32 = 130,
28277    VmstatBalloonDeflate = 131,
28278    VmstatBalloonInflate = 132,
28279    VmstatBalloonMigrate = 133,
28280    VmstatCmaAllocFail = 134,
28281    VmstatCmaAllocSuccess = 135,
28282    VmstatNrFileHugepages = 136,
28283    VmstatNrFilePmdmapped = 137,
28284    VmstatNrFollPinAcquired = 138,
28285    VmstatNrFollPinReleased = 139,
28286    VmstatNrSecPageTablePages = 140,
28287    VmstatNrShadowCallStack = 141,
28288    VmstatNrSwapcached = 142,
28289    VmstatNrThrottledWritten = 143,
28290    VmstatPgallocDevice = 144,
28291    VmstatPgallocDma32 = 145,
28292    VmstatPgdemoteDirect = 146,
28293    VmstatPgdemoteKswapd = 147,
28294    VmstatPgreuse = 148,
28295    VmstatPgscanAnon = 149,
28296    VmstatPgscanFile = 150,
28297    VmstatPgskipDevice = 151,
28298    VmstatPgskipDma32 = 152,
28299    VmstatPgstealAnon = 153,
28300    VmstatPgstealFile = 154,
28301    VmstatThpCollapseAlloc = 155,
28302    VmstatThpCollapseAllocFailed = 156,
28303    VmstatThpDeferredSplitPage = 157,
28304    VmstatThpFaultAlloc = 158,
28305    VmstatThpFaultFallback = 159,
28306    VmstatThpFaultFallbackCharge = 160,
28307    VmstatThpFileAlloc = 161,
28308    VmstatThpFileFallback = 162,
28309    VmstatThpFileFallbackCharge = 163,
28310    VmstatThpFileMapped = 164,
28311    VmstatThpMigrationFail = 165,
28312    VmstatThpMigrationSplit = 166,
28313    VmstatThpMigrationSuccess = 167,
28314    VmstatThpScanExceedNonePte = 168,
28315    VmstatThpScanExceedSharePte = 169,
28316    VmstatThpScanExceedSwapPte = 170,
28317    VmstatThpSplitPage = 171,
28318    VmstatThpSplitPageFailed = 172,
28319    VmstatThpSplitPmd = 173,
28320    VmstatThpSwpout = 174,
28321    VmstatThpSwpoutFallback = 175,
28322    VmstatThpZeroPageAlloc = 176,
28323    VmstatThpZeroPageAllocFailed = 177,
28324    VmstatVmaLockAbort = 178,
28325    VmstatVmaLockMiss = 179,
28326    VmstatVmaLockRetry = 180,
28327    VmstatVmaLockSuccess = 181,
28328    VmstatWorkingsetActivateAnon = 182,
28329    VmstatWorkingsetActivateFile = 183,
28330    VmstatWorkingsetNodes = 184,
28331    VmstatWorkingsetRefaultAnon = 185,
28332    VmstatWorkingsetRefaultFile = 186,
28333    VmstatWorkingsetRestoreAnon = 187,
28334    VmstatWorkingsetRestoreFile = 188,
28335}
28336impl VmstatCounters {
28337    /// String value of the enum field names used in the ProtoBuf definition.
28338    ///
28339    /// The values are not transformed in any way and thus are considered stable
28340    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28341    pub fn as_str_name(&self) -> &'static str {
28342        match self {
28343            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
28344            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
28345            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
28346            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
28347            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
28348            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
28349            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
28350            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
28351            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
28352            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
28353            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
28354            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
28355            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
28356            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
28357            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
28358            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
28359            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
28360            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
28361            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
28362            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
28363            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
28364            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
28365            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
28366            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
28367            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
28368            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
28369            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
28370            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
28371            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
28372            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
28373            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
28374            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
28375            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
28376            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
28377            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
28378            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
28379            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
28380            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
28381            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
28382            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
28383            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
28384            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
28385            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
28386            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
28387            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
28388            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
28389            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
28390            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
28391            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
28392            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
28393            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
28394            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
28395            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
28396            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
28397            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
28398            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
28399            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
28400            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
28401            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
28402            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
28403            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
28404            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
28405            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
28406            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
28407            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
28408            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
28409            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
28410            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
28411            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
28412            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
28413            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
28414            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
28415            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
28416            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
28417            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
28418            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
28419            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
28420            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
28421            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
28422            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
28423            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
28424            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
28425            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
28426            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
28427            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
28428            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
28429            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
28430            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
28431            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
28432            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
28433            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
28434            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
28435            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
28436            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
28437            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
28438            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
28439            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
28440            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
28441            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
28442            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
28443            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
28444            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
28445            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
28446            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
28447            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
28448            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
28449            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
28450            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
28451            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
28452            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
28453            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
28454            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
28455            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
28456            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
28457            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
28458            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
28459            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
28460            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
28461            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
28462            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
28463            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
28464            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
28465            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
28466            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
28467            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
28468            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
28469            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
28470            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
28471            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
28472            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
28473            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
28474            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
28475            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
28476            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
28477            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
28478            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
28479            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
28480            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
28481            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
28482            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
28483            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
28484            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
28485            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
28486            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
28487            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
28488            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
28489            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
28490            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
28491            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
28492            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
28493            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
28494            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
28495            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
28496            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
28497            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
28498            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
28499            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
28500            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
28501            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
28502            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
28503            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
28504            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
28505            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
28506            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
28507            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
28508            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
28509            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
28510            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
28511            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
28512            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
28513            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
28514            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
28515            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
28516            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
28517            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
28518            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
28519            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
28520            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
28521            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
28522            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
28523            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
28524            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
28525            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
28526            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
28527            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
28528            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
28529            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
28530            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
28531            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
28532        }
28533    }
28534}
28535// End of protos/perfetto/trace/android/app_wakelock_data.proto
28536
28537// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
28538
28539/// Describes the packet type and direction. CMD and EVT are unidirectional, so
28540/// no need to differentiate the direction.
28541#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28542#[repr(i32)]
28543pub enum BluetoothTracePacketType {
28544    HciCmd = 1,
28545    HciEvt = 2,
28546    HciAclRx = 3,
28547    HciAclTx = 4,
28548    HciScoRx = 5,
28549    HciScoTx = 6,
28550    HciIsoRx = 7,
28551    HciIsoTx = 8,
28552}
28553impl BluetoothTracePacketType {
28554    /// String value of the enum field names used in the ProtoBuf definition.
28555    ///
28556    /// The values are not transformed in any way and thus are considered stable
28557    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28558    pub fn as_str_name(&self) -> &'static str {
28559        match self {
28560            BluetoothTracePacketType::HciCmd => "HCI_CMD",
28561            BluetoothTracePacketType::HciEvt => "HCI_EVT",
28562            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
28563            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
28564            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
28565            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
28566            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
28567            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
28568        }
28569    }
28570}
28571// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
28572
28573// Begin of protos/perfetto/trace/android/network_trace.proto
28574
28575#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28576#[repr(i32)]
28577pub enum TrafficDirection {
28578    DirUnspecified = 0,
28579    DirIngress = 1,
28580    DirEgress = 2,
28581}
28582impl TrafficDirection {
28583    /// String value of the enum field names used in the ProtoBuf definition.
28584    ///
28585    /// The values are not transformed in any way and thus are considered stable
28586    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28587    pub fn as_str_name(&self) -> &'static str {
28588        match self {
28589            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
28590            TrafficDirection::DirIngress => "DIR_INGRESS",
28591            TrafficDirection::DirEgress => "DIR_EGRESS",
28592        }
28593    }
28594}
28595#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28596#[repr(i32)]
28597pub enum TrustedOverlay {
28598    Unset = 0,
28599    Disabled = 1,
28600    Enabled = 2,
28601}
28602impl TrustedOverlay {
28603    /// String value of the enum field names used in the ProtoBuf definition.
28604    ///
28605    /// The values are not transformed in any way and thus are considered stable
28606    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28607    pub fn as_str_name(&self) -> &'static str {
28608        match self {
28609            TrustedOverlay::Unset => "UNSET",
28610            TrustedOverlay::Disabled => "DISABLED",
28611            TrustedOverlay::Enabled => "ENABLED",
28612        }
28613    }
28614}
28615/// Must match definition in the IComposerClient HAL
28616#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28617#[repr(i32)]
28618pub enum HwcCompositionType {
28619    /// Invalid composition type
28620    HwcTypeUnspecified = 0,
28621    /// Layer was composited by the client into the client target buffer
28622    HwcTypeClient = 1,
28623    /// Layer was composited by the device through hardware overlays
28624    HwcTypeDevice = 2,
28625    /// Layer was composited by the device using a color
28626    HwcTypeSolidColor = 3,
28627    /// Similar to DEVICE, but the layer position may have been asynchronously set
28628    /// through setCursorPosition
28629    HwcTypeCursor = 4,
28630    /// Layer was composited by the device via a sideband stream
28631    HwcTypeSideband = 5,
28632    /// Layer was composited by hardware optimized for display decoration
28633    HwcTypeDisplayDecoration = 6,
28634}
28635impl HwcCompositionType {
28636    /// String value of the enum field names used in the ProtoBuf definition.
28637    ///
28638    /// The values are not transformed in any way and thus are considered stable
28639    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28640    pub fn as_str_name(&self) -> &'static str {
28641        match self {
28642            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
28643            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
28644            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
28645            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
28646            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
28647            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
28648            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
28649        }
28650    }
28651}
28652#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28653#[repr(i32)]
28654pub enum FtraceParseStatus {
28655    FtraceStatusUnspecified = 0,
28656    /// Not written, used for convenience of implementation:
28657    FtraceStatusOk = 1,
28658    /// Issues with reading data out of the ftrace ring buffer:
28659    FtraceStatusUnexpectedReadError = 2,
28660    FtraceStatusPartialPageRead = 3,
28661    /// Ring buffer binary data not matching our understanding of the layout:
28662    FtraceStatusAbiInvalidPageHeader = 4,
28663    FtraceStatusAbiShortEventHeader = 5,
28664    FtraceStatusAbiNullPadding = 6,
28665    FtraceStatusAbiShortPaddingLength = 7,
28666    FtraceStatusAbiInvalidPaddingLength = 8,
28667    FtraceStatusAbiShortTimeExtend = 9,
28668    FtraceStatusAbiShortTimeStamp = 10,
28669    FtraceStatusAbiShortDataLength = 11,
28670    FtraceStatusAbiZeroDataLength = 12,
28671    FtraceStatusAbiInvalidDataLength = 13,
28672    FtraceStatusAbiShortEventId = 14,
28673    FtraceStatusAbiEndOverflow = 15,
28674    /// Issues with parsing the event payload:
28675    FtraceStatusShortCompactEvent = 16,
28676    FtraceStatusInvalidEvent = 17,
28677}
28678impl FtraceParseStatus {
28679    /// String value of the enum field names used in the ProtoBuf definition.
28680    ///
28681    /// The values are not transformed in any way and thus are considered stable
28682    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28683    pub fn as_str_name(&self) -> &'static str {
28684        match self {
28685            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
28686            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
28687            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
28688            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
28689            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
28690            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
28691            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
28692            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
28693            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
28694            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
28695            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
28696            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
28697            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
28698            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
28699            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
28700            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
28701            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
28702            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
28703        }
28704    }
28705}
28706#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28707#[repr(i32)]
28708pub enum FtraceClock {
28709    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
28710    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
28711    Unspecified = 0,
28712    Unknown = 1,
28713    Global = 2,
28714    Local = 3,
28715    MonoRaw = 4,
28716}
28717impl FtraceClock {
28718    /// String value of the enum field names used in the ProtoBuf definition.
28719    ///
28720    /// The values are not transformed in any way and thus are considered stable
28721    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28722    pub fn as_str_name(&self) -> &'static str {
28723        match self {
28724            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
28725            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
28726            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
28727            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
28728            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
28729        }
28730    }
28731}
28732// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
28733
28734// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
28735
28736// Describes Chrome's Compositor scheduler's current state and associated
28737// variables.
28738//
28739// These protos and enums were adapted from the corresponding original JSON
28740// trace event for the scheduler state. In contrast to the JSON, we use strongly
28741// typed enum values instead of strings for many fields, and
28742// microsecond-granularity timestamps.
28743//
28744// The original format was generated in JSON by the code at
28745// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
28746//
28747// And is now generated as protozero:
28748// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
28749//
28750// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
28751
28752#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28753#[repr(i32)]
28754pub enum ChromeCompositorSchedulerAction {
28755    CcSchedulerActionUnspecified = 0,
28756    CcSchedulerActionNone = 1,
28757    CcSchedulerActionSendBeginMainFrame = 2,
28758    CcSchedulerActionCommit = 3,
28759    CcSchedulerActionActivateSyncTree = 4,
28760    CcSchedulerActionDrawIfPossible = 5,
28761    CcSchedulerActionDrawForced = 6,
28762    CcSchedulerActionDrawAbort = 7,
28763    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
28764    CcSchedulerActionPrepareTiles = 9,
28765    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
28766    CcSchedulerActionPerformImplSideInvalidation = 11,
28767    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
28768    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
28769}
28770impl ChromeCompositorSchedulerAction {
28771    /// String value of the enum field names used in the ProtoBuf definition.
28772    ///
28773    /// The values are not transformed in any way and thus are considered stable
28774    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28775    pub fn as_str_name(&self) -> &'static str {
28776        match self {
28777            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
28778            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
28779            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
28780            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
28781            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
28782            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
28783            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
28784            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
28785            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
28786            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
28787            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
28788            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
28789            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
28790            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
28791        }
28792    }
28793}
28794// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
28795
28796// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
28797
28798// Describes the state of the RendererScheduler for a given Renderer Process.
28799
28800/// RAIL Mode is an indication of the kind of work that a Renderer is currently
28801/// performing which is in turn used to prioritise work accordingly.
28802/// A fuller description of these modes can be found <https://web.dev/rail/>
28803#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28804#[repr(i32)]
28805pub enum ChromeRailMode {
28806    RailModeNone = 0,
28807    RailModeResponse = 1,
28808    RailModeAnimation = 2,
28809    RailModeIdle = 3,
28810    RailModeLoad = 4,
28811}
28812impl ChromeRailMode {
28813    /// String value of the enum field names used in the ProtoBuf definition.
28814    ///
28815    /// The values are not transformed in any way and thus are considered stable
28816    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28817    pub fn as_str_name(&self) -> &'static str {
28818        match self {
28819            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
28820            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
28821            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
28822            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
28823            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
28824        }
28825    }
28826}