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    }
113    impl GpuCounterGroup {
114        /// String value of the enum field names used in the ProtoBuf definition.
115        ///
116        /// The values are not transformed in any way and thus are considered stable
117        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
118        pub fn as_str_name(&self) -> &'static str {
119            match self {
120                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
121                GpuCounterGroup::System => "SYSTEM",
122                GpuCounterGroup::Vertices => "VERTICES",
123                GpuCounterGroup::Fragments => "FRAGMENTS",
124                GpuCounterGroup::Primitives => "PRIMITIVES",
125                GpuCounterGroup::Memory => "MEMORY",
126                GpuCounterGroup::Compute => "COMPUTE",
127            }
128        }
129    }
130    /// next id: 41
131    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
132    #[repr(i32)]
133    pub enum MeasureUnit {
134        None = 0,
135        Bit = 1,
136        Kilobit = 2,
137        Megabit = 3,
138        Gigabit = 4,
139        Terabit = 5,
140        Petabit = 6,
141        Byte = 7,
142        Kilobyte = 8,
143        Megabyte = 9,
144        Gigabyte = 10,
145        Terabyte = 11,
146        Petabyte = 12,
147        Hertz = 13,
148        Kilohertz = 14,
149        Megahertz = 15,
150        Gigahertz = 16,
151        Terahertz = 17,
152        Petahertz = 18,
153        Nanosecond = 19,
154        Microsecond = 20,
155        Millisecond = 21,
156        Second = 22,
157        Minute = 23,
158        Hour = 24,
159        Vertex = 25,
160        Pixel = 26,
161        Triangle = 27,
162        Primitive = 38,
163        Fragment = 39,
164        Milliwatt = 28,
165        Watt = 29,
166        Kilowatt = 30,
167        Joule = 31,
168        Volt = 32,
169        Ampere = 33,
170        Celsius = 34,
171        Fahrenheit = 35,
172        Kelvin = 36,
173        /// Values should be out of 100.
174        Percent = 37,
175        Instruction = 40,
176    }
177    impl MeasureUnit {
178        /// String value of the enum field names used in the ProtoBuf definition.
179        ///
180        /// The values are not transformed in any way and thus are considered stable
181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
182        pub fn as_str_name(&self) -> &'static str {
183            match self {
184                MeasureUnit::None => "NONE",
185                MeasureUnit::Bit => "BIT",
186                MeasureUnit::Kilobit => "KILOBIT",
187                MeasureUnit::Megabit => "MEGABIT",
188                MeasureUnit::Gigabit => "GIGABIT",
189                MeasureUnit::Terabit => "TERABIT",
190                MeasureUnit::Petabit => "PETABIT",
191                MeasureUnit::Byte => "BYTE",
192                MeasureUnit::Kilobyte => "KILOBYTE",
193                MeasureUnit::Megabyte => "MEGABYTE",
194                MeasureUnit::Gigabyte => "GIGABYTE",
195                MeasureUnit::Terabyte => "TERABYTE",
196                MeasureUnit::Petabyte => "PETABYTE",
197                MeasureUnit::Hertz => "HERTZ",
198                MeasureUnit::Kilohertz => "KILOHERTZ",
199                MeasureUnit::Megahertz => "MEGAHERTZ",
200                MeasureUnit::Gigahertz => "GIGAHERTZ",
201                MeasureUnit::Terahertz => "TERAHERTZ",
202                MeasureUnit::Petahertz => "PETAHERTZ",
203                MeasureUnit::Nanosecond => "NANOSECOND",
204                MeasureUnit::Microsecond => "MICROSECOND",
205                MeasureUnit::Millisecond => "MILLISECOND",
206                MeasureUnit::Second => "SECOND",
207                MeasureUnit::Minute => "MINUTE",
208                MeasureUnit::Hour => "HOUR",
209                MeasureUnit::Vertex => "VERTEX",
210                MeasureUnit::Pixel => "PIXEL",
211                MeasureUnit::Triangle => "TRIANGLE",
212                MeasureUnit::Primitive => "PRIMITIVE",
213                MeasureUnit::Fragment => "FRAGMENT",
214                MeasureUnit::Milliwatt => "MILLIWATT",
215                MeasureUnit::Watt => "WATT",
216                MeasureUnit::Kilowatt => "KILOWATT",
217                MeasureUnit::Joule => "JOULE",
218                MeasureUnit::Volt => "VOLT",
219                MeasureUnit::Ampere => "AMPERE",
220                MeasureUnit::Celsius => "CELSIUS",
221                MeasureUnit::Fahrenheit => "FAHRENHEIT",
222                MeasureUnit::Kelvin => "KELVIN",
223                MeasureUnit::Percent => "PERCENT",
224                MeasureUnit::Instruction => "INSTRUCTION",
225            }
226        }
227    }
228}
229// End of protos/perfetto/common/gpu_counter_descriptor.proto
230
231// Begin of protos/perfetto/common/track_event_descriptor.proto
232
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct TrackEventCategory {
235    #[prost(string, optional, tag="1")]
236    pub name: ::core::option::Option<::prost::alloc::string::String>,
237    #[prost(string, optional, tag="2")]
238    pub description: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, repeated, tag="3")]
240    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct TrackEventDescriptor {
244    #[prost(message, repeated, tag="1")]
245    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
246}
247// End of protos/perfetto/common/track_event_descriptor.proto
248
249// Begin of protos/perfetto/common/data_source_descriptor.proto
250
251/// This message is sent from Producer(s) to the tracing Service when registering
252/// to advertise their capabilities. It describes the structure of tracing
253/// protos that will be produced by the data source and the supported filters.
254#[derive(Clone, PartialEq, ::prost::Message)]
255pub struct DataSourceDescriptor {
256    /// e.g., "linux.ftrace", "chromium.tracing"
257    #[prost(string, optional, tag="1")]
258    pub name: ::core::option::Option<::prost::alloc::string::String>,
259    /// When non-zero, this is a unique ID within the scope of the Producer for
260    /// this data source (it is NOT globally unique). This is useful to
261    /// differentiate between data sources with matching names when calling
262    /// UpdateDataSource(). This field has been introduced in November 2021
263    /// (v22, Android T) and is not supported on older versions.
264    #[prost(uint64, optional, tag="7")]
265    pub id: ::core::option::Option<u64>,
266    /// When true the data source is expected to ack the stop request through the
267    /// NotifyDataSourceStopped() IPC. This field has been introduced after
268    /// Android P in Jul 2018 and is not supported on older versions.
269    #[prost(bool, optional, tag="2")]
270    pub will_notify_on_stop: ::core::option::Option<bool>,
271    /// When true the data source is expected to ack the start request through the
272    /// NotifyDataSourceStarted() IPC. This field has been introduced after
273    /// Android P in March 2019 and is not supported on older versions.
274    #[prost(bool, optional, tag="3")]
275    pub will_notify_on_start: ::core::option::Option<bool>,
276    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
277    /// set if the data source writes packets that refer to previous trace
278    /// contents, and knows how to stop referring to the already-emitted data.
279    #[prost(bool, optional, tag="4")]
280    pub handles_incremental_state_clear: ::core::option::Option<bool>,
281    /// If true, indicates that the data source does nothing upon Flush. This
282    /// allows the service to reduce the flush-related IPC traffic and better deal
283    /// with frozen producers (see go/perfetto-frozen). This is usually the case
284    /// for data sources like 'track_event' that don't have access to the various
285    /// thread task runners to post a flush task and rely purely on server-side
286    /// scraping.
287    /// Introduced in v39 / Android V.
288    #[prost(bool, optional, tag="9")]
289    pub no_flush: ::core::option::Option<bool>,
290    /// Optional specification about available GPU counters.
291    #[prost(message, optional, tag="5")]
292    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
293    #[prost(message, optional, tag="6")]
294    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
295    #[prost(message, optional, tag="8")]
296    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
297}
298// End of protos/perfetto/common/data_source_descriptor.proto
299
300// Begin of protos/perfetto/common/tracing_service_state.proto
301
302/// Reports the state of the tracing service. Used to gather details about the
303/// data sources connected.
304/// See ConsumerPort::QueryServiceState().
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct TracingServiceState {
307    /// Lists all the producers connected.
308    #[prost(message, repeated, tag="1")]
309    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
310    /// Lists the data sources available.
311    #[prost(message, repeated, tag="2")]
312    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
313    /// Lists the tracing sessions active AND owned by a consumer that has the same
314    /// UID of the caller (or all of them if the caller is root).
315    /// Introduced in v24 / Android T.
316    #[prost(message, repeated, tag="6")]
317    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
318    /// This is always set to true from v24 and beyond. This flag is only used to
319    /// tell the difference between: (1) talking to a recent service which happens
320    /// to have no tracing session active; (2) talking to an older version of the
321    /// service which will never report any tracing session.
322    #[prost(bool, optional, tag="7")]
323    pub supports_tracing_sessions: ::core::option::Option<bool>,
324    /// Total number of tracing sessions.
325    #[prost(int32, optional, tag="3")]
326    pub num_sessions: ::core::option::Option<i32>,
327    /// Number of tracing sessions in the started state. Always <= num_sessions.
328    #[prost(int32, optional, tag="4")]
329    pub num_sessions_started: ::core::option::Option<i32>,
330    /// The version of traced (the same returned by `traced --version`).
331    /// This is a human readable string with and its format varies depending on
332    /// the build system and the repo (standalone vs AOSP).
333    /// This is intended for human debugging only.
334    #[prost(string, optional, tag="5")]
335    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
336}
337/// Nested message and enum types in `TracingServiceState`.
338pub mod tracing_service_state {
339    /// Describes a producer process.
340    #[derive(Clone, PartialEq, ::prost::Message)]
341    pub struct Producer {
342        /// Unique ID of the producer (monotonic counter).
343        #[prost(int32, optional, tag="1")]
344        pub id: ::core::option::Option<i32>,
345        /// Typically matches the process name.
346        #[prost(string, optional, tag="2")]
347        pub name: ::core::option::Option<::prost::alloc::string::String>,
348        /// Unix pid of the remote process. Supported only on Linux-based systems.
349        /// Introduced in v24 / Android T.
350        #[prost(int32, optional, tag="5")]
351        pub pid: ::core::option::Option<i32>,
352        /// Unix uid of the remote process.
353        #[prost(int32, optional, tag="3")]
354        pub uid: ::core::option::Option<i32>,
355        /// The version of the client library used by the producer.
356        /// This is a human readable string with and its format varies depending on
357        /// the build system and the repo (standalone vs AOSP).
358        /// This is intended for human debugging only.
359        #[prost(string, optional, tag="4")]
360        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
361        /// Returns true if the process appears to be frozen (Android only).
362        /// Introduced in Perfetto V49 / Android 24Q4.
363        #[prost(bool, optional, tag="6")]
364        pub frozen: ::core::option::Option<bool>,
365    }
366    /// Describes a data source registered by a producer. Data sources are listed
367    /// regardless of the fact that they are being used or not.
368    #[derive(Clone, PartialEq, ::prost::Message)]
369    pub struct DataSource {
370        /// Descriptor passed by the data source when calling RegisterDataSource().
371        #[prost(message, optional, tag="1")]
372        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
373        /// ID of the producer, as per Producer.id.
374        #[prost(int32, optional, tag="2")]
375        pub producer_id: ::core::option::Option<i32>,
376    }
377    #[derive(Clone, PartialEq, ::prost::Message)]
378    pub struct TracingSession {
379        /// The TracingSessionID.
380        #[prost(uint64, optional, tag="1")]
381        pub id: ::core::option::Option<u64>,
382        /// The Unix uid of the consumer that started the session.
383        /// This is meaningful only if the caller is root. In all other cases only
384        /// tracing sessions that match the caller UID will be displayed.
385        #[prost(int32, optional, tag="2")]
386        pub consumer_uid: ::core::option::Option<i32>,
387        /// Internal state of the tracing session.
388        /// These strings are FYI only and subjected to change.
389        #[prost(string, optional, tag="3")]
390        pub state: ::core::option::Option<::prost::alloc::string::String>,
391        /// The unique_session_name as set in the trace config (might be empty).
392        #[prost(string, optional, tag="4")]
393        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
394        /// The number and size of each buffer.
395        #[prost(uint32, repeated, packed="false", tag="5")]
396        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
397        /// Duration, as specified in the TraceConfig.duration_ms.
398        #[prost(uint32, optional, tag="6")]
399        pub duration_ms: ::core::option::Option<u32>,
400        /// Number of data sources involved in the session.
401        #[prost(uint32, optional, tag="7")]
402        pub num_data_sources: ::core::option::Option<u32>,
403        /// Time when the session was started, in the CLOCK_REALTIME domain.
404        /// Available only on Linux-based systems.
405        #[prost(int64, optional, tag="8")]
406        pub start_realtime_ns: ::core::option::Option<i64>,
407        // The fields below have been introduced in v42.
408
409        /// The bugreport_score, as set in TraceConfig.bugreport_score.
410        #[prost(int32, optional, tag="9")]
411        pub bugreport_score: ::core::option::Option<i32>,
412        /// As per TraceConfig.bugreport_filename.
413        #[prost(string, optional, tag="10")]
414        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
415        /// If true, the session is in the STARTED state. If false the session is in
416        /// any other state (see `state` field).
417        #[prost(bool, optional, tag="11")]
418        pub is_started: ::core::option::Option<bool>,
419    }
420}
421// End of protos/perfetto/common/builtin_clock.proto
422
423// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
424
425/// Data source that lists game modes and game interventions of games
426/// on an Android device.
427#[derive(Clone, PartialEq, ::prost::Message)]
428pub struct AndroidGameInterventionListConfig {
429    /// If not empty, emit info about only the following list of package names
430    /// (exact match, no regex). Otherwise, emit info about all packages.
431    #[prost(string, repeated, tag="1")]
432    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
433}
434// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
435
436// Begin of protos/perfetto/config/android/android_input_event_config.proto
437
438/// Custom configuration for the "android.input.inputevent" data source.
439///
440/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
441///
442/// Next ID: 5
443#[derive(Clone, PartialEq, ::prost::Message)]
444pub struct AndroidInputEventConfig {
445    /// The tracing mode to use. If unspecified, it will default to
446    /// TRACE_MODE_USE_RULES.
447    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
448    pub mode: ::core::option::Option<i32>,
449    /// The list of rules to use to determine the trace level of events.
450    /// Each event will be traced using the TraceLevel of the first rule that it
451    /// triggers from this list. The rules are evaluated in the order in which they
452    /// are specified. If an event does not match any of the rules,
453    /// TRACE_LEVEL_NONE will be used by default.
454    #[prost(message, repeated, tag="2")]
455    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
456    // --- Control flags ---
457
458    /// Trace input events processed by the system as they are being dispatched
459    /// to application windows. All trace rules will apply.
460    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
461    ///    it will
462    ///      trace InputDispatcher's inbound events (which does not include events
463    ///      synthesized within InputDispatcher) that match the rules.
464    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
465    ///    events
466    ///      matching the rules, including all events synthesized within
467    ///      InputDispatcher, will be traced.
468    #[prost(bool, optional, tag="3")]
469    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
470    /// Trace details about which windows the system is sending each input event
471    /// to. All trace rules will apply.
472    #[prost(bool, optional, tag="4")]
473    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
474}
475/// Nested message and enum types in `AndroidInputEventConfig`.
476pub mod android_input_event_config {
477    /// A rule that specifies the TraceLevel for an event based on matching
478    /// conditions. All matchers in the rule are optional. To trigger this rule, an
479    /// event must match all of its specified matchers (i.e. the matchers function
480    /// like a series of conditions connected by a logical 'AND' operator). A rule
481    /// with no specified matchers will match all events. Next ID: 6
482    #[derive(Clone, PartialEq, ::prost::Message)]
483    pub struct TraceRule {
484        /// The trace level to be used for events that trigger this rule.
485        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
486        #[prost(enumeration="TraceLevel", optional, tag="1")]
487        pub trace_level: ::core::option::Option<i32>,
488        // --- Optional Matchers ---
489
490        /// Package matchers
491        ///
492        /// Respectively matches if all or any of the target apps for this event are
493        /// contained in the specified list of package names.
494        ///
495        /// Intended usage:
496        ///    - Use match_all_packages to selectively allow tracing for the listed
497        ///    packages.
498        ///    - Use match_any_packages to selectively deny tracing for certain
499        ///    packages.
500        ///
501        /// WARNING: Great care must be taken when designing rules for field tracing!
502        ///           This is because each event is almost always sent to more than
503        ///           one app.
504        ///               For example, when allowing tracing for a package that has a
505        ///               spy window
506        ///           over the display (e.g. SystemUI) using match_any_packages,
507        ///           essentially all input will be recorded on that display. This is
508        ///           because the events will be sent to the spy as well as the
509        ///           foreground app, and regardless of what the foreground app is,
510        ///           the event will end up being traced.
511        ///               Alternatively, when attempting to block tracing for specific
512        ///               packages using
513        ///           match_all_packages, no events will likely be blocked. This is
514        ///           because the event will also be sent to other apps (such as, but
515        ///           not limited to, ones with spy windows), so the matcher will not
516        ///           match unless all other targets are also listed under the
517        ///           match_all_packages list.
518        #[prost(string, repeated, tag="2")]
519        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
520        #[prost(string, repeated, tag="3")]
521        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
522        /// Matches if the event is secure, which means that at least one of the
523        /// targets of this event is using the window flag FLAG_SECURE.
524        #[prost(bool, optional, tag="4")]
525        pub match_secure: ::core::option::Option<bool>,
526        /// Matches if there was an active IME connection while this event was being
527        /// processed.
528        #[prost(bool, optional, tag="5")]
529        pub match_ime_connection_active: ::core::option::Option<bool>,
530    }
531    /// Trace modes are tracing presets that are included in the system.
532    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
533    #[repr(i32)]
534    pub enum TraceMode {
535        /// Preset mode for maximal tracing.
536        /// WARNING: This will bypass all privacy measures on debuggable builds, and
537        /// will record all
538        ///           input events processed by the system, regardless of the context
539        ///           in which they were processed. It should only be used for tracing
540        ///           on a local device or for tests. It should NEVER be used for
541        ///           field tracing.
542        TraceAll = 0,
543        /// Use the tracing rules defined in this config to specify what events to
544        /// trace.
545        UseRules = 1,
546    }
547    impl TraceMode {
548        /// String value of the enum field names used in the ProtoBuf definition.
549        ///
550        /// The values are not transformed in any way and thus are considered stable
551        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
552        pub fn as_str_name(&self) -> &'static str {
553            match self {
554                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
555                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
556            }
557        }
558    }
559    /// The level of tracing that should be applied to an event.
560    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
561    #[repr(i32)]
562    pub enum TraceLevel {
563        /// Do not trace the input event.
564        None = 0,
565        /// Trace the event as a redacted event, where certain sensitive fields are
566        /// omitted from the trace, including the coordinates of pointer events and
567        /// the key/scan codes of key events.
568        Redacted = 1,
569        /// Trace the complete event.
570        Complete = 2,
571    }
572    impl TraceLevel {
573        /// String value of the enum field names used in the ProtoBuf definition.
574        ///
575        /// The values are not transformed in any way and thus are considered stable
576        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
577        pub fn as_str_name(&self) -> &'static str {
578            match self {
579                TraceLevel::None => "TRACE_LEVEL_NONE",
580                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
581                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
582            }
583        }
584    }
585}
586// End of protos/perfetto/common/android_log_constants.proto
587
588// Begin of protos/perfetto/config/android/android_log_config.proto
589
590#[derive(Clone, PartialEq, ::prost::Message)]
591pub struct AndroidLogConfig {
592    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
593    pub log_ids: ::prost::alloc::vec::Vec<i32>,
594    /// If set ignores all log messages whose prio is < the given value.
595    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
596    pub min_prio: ::core::option::Option<i32>,
597    /// If non-empty ignores all log messages whose tag doesn't match one of the
598    /// specified values.
599    #[prost(string, repeated, tag="4")]
600    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
601}
602// End of protos/perfetto/config/android/android_log_config.proto
603
604// Begin of protos/perfetto/config/android/android_polled_state_config.proto
605
606/// Data source that polls for display state. This should only be used for
607/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct AndroidPolledStateConfig {
610    /// Frequency of polling. If absent the state will be recorded once, at the
611    /// start of the trace.
612    /// This is required to be > 100ms 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_polled_state_config.proto
617
618// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
619
620/// Data source that controls the system properties used to guard initialization
621/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
622/// processes like SurfaceFlinger.
623///
624/// This data source only tells Skia to initialized the Perfetto SDK and start
625/// routing data to the Track Event system instead of ATrace. For those events
626/// to actually show up in a trace, the track_event data source must be used as
627/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
628/// processes may need to be restarted for Skia to revert to using ATrace if
629/// Track Events are no longer desired.
630///
631/// In addition to switching Skia to use Perfetto's track_event data source,
632/// this "guard" also controls Skia's "broad tracing", which removes Skia's
633/// internal tracing constraints and allows the track_event config to specify
634/// which categories should be traced. Filtering to the "skia.always" category
635/// *tag* in a track_event config can be used to re-enable the standard
636/// constraints typically used with ATrace.
637///
638/// Data source name: android.sdk_sysprop_guard
639/// Introduced in Android 14 (U) QPR1.
640/// Next id: 4
641#[derive(Clone, PartialEq, ::prost::Message)]
642pub struct AndroidSdkSyspropGuardConfig {
643    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
644    /// integration with the track_event data source in RenderEngine.
645    /// If false or omitted, the simpler ATrace fallback is used.
646    ///
647    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
648    /// restarted.
649    ///
650    /// Specifically this sets the following system properties:
651    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
652    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
653    ///
654    /// Does not affect actual track_event data *collection*, which must be
655    /// configured separately.
656    #[prost(bool, optional, tag="1")]
657    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
658    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
659    /// with the track_event data source. hwui_package_name_filter
660    /// can be used to control which apps are affected.
661    /// If false or omitted, the simpler ATrace fallback is used.
662    ///
663    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
664    /// restarted.
665    ///
666    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
667    /// If filtering is NOT set, this controls these GLOBAL system properties:
668    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
669    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
670    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
671    /// for each package listed in the filter:
672    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
673    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
674    ///
675    /// Does not affect actual track_event data *collection*, which must be
676    /// configured separately.
677    #[prost(bool, optional, tag="2")]
678    pub hwui_skia_track_events: ::core::option::Option<bool>,
679    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
680    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
681    #[prost(string, repeated, tag="3")]
682    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
683}
684// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
685
686// Begin of protos/perfetto/config/android/android_system_property_config.proto
687
688/// Data source that polls for system properties.
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct AndroidSystemPropertyConfig {
691    /// Frequency of polling. If absent the state will be recorded once, at the
692    /// start of the trace.
693    /// This is required to be > 100ms to avoid excessive CPU usage.
694    #[prost(uint32, optional, tag="1")]
695    pub poll_ms: ::core::option::Option<u32>,
696    /// Properties to poll. All property names must start with "debug.tracing.".
697    #[prost(string, repeated, tag="2")]
698    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
699}
700// End of protos/perfetto/config/android/android_system_property_config.proto
701
702// Begin of protos/perfetto/config/android/app_wakelock_config.proto
703
704/// Configuration for the android.app_wakelocks data source.
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct AppWakelocksConfig {
707    /// Specifies the delay (in milliseconds) after which the data source will
708    /// attempt to write events. Writing less frequently reduces the trace size by
709    /// making better use of the packed arrays and reducing the total number of
710    /// TracePackets needed (which each have dozens of bytes of overhead). The
711    /// suggested delay is 5000ms.
712    #[prost(int32, optional, tag="1")]
713    pub write_delay_ms: ::core::option::Option<i32>,
714    /// When set, wakelocks held for less than this amount of time are filtered
715    /// from the resulting trace. Note: duration is computed by matching wakelocks
716    /// with identical attributes, not by tracking the underlying objects. The
717    /// threshold should be < the trace's flush_period_ms.
718    #[prost(int32, optional, tag="2")]
719    pub filter_duration_below_ms: ::core::option::Option<i32>,
720    /// When true, the owner_pid is dropped from the resulting output, reducing the
721    /// size of the interning tables.
722    #[prost(bool, optional, tag="3")]
723    pub drop_owner_pid: ::core::option::Option<bool>,
724}
725// End of protos/perfetto/config/android/app_wakelock_config.proto
726
727// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
728
729/// Data source that records CPU per UID data.
730#[derive(Clone, PartialEq, ::prost::Message)]
731pub struct CpuPerUidConfig {
732    /// Record at this frequency.
733    #[prost(uint32, optional, tag="1")]
734    pub poll_ms: ::core::option::Option<u32>,
735}
736// End of protos/perfetto/config/android/cpu_per_uid_config.proto
737
738// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
739
740/// Data source that records kernel (and native) wakelock data.
741#[derive(Clone, PartialEq, ::prost::Message)]
742pub struct KernelWakelocksConfig {
743    /// Record at this frequency.
744    #[prost(uint32, optional, tag="1")]
745    pub poll_ms: ::core::option::Option<u32>,
746}
747// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
748
749// Begin of protos/perfetto/config/android/network_trace_config.proto
750
751/// Network tracing data source that records details on all packets sent or
752/// received by the network.
753#[derive(Clone, PartialEq, ::prost::Message)]
754pub struct NetworkPacketTraceConfig {
755    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
756    /// ring buffer. The polling interval should be such that the ring buffer is
757    /// unlikely to fill in that interval (or that filling is an acceptable risk).
758    /// The minimum polling rate is 100ms (values below this are ignored).
759    /// Introduced in Android 14 (U).
760    #[prost(uint32, optional, tag="1")]
761    pub poll_ms: ::core::option::Option<u32>,
762    /// The aggregation_threshold is the number of packets at which an event will
763    /// switch from per-packet details to aggregate details. For example, a value
764    /// of 50 means that if a particular event (grouped by the unique combinations
765    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
766    /// packets, the exact timestamp and length are recorded for each packet. If
767    /// there were 50 or more packets in an event, it would only record the total
768    /// duration, packets, and length. A value of zero or unspecified will always
769    /// / record per-packet details. A value of 1 always records aggregate details.
770    #[prost(uint32, optional, tag="2")]
771    pub aggregation_threshold: ::core::option::Option<u32>,
772    /// Specifies the maximum number of packet contexts to intern at a time. This
773    /// prevents the interning table from growing too large and controls whether
774    /// interning is enabled or disabled (a value of zero disables interning and
775    /// is the default). When a data sources interning table reaches this amount,
776    /// packet contexts will be inlined into NetworkPacketEvents.
777    #[prost(uint32, optional, tag="3")]
778    pub intern_limit: ::core::option::Option<u32>,
779    /// The following fields specify whether certain fields should be dropped from
780    /// the output. Dropping fields improves normalization results, reduces the
781    /// size of the interning table, and slightly reduces event size.
782    #[prost(bool, optional, tag="4")]
783    pub drop_local_port: ::core::option::Option<bool>,
784    #[prost(bool, optional, tag="5")]
785    pub drop_remote_port: ::core::option::Option<bool>,
786    #[prost(bool, optional, tag="6")]
787    pub drop_tcp_flags: ::core::option::Option<bool>,
788}
789// End of protos/perfetto/config/android/network_trace_config.proto
790
791// Begin of protos/perfetto/config/android/packages_list_config.proto
792
793/// Data source that lists details (such as version code) about packages on an
794/// Android device.
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct PackagesListConfig {
797    /// If not empty, emit info about only the following list of package names
798    /// (exact match, no regex). Otherwise, emit info about all packages.
799    #[prost(string, repeated, tag="1")]
800    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
801    /// If present and non-zero, the data source will periodically poll for CPU
802    /// use by packages and only emit results for those that it sees. If absent,
803    /// the data source will emit results for all packages at startup. The package
804    /// name filter applies either way.
805    #[prost(uint32, optional, tag="2")]
806    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
807}
808// End of protos/perfetto/config/android/packages_list_config.proto
809
810// Begin of protos/perfetto/config/android/pixel_modem_config.proto
811
812/// Data source that records events from the modem.
813#[derive(Clone, PartialEq, ::prost::Message)]
814pub struct PixelModemConfig {
815    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
816    pub event_group: ::core::option::Option<i32>,
817    /// If set, record only events with these hashes.
818    #[prost(int64, repeated, packed="false", tag="2")]
819    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
820    /// If set and allow_list is not set, deny events with these hashes.
821    #[prost(int64, repeated, packed="false", tag="3")]
822    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
823}
824/// Nested message and enum types in `PixelModemConfig`.
825pub mod pixel_modem_config {
826    /// Event group to record, as defined by the modem.
827    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
828    #[repr(i32)]
829    pub enum EventGroup {
830        Unknown = 0,
831        /// Events suitable for low bandwidth tracing only.
832        LowBandwidth = 1,
833        /// Events suitable for high and low bandwidth tracing.
834        HighAndLowBandwidth = 2,
835    }
836    impl EventGroup {
837        /// String value of the enum field names used in the ProtoBuf definition.
838        ///
839        /// The values are not transformed in any way and thus are considered stable
840        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
841        pub fn as_str_name(&self) -> &'static str {
842            match self {
843                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
844                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
845                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
846            }
847        }
848    }
849}
850// Begin of protos/perfetto/config/android/protolog_config.proto
851
852/// Custom configuration for the "android.protolog" data source.
853/// ProtoLog is a logging mechanism that is intented to be more efficient than
854/// logcat. This configures what logs to capture in the tracing instance.
855#[derive(Clone, PartialEq, ::prost::Message)]
856pub struct ProtoLogConfig {
857    /// Specified the configurations for each of the logging groups. If none is
858    /// specified for a group the defaults will be used.
859    #[prost(message, repeated, tag="1")]
860    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
861    /// Specified what tracing mode to use for the tracing instance.
862    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
863    pub tracing_mode: ::core::option::Option<i32>,
864    /// If set, any message with log level higher than this level (inclusive) will
865    /// be traced. Group overrides take precedence over this value.
866    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
867    pub default_log_from_level: ::core::option::Option<i32>,
868}
869/// Nested message and enum types in `ProtoLogConfig`.
870pub mod proto_log_config {
871    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
872    #[repr(i32)]
873    pub enum TracingMode {
874        /// When using the DEFAULT tracing mode, only log groups and levels specified
875        /// in the group_overrides are traced.
876        Default = 0,
877        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
878        /// traced, unless specified in the group_overrides.
879        EnableAll = 1,
880    }
881    impl TracingMode {
882        /// String value of the enum field names used in the ProtoBuf definition.
883        ///
884        /// The values are not transformed in any way and thus are considered stable
885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
886        pub fn as_str_name(&self) -> &'static str {
887            match self {
888                TracingMode::Default => "DEFAULT",
889                TracingMode::EnableAll => "ENABLE_ALL",
890            }
891        }
892    }
893}
894#[derive(Clone, PartialEq, ::prost::Message)]
895pub struct ProtoLogGroup {
896    /// The ProtoLog group name this configuration entry applies to.
897    #[prost(string, optional, tag="1")]
898    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
899    /// Specify the level from which to start capturing protologs.
900    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
901    /// message will be traced.
902    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
903    pub log_from: ::core::option::Option<i32>,
904    /// When set to true we will collect the stacktrace for each protolog message
905    /// in this group that we are tracing.
906    #[prost(bool, optional, tag="3")]
907    pub collect_stacktrace: ::core::option::Option<bool>,
908}
909// End of protos/perfetto/config/android/protolog_config.proto
910
911// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
912
913/// Custom configuration for the "android.surfaceflinger.layers" data source.
914#[derive(Clone, PartialEq, ::prost::Message)]
915pub struct SurfaceFlingerLayersConfig {
916    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
917    pub mode: ::core::option::Option<i32>,
918    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
919    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
920}
921/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
922pub mod surface_flinger_layers_config {
923    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
924    #[repr(i32)]
925    pub enum Mode {
926        Unspecified = 0,
927        /// Trace layers snapshots. A snapshot is taken every time a layers change
928        /// occurs.
929        Active = 1,
930        /// Generate layers snapshots from the transactions kept in the
931        /// SurfaceFlinger's internal ring buffer.
932        /// The layers snapshots generation occurs when this data source is flushed.
933        Generated = 2,
934        /// Trace a single layers snapshot.
935        Dump = 3,
936        /// Default mode (applied by SurfaceFlinger if no mode is specified).
937        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
938        /// when a bugreport is taken.
939        GeneratedBugreportOnly = 4,
940    }
941    impl Mode {
942        /// String value of the enum field names used in the ProtoBuf definition.
943        ///
944        /// The values are not transformed in any way and thus are considered stable
945        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
946        pub fn as_str_name(&self) -> &'static str {
947            match self {
948                Mode::Unspecified => "MODE_UNSPECIFIED",
949                Mode::Active => "MODE_ACTIVE",
950                Mode::Generated => "MODE_GENERATED",
951                Mode::Dump => "MODE_DUMP",
952                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
953            }
954        }
955    }
956    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
957    #[repr(i32)]
958    pub enum TraceFlag {
959        Unspecified = 0,
960        Input = 2,
961        Composition = 4,
962        Extra = 8,
963        Hwc = 16,
964        Buffers = 32,
965        VirtualDisplays = 64,
966        /// INPUT | COMPOSITION | EXTRA
967        All = 14,
968    }
969    impl TraceFlag {
970        /// String value of the enum field names used in the ProtoBuf definition.
971        ///
972        /// The values are not transformed in any way and thus are considered stable
973        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
974        pub fn as_str_name(&self) -> &'static str {
975            match self {
976                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
977                TraceFlag::Input => "TRACE_FLAG_INPUT",
978                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
979                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
980                TraceFlag::Hwc => "TRACE_FLAG_HWC",
981                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
982                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
983                TraceFlag::All => "TRACE_FLAG_ALL",
984            }
985        }
986    }
987}
988// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
989
990// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
991
992/// Custom configuration for the "android.surfaceflinger.transactions" data
993/// source.
994#[derive(Clone, PartialEq, ::prost::Message)]
995pub struct SurfaceFlingerTransactionsConfig {
996    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
997    pub mode: ::core::option::Option<i32>,
998}
999/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1000pub mod surface_flinger_transactions_config {
1001    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1002    #[repr(i32)]
1003    pub enum Mode {
1004        Unspecified = 0,
1005        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1006        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1007        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1008        /// initial state and the latest transactions.
1009        Continuous = 1,
1010        /// SurfaceFlinger writes the initial state and then each incoming
1011        /// transaction until the data source is stopped.
1012        Active = 2,
1013    }
1014    impl Mode {
1015        /// String value of the enum field names used in the ProtoBuf definition.
1016        ///
1017        /// The values are not transformed in any way and thus are considered stable
1018        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1019        pub fn as_str_name(&self) -> &'static str {
1020            match self {
1021                Mode::Unspecified => "MODE_UNSPECIFIED",
1022                Mode::Continuous => "MODE_CONTINUOUS",
1023                Mode::Active => "MODE_ACTIVE",
1024            }
1025        }
1026    }
1027}
1028// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1029
1030// Begin of protos/perfetto/config/android/windowmanager_config.proto
1031
1032/// Custom configuration for the "android.windowmanager" data source.
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct WindowManagerConfig {
1035    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1036    pub log_frequency: ::core::option::Option<i32>,
1037    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1038    pub log_level: ::core::option::Option<i32>,
1039}
1040/// Nested message and enum types in `WindowManagerConfig`.
1041pub mod window_manager_config {
1042    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1043    #[repr(i32)]
1044    pub enum LogFrequency {
1045        Unspecified = 0,
1046        /// Trace state snapshots when a frame is committed.
1047        Frame = 1,
1048        /// Trace state snapshots every time a transaction is committed.
1049        Transaction = 2,
1050        /// Trace single state snapshots when the data source is started.
1051        SingleDump = 3,
1052    }
1053    impl LogFrequency {
1054        /// String value of the enum field names used in the ProtoBuf definition.
1055        ///
1056        /// The values are not transformed in any way and thus are considered stable
1057        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1058        pub fn as_str_name(&self) -> &'static str {
1059            match self {
1060                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1061                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1062                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1063                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1064            }
1065        }
1066    }
1067    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1068    #[repr(i32)]
1069    pub enum LogLevel {
1070        Unspecified = 0,
1071        /// Logs all elements with maximum amount of information.
1072        Verbose = 1,
1073        /// Logs all elements but doesn't write all configuration data.
1074        Debug = 2,
1075        /// Logs only visible elements, with the minimum amount of performance
1076        /// overhead
1077        Critical = 3,
1078    }
1079    impl LogLevel {
1080        /// String value of the enum field names used in the ProtoBuf definition.
1081        ///
1082        /// The values are not transformed in any way and thus are considered stable
1083        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1084        pub fn as_str_name(&self) -> &'static str {
1085            match self {
1086                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1087                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1088                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1089                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1090            }
1091        }
1092    }
1093}
1094// End of protos/perfetto/config/android/windowmanager_config.proto
1095
1096// Begin of protos/perfetto/config/chrome/chrome_config.proto
1097
1098#[derive(Clone, PartialEq, ::prost::Message)]
1099pub struct ChromeConfig {
1100    #[prost(string, optional, tag="1")]
1101    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1102    /// When enabled, the data source should only fill in fields in the output that
1103    /// are not potentially privacy sensitive.
1104    #[prost(bool, optional, tag="2")]
1105    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1106    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1107    /// JSON format. Note that the trace data will still be returned as a series of
1108    /// TracePackets, but the embedded data will be JSON instead of serialized
1109    /// protobuf.
1110    #[prost(bool, optional, tag="3")]
1111    pub convert_to_legacy_json: ::core::option::Option<bool>,
1112    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1113    pub client_priority: ::core::option::Option<i32>,
1114    /// Applicable only when using legacy JSON format.
1115    /// If |json_agent_label_filter| is not empty, only data pertaining to
1116    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1117    #[prost(string, optional, tag="5")]
1118    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1119    ///   When enabled, event names should not contain package names.
1120    #[prost(bool, optional, tag="6")]
1121    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1122}
1123/// Nested message and enum types in `ChromeConfig`.
1124pub mod chrome_config {
1125    /// Priority of the tracing session client. A higher priority session may
1126    /// preempt a lower priority one in configurations where concurrent sessions
1127    /// aren't supported.
1128    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1129    #[repr(i32)]
1130    pub enum ClientPriority {
1131        Unknown = 0,
1132        Background = 1,
1133        UserInitiated = 2,
1134    }
1135    impl ClientPriority {
1136        /// String value of the enum field names used in the ProtoBuf definition.
1137        ///
1138        /// The values are not transformed in any way and thus are considered stable
1139        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1140        pub fn as_str_name(&self) -> &'static str {
1141            match self {
1142                ClientPriority::Unknown => "UNKNOWN",
1143                ClientPriority::Background => "BACKGROUND",
1144                ClientPriority::UserInitiated => "USER_INITIATED",
1145            }
1146        }
1147    }
1148}
1149// End of protos/perfetto/config/chrome/chrome_config.proto
1150
1151// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1152
1153#[derive(Clone, PartialEq, ::prost::Message)]
1154pub struct ChromiumHistogramSamplesConfig {
1155    /// List of histograms to record. If no histogram is specified, all histograms
1156    /// are recorded.
1157    #[prost(message, repeated, tag="1")]
1158    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1159    /// Default: false (i.e. histogram names are NOT filtered out by default)
1160    /// When true, histogram_name will be filtered out.
1161    #[prost(bool, optional, tag="2")]
1162    pub filter_histogram_names: ::core::option::Option<bool>,
1163}
1164/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1165pub mod chromium_histogram_samples_config {
1166    /// Records when a value within the specified bounds [min_value, max_value] is
1167    /// emitted into a Chrome histogram.
1168    #[derive(Clone, PartialEq, ::prost::Message)]
1169    pub struct HistogramSample {
1170        #[prost(string, optional, tag="1")]
1171        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1172        #[prost(int64, optional, tag="2")]
1173        pub min_value: ::core::option::Option<i64>,
1174        #[prost(int64, optional, tag="3")]
1175        pub max_value: ::core::option::Option<i64>,
1176    }
1177}
1178// End of protos/perfetto/config/chrome/histogram_samples.proto
1179
1180// Begin of protos/perfetto/config/chrome/system_metrics.proto
1181
1182#[derive(Clone, PartialEq, ::prost::Message)]
1183pub struct ChromiumSystemMetricsConfig {
1184    /// Samples counters every X ms.
1185    #[prost(uint32, optional, tag="1")]
1186    pub sampling_interval_ms: ::core::option::Option<u32>,
1187}
1188// End of protos/perfetto/config/chrome/system_metrics.proto
1189
1190// Begin of protos/perfetto/config/chrome/v8_config.proto
1191
1192#[derive(Clone, PartialEq, ::prost::Message)]
1193pub struct V8Config {
1194    /// Whether to log the actual content of scripts (e.g. content of the JS file
1195    /// that was compiled to generate code).
1196    /// ATTENTION: This could considerably increase the size of the resuling trace
1197    ///             file.
1198    #[prost(bool, optional, tag="1")]
1199    pub log_script_sources: ::core::option::Option<bool>,
1200    /// Whether to log the generated code for jitted functions (machine code or
1201    /// bytecode).
1202    /// ATTENTION: This could considerably increase the size of the resuling trace
1203    ///             file.
1204    #[prost(bool, optional, tag="2")]
1205    pub log_instructions: ::core::option::Option<bool>,
1206}
1207// End of protos/perfetto/config/chrome/v8_config.proto
1208
1209// Begin of protos/perfetto/config/etw/etw_config.proto
1210
1211/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1212/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1213/// ns-evntrace-event_trace_properties
1214#[derive(Clone, PartialEq, ::prost::Message)]
1215pub struct EtwConfig {
1216    /// The kernel_flags determines the flags that will be used by the etw tracing
1217    /// session. These kernel flags have been built to expose the useful events
1218    /// captured from the kernel mode only.
1219    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1220    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1221    // See the list of keywords for for individual providers.
1222    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1223
1224    /// Provides events relating to the scheduler.
1225    #[prost(string, repeated, tag="2")]
1226    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1227    /// Provides events relating to the memory manager.
1228    #[prost(string, repeated, tag="3")]
1229    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1230}
1231/// Nested message and enum types in `EtwConfig`.
1232pub mod etw_config {
1233    /// The KernelFlag represent list of kernel flags that we are intrested in.
1234    /// To get a more extensive list run 'xperf -providers k'.
1235    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1236    #[repr(i32)]
1237    pub enum KernelFlag {
1238        Cswitch = 0,
1239        Dispatcher = 1,
1240    }
1241    impl KernelFlag {
1242        /// String value of the enum field names used in the ProtoBuf definition.
1243        ///
1244        /// The values are not transformed in any way and thus are considered stable
1245        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1246        pub fn as_str_name(&self) -> &'static str {
1247            match self {
1248                KernelFlag::Cswitch => "CSWITCH",
1249                KernelFlag::Dispatcher => "DISPATCHER",
1250            }
1251        }
1252    }
1253}
1254// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1255
1256#[derive(Clone, PartialEq, ::prost::Message)]
1257pub struct FrozenFtraceConfig {
1258    /// The instance name which stores the previous boot ftrace data. Required.
1259    #[prost(string, optional, tag="1")]
1260    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1261}
1262// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1263
1264// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1265
1266/// Next id: 34
1267#[derive(Clone, PartialEq, ::prost::Message)]
1268pub struct FtraceConfig {
1269    /// Ftrace events to record, example: "sched/sched_switch".
1270    #[prost(string, repeated, tag="1")]
1271    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1272    /// Android-specific event categories:
1273    #[prost(string, repeated, tag="2")]
1274    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1275    #[prost(string, repeated, tag="3")]
1276    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1277    /// Some processes can emit data through atrace or through the perfetto SDK via
1278    /// the "track_event" data source. For these categories, the SDK will be
1279    /// preferred, if possible, for this config.
1280    #[prost(string, repeated, tag="28")]
1281    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1282    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1283    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1284    /// events for convenience (and the vendor-specific events on top).
1285    /// Introduced in: perfetto v52.
1286    #[prost(bool, optional, tag="34")]
1287    pub atrace_userspace_only: ::core::option::Option<bool>,
1288    /// Size of each per-cpu kernel ftrace ring buffer.
1289    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1290    /// buffers cannot be resized without pausing recording in the kernel.
1291    #[prost(uint32, optional, tag="10")]
1292    pub buffer_size_kb: ::core::option::Option<u32>,
1293    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1294    /// implementation to choose a bigger buffer size.
1295    ///
1296    /// Most configs for perfetto v43+ should simply leave both fields unset.
1297    ///
1298    /// If you need a config compatible with a range of perfetto builds and you
1299    /// used to set a non-default buffer_size_kb, consider setting both fields.
1300    /// Example:
1301    ///    buffer_size_kb: 4096
1302    ///    buffer_size_lower_bound: true
1303    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1304    /// On v43+, buffers will be at least 4 MB.
1305    /// In both cases, neither is guaranteed if there are other concurrent
1306    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1307    /// the recording in the kernel.
1308    /// Introduced in: perfetto v43.
1309    #[prost(bool, optional, tag="27")]
1310    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1311    /// If set, specifies how often the tracing daemon reads from the kernel ring
1312    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1313    /// Leave unset unless you're fine-tuning a local config.
1314    #[prost(uint32, optional, tag="11")]
1315    pub drain_period_ms: ::core::option::Option<u32>,
1316    /// If set, the tracing daemon will read kernel ring buffers as soon as
1317    /// they're filled past this percentage of occupancy. In other words, a value
1318    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1319    /// half-full. Not guaranteed if there are multiple concurrent tracing
1320    /// sessions.
1321    /// Currently does nothing on Linux kernels below v6.9.
1322    /// Introduced in: perfetto v48.
1323    #[prost(uint32, optional, tag="29")]
1324    pub drain_buffer_percent: ::core::option::Option<u32>,
1325    #[prost(message, optional, tag="12")]
1326    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1327    #[prost(message, optional, tag="22")]
1328    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1329    /// Enables symbol name resolution against /proc/kallsyms.
1330    /// It requires that either traced_probes is running as root or that
1331    /// kptr_restrict has been manually lowered.
1332    /// It does not disclose KASLR, symbol addresses are mangled.
1333    #[prost(bool, optional, tag="13")]
1334    pub symbolize_ksyms: ::core::option::Option<bool>,
1335    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1336    pub ksyms_mem_policy: ::core::option::Option<i32>,
1337    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1338    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1339    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1340    /// The historical context for this is the following:
1341    /// - Up to Android S (12), the rss_stat was internally throttled in its
1342    ///    kernel implementation.
1343    /// - A change introduced in the kernels after S has introduced a new
1344    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1345    ///    (hence very spammy).
1346    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1347    ///    need to deal with both cases.
1348    /// For more context: go/rss-stat-throttled.
1349    #[prost(bool, optional, tag="15")]
1350    pub throttle_rss_stat: ::core::option::Option<bool>,
1351    /// If true, use self-describing proto messages when writing events not known
1352    /// at compile time (aka generic events). Each event bundle will have a set of
1353    /// serialised proto descriptors for events within that bundle.
1354    /// Added in: perfetto v50.
1355    #[prost(bool, optional, tag="32")]
1356    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1357    /// If true, avoid enabling events that aren't statically known by
1358    /// traced_probes. Otherwise, the default is to emit such events as
1359    /// GenericFtraceEvent protos.
1360    /// Prefer to keep this flag at its default. This was added for Android
1361    /// tracing, where atrace categories and/or atrace HAL requested events can
1362    /// expand to events that aren't of interest to the tracing user.
1363    /// Introduced in: Android T.
1364    #[prost(bool, optional, tag="16")]
1365    pub disable_generic_events: ::core::option::Option<bool>,
1366    /// The subset of syscalls to record. To record all syscalls, leave this unset
1367    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1368    /// * before perfetto v43, requires the config to also enable
1369    ///    raw_syscalls/sys_{enter,exit}.
1370    /// * perfetto v43+ does the right thing if you set only this field.
1371    /// Example: ["sys_read", "sys_open"].
1372    /// Introduced in: Android U.
1373    #[prost(string, repeated, tag="18")]
1374    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1375    /// If true, enable the "function_graph" kernel tracer that emits events
1376    /// whenever a kernel function is entered and exited
1377    /// (funcgraph_entry/funcgraph_exit).
1378    /// Notes on use:
1379    /// * Requires |symbolize_ksyms| for function name resolution.
1380    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1381    ///    set of functions, otherwise the event bandwidth will be too high for
1382    ///    practical use.
1383    /// * The data source might be rejected if there is already a concurrent
1384    ///    ftrace data source that does not use function graph itself, as we do not
1385    ///    support switching kernel tracers mid-trace.
1386    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1387    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1388    ///    "function_graph".
1389    /// Android:
1390    /// * Available only on debuggable builds.
1391    /// * Introduced in: Android U.
1392    #[prost(bool, optional, tag="19")]
1393    pub enable_function_graph: ::core::option::Option<bool>,
1394    /// Constrains the set of functions traced when |enable_function_graph| is
1395    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1396    /// in which case all matching functions will be traced. See kernel
1397    /// documentation on ftrace "set_ftrace_filter" file for more details.
1398    /// Android:
1399    /// * Available only on debuggable builds.
1400    /// * Introduced in: Android U.
1401    #[prost(string, repeated, tag="20")]
1402    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1403    /// If |enable_function_graph| is true, trace this set of functions *and* all
1404    /// of its callees. Supports globs. Can be set together with
1405    /// |function_filters|, in which case only callees matching the filter will be
1406    /// traced. If setting both, you most likely want all roots to also be
1407    /// included in |function_filters|.
1408    /// Android:
1409    /// * Available only on debuggable builds.
1410    /// * Introduced in: Android U.
1411    #[prost(string, repeated, tag="21")]
1412    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1413    /// If |enable_function_graph| is true, only trace the specified
1414    /// number of calls down the stack. Sets the max_graph_depth value
1415    /// in sys/kernel/tracing/
1416    ///
1417    /// Only respected for the first tracing session that enables
1418    /// function_graph tracing.
1419    ///
1420    /// Introduced in: perfetto v51.
1421    /// Supported on: Android 25Q3+.
1422    #[prost(uint32, optional, tag="33")]
1423    pub function_graph_max_depth: ::core::option::Option<u32>,
1424    /// Ftrace events to record, specific for kprobes and kretprobes
1425    #[prost(message, repeated, tag="30")]
1426    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1427    /// If true, does not clear kernel ftrace buffers when starting the trace.
1428    /// This makes sense only if this is the first ftrace data source instance
1429    /// created after the daemon has been started. Can be useful for gathering boot
1430    /// traces, if ftrace has been separately configured (e.g. via kernel
1431    /// commandline).
1432    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1433    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1434    /// anything besides ftrace. Otherwise timestamps might be skewed.
1435    #[prost(bool, optional, tag="23")]
1436    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1437    /// If true, overrides the default timestamp clock and uses a raw hardware
1438    /// based monotonic clock for getting timestamps.
1439    /// * Introduced in: Android U.
1440    #[prost(bool, optional, tag="24")]
1441    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1442    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1443    /// for event recording. Normally, this means
1444    /// `/sys/kernel/tracing/instances/$instance_name`.
1445    ///
1446    /// Names "hyp" and "hypervisor" are reserved.
1447    ///
1448    /// The instance must already exist, the tracing daemon *will not* create it
1449    /// for you as it typically doesn't have such permissions.
1450    /// Only a subset of features is guaranteed to work with non-default instances,
1451    /// at the time of writing:
1452    ///   * ftrace_events
1453    ///   * buffer_size_kb
1454    #[prost(string, optional, tag="25")]
1455    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1456    /// For perfetto developer use. If true and on a debuggable android build,
1457    /// serialise raw tracing pages that the implementation cannot parse.
1458    #[prost(bool, optional, tag="31")]
1459    pub debug_ftrace_abi: ::core::option::Option<bool>,
1460    /// No-op in perfetto v28+. Name preserved because of existing references in
1461    /// textproto configs.
1462    #[deprecated]
1463    #[prost(bool, optional, tag="14")]
1464    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1465}
1466/// Nested message and enum types in `FtraceConfig`.
1467pub mod ftrace_config {
1468    /// Configuration for compact encoding of scheduler events. When enabled (and
1469    /// recording the relevant ftrace events), specific high-volume events are
1470    /// encoded in a denser format than normal.
1471    #[derive(Clone, PartialEq, ::prost::Message)]
1472    pub struct CompactSchedConfig {
1473        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1474        /// record those events in the compact format.
1475        ///
1476        /// If the field is unset, the default is:
1477        /// * perfetto v42.0+: enabled
1478        /// * before: disabled
1479        #[prost(bool, optional, tag="1")]
1480        pub enabled: ::core::option::Option<bool>,
1481    }
1482    /// Optional filter for "ftrace/print" events.
1483    ///
1484    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1485    /// are processed in order), its `allow` field will be used as the outcome: if
1486    /// `allow` is true, the event will be included in the trace, otherwise it will
1487    /// be discarded. If an event does not match any rule, it will be allowed by
1488    /// default (a rule with an empty prefix and allow=false, disallows everything
1489    /// by default).
1490    #[derive(Clone, PartialEq, ::prost::Message)]
1491    pub struct PrintFilter {
1492        #[prost(message, repeated, tag="1")]
1493        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1494    }
1495    /// Nested message and enum types in `PrintFilter`.
1496    pub mod print_filter {
1497        #[derive(Clone, PartialEq, ::prost::Message)]
1498        pub struct Rule {
1499            #[prost(bool, optional, tag="2")]
1500            pub allow: ::core::option::Option<bool>,
1501            #[prost(oneof="rule::Match", tags="1, 3")]
1502            pub r#match: ::core::option::Option<rule::Match>,
1503        }
1504        /// Nested message and enum types in `Rule`.
1505        pub mod rule {
1506            /// Matches an atrace message of the form:
1507            /// <type>|pid|<prefix>...
1508            #[derive(Clone, PartialEq, ::prost::Message)]
1509            pub struct AtraceMessage {
1510                #[prost(string, optional, tag="1")]
1511                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1512                #[prost(string, optional, tag="2")]
1513                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1514            }
1515            #[derive(Clone, PartialEq, ::prost::Oneof)]
1516            pub enum Match {
1517                /// This rule matches if `prefix` matches exactly with the beginning of
1518                /// the "ftrace/print" "buf" field.
1519                #[prost(string, tag="1")]
1520                Prefix(::prost::alloc::string::String),
1521                /// This rule matches if the "buf" field contains an atrace-style print
1522                /// message as specified in `atrace_msg`.
1523                #[prost(message, tag="3")]
1524                AtraceMsg(AtraceMessage),
1525            }
1526        }
1527    }
1528    #[derive(Clone, PartialEq, ::prost::Message)]
1529    pub struct KprobeEvent {
1530        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1531        #[prost(string, optional, tag="1")]
1532        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1533        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1534        pub r#type: ::core::option::Option<i32>,
1535    }
1536    /// Nested message and enum types in `KprobeEvent`.
1537    pub mod kprobe_event {
1538        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1539        #[repr(i32)]
1540        pub enum KprobeType {
1541            Unknown = 0,
1542            Kprobe = 1,
1543            Kretprobe = 2,
1544            Both = 3,
1545        }
1546        impl KprobeType {
1547            /// String value of the enum field names used in the ProtoBuf definition.
1548            ///
1549            /// The values are not transformed in any way and thus are considered stable
1550            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1551            pub fn as_str_name(&self) -> &'static str {
1552                match self {
1553                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1554                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1555                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1556                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1557                }
1558            }
1559        }
1560    }
1561    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1562    /// should keep the symbol map in memory (and reuse it for future tracing
1563    /// sessions) or clear it (saving memory) and re-create it on each tracing
1564    /// session (wasting cpu and wall time).
1565    /// The tradeoff is roughly:
1566    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1567    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1568    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1569    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1570    #[repr(i32)]
1571    pub enum KsymsMemPolicy {
1572        KsymsUnspecified = 0,
1573        KsymsCleanupOnStop = 1,
1574        KsymsRetain = 2,
1575    }
1576    impl KsymsMemPolicy {
1577        /// String value of the enum field names used in the ProtoBuf definition.
1578        ///
1579        /// The values are not transformed in any way and thus are considered stable
1580        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1581        pub fn as_str_name(&self) -> &'static str {
1582            match self {
1583                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1584                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1585                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1586            }
1587        }
1588    }
1589}
1590// End of protos/perfetto/config/ftrace/ftrace_config.proto
1591
1592// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1593
1594#[derive(Clone, PartialEq, ::prost::Message)]
1595pub struct GpuCounterConfig {
1596    /// Desired sampling interval for counters.
1597    #[prost(uint64, optional, tag="1")]
1598    pub counter_period_ns: ::core::option::Option<u64>,
1599    /// List of counters to be sampled. Counter IDs correspond to the ones
1600    /// described in GpuCounterSpec in the data source descriptor.
1601    #[prost(uint32, repeated, packed="false", tag="2")]
1602    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1603    /// Sample counters by instrumenting command buffers.
1604    #[prost(bool, optional, tag="3")]
1605    pub instrumented_sampling: ::core::option::Option<bool>,
1606    /// Fix gpu clock rate during trace session.
1607    #[prost(bool, optional, tag="4")]
1608    pub fix_gpu_clock: ::core::option::Option<bool>,
1609}
1610// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1611
1612// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1613
1614#[derive(Clone, PartialEq, ::prost::Message)]
1615pub struct GpuRenderStagesConfig {
1616    /// Enable to separate the color and depth/stencil load and store stages
1617    /// into a separate stages. If disabled, the depth/stencil load and store
1618    /// stages will be combined.  Disabled by default. This option has no effect if
1619    /// Low Overhead mode is enabled.
1620    #[prost(bool, optional, tag="1")]
1621    pub full_loadstore: ::core::option::Option<bool>,
1622    /// Use the low overhead mode for traces. In this mode render stages are
1623    /// combined into a single workload stage. This provides less granular data but
1624    /// induces minimal GPU overhead. Disabled by default.
1625    #[prost(bool, optional, tag="2")]
1626    pub low_overhead: ::core::option::Option<bool>,
1627    /// Trace metrics to capture for each render stage
1628    #[prost(string, repeated, tag="3")]
1629    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1630}
1631// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1632
1633// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1634
1635#[derive(Clone, PartialEq, ::prost::Message)]
1636pub struct VulkanMemoryConfig {
1637    /// Tracking driver memory usage events
1638    #[prost(bool, optional, tag="1")]
1639    pub track_driver_memory_usage: ::core::option::Option<bool>,
1640    /// Tracking device memory usage events
1641    #[prost(bool, optional, tag="2")]
1642    pub track_device_memory_usage: ::core::option::Option<bool>,
1643}
1644// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1645
1646// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1647
1648/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
1649/// systems.
1650#[derive(Clone, PartialEq, ::prost::Message)]
1651pub struct InodeFileConfig {
1652    /// How long to pause between batches.
1653    #[prost(uint32, optional, tag="1")]
1654    pub scan_interval_ms: ::core::option::Option<u32>,
1655    /// How long to wait before the first scan in order to accumulate inodes.
1656    #[prost(uint32, optional, tag="2")]
1657    pub scan_delay_ms: ::core::option::Option<u32>,
1658    /// How many inodes to scan in one batch.
1659    #[prost(uint32, optional, tag="3")]
1660    pub scan_batch_size: ::core::option::Option<u32>,
1661    /// Do not scan for inodes not found in the static map.
1662    #[prost(bool, optional, tag="4")]
1663    pub do_not_scan: ::core::option::Option<bool>,
1664    /// If non-empty, only scan inodes corresponding to block devices named in
1665    /// this list.
1666    #[prost(string, repeated, tag="5")]
1667    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1668    /// When encountering an inode belonging to a block device corresponding
1669    /// to one of the mount points in this map, scan its scan_roots instead.
1670    #[prost(message, repeated, tag="6")]
1671    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1672}
1673/// Nested message and enum types in `InodeFileConfig`.
1674pub mod inode_file_config {
1675    #[derive(Clone, PartialEq, ::prost::Message)]
1676    pub struct MountPointMappingEntry {
1677        #[prost(string, optional, tag="1")]
1678        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1679        #[prost(string, repeated, tag="2")]
1680        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1681    }
1682}
1683// End of protos/perfetto/config/inode_file/inode_file_config.proto
1684
1685// Begin of protos/perfetto/config/interceptors/console_config.proto
1686
1687#[derive(Clone, PartialEq, ::prost::Message)]
1688pub struct ConsoleConfig {
1689    #[prost(enumeration="console_config::Output", optional, tag="1")]
1690    pub output: ::core::option::Option<i32>,
1691    #[prost(bool, optional, tag="2")]
1692    pub enable_colors: ::core::option::Option<bool>,
1693}
1694/// Nested message and enum types in `ConsoleConfig`.
1695pub mod console_config {
1696    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1697    #[repr(i32)]
1698    pub enum Output {
1699        Unspecified = 0,
1700        Stdout = 1,
1701        Stderr = 2,
1702    }
1703    impl Output {
1704        /// String value of the enum field names used in the ProtoBuf definition.
1705        ///
1706        /// The values are not transformed in any way and thus are considered stable
1707        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1708        pub fn as_str_name(&self) -> &'static str {
1709            match self {
1710                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1711                Output::Stdout => "OUTPUT_STDOUT",
1712                Output::Stderr => "OUTPUT_STDERR",
1713            }
1714        }
1715    }
1716}
1717// End of protos/perfetto/config/interceptors/console_config.proto
1718
1719// Begin of protos/perfetto/config/interceptor_config.proto
1720
1721/// Configuration for trace packet interception. Used for diverting trace data to
1722/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1723/// Perfetto SDK.
1724#[derive(Clone, PartialEq, ::prost::Message)]
1725pub struct InterceptorConfig {
1726    /// Matches the name given to RegisterInterceptor().
1727    #[prost(string, optional, tag="1")]
1728    pub name: ::core::option::Option<::prost::alloc::string::String>,
1729    #[prost(message, optional, tag="100")]
1730    pub console_config: ::core::option::Option<ConsoleConfig>,
1731}
1732// End of protos/perfetto/config/interceptor_config.proto
1733
1734// Begin of protos/perfetto/config/power/android_power_config.proto
1735
1736#[derive(Clone, PartialEq, ::prost::Message)]
1737pub struct AndroidPowerConfig {
1738    #[prost(uint32, optional, tag="1")]
1739    pub battery_poll_ms: ::core::option::Option<u32>,
1740    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1741    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1742    /// Where available enables per-power-rail measurements.
1743    #[prost(bool, optional, tag="3")]
1744    pub collect_power_rails: ::core::option::Option<bool>,
1745    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1746    /// Available from Android S.
1747    #[prost(bool, optional, tag="4")]
1748    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1749    /// Provides a breakdown of time in state for various subsystems.
1750    /// Available from Android U.
1751    #[prost(bool, optional, tag="5")]
1752    pub collect_entity_state_residency: ::core::option::Option<bool>,
1753}
1754/// Nested message and enum types in `AndroidPowerConfig`.
1755pub mod android_power_config {
1756    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1757    #[repr(i32)]
1758    pub enum BatteryCounters {
1759        BatteryCounterUnspecified = 0,
1760        /// Coulomb counter.
1761        BatteryCounterCharge = 1,
1762        /// Charge (%).
1763        BatteryCounterCapacityPercent = 2,
1764        /// Instantaneous current.
1765        BatteryCounterCurrent = 3,
1766        /// Avg current.
1767        BatteryCounterCurrentAvg = 4,
1768        /// Instantaneous voltage.
1769        BatteryCounterVoltage = 5,
1770    }
1771    impl BatteryCounters {
1772        /// String value of the enum field names used in the ProtoBuf definition.
1773        ///
1774        /// The values are not transformed in any way and thus are considered stable
1775        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1776        pub fn as_str_name(&self) -> &'static str {
1777            match self {
1778                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1779                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1780                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1781                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1782                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1783                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1784            }
1785        }
1786    }
1787}
1788// End of protos/perfetto/config/power/android_power_config.proto
1789
1790// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
1791
1792/// Configuration that allows to boost the priority of the 'traced' or
1793/// 'traced_probs' processes, by changing the scheduler configuration.
1794/// Only supported on Linux and Android the boosted process must have
1795/// 'CAP_SYS_NICE' capability.
1796#[derive(Clone, PartialEq, ::prost::Message)]
1797pub struct PriorityBoostConfig {
1798    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
1799    pub policy: ::core::option::Option<i32>,
1800    #[prost(uint32, optional, tag="2")]
1801    pub priority: ::core::option::Option<u32>,
1802}
1803/// Nested message and enum types in `PriorityBoostConfig`.
1804pub mod priority_boost_config {
1805    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1806    #[repr(i32)]
1807    pub enum BoostPolicy {
1808        PolicyUnspecified = 0,
1809        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
1810        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
1811        /// than default 0, 20 is the highest priority.
1812        /// Note: this is the opposite semantic of the cmdline nice, and is done for
1813        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
1814        PolicySchedOther = 1,
1815        /// The Real-time policy, Priority range: [1; 99]
1816        PolicySchedFifo = 2,
1817    }
1818    impl BoostPolicy {
1819        /// String value of the enum field names used in the ProtoBuf definition.
1820        ///
1821        /// The values are not transformed in any way and thus are considered stable
1822        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1823        pub fn as_str_name(&self) -> &'static str {
1824            match self {
1825                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
1826                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
1827                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
1828            }
1829        }
1830    }
1831}
1832// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
1833
1834/// Config for polling process-related information from /proc/pid/status and
1835/// related files on Linux.
1836///
1837/// Data source name: "linux.process_stats".
1838#[derive(Clone, PartialEq, ::prost::Message)]
1839pub struct ProcessStatsConfig {
1840    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
1841    pub quirks: ::prost::alloc::vec::Vec<i32>,
1842    /// If enabled all processes will be scanned and dumped when the trace starts.
1843    #[prost(bool, optional, tag="2")]
1844    pub scan_all_processes_on_start: ::core::option::Option<bool>,
1845    /// If enabled thread names are also recoded (this is redundant if sched_switch
1846    /// is enabled).
1847    #[prost(bool, optional, tag="3")]
1848    pub record_thread_names: ::core::option::Option<bool>,
1849    /// If > 0 samples counters (see process_stats.proto) from
1850    /// /proc/pid/status and oom_score_adj every X ms.
1851    /// This is required to be > 100ms to avoid excessive CPU usage.
1852    #[prost(uint32, optional, tag="4")]
1853    pub proc_stats_poll_ms: ::core::option::Option<u32>,
1854    // id 5 never used
1855
1856    /// Explicit caching period during which the polling won't re-emit identical
1857    /// counter values. This is required to be either = 0 or a multiple of
1858    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
1859    /// rounded down to the nearest multiple.
1860    #[prost(uint32, optional, tag="6")]
1861    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
1862    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
1863    /// /proc/pid/smaps_rollup.
1864    ///
1865    /// Android: does NOT work with the system daemons by default, as it requires
1866    /// running the recording process (traced_probes or tracebox) as root. It is
1867    /// possible to avoid the root requirement, but the exact steps depend on the
1868    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
1869    /// check, and might be further covered by the procfs "hidepid" mount option.
1870    #[prost(bool, optional, tag="10")]
1871    pub scan_smaps_rollup: ::core::option::Option<bool>,
1872    /// If true: process descriptions will include process age (starttime in
1873    /// /proc/pid/stat).
1874    /// Introduced in: perfetto v44.
1875    #[prost(bool, optional, tag="11")]
1876    pub record_process_age: ::core::option::Option<bool>,
1877    /// If true and |proc_stats_poll_ms| is set, process stats will include time
1878    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
1879    /// Introduced in: perfetto v44.
1880    #[prost(bool, optional, tag="12")]
1881    pub record_process_runtime: ::core::option::Option<bool>,
1882    /// If true obtain per-process dmabuf resident set size from
1883    /// /proc/pid/dmabuf_rss.
1884    /// This feature is not in upstream linux, and is available only on some
1885    /// Android kernels.
1886    #[prost(bool, optional, tag="13")]
1887    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
1888    /// WARNING: unmaintained and deprecated. If true this will resolve file
1889    /// descriptors for each process so these can be mapped to their actual device
1890    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
1891    /// or new fds opened after initially scanning a process will not be
1892    /// recognized.
1893    #[prost(bool, optional, tag="9")]
1894    pub resolve_process_fds: ::core::option::Option<bool>,
1895}
1896/// Nested message and enum types in `ProcessStatsConfig`.
1897pub mod process_stats_config {
1898    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1899    #[repr(i32)]
1900    pub enum Quirks {
1901        Unspecified = 0,
1902        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
1903        /// startup is now disabled by default and can be re-enabled using the
1904        /// |scan_all_processes_on_start| arg.
1905        DisableInitialDump = 1,
1906        /// If set, disables the special interaction with "linux.ftrace" data source,
1907        /// where the process stats rescrapes any thread id seen in the ftrace
1908        /// stream.
1909        DisableOnDemand = 2,
1910    }
1911    impl Quirks {
1912        /// String value of the enum field names used in the ProtoBuf definition.
1913        ///
1914        /// The values are not transformed in any way and thus are considered stable
1915        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1916        pub fn as_str_name(&self) -> &'static str {
1917            match self {
1918                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
1919                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
1920                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
1921            }
1922        }
1923    }
1924}
1925// End of protos/perfetto/config/process_stats/process_stats_config.proto
1926
1927// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
1928
1929/// Configuration for go/heapprofd.
1930/// Next id: 28
1931#[derive(Clone, PartialEq, ::prost::Message)]
1932pub struct HeapprofdConfig {
1933    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
1934    ///
1935    /// These are:
1936    /// * All heaps if heap_sampling_intervals is empty.
1937    /// * Those profiled due to all_heaps and not named in heaps if
1938    ///    heap_sampling_intervals is not empty.
1939    /// * The implicit libc.malloc heap if heaps is empty.
1940    ///
1941    /// Set to 1 for perfect accuracy.
1942    /// Otherwise, sample every sample_interval_bytes on average.
1943    ///
1944    /// See
1945    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
1946    /// for more details.
1947    ///
1948    /// BUGS
1949    /// Before Android 12, setting this to 0 would crash the target process.
1950    ///
1951    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
1952    /// this field or with heap_sampling_intervals), otherwise the producer will
1953    /// not start.
1954    #[prost(uint64, optional, tag="1")]
1955    pub sampling_interval_bytes: ::core::option::Option<u64>,
1956    /// If less than the given numbers of bytes are left free in the shared
1957    /// memory buffer, increase sampling interval by a factor of two.
1958    /// Adaptive sampling is disabled when set to 0.
1959    #[prost(uint64, optional, tag="24")]
1960    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
1961    /// Stop doubling the sampling_interval once the sampling interval has reached
1962    /// this value.
1963    #[prost(uint64, optional, tag="25")]
1964    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
1965    /// E.g. surfaceflinger, com.android.phone
1966    /// This input is normalized in the following way: if it contains slashes,
1967    /// everything up to the last slash is discarded. If it contains "@",
1968    /// everything after the first @ is discared.
1969    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
1970    /// This transformation is also applied to the processes' command lines when
1971    /// matching.
1972    #[prost(string, repeated, tag="2")]
1973    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1974    /// For watermark based triggering or local debugging.
1975    #[prost(uint64, repeated, packed="false", tag="4")]
1976    pub pid: ::prost::alloc::vec::Vec<u64>,
1977    /// Only profile target if it was installed by one of the packages given.
1978    /// Special values are:
1979    /// * @system: installed on the system partition
1980    /// * @product: installed on the product partition
1981    /// * @null: sideloaded
1982    /// Supported on Android 12+.
1983    #[prost(string, repeated, tag="26")]
1984    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1985    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
1986    /// "malloc".
1987    ///
1988    /// Introduced in Android 12.
1989    #[prost(string, repeated, tag="20")]
1990    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1991    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
1992    /// combination with all_heaps;
1993    ///
1994    /// Introduced in Android 12.
1995    #[prost(string, repeated, tag="27")]
1996    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1997    #[prost(bool, optional, tag="23")]
1998    pub stream_allocations: ::core::option::Option<bool>,
1999    /// If given, needs to be the same length as heaps and gives the sampling
2000    /// interval for the respective entry in heaps.
2001    ///
2002    /// Otherwise, sampling_interval_bytes is used.
2003    ///
2004    /// It is recommended to set sampling_interval_bytes to a reasonable default
2005    /// value when using this, as a value of 0 for sampling_interval_bytes will
2006    /// crash the target process before Android 12.
2007    ///
2008    /// Introduced in Android 12.
2009    ///
2010    /// All values must be non-zero or the producer will not start.
2011    #[prost(uint64, repeated, packed="false", tag="22")]
2012    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2013    /// Sample all heaps registered by target process. Introduced in Android 12.
2014    #[prost(bool, optional, tag="21")]
2015    pub all_heaps: ::core::option::Option<bool>,
2016    /// Profile all processes eligible for profiling on the system.
2017    /// See
2018    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2019    /// for which processes are eligible.
2020    ///
2021    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2022    /// will crash when trying to launch a new process as it will have an
2023    /// unexpected open socket to heapprofd.
2024    ///
2025    /// heapprofd will likely be overloaded by the amount of data for low
2026    /// sampling intervals.
2027    #[prost(bool, optional, tag="5")]
2028    pub all: ::core::option::Option<bool>,
2029    /// Do not profile processes whose anon RSS + swap < given value.
2030    /// Introduced in Android 11.
2031    #[prost(uint32, optional, tag="15")]
2032    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2033    /// Stop profile if heapprofd memory usage goes beyond the given value.
2034    /// Introduced in Android 11.
2035    #[prost(uint32, optional, tag="16")]
2036    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2037    /// Stop profile if heapprofd CPU time since start of this data-source
2038    /// goes beyond given value.
2039    /// Introduced in Android 11.
2040    #[prost(uint64, optional, tag="17")]
2041    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2042    /// Do not emit function names for mappings starting with this prefix.
2043    /// E.g. /system to not emit symbols for any system libraries.
2044    #[prost(string, repeated, tag="7")]
2045    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2046    /// Dump at a predefined interval.
2047    #[prost(message, optional, tag="6")]
2048    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2049    /// Size of the shared memory buffer between the profiled processes and
2050    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2051    /// MiB.
2052    ///
2053    /// Needs to be:
2054    /// * at least 8192,
2055    /// * a power of two,
2056    /// * a multiple of 4096.
2057    #[prost(uint64, optional, tag="8")]
2058    pub shmem_size_bytes: ::core::option::Option<u64>,
2059    /// When the shmem buffer is full, block the client instead of ending the
2060    /// trace. Use with caution as this will significantly slow down the target
2061    /// process.
2062    #[prost(bool, optional, tag="9")]
2063    pub block_client: ::core::option::Option<bool>,
2064    /// If set, stop the trace session after blocking the client for this
2065    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2066    /// Introduced in Android 11.
2067    #[prost(uint32, optional, tag="14")]
2068    pub block_client_timeout_us: ::core::option::Option<u32>,
2069    /// Do not profile processes from startup, only match already running
2070    /// processes.
2071    ///
2072    /// Can not be set at the same time as no_running.
2073    /// Introduced in Android 11.
2074    #[prost(bool, optional, tag="10")]
2075    pub no_startup: ::core::option::Option<bool>,
2076    /// Do not profile running processes. Only match processes on startup.
2077    ///
2078    /// Can not be set at the same time as no_startup.
2079    /// Introduced in Android 11.
2080    #[prost(bool, optional, tag="11")]
2081    pub no_running: ::core::option::Option<bool>,
2082    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2083    /// at the point in time when the sampled heap usage of the process was at its
2084    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2085    /// self_allocated and self_freed to not be set.
2086    /// Introduced in Android 11.
2087    #[prost(bool, optional, tag="13")]
2088    pub dump_at_max: ::core::option::Option<bool>,
2089    // FEATURE FLAGS. THERE BE DRAGONS.
2090
2091    /// Escape hatch if the session is being torn down because of a forked child
2092    /// that shares memory space, but is not correctly identified as a vforked
2093    /// child.
2094    /// Introduced in Android 11.
2095    #[prost(bool, optional, tag="18")]
2096    pub disable_fork_teardown: ::core::option::Option<bool>,
2097    /// We try to automatically detect when a target applicatation vforks but then
2098    /// does a memory allocation (or free). This auto-detection can be disabled
2099    /// with this.
2100    /// Introduced in Android 11.
2101    #[prost(bool, optional, tag="19")]
2102    pub disable_vfork_detection: ::core::option::Option<bool>,
2103}
2104/// Nested message and enum types in `HeapprofdConfig`.
2105pub mod heapprofd_config {
2106    #[derive(Clone, PartialEq, ::prost::Message)]
2107    pub struct ContinuousDumpConfig {
2108        /// ms to wait before first dump.
2109        #[prost(uint32, optional, tag="5")]
2110        pub dump_phase_ms: ::core::option::Option<u32>,
2111        /// ms to wait between following dumps.
2112        #[prost(uint32, optional, tag="6")]
2113        pub dump_interval_ms: ::core::option::Option<u32>,
2114    }
2115}
2116// End of protos/perfetto/config/profiling/heapprofd_config.proto
2117
2118// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2119
2120/// Configuration for managed app heap graph snapshots.
2121#[derive(Clone, PartialEq, ::prost::Message)]
2122pub struct JavaHprofConfig {
2123    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2124    /// comm string). The semantics of this field were changed since its original
2125    /// introduction.
2126    ///
2127    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2128    /// the profiler will attempt to match it in two possible ways:
2129    /// * if the pattern starts with a '/', then it is matched against the first
2130    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2131    ///    "/bin/echo".
2132    /// * otherwise the pattern is matched against the part of argv0
2133    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2134    ///    For example "echo" would match "/bin/echo".
2135    ///
2136    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2137    /// normalized prior to an exact string comparison. Normalization is as
2138    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2139    /// the string contains forward slashes, trim everything up to and including
2140    /// the last one.
2141    ///
2142    /// Implementation note: in either case, at most 511 characters of cmdline
2143    /// are considered.
2144    #[prost(string, repeated, tag="1")]
2145    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2146    /// For watermark based triggering or local debugging.
2147    #[prost(uint64, repeated, packed="false", tag="2")]
2148    pub pid: ::prost::alloc::vec::Vec<u64>,
2149    /// Only profile target if it was installed by one of the packages given.
2150    /// Special values are:
2151    /// * @system: installed on the system partition
2152    /// * @product: installed on the product partition
2153    /// * @null: sideloaded
2154    /// Supported on Android 12+.
2155    #[prost(string, repeated, tag="7")]
2156    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2157    /// Dump at a predefined interval.
2158    #[prost(message, optional, tag="3")]
2159    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2160    /// Do not profile processes whose anon RSS + swap < given value.
2161    #[prost(uint32, optional, tag="4")]
2162    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2163    /// Include the process' /proc/self/smaps.
2164    /// This only shows maps that:
2165    /// * start with /system
2166    /// * start with /vendor
2167    /// * start with /data/app
2168    /// * contain "extracted in memory from Y", where Y matches any of the above
2169    #[prost(bool, optional, tag="5")]
2170    pub dump_smaps: ::core::option::Option<bool>,
2171    /// Exclude objects of the following types from the profile. This can be
2172    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2173    #[prost(string, repeated, tag="6")]
2174    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2175}
2176/// Nested message and enum types in `JavaHprofConfig`.
2177pub mod java_hprof_config {
2178    /// If dump_interval_ms != 0, the following configuration is used.
2179    #[derive(Clone, PartialEq, ::prost::Message)]
2180    pub struct ContinuousDumpConfig {
2181        /// ms to wait before first continuous dump.
2182        /// A dump is always created at the beginning of the trace.
2183        #[prost(uint32, optional, tag="1")]
2184        pub dump_phase_ms: ::core::option::Option<u32>,
2185        /// ms to wait between following dumps.
2186        #[prost(uint32, optional, tag="2")]
2187        pub dump_interval_ms: ::core::option::Option<u32>,
2188        /// If true, scans all the processes to find `process_cmdline` and filter by
2189        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2190        /// S-.
2191        ///
2192        /// If false, rescans all the processes to find on every dump. Default on
2193        /// Android T+.
2194        #[prost(bool, optional, tag="3")]
2195        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2196    }
2197}
2198// End of protos/perfetto/config/profiling/java_hprof_config.proto
2199
2200// Begin of protos/perfetto/common/perf_events.proto
2201
2202#[derive(Clone, PartialEq, ::prost::Message)]
2203pub struct PerfEvents {
2204}
2205/// Nested message and enum types in `PerfEvents`.
2206pub mod perf_events {
2207    /// The primary event to count. If recording multiple events, this
2208    /// counter is the "group leader".
2209    /// Commented from the perspective of its use in |PerfEventConfig|.
2210    /// Next id: 12
2211    #[derive(Clone, PartialEq, ::prost::Message)]
2212    pub struct Timebase {
2213        /// If set, samples will be timestamped with the given clock.
2214        /// If unset, the clock is chosen by the implementation.
2215        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2216        /// used for hardware events (due to interrupt safety), for which the
2217        /// recommendation is to use one of the monotonic clocks.
2218        #[prost(enumeration="PerfClock", optional, tag="11")]
2219        pub timestamp_clock: ::core::option::Option<i32>,
2220        /// Optional arbitrary name for the event, to identify it in the parsed
2221        /// trace. Does *not* affect the profiling itself. If unset, the trace
2222        /// parser will choose a suitable name.
2223        #[prost(string, optional, tag="10")]
2224        pub name: ::core::option::Option<::prost::alloc::string::String>,
2225        /// How often to snapshot the counter, along with any follower events and
2226        /// any additional sampled data such as callstacks.
2227        ///
2228        /// This choice also controls how the readings are taken:
2229        /// * With |frequency| or |period|, samples are taken by the kernel
2230        ///    into a ring buffer. Analogous to `perf record`.
2231        /// * With |poll_period_ms|, the userspace periodically snapshots
2232        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2233        /// Prefer the sampling options unless you're recording PMUs whose
2234        /// perf drivers only support the reading mode.
2235        ///
2236        /// If unset, an implementation-defined sampling default is used.
2237        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2238        pub interval: ::core::option::Option<timebase::Interval>,
2239        /// Counting event to use as the timebase.
2240        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2241        /// which is what you usually want.
2242        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2243        pub event: ::core::option::Option<timebase::Event>,
2244    }
2245    /// Nested message and enum types in `Timebase`.
2246    pub mod timebase {
2247        /// How often to snapshot the counter, along with any follower events and
2248        /// any additional sampled data such as callstacks.
2249        ///
2250        /// This choice also controls how the readings are taken:
2251        /// * With |frequency| or |period|, samples are taken by the kernel
2252        ///    into a ring buffer. Analogous to `perf record`.
2253        /// * With |poll_period_ms|, the userspace periodically snapshots
2254        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2255        /// Prefer the sampling options unless you're recording PMUs whose
2256        /// perf drivers only support the reading mode.
2257        ///
2258        /// If unset, an implementation-defined sampling default is used.
2259        #[derive(Clone, PartialEq, ::prost::Oneof)]
2260        pub enum Interval {
2261            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2262            /// same as 1/period.
2263            /// Details: the actual sampling will still be based on a period, but the
2264            /// kernel will dynamically adjust it based on the observed event rate, to
2265            /// approximate this frequency. Works best with steady-rate events like
2266            /// timers.
2267            /// Not guaranteed to be honored as the kernel can throttle the sampling
2268            /// rate if it's too high.
2269            #[prost(uint64, tag="2")]
2270            Frequency(u64),
2271            /// Per-cpu sampling will occur every |period| counts of |event|.
2272            /// Prefer |frequency| by default, as it's easier to oversample with a
2273            /// fixed period.
2274            /// Not guaranteed to be honored as the kernel can throttle the sampling
2275            /// rate if it's too high.
2276            #[prost(uint64, tag="1")]
2277            Period(u64),
2278            /// Per-cpu values are read by the userspace every interval. If using this
2279            /// mode, only follower events are supported. Options such as
2280            /// |PerfEventConfig.CallstackSampling| are incompatible.
2281            /// The period can't be guaranteed to be exact since the readings are taken
2282            /// by userspace.
2283            #[prost(uint32, tag="6")]
2284            PollPeriodMs(u32),
2285        }
2286        /// Counting event to use as the timebase.
2287        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2288        /// which is what you usually want.
2289        #[derive(Clone, PartialEq, ::prost::Oneof)]
2290        pub enum Event {
2291            #[prost(enumeration="super::Counter", tag="4")]
2292            Counter(i32),
2293            #[prost(message, tag="3")]
2294            Tracepoint(super::Tracepoint),
2295            #[prost(message, tag="5")]
2296            RawEvent(super::RawEvent),
2297        }
2298    }
2299    #[derive(Clone, PartialEq, ::prost::Message)]
2300    pub struct Tracepoint {
2301        /// Group and name for the tracepoint, acceptable forms:
2302        /// * "sched/sched_switch"
2303        /// * "sched:sched_switch"
2304        #[prost(string, optional, tag="1")]
2305        pub name: ::core::option::Option<::prost::alloc::string::String>,
2306        /// Optional field-level filter for the tracepoint. Only events matching this
2307        /// filter will be counted (and therefore contribute to the sampling period).
2308        /// Example: "prev_pid >= 42 && next_pid == 0".
2309        /// For full syntax, see kernel documentation on "Event filtering":
2310        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2311        #[prost(string, optional, tag="2")]
2312        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2313    }
2314    /// Syscall-level description of the event, propagated to the perf_event_attr
2315    /// struct. Primarily for local use-cases, since the event availability and
2316    /// encoding is hardware-specific.
2317    #[derive(Clone, PartialEq, ::prost::Message)]
2318    pub struct RawEvent {
2319        #[prost(uint32, optional, tag="1")]
2320        pub r#type: ::core::option::Option<u32>,
2321        #[prost(uint64, optional, tag="2")]
2322        pub config: ::core::option::Option<u64>,
2323        #[prost(uint64, optional, tag="3")]
2324        pub config1: ::core::option::Option<u64>,
2325        #[prost(uint64, optional, tag="4")]
2326        pub config2: ::core::option::Option<u64>,
2327    }
2328    /// Builtin counter names from the uapi header. Commented with their perf tool
2329    /// aliases.
2330    /// TODO(rsavitski): consider generating enums for cache events (should be
2331    /// finite), and generally make this list as extensive as possible. Excluding
2332    /// things like dynamic PMUs since those don't fit into a static enum.
2333    /// Next id: 21
2334    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2335    #[repr(i32)]
2336    pub enum Counter {
2337        UnknownCounter = 0,
2338        /// cpu-clock
2339        SwCpuClock = 1,
2340        /// page-faults, faults
2341        SwPageFaults = 2,
2342        /// task-clock
2343        SwTaskClock = 3,
2344        /// context-switches, cs
2345        SwContextSwitches = 4,
2346        /// cpu-migrations, migrations
2347        SwCpuMigrations = 5,
2348        /// minor-faults
2349        SwPageFaultsMin = 6,
2350        /// major-faults
2351        SwPageFaultsMaj = 7,
2352        /// alignment-faults
2353        SwAlignmentFaults = 8,
2354        /// emulation-faults
2355        SwEmulationFaults = 9,
2356        /// dummy
2357        SwDummy = 20,
2358        /// cpu-cycles, cycles
2359        HwCpuCycles = 10,
2360        /// instructions
2361        HwInstructions = 11,
2362        /// cache-references
2363        HwCacheReferences = 12,
2364        /// cache-misses
2365        HwCacheMisses = 13,
2366        /// branch-instructions, branches
2367        HwBranchInstructions = 14,
2368        /// branch-misses
2369        HwBranchMisses = 15,
2370        /// bus-cycles
2371        HwBusCycles = 16,
2372        /// stalled-cycles-frontend, idle-cycles-frontend
2373        HwStalledCyclesFrontend = 17,
2374        /// stalled-cycles-backend, idle-cycles-backend
2375        HwStalledCyclesBackend = 18,
2376        /// ref-cycles
2377        HwRefCpuCycles = 19,
2378    }
2379    impl Counter {
2380        /// String value of the enum field names used in the ProtoBuf definition.
2381        ///
2382        /// The values are not transformed in any way and thus are considered stable
2383        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2384        pub fn as_str_name(&self) -> &'static str {
2385            match self {
2386                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2387                Counter::SwCpuClock => "SW_CPU_CLOCK",
2388                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2389                Counter::SwTaskClock => "SW_TASK_CLOCK",
2390                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2391                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2392                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2393                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2394                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2395                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2396                Counter::SwDummy => "SW_DUMMY",
2397                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2398                Counter::HwInstructions => "HW_INSTRUCTIONS",
2399                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2400                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2401                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2402                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2403                Counter::HwBusCycles => "HW_BUS_CYCLES",
2404                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2405                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2406                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2407            }
2408        }
2409    }
2410    /// Subset of clocks that is supported by perf timestamping.
2411    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2412    /// would require additions to the trace clock synchronisation logic.
2413    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2414    #[repr(i32)]
2415    pub enum PerfClock {
2416        UnknownPerfClock = 0,
2417        Realtime = 1,
2418        Monotonic = 2,
2419        MonotonicRaw = 3,
2420        Boottime = 4,
2421    }
2422    impl PerfClock {
2423        /// String value of the enum field names used in the ProtoBuf definition.
2424        ///
2425        /// The values are not transformed in any way and thus are considered stable
2426        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2427        pub fn as_str_name(&self) -> &'static str {
2428            match self {
2429                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2430                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2431                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2432                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2433                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2434            }
2435        }
2436    }
2437}
2438/// Additional events associated with a leader.
2439/// Configuration is similar to Timebase event. Because data acquisition is
2440/// driven by the leader there is no option to configure the clock or the
2441/// frequency.
2442#[derive(Clone, PartialEq, ::prost::Message)]
2443pub struct FollowerEvent {
2444    #[prost(string, optional, tag="4")]
2445    pub name: ::core::option::Option<::prost::alloc::string::String>,
2446    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2447    pub event: ::core::option::Option<follower_event::Event>,
2448}
2449/// Nested message and enum types in `FollowerEvent`.
2450pub mod follower_event {
2451    #[derive(Clone, PartialEq, ::prost::Oneof)]
2452    pub enum Event {
2453        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2454        Counter(i32),
2455        #[prost(message, tag="2")]
2456        Tracepoint(super::perf_events::Tracepoint),
2457        #[prost(message, tag="3")]
2458        RawEvent(super::perf_events::RawEvent),
2459    }
2460}
2461// End of protos/perfetto/common/perf_events.proto
2462
2463// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2464
2465/// Configuration for the traced_perf profiler.
2466///
2467/// Example config for basic cpu profiling:
2468///    perf_event_config {
2469///      timebase {
2470///        frequency: 80
2471///      }
2472///      callstack_sampling {
2473///        scope {
2474///          target_cmdline: "surfaceflinger"
2475///          target_cmdline: "system_server"
2476///        }
2477///        kernel_frames: true
2478///      }
2479///    }
2480///
2481/// Next id: 21
2482#[derive(Clone, PartialEq, ::prost::Message)]
2483pub struct PerfEventConfig {
2484    /// What event to sample on, and how often.
2485    /// Defined in common/perf_events.proto.
2486    #[prost(message, optional, tag="15")]
2487    pub timebase: ::core::option::Option<perf_events::Timebase>,
2488    /// Other events associated with the leader described in the timebase.
2489    #[prost(message, repeated, tag="19")]
2490    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2491    /// If set, the profiler will sample userspace processes' callstacks at the
2492    /// interval specified by the |timebase|.
2493    /// If unset, the profiler will record only the event counts.
2494    #[prost(message, optional, tag="16")]
2495    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2496    /// List of cpu indices for counting. If empty, the default is all cpus.
2497    ///
2498    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2499    /// counter-only traces. A future change will likely reorganise the options,
2500    /// but this field will continue to be supported.
2501    ///
2502    /// Available since: perfetto v50.
2503    #[prost(uint32, repeated, packed="false", tag="20")]
2504    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2505    //
2506    // Kernel <-> userspace ring buffer options:
2507    //
2508
2509    /// How often the per-cpu ring buffers are read by the producer.
2510    /// If unset, an implementation-defined default is used.
2511    #[prost(uint32, optional, tag="8")]
2512    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2513    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2514    /// kernel. If set, must be a power of two.
2515    /// If unset, an implementation-defined default is used.
2516    #[prost(uint32, optional, tag="3")]
2517    pub ring_buffer_pages: ::core::option::Option<u32>,
2518    //
2519    // Daemon's resource usage limits:
2520    //
2521
2522    /// Drop samples if the heap memory held by the samples in the unwinder queue
2523    /// is above the given limit. This counts the memory across all concurrent data
2524    /// sources (not just this one's), and there is no fairness guarantee - the
2525    /// whole quota might be used up by a concurrent source.
2526    #[prost(uint64, optional, tag="17")]
2527    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2528    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2529    /// footprint exceeds this value.
2530    #[prost(uint32, optional, tag="13")]
2531    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2532    //
2533    // Niche options:
2534    //
2535
2536    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2537    /// sampled process. This is primarily for Android, where this lookup is
2538    /// asynchronous. As long as the producer is waiting, the associated samples
2539    /// will be kept enqueued (putting pressure on the capacity of the shared
2540    /// unwinding queue). Once a lookup for a process expires, all associated
2541    /// samples are discarded. However, if the lookup still succeeds after the
2542    /// timeout, future samples will be handled normally.
2543    /// If unset, an implementation-defined default is used.
2544    #[prost(uint32, optional, tag="9")]
2545    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2546    /// Optional period for clearing state cached by the userspace unwinder. This
2547    /// is a heavy operation that is only necessary for traces that target a wide
2548    /// set of processes, and require the memory footprint to be reset
2549    /// periodically. To effectively disable the cache clearing, set to a value
2550    /// greater than your trace duration.
2551    ///
2552    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2553    ///
2554    /// If zero or unset:
2555    /// * before perfetto v52: no cache clearing.
2556    /// * perfetto v52+: implementation chooses an infrequent default.
2557    #[prost(uint32, optional, tag="10")]
2558    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2559    /// If set, only profile target if it was installed by a package with one of
2560    /// these names. Special values:
2561    /// * "@system": installed on the system partition
2562    /// * "@product": installed on the product partition
2563    /// * "@null": sideloaded
2564    /// Supported on Android 12+.
2565    #[prost(string, repeated, tag="18")]
2566    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2567    //
2568    // Deprecated (superseded by options above):
2569    //
2570    // Do not set *any* of these fields in new configs.
2571    //
2572
2573    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2574    /// We rely on this to detect such configs.
2575    #[prost(bool, optional, tag="1")]
2576    pub all_cpus: ::core::option::Option<bool>,
2577    #[prost(uint32, optional, tag="2")]
2578    pub sampling_frequency: ::core::option::Option<u32>,
2579    #[prost(bool, optional, tag="12")]
2580    pub kernel_frames: ::core::option::Option<bool>,
2581    #[prost(int32, repeated, packed="false", tag="4")]
2582    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2583    #[prost(string, repeated, tag="5")]
2584    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2585    #[prost(int32, repeated, packed="false", tag="6")]
2586    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2587    #[prost(string, repeated, tag="7")]
2588    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2589    #[prost(uint32, optional, tag="11")]
2590    pub additional_cmdline_count: ::core::option::Option<u32>,
2591}
2592/// Nested message and enum types in `PerfEventConfig`.
2593pub mod perf_event_config {
2594    //
2595    // Sub-messages (nested for generated code namespacing).
2596    //
2597
2598    #[derive(Clone, PartialEq, ::prost::Message)]
2599    pub struct CallstackSampling {
2600        /// Defines a set of processes for which samples are retained/skipped. If
2601        /// unset, all samples are kept, but beware that it will be very heavy on the
2602        /// stack unwinder, which might start dropping samples due to overload.
2603        #[prost(message, optional, tag="1")]
2604        pub scope: ::core::option::Option<Scope>,
2605        /// If true, callstacks will include the kernel-space frames. Such frames can
2606        /// be identified by a magical "kernel" string as their mapping name.
2607        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2608        /// manually unrestricted. On Android, the platform should do the right thing
2609        /// on debug builds.
2610        /// This does *not* disclose KASLR, as only the function names are emitted.
2611        #[prost(bool, optional, tag="2")]
2612        pub kernel_frames: ::core::option::Option<bool>,
2613        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2614        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2615        /// as the most common default (this defaulting is only applicable if the
2616        /// outer CallstackSampling message is explicitly set).
2617        #[prost(enumeration="UnwindMode", optional, tag="3")]
2618        pub user_frames: ::core::option::Option<i32>,
2619    }
2620    #[derive(Clone, PartialEq, ::prost::Message)]
2621    pub struct Scope {
2622        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2623        /// samples will be retained. If multiple allow/deny-lists are
2624        /// specified by the config, then all of them are evaluated for each sampled
2625        /// process.
2626        #[prost(int32, repeated, packed="false", tag="1")]
2627        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2628        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2629        /// comm string). The semantics of this field were changed since its original
2630        /// introduction.
2631        ///
2632        /// On Android T+ (13+), this field can specify a single wildcard (*), and
2633        /// the profiler will attempt to match it in two possible ways:
2634        /// * if the pattern starts with a '/', then it is matched against the first
2635        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2636        ///    "/bin/echo".
2637        /// * otherwise the pattern is matched against the part of argv0
2638        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2639        ///    For example "echo" would match "/bin/echo".
2640        ///
2641        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2642        /// normalized prior to an exact string comparison. Normalization is as
2643        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2644        /// the string contains forward slashes, trim everything up to and including
2645        /// the last one.
2646        ///
2647        /// Implementation note: in either case, at most 511 characters of cmdline
2648        /// are considered.
2649        #[prost(string, repeated, tag="2")]
2650        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2651        /// List of excluded pids.
2652        #[prost(int32, repeated, packed="false", tag="3")]
2653        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2654        /// List of excluded cmdlines. See description of |target_cmdline| for how
2655        /// this is handled.
2656        #[prost(string, repeated, tag="4")]
2657        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2658        // Niche features for systemwide callstacks:
2659
2660        /// Number of additional command lines to sample. Only those which are
2661        /// neither explicitly included nor excluded will be considered. Processes
2662        /// are accepted on a first come, first served basis.
2663        #[prost(uint32, optional, tag="5")]
2664        pub additional_cmdline_count: ::core::option::Option<u32>,
2665        /// If set to N, all encountered processes will be put into one of the N
2666        /// possible bins, and only one randomly-chosen bin will be selected for
2667        /// unwinding. The binning is simply "pid % N", under the assumption that
2668        /// low-order bits of pids are roughly uniformly distributed. Other explicit
2669        /// inclusions/exclusions in this |Scope| message are still respected.
2670        ///
2671        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
2672        /// values will be queryable in trace processor under the "stats" table as
2673        /// "perf_process_shard_count" and "perf_chosen_process_shard".
2674        ///
2675        /// NB: all data sources in a config that set |process_shard_count| must set
2676        /// it to the same value. The profiler will choose one bin for all those data
2677        /// sources.
2678        #[prost(uint32, optional, tag="6")]
2679        pub process_shard_count: ::core::option::Option<u32>,
2680    }
2681    /// Userspace unwinding mode. A possible future addition is kernel-unwound
2682    /// callchains for frame pointer based systems.
2683    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2684    #[repr(i32)]
2685    pub enum UnwindMode {
2686        UnwindUnknown = 0,
2687        /// Do not unwind userspace:
2688        UnwindSkip = 1,
2689        /// Use libunwindstack (default):
2690        UnwindDwarf = 2,
2691        /// Use userspace frame pointer unwinder:
2692        UnwindFramePointer = 3,
2693    }
2694    impl UnwindMode {
2695        /// String value of the enum field names used in the ProtoBuf definition.
2696        ///
2697        /// The values are not transformed in any way and thus are considered stable
2698        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2699        pub fn as_str_name(&self) -> &'static str {
2700            match self {
2701                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
2702                UnwindMode::UnwindSkip => "UNWIND_SKIP",
2703                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
2704                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
2705            }
2706        }
2707    }
2708}
2709// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
2710
2711/// This file is named 'statsd_tracing_config.proto' rather than
2712/// 'statsd_config.proto' (which would be more consistent with the other
2713/// config protos) so it doesn't show up and confuse folks looking for
2714/// the existing statsd_config.proto for configuring statsd itself.
2715/// Same for the config proto itself.
2716#[derive(Clone, PartialEq, ::prost::Message)]
2717pub struct StatsdTracingConfig {
2718    /// This is for the common case of the atom id being known in the enum AtomId.
2719    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2720    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
2721    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
2722    /// (e.g. non-upstream atoms that don't exist in AOSP).
2723    #[prost(int32, repeated, packed="false", tag="2")]
2724    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
2725    #[prost(message, repeated, tag="3")]
2726    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
2727}
2728#[derive(Clone, PartialEq, ::prost::Message)]
2729pub struct StatsdPullAtomConfig {
2730    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2731    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2732    #[prost(int32, repeated, packed="false", tag="2")]
2733    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2734    #[prost(int32, optional, tag="3")]
2735    pub pull_frequency_ms: ::core::option::Option<i32>,
2736    #[prost(string, repeated, tag="4")]
2737    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2738}
2739// End of protos/perfetto/common/sys_stats_counters.proto
2740
2741// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
2742
2743/// This file defines the configuration for the Linux /proc poller data source,
2744/// which injects counters in the trace.
2745/// Counters that are needed in the trace must be explicitly listed in the
2746/// *_counters fields. This is to avoid spamming the trace with all counters
2747/// at all times.
2748/// The sampling rate is configurable. All polling rates (*_period_ms) need
2749/// to be integer multiples of each other.
2750/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
2751/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
2752#[derive(Clone, PartialEq, ::prost::Message)]
2753pub struct SysStatsConfig {
2754    /// Polls /proc/meminfo every X ms, if non-zero.
2755    /// This is required to be > 10ms to avoid excessive CPU usage.
2756    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
2757    #[prost(uint32, optional, tag="1")]
2758    pub meminfo_period_ms: ::core::option::Option<u32>,
2759    /// If empty all known counters are reported. Otherwise, only the counters
2760    /// specified below are reported.
2761    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
2762    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
2763    /// Polls /proc/vmstat every X ms, if non-zero.
2764    /// This is required to be > 10ms to avoid excessive CPU usage.
2765    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
2766    #[prost(uint32, optional, tag="3")]
2767    pub vmstat_period_ms: ::core::option::Option<u32>,
2768    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
2769    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
2770    /// Pols /proc/stat every X ms, if non-zero.
2771    /// This is required to be > 10ms to avoid excessive CPU usage.
2772    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
2773    #[prost(uint32, optional, tag="5")]
2774    pub stat_period_ms: ::core::option::Option<u32>,
2775    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
2776    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
2777    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
2778    /// This is required to be > 10ms to avoid excessive CPU usage.
2779    /// This option can be used to record unchanging values.
2780    /// Updates from frequency changes can come from ftrace/set_clock_rate.
2781    #[prost(uint32, optional, tag="7")]
2782    pub devfreq_period_ms: ::core::option::Option<u32>,
2783    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
2784    /// This is required to be > 10ms to avoid excessive CPU usage.
2785    #[prost(uint32, optional, tag="8")]
2786    pub cpufreq_period_ms: ::core::option::Option<u32>,
2787    /// Polls /proc/buddyinfo every X ms, if non-zero.
2788    /// This is required to be > 10ms to avoid excessive CPU usage.
2789    #[prost(uint32, optional, tag="9")]
2790    pub buddyinfo_period_ms: ::core::option::Option<u32>,
2791    /// Polls /proc/diskstats every X ms, if non-zero.
2792    /// This is required to be > 10ms to avoid excessive CPU usage.
2793    #[prost(uint32, optional, tag="10")]
2794    pub diskstat_period_ms: ::core::option::Option<u32>,
2795    /// Polls /proc/pressure/* every X ms, if non-zero.
2796    /// This is required to be > 10ms to avoid excessive CPU usage.
2797    #[prost(uint32, optional, tag="11")]
2798    pub psi_period_ms: ::core::option::Option<u32>,
2799    /// Polls /sys/class/thermal/* every X ms, if non-zero.
2800    /// This is required to be > 10ms to avoid excessive CPU usage.
2801    #[prost(uint32, optional, tag="12")]
2802    pub thermal_period_ms: ::core::option::Option<u32>,
2803    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
2804    /// This is required to be > 10ms to avoid excessive CPU usage.
2805    #[prost(uint32, optional, tag="13")]
2806    pub cpuidle_period_ms: ::core::option::Option<u32>,
2807    /// Polls device-specific GPU frequency info every X ms, if non-zero.
2808    /// This is required to be > 10ms to avoid excessive CPU usage.
2809    #[prost(uint32, optional, tag="14")]
2810    pub gpufreq_period_ms: ::core::option::Option<u32>,
2811}
2812/// Nested message and enum types in `SysStatsConfig`.
2813pub mod sys_stats_config {
2814    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2815    #[repr(i32)]
2816    pub enum StatCounters {
2817        StatUnspecified = 0,
2818        StatCpuTimes = 1,
2819        StatIrqCounts = 2,
2820        StatSoftirqCounts = 3,
2821        StatForkCount = 4,
2822    }
2823    impl StatCounters {
2824        /// String value of the enum field names used in the ProtoBuf definition.
2825        ///
2826        /// The values are not transformed in any way and thus are considered stable
2827        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2828        pub fn as_str_name(&self) -> &'static str {
2829            match self {
2830                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
2831                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
2832                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
2833                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
2834                StatCounters::StatForkCount => "STAT_FORK_COUNT",
2835            }
2836        }
2837    }
2838}
2839// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
2840
2841// Begin of protos/perfetto/config/system_info/system_info_config.proto
2842
2843/// This data-source does a one-off recording of system information when
2844/// the trace starts.
2845/// Currently this includes:
2846/// - Values of
2847/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
2848/// datasource has no configuration options at present.
2849#[derive(Clone, PartialEq, ::prost::Message)]
2850pub struct SystemInfoConfig {
2851}
2852// End of protos/perfetto/config/system_info/system_info_config.proto
2853
2854// Begin of protos/perfetto/config/test_config.proto
2855
2856/// The configuration for a fake producer used in tests.
2857#[derive(Clone, PartialEq, ::prost::Message)]
2858pub struct TestConfig {
2859    /// The number of messages the fake producer should send.
2860    #[prost(uint32, optional, tag="1")]
2861    pub message_count: ::core::option::Option<u32>,
2862    /// The maximum number of messages which should be sent each second.
2863    /// The actual obserced speed may be lower if the producer is unable to
2864    /// work fast enough.
2865    /// If this is zero or unset, the producer will send as fast as possible.
2866    #[prost(uint32, optional, tag="2")]
2867    pub max_messages_per_second: ::core::option::Option<u32>,
2868    /// The seed value for a simple multiplicative congruential pseudo-random
2869    /// number sequence.
2870    #[prost(uint32, optional, tag="3")]
2871    pub seed: ::core::option::Option<u32>,
2872    /// The size of each message in bytes. Should be greater than or equal 5 to
2873    /// account for the number of bytes needed to encode the random number and a
2874    /// null byte for the string.
2875    #[prost(uint32, optional, tag="4")]
2876    pub message_size: ::core::option::Option<u32>,
2877    /// Whether the producer should send a event batch when the data source is
2878    /// is initially registered.
2879    #[prost(bool, optional, tag="5")]
2880    pub send_batch_on_register: ::core::option::Option<bool>,
2881    #[prost(message, optional, tag="6")]
2882    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
2883}
2884/// Nested message and enum types in `TestConfig`.
2885pub mod test_config {
2886    #[derive(Clone, PartialEq, ::prost::Message)]
2887    pub struct DummyFields {
2888        #[prost(uint32, optional, tag="1")]
2889        pub field_uint32: ::core::option::Option<u32>,
2890        #[prost(int32, optional, tag="2")]
2891        pub field_int32: ::core::option::Option<i32>,
2892        #[prost(uint64, optional, tag="3")]
2893        pub field_uint64: ::core::option::Option<u64>,
2894        #[prost(int64, optional, tag="4")]
2895        pub field_int64: ::core::option::Option<i64>,
2896        #[prost(fixed64, optional, tag="5")]
2897        pub field_fixed64: ::core::option::Option<u64>,
2898        #[prost(sfixed64, optional, tag="6")]
2899        pub field_sfixed64: ::core::option::Option<i64>,
2900        #[prost(fixed32, optional, tag="7")]
2901        pub field_fixed32: ::core::option::Option<u32>,
2902        #[prost(sfixed32, optional, tag="8")]
2903        pub field_sfixed32: ::core::option::Option<i32>,
2904        #[prost(double, optional, tag="9")]
2905        pub field_double: ::core::option::Option<f64>,
2906        #[prost(float, optional, tag="10")]
2907        pub field_float: ::core::option::Option<f32>,
2908        #[prost(sint64, optional, tag="11")]
2909        pub field_sint64: ::core::option::Option<i64>,
2910        #[prost(sint32, optional, tag="12")]
2911        pub field_sint32: ::core::option::Option<i32>,
2912        #[prost(string, optional, tag="13")]
2913        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
2914        #[prost(bytes="vec", optional, tag="14")]
2915        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2916    }
2917}
2918// End of protos/perfetto/config/test_config.proto
2919
2920// Begin of protos/perfetto/config/track_event/track_event_config.proto
2921
2922/// The following fields define the set of enabled trace categories. Each list
2923/// item is a glob.
2924///
2925/// To determine if category is enabled, it is checked against the filters in
2926/// the following order:
2927///
2928///    1. Exact matches in enabled categories.
2929///    2. Exact matches in enabled tags.
2930///    3. Exact matches in disabled categories.
2931///    4. Exact matches in disabled tags.
2932///    5. Pattern matches in enabled categories.
2933///    6. Pattern matches in enabled tags.
2934///    7. Pattern matches in disabled categories.
2935///    8. Pattern matches in disabled tags.
2936///
2937/// If none of the steps produced a match:
2938///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
2939///   default.
2940///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
2941///
2942/// Examples:
2943///
2944///   - To enable all non-slow/debug categories:
2945///
2946///        enabled_categories: "*"
2947///
2948///   - To enable specific categories:
2949///
2950///        disabled_categories: "*"
2951///        enabled_categories: "my_category"
2952///        enabled_categories: "my_category2"
2953///
2954///   - To enable only categories with a specific tag:
2955///
2956///        disabled_tags: "*"
2957///        enabled_tags: "my_tag"
2958///
2959#[derive(Clone, PartialEq, ::prost::Message)]
2960pub struct TrackEventConfig {
2961    /// Default: []
2962    #[prost(string, repeated, tag="1")]
2963    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2964    /// Default: []
2965    #[prost(string, repeated, tag="2")]
2966    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2967    /// Default: ["slow", "debug"]
2968    #[prost(string, repeated, tag="3")]
2969    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2970    /// Default: []
2971    #[prost(string, repeated, tag="4")]
2972    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2973    /// Default: false (i.e. enabled by default)
2974    #[prost(bool, optional, tag="5")]
2975    pub disable_incremental_timestamps: ::core::option::Option<bool>,
2976    /// Allows to specify a custom unit different than the default (ns).
2977    /// Also affects thread timestamps if enable_thread_time_sampling = true.
2978    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
2979    /// 3000 ns = 3 us.
2980    /// Default: 1 (if unset, it should be read as 1).
2981    #[prost(uint64, optional, tag="6")]
2982    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
2983    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
2984    /// When true, any debug annotations provided as arguments to the
2985    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
2986    /// still be emitted even if set to true.
2987    #[prost(bool, optional, tag="7")]
2988    pub filter_debug_annotations: ::core::option::Option<bool>,
2989    /// Default: false (i.e. disabled)
2990    /// When true, the SDK samples and emits the current thread time counter value
2991    /// for each event on the current thread's track. This value represents the
2992    /// total CPU time consumed by that thread since its creation.
2993    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
2994    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
2995    #[prost(bool, optional, tag="8")]
2996    pub enable_thread_time_sampling: ::core::option::Option<bool>,
2997    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
2998    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
2999    /// out.
3000    #[prost(bool, optional, tag="9")]
3001    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3002}
3003// End of protos/perfetto/config/track_event/track_event_config.proto
3004
3005// Begin of protos/perfetto/config/data_source_config.proto
3006
3007/// The configuration that is passed to each data source when starting tracing.
3008/// Next id: 138
3009#[derive(Clone, PartialEq, ::prost::Message)]
3010pub struct DataSourceConfig {
3011    /// Data source unique name, e.g., "linux.ftrace". This must match
3012    /// the name passed by the data source when it registers (see
3013    /// RegisterDataSource()).
3014    #[prost(string, optional, tag="1")]
3015    pub name: ::core::option::Option<::prost::alloc::string::String>,
3016    /// The index of the logging buffer where TracePacket(s) will be stored.
3017    /// This field doesn't make a major difference for the Producer(s). The final
3018    /// logging buffers, in fact, are completely owned by the Service. We just ask
3019    /// the Producer to copy this number into the chunk headers it emits, so that
3020    /// the Service can quickly identify the buffer where to move the chunks into
3021    /// without expensive lookups on its fastpath.
3022    #[prost(uint32, optional, tag="2")]
3023    pub target_buffer: ::core::option::Option<u32>,
3024    /// Set by the service to indicate the duration of the trace.
3025    /// DO NOT SET in consumer as this will be overridden by the service.
3026    #[prost(uint32, optional, tag="3")]
3027    pub trace_duration_ms: ::core::option::Option<u32>,
3028    /// If true, |trace_duration_ms| should count also time in suspend. This
3029    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3030    #[prost(bool, optional, tag="122")]
3031    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3032    /// Set by the service to indicate how long it waits after StopDataSource.
3033    /// DO NOT SET in consumer as this will be overridden by the service.
3034    #[prost(uint32, optional, tag="7")]
3035    pub stop_timeout_ms: ::core::option::Option<u32>,
3036    /// Set by the service to indicate whether this tracing session has extra
3037    /// guardrails.
3038    /// DO NOT SET in consumer as this will be overridden by the service.
3039    #[prost(bool, optional, tag="6")]
3040    pub enable_extra_guardrails: ::core::option::Option<bool>,
3041    /// Set by the service to indicate which user initiated this trace.
3042    /// DO NOT SET in consumer as this will be overridden by the service.
3043    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3044    pub session_initiator: ::core::option::Option<i32>,
3045    /// Set by the service to indicate which tracing session the data source
3046    /// belongs to. The intended use case for this is checking if two data sources,
3047    /// one of which produces metadata for the other one, belong to the same trace
3048    /// session and hence should be linked together.
3049    /// This field was introduced in Aug 2018 after Android P.
3050    /// DO NOT SET in consumer as this will be overridden by the service.
3051    #[prost(uint64, optional, tag="4")]
3052    pub tracing_session_id: ::core::option::Option<u64>,
3053    /// How to behave when the producer runs out of space in the shared memory
3054    /// buffer. This is only honored by some data sources (in the SDK, the data
3055    /// sources registered with a configurable buffer exhausted policy).
3056    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3057    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3058    #[prost(message, optional, tag="10")]
3059    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3060    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3061    // data-sources and needs to be processed by the traced daemon.
3062
3063    // All data source config fields must be marked as \[lazy=true\]. This prevents
3064    // the proto-to-cpp generator from recursing into those when generating the
3065    // cpp classes and polluting tracing/core with data-source-specific classes.
3066    // Instead they are treated as opaque strings containing raw proto bytes.
3067
3068    /// Data source name: linux.ftrace
3069    #[prost(message, optional, tag="100")]
3070    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3071    /// Data source name: linux.inode_file_map
3072    #[prost(message, optional, tag="102")]
3073    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3074    /// Data source name: linux.process_stats
3075    #[prost(message, optional, tag="103")]
3076    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3077    /// Data source name: linux.sys_stats
3078    #[prost(message, optional, tag="104")]
3079    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3080    /// Data source name: android.heapprofd
3081    /// Introduced in Android 10.
3082    #[prost(message, optional, tag="105")]
3083    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3084    /// Data source name: android.java_hprof
3085    /// Introduced in Android 11.
3086    #[prost(message, optional, tag="110")]
3087    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3088    /// Data source name: android.power
3089    #[prost(message, optional, tag="106")]
3090    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3091    /// Data source name: android.log
3092    #[prost(message, optional, tag="107")]
3093    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3094    /// Data source name: gpu.counters
3095    #[prost(message, optional, tag="108")]
3096    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3097    /// Data source name: android.game_interventions
3098    #[prost(message, optional, tag="116")]
3099    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3100    /// Data source name: android.packages_list
3101    #[prost(message, optional, tag="109")]
3102    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3103    /// Data source name: linux.perf
3104    #[prost(message, optional, tag="111")]
3105    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3106    /// Data source name: vulkan.memory_tracker
3107    #[prost(message, optional, tag="112")]
3108    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3109    /// Data source name: track_event
3110    #[prost(message, optional, tag="113")]
3111    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3112    /// Data source name: android.polled_state
3113    #[prost(message, optional, tag="114")]
3114    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3115    /// Data source name: android.system_property
3116    #[prost(message, optional, tag="118")]
3117    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3118    /// Data source name: android.statsd
3119    #[prost(message, optional, tag="117")]
3120    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3121    /// Data source name: linux.system_info
3122    #[prost(message, optional, tag="119")]
3123    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3124    /// Data source name: linux.frozen_ftrace
3125    #[prost(message, optional, tag="136")]
3126    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3127    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3128    /// avoid proto serialization and de-serialization there because that would
3129    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3130    /// C++ class for it so it can pass around plain C++ objets.
3131    #[prost(message, optional, tag="101")]
3132    pub chrome_config: ::core::option::Option<ChromeConfig>,
3133    /// Data source name: code.v8.dev
3134    #[prost(message, optional, tag="127")]
3135    pub v8_config: ::core::option::Option<V8Config>,
3136    /// If an interceptor is specified here, packets for this data source will be
3137    /// rerouted to the interceptor instead of the main trace buffer. This can be
3138    /// used, for example, to write trace data into ETW or for logging trace points
3139    /// to the console.
3140    ///
3141    /// Note that interceptors are only supported by data sources registered
3142    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3143    /// traced_probes) may not support interception.
3144    #[prost(message, optional, tag="115")]
3145    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3146    /// Data source name: android.network_packets.
3147    /// Introduced in Android 14 (U).
3148    #[prost(message, optional, tag="120")]
3149    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3150    /// Data source name: android.surfaceflinger.layers
3151    #[prost(message, optional, tag="121")]
3152    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3153    /// Data source name: android.surfaceflinger.transactions
3154    #[prost(message, optional, tag="123")]
3155    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3156    /// Data source name: android.sdk_sysprop_guard
3157    /// Introduced in Android 14 (U) QPR1.
3158    #[prost(message, optional, tag="124")]
3159    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3160    /// Data source name: windows.etw
3161    #[prost(message, optional, tag="125")]
3162    pub etw_config: ::core::option::Option<EtwConfig>,
3163    /// Data source name: android.protolog
3164    #[prost(message, optional, tag="126")]
3165    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3166    /// Data source name: android.input.inputevent
3167    #[prost(message, optional, tag="128")]
3168    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3169    /// Data source name: android.pixel.modem
3170    #[prost(message, optional, tag="129")]
3171    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3172    /// Data source name: android.windowmanager
3173    #[prost(message, optional, tag="130")]
3174    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3175    /// Data source name: org.chromium.system_metrics
3176    #[prost(message, optional, tag="131")]
3177    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3178    /// Data source name: android.kernel_wakelocks
3179    #[prost(message, optional, tag="132")]
3180    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3181    /// Data source name: gpu.renderstages
3182    #[prost(message, optional, tag="133")]
3183    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3184    /// Data source name: org.chromium.histogram_samples
3185    #[prost(message, optional, tag="134")]
3186    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3187    /// Data source name: android.app_wakelocks
3188    #[prost(message, optional, tag="135")]
3189    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3190    /// Data source name: android.cpu_per_uid
3191    #[prost(message, optional, tag="137")]
3192    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3193    /// This is a fallback mechanism to send a free-form text config to the
3194    /// producer. In theory this should never be needed. All the code that
3195    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3196    /// the trace config proto and propagate unknown fields. However, if anything
3197    /// in the pipeline (client or backend) ends up breaking this forward compat
3198    /// plan, this field will become the escape hatch to allow future data sources
3199    /// to get some meaningful configuration.
3200    #[prost(string, optional, tag="1000")]
3201    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3202    /// This field is only used for testing.
3203    #[prost(message, optional, tag="1001")]
3204    pub for_testing: ::core::option::Option<TestConfig>,
3205}
3206/// Nested message and enum types in `DataSourceConfig`.
3207pub mod data_source_config {
3208    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3209    #[repr(i32)]
3210    pub enum SessionInitiator {
3211        Unspecified = 0,
3212        /// This trace was initiated from a trusted system app has DUMP and
3213        /// USAGE_STATS permission. This system app is expected to not expose the
3214        /// trace to the user of the device.
3215        /// This is determined by checking the UID initiating the trace.
3216        TrustedSystem = 1,
3217    }
3218    impl SessionInitiator {
3219        /// String value of the enum field names used in the ProtoBuf definition.
3220        ///
3221        /// The values are not transformed in any way and thus are considered stable
3222        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3223        pub fn as_str_name(&self) -> &'static str {
3224            match self {
3225                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3226                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3227            }
3228        }
3229    }
3230    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3231    #[repr(i32)]
3232    pub enum BufferExhaustedPolicy {
3233        /// The data source will use its default buffer exhausted policy, specified
3234        /// by the code when the data source is registered.
3235        BufferExhaustedUnspecified = 0,
3236        /// The data source will drop packets when there's no space in the shared
3237        /// memory buffer.
3238        BufferExhaustedDrop = 1,
3239        /// The data source will wait when there's no space in the shared memory
3240        /// buffer. If there's still not space, after a few seconds, the whole
3241        /// producer process will be aborted.
3242        BufferExhaustedStallThenAbort = 2,
3243        /// The data source will wait when there's no space in the shared memory
3244        /// buffer.  If there's still not space, after a few seconds, the data source
3245        /// will drop packets.
3246        BufferExhaustedStallThenDrop = 3,
3247    }
3248    impl BufferExhaustedPolicy {
3249        /// String value of the enum field names used in the ProtoBuf definition.
3250        ///
3251        /// The values are not transformed in any way and thus are considered stable
3252        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3253        pub fn as_str_name(&self) -> &'static str {
3254            match self {
3255                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3256                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3257                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3258                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3259            }
3260        }
3261    }
3262}
3263// End of protos/perfetto/config/data_source_config.proto
3264
3265// Begin of protos/perfetto/config/trace_config.proto
3266
3267/// The overall config that is used when starting a new tracing session through
3268/// ProducerPort::StartTracing().
3269/// It contains the general config for the logging buffer(s) and the configs for
3270/// all the data source being enabled.
3271///
3272/// Next id: 42.
3273#[derive(Clone, PartialEq, ::prost::Message)]
3274pub struct TraceConfig {
3275    #[prost(message, repeated, tag="1")]
3276    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3277    #[prost(message, repeated, tag="2")]
3278    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3279    #[prost(message, optional, tag="20")]
3280    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3281    /// If specified, the trace will be stopped |duration_ms| after starting.
3282    /// This does *not* count the time the system is suspended, so we will run
3283    /// for duration_ms of system activity, not wall time.
3284    ///
3285    /// However in case of traces with triggers, see
3286    /// TriggerConfig.trigger_timeout_ms instead.
3287    #[prost(uint32, optional, tag="3")]
3288    pub duration_ms: ::core::option::Option<u32>,
3289    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3290    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3291    /// Linux/Android, no-op on other platforms. This is used when dealing with
3292    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3293    /// wall-time, making them more likely to hit device reboots (and hence loss).
3294    /// This option also changes consistently the semantic of
3295    /// TriggerConfig.stop_delay_ms.
3296    #[prost(bool, optional, tag="36")]
3297    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3298    /// This is set when --dropbox is passed to the Perfetto command line client
3299    /// and enables guardrails that limit resource usage for traces requested
3300    /// by statsd.
3301    #[prost(bool, optional, tag="4")]
3302    pub enable_extra_guardrails: ::core::option::Option<bool>,
3303    /// Reject producers that are not running under the same UID as the tracing
3304    /// service.
3305    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3306    pub lockdown_mode: ::core::option::Option<i32>,
3307    #[prost(message, repeated, tag="6")]
3308    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3309    /// Statsd-specific metadata.
3310    #[prost(message, optional, tag="7")]
3311    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3312    /// When true && |output_path| is empty, the EnableTracing() request must
3313    /// provide a file descriptor. The service will then periodically read packets
3314    /// out of the trace buffer and store it into the passed file.
3315    /// If |output_path| is not empty no fd should be passed, the service
3316    /// will create a new file and write into that (see comment below).
3317    #[prost(bool, optional, tag="8")]
3318    pub write_into_file: ::core::option::Option<bool>,
3319    /// This must point to a non-existing file. If the file exists the service
3320    /// will NOT overwrite and will fail instead as a security precaution.
3321    /// On Android, when this is used with the system traced, the path must be
3322    /// within /data/misc/perfetto-traces/ or the trace will fail.
3323    /// This option has been introduced in Android R. Before R write_into_file
3324    /// can be used only with the "pass a file descriptor over IPC" mode.
3325    #[prost(string, optional, tag="29")]
3326    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3327    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3328    /// enforced (i.e. smaller values are ignored).
3329    #[prost(uint32, optional, tag="9")]
3330    pub file_write_period_ms: ::core::option::Option<u32>,
3331    /// Optional. When non zero the periodic write stops once at most X bytes
3332    /// have been written into the file. Tracing is disabled when this limit is
3333    /// reached, even if |duration_ms| has not been reached yet.
3334    #[prost(uint64, optional, tag="10")]
3335    pub max_file_size_bytes: ::core::option::Option<u64>,
3336    #[prost(message, optional, tag="11")]
3337    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3338    /// When true, data sources are not started until an explicit call to
3339    /// StartTracing() on the consumer port. This is to support early
3340    /// initialization and fast trace triggering. This can be used only when the
3341    /// Consumer explicitly triggers the StartTracing() method.
3342    /// This should not be used in a remote trace config via statsd, doing so will
3343    /// result in a hung trace session.
3344    #[prost(bool, optional, tag="12")]
3345    pub deferred_start: ::core::option::Option<bool>,
3346    /// When set, it periodically issues a Flush() to all data source, forcing them
3347    /// to commit their data into the tracing service. This can be used for
3348    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3349    /// events in the trace in windows of X ms.
3350    #[prost(uint32, optional, tag="13")]
3351    pub flush_period_ms: ::core::option::Option<u32>,
3352    /// Wait for this long for producers to acknowledge flush requests.
3353    /// Default 5s.
3354    #[prost(uint32, optional, tag="14")]
3355    pub flush_timeout_ms: ::core::option::Option<u32>,
3356    /// Wait for this long for producers to acknowledge stop requests.
3357    /// Default 5s.
3358    #[prost(uint32, optional, tag="23")]
3359    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3360    /// Android-only. If set, sends an intent to the Traceur system app when the
3361    /// trace ends to notify it about the trace readiness.
3362    #[prost(bool, optional, tag="16")]
3363    pub notify_traceur: ::core::option::Option<bool>,
3364    /// This field was introduced in Android S.
3365    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3366    /// for being attached to a bugreport. This field effectively acts as a z-index
3367    /// for bugreports. When Android's dumpstate runs perfetto
3368    /// --save-for-bugreport, traced will pick the tracing session with the highest
3369    /// score (score <= 0 is ignored) and:
3370    /// On Android S, T:  will steal its contents, save the trace into
3371    ///      a known path and stop prematurely.
3372    /// On Android U+: will create a read-only snapshot and save that into a known
3373    ///      path, without stoppin the original tracing session.
3374    /// When this field is set the tracing session becomes eligible to be cloned
3375    /// by other UIDs.
3376    #[prost(int32, optional, tag="30")]
3377    pub bugreport_score: ::core::option::Option<i32>,
3378    /// When set, defines name of the file that will be saved under
3379    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3380    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3381    /// starting from the highest `bugreport_score`.
3382    /// Introduced in v42 / Android V.
3383    #[prost(string, optional, tag="38")]
3384    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3385    #[prost(message, optional, tag="17")]
3386    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3387    /// When this is non-empty the perfetto command line tool will ignore the rest
3388    /// of this TraceConfig and instead connect to the perfetto service as a
3389    /// producer and send these triggers, potentially stopping or starting traces
3390    /// that were previous configured to use a TriggerConfig.
3391    #[prost(string, repeated, tag="18")]
3392    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3393    #[prost(message, optional, tag="21")]
3394    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3395    /// No longer needed as we unconditionally allow tracing on user builds.
3396    #[deprecated]
3397    #[prost(bool, optional, tag="19")]
3398    pub allow_user_build_tracing: ::core::option::Option<bool>,
3399    /// If set the tracing service will ensure there is at most one tracing session
3400    /// with this key.
3401    #[prost(string, optional, tag="22")]
3402    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3403    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3404    pub compression_type: ::core::option::Option<i32>,
3405    #[prost(message, optional, tag="25")]
3406    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3407    /// Android-only. Not for general use. If specified, sets the logging to statsd
3408    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3409    /// this to enabled (if not explicitly set in the config) when specifying
3410    /// --upload.
3411    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3412    pub statsd_logging: ::core::option::Option<i32>,
3413    /// An identifier clients can use to tie this trace to other logging.
3414    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3415    /// Trace UUID. If this field is set, the tracing service will respect the
3416    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3417    /// gap-less snapshotting is not used.
3418    #[deprecated]
3419    #[prost(int64, optional, tag="27")]
3420    pub trace_uuid_msb: ::core::option::Option<i64>,
3421    #[deprecated]
3422    #[prost(int64, optional, tag="28")]
3423    pub trace_uuid_lsb: ::core::option::Option<i64>,
3424    #[prost(message, optional, tag="33")]
3425    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3426    #[prost(message, optional, tag="34")]
3427    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3428    #[prost(message, optional, tag="35")]
3429    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3430    #[prost(message, repeated, tag="39")]
3431    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3432    /// Priority boost to be applied to the traced process, when the session is
3433    /// running.
3434    #[prost(message, optional, tag="40")]
3435    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3436    /// When set to a value > 0, this tracing session will be started in
3437    /// "exclusive mode". This has the following semantics:
3438    /// - It can only be set by shell or root users.
3439    /// - A new exclusive session will only be started if its priority is strictly
3440    ///    higher than any other active tracing session.
3441    /// - If a new exclusive session is started, all other existing tracing
3442    ///    sessions (exclusive or not) are aborted.
3443    /// - While an exclusive session is active, any new non-exclusive session (or
3444    ///    any exclusive session with a lower or equal priority) will be rejected.
3445    ///
3446    /// Introduced in: perfetto v52.
3447    /// Supported on: Android 25Q3+.
3448    #[prost(uint32, optional, tag="41")]
3449    pub exclusive_prio: ::core::option::Option<u32>,
3450}
3451/// Nested message and enum types in `TraceConfig`.
3452pub mod trace_config {
3453    #[derive(Clone, PartialEq, ::prost::Message)]
3454    pub struct BufferConfig {
3455        #[prost(uint32, optional, tag="1")]
3456        pub size_kb: ::core::option::Option<u32>,
3457        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3458        pub fill_policy: ::core::option::Option<i32>,
3459        /// When true the buffer is moved (rather than copied) onto the cloned
3460        /// session, and an empty buffer of the same size is allocated in the source
3461        /// tracing session. This feature will likely get deprecated in the future.
3462        /// It been introduced mainly to support the surfaceflinger snapshot dump
3463        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3464        /// that case we don't want to retain another in-memory copy of the buffer.
3465        #[prost(bool, optional, tag="5")]
3466        pub transfer_on_clone: ::core::option::Option<bool>,
3467        /// Used in conjunction with transfer_on_clone. When true the buffer is
3468        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3469        /// that if the data source took too long to write the data in a previous
3470        /// clone-related flush, we don't end up with a mixture of leftovers from
3471        /// the previous write and new data.
3472        #[prost(bool, optional, tag="6")]
3473        pub clear_before_clone: ::core::option::Option<bool>,
3474    }
3475    /// Nested message and enum types in `BufferConfig`.
3476    pub mod buffer_config {
3477        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3478        #[repr(i32)]
3479        pub enum FillPolicy {
3480            Unspecified = 0,
3481            /// Default behavior. The buffer operates as a conventional ring buffer.
3482            /// If the writer is faster than the reader (or if the reader reads only
3483            /// after tracing is stopped) newly written packets will overwrite old
3484            /// packets.
3485            RingBuffer = 1,
3486            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3487            /// the reader catches up with the writer. As soon as the writer hits
3488            /// an unread chunk, it stops accepting new data in the buffer.
3489            Discard = 2,
3490        }
3491        impl FillPolicy {
3492            /// String value of the enum field names used in the ProtoBuf definition.
3493            ///
3494            /// The values are not transformed in any way and thus are considered stable
3495            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3496            pub fn as_str_name(&self) -> &'static str {
3497                match self {
3498                    FillPolicy::Unspecified => "UNSPECIFIED",
3499                    FillPolicy::RingBuffer => "RING_BUFFER",
3500                    FillPolicy::Discard => "DISCARD",
3501                }
3502            }
3503        }
3504    }
3505    #[derive(Clone, PartialEq, ::prost::Message)]
3506    pub struct DataSource {
3507        /// Filters and data-source specific config. It contains also the unique name
3508        /// of the data source, the one passed in the  DataSourceDescriptor when they
3509        /// register on the service.
3510        #[prost(message, optional, tag="1")]
3511        pub config: ::core::option::Option<super::DataSourceConfig>,
3512        /// Optional. If multiple producers (~processes) expose the same data source
3513        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3514        /// the data source is enabled only for producers whose names match any of
3515        /// the filters.
3516        /// |producer_name_filter| has to be an exact match, while
3517        /// |producer_name_regex_filter| is a regular expression.
3518        /// This allows to enable a data source only for specific processes.
3519        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3520        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3521        #[prost(string, repeated, tag="2")]
3522        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3523        #[prost(string, repeated, tag="3")]
3524        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3525        /// Filter by machine names. The name of a machine is determined by the
3526        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
3527        /// variable is not set then the
3528        /// persist.traced_relay.machine_name system property is used. If the
3529        /// sysprop isn't set or not in an Android system, then the machine name by
3530        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
3531        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
3532        /// to the host machine, which is the machine running traced.
3533        #[prost(string, repeated, tag="4")]
3534        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3535    }
3536    /// Config for disabling builtin data sources in the tracing service.
3537    #[derive(Clone, PartialEq, ::prost::Message)]
3538    pub struct BuiltinDataSource {
3539        /// Disable emitting clock timestamps into the trace.
3540        #[prost(bool, optional, tag="1")]
3541        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3542        /// Disable echoing the original trace config in the trace.
3543        #[prost(bool, optional, tag="2")]
3544        pub disable_trace_config: ::core::option::Option<bool>,
3545        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3546        #[prost(bool, optional, tag="3")]
3547        pub disable_system_info: ::core::option::Option<bool>,
3548        /// Disable emitting events for data-source state changes (e.g. the marker
3549        /// for all data sources having ACKed the start of the trace).
3550        #[prost(bool, optional, tag="4")]
3551        pub disable_service_events: ::core::option::Option<bool>,
3552        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3553        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3554        /// into the trace as part of the ClockSnapshots emitted by the service.
3555        /// Trace processor will attempt to translate packet/event timestamps from
3556        /// various data sources (and their chosen clock domains) to this domain
3557        /// during import. Added in Android R.
3558        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3559        pub primary_trace_clock: ::core::option::Option<i32>,
3560        /// Time interval in between snapshotting of sync markers, clock snapshots,
3561        /// stats, and other periodic service-emitted events. Note that the service
3562        /// only keeps track of the first and the most recent snapshot until
3563        /// ReadBuffers() is called.
3564        #[prost(uint32, optional, tag="6")]
3565        pub snapshot_interval_ms: ::core::option::Option<u32>,
3566        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3567        /// clock should be used for periodic snapshots of service-emitted events.
3568        /// This means, if a snapshot *should* have happened during suspend, it will
3569        /// happen immediately after the device resumes.
3570        ///
3571        /// Choosing a clock like this is done on best-effort basis; not all
3572        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3573        /// tasks counting suspend. If such a clock is not available, the service
3574        /// falls back to the best-available alternative.
3575        ///
3576        /// Introduced in Android S.
3577        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3578        /// crashes in S.
3579        #[prost(bool, optional, tag="7")]
3580        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3581        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3582        #[prost(bool, optional, tag="8")]
3583        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3584    }
3585    #[derive(Clone, PartialEq, ::prost::Message)]
3586    pub struct ProducerConfig {
3587        /// Identifies the producer for which this config is for.
3588        #[prost(string, optional, tag="1")]
3589        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3590        /// Specifies the preferred size of the shared memory buffer. If the size is
3591        /// larger than the max size, the max will be used. If it is smaller than
3592        /// the page size or doesn't fit pages evenly into it, it will fall back to
3593        /// the size specified by the producer or finally the default shared memory
3594        /// size.
3595        #[prost(uint32, optional, tag="2")]
3596        pub shm_size_kb: ::core::option::Option<u32>,
3597        /// Specifies the preferred size of each page in the shared memory buffer.
3598        /// Must be an integer multiple of 4K.
3599        #[prost(uint32, optional, tag="3")]
3600        pub page_size_kb: ::core::option::Option<u32>,
3601    }
3602    /// Contains statsd-specific metadata about an alert associated with the trace.
3603    #[derive(Clone, PartialEq, ::prost::Message)]
3604    pub struct StatsdMetadata {
3605        /// The identifier of the alert which triggered this trace.
3606        #[prost(int64, optional, tag="1")]
3607        pub triggering_alert_id: ::core::option::Option<i64>,
3608        /// The uid which registered the triggering configuration with statsd.
3609        #[prost(int32, optional, tag="2")]
3610        pub triggering_config_uid: ::core::option::Option<i32>,
3611        /// The identifier of the config which triggered the alert.
3612        #[prost(int64, optional, tag="3")]
3613        pub triggering_config_id: ::core::option::Option<i64>,
3614        /// The identifier of the subscription which triggered this trace.
3615        #[prost(int64, optional, tag="4")]
3616        pub triggering_subscription_id: ::core::option::Option<i64>,
3617    }
3618    /// Contains flags which override the default values of the guardrails inside
3619    /// Perfetto.
3620    #[derive(Clone, PartialEq, ::prost::Message)]
3621    pub struct GuardrailOverrides {
3622        /// Override the default limit (in bytes) for uploading data to server within
3623        /// a 24 hour period.
3624        /// On R-, this override only affected userdebug builds. Since S, it also
3625        /// affects user builds.
3626        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3627        /// was removed from Perfetto.
3628        #[deprecated]
3629        #[prost(uint64, optional, tag="1")]
3630        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3631        /// Overrides the guardrail for maximum trace buffer size.
3632        /// Available on U+
3633        #[prost(uint32, optional, tag="2")]
3634        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3635    }
3636    /// Triggers allow producers to start or stop the tracing session when an event
3637    /// occurs.
3638    ///
3639    /// For example if we are tracing probabilistically, most traces will be
3640    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3641    /// those traces during which the device temperature reached a certain
3642    /// threshold. In this case the producer can activate a trigger to keep
3643    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3644    /// (START_TRACING) because it knows something is about to happen.
3645    #[derive(Clone, PartialEq, ::prost::Message)]
3646    pub struct TriggerConfig {
3647        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3648        pub trigger_mode: ::core::option::Option<i32>,
3649        /// This flag is really a workaround for b/274931668. This is needed only
3650        /// when deploying configs to different versions of the tracing service.
3651        /// When this is set to true this has the same effect of setting trigger_mode
3652        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3653        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3654        /// versions of Android and fall back to STOP_TRACING on older versions where
3655        /// CLONE_SNAPSHOT did not exist.
3656        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3657        #[prost(bool, optional, tag="5")]
3658        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3659        /// A list of triggers which are related to this configuration. If ANY
3660        /// trigger is seen then an action will be performed based on |trigger_mode|.
3661        #[prost(message, repeated, tag="2")]
3662        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3663        /// Required and must be positive if a TriggerConfig is specified. This is
3664        /// how long this TraceConfig should wait for a trigger to arrive. After this
3665        /// period of time if no trigger is seen the TracingSession will be cleaned
3666        /// up.
3667        #[prost(uint32, optional, tag="3")]
3668        pub trigger_timeout_ms: ::core::option::Option<u32>,
3669    }
3670    /// Nested message and enum types in `TriggerConfig`.
3671    pub mod trigger_config {
3672        #[derive(Clone, PartialEq, ::prost::Message)]
3673        pub struct Trigger {
3674            /// The producer must specify this name to activate the trigger.
3675            #[prost(string, optional, tag="1")]
3676            pub name: ::core::option::Option<::prost::alloc::string::String>,
3677            /// An std::regex that will match the producer that can activate this
3678            /// trigger. This is optional. If unset any producers can activate this
3679            /// trigger.
3680            #[prost(string, optional, tag="2")]
3681            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3682            /// After a trigger is received either in START_TRACING or STOP_TRACING
3683            /// mode then the trace will end |stop_delay_ms| after triggering.
3684            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3685            /// snapshot.
3686            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3687            /// based on wall-clock, counting also time in suspend.
3688            #[prost(uint32, optional, tag="3")]
3689            pub stop_delay_ms: ::core::option::Option<u32>,
3690            /// Limits the number of traces this trigger can start/stop in a rolling
3691            /// 24 hour window. If this field is unset or zero, no limit is applied and
3692            /// activiation of this trigger *always* starts/stops the trace.
3693            #[prost(uint32, optional, tag="4")]
3694            pub max_per_24_h: ::core::option::Option<u32>,
3695            /// A value between 0 and 1 which encodes the probability of skipping a
3696            /// trigger with this name. This is useful for reducing the probability
3697            /// of high-frequency triggers from dominating trace finaization. If this
3698            /// field is unset or zero, the trigger will *never* be skipped. If this
3699            /// field is greater than or equal to 1, this trigger will *always* be
3700            /// skipped i.e. it will be as if this trigger was never included in the
3701            /// first place.
3702            /// This probability check is applied *before* any other limits. For
3703            /// example, if |max_per_24_h| is also set, first we will check if the
3704            /// probability bar is met and only then will we check the |max_per_24_h|
3705            /// limit.
3706            #[prost(double, optional, tag="5")]
3707            pub skip_probability: ::core::option::Option<f64>,
3708        }
3709        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3710        #[repr(i32)]
3711        pub enum TriggerMode {
3712            Unspecified = 0,
3713            /// When this mode is chosen, data sources are not started until one of the
3714            /// |triggers| are received. This supports early initialization and fast
3715            /// starting of the tracing system. On triggering, the session will then
3716            /// record for |stop_delay_ms|. However if no trigger is seen
3717            /// after |trigger_timeout_ms| the session will be stopped and no data will
3718            /// be returned.
3719            StartTracing = 1,
3720            /// When this mode is chosen, the session will be started via the normal
3721            /// EnableTracing() & StartTracing(). If no trigger is ever seen
3722            /// the session will be stopped after |trigger_timeout_ms| and no data will
3723            /// be returned. However if triggered the trace will stop after
3724            /// |stop_delay_ms| and any data in the buffer will be returned to the
3725            /// consumer.
3726            StopTracing = 2,
3727            /// When this mode is chosen, this causes a snapshot of the current tracing
3728            /// session to be created after |stop_delay_ms| while the current tracing
3729            /// session continues undisturbed (% an extra flush). This mode can be
3730            /// used only when the tracing session is handled by the "perfetto" cmdline
3731            /// client (which is true in 90% of cases). Part of the business logic
3732            /// necessary for this behavior, and ensuing file handling, lives in
3733            /// perfetto_cmd.cc . On other consumers, this causes only a notification
3734            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
3735            /// consumer is supposed to call CloneSession() itself after the event.
3736            /// Use use_clone_snapshot_if_available=true when targeting older versions
3737            /// of perfetto.
3738            CloneSnapshot = 4,
3739        }
3740        impl TriggerMode {
3741            /// String value of the enum field names used in the ProtoBuf definition.
3742            ///
3743            /// The values are not transformed in any way and thus are considered stable
3744            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3745            pub fn as_str_name(&self) -> &'static str {
3746                match self {
3747                    TriggerMode::Unspecified => "UNSPECIFIED",
3748                    TriggerMode::StartTracing => "START_TRACING",
3749                    TriggerMode::StopTracing => "STOP_TRACING",
3750                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
3751                }
3752            }
3753        }
3754    }
3755    /// Configuration for trace contents that reference earlier trace data. For
3756    /// example, a data source might intern strings, and emit packets containing
3757    /// {interned id : string} pairs. Future packets from that data source can then
3758    /// use the interned ids instead of duplicating the raw string contents. The
3759    /// trace parser will then need to use that interning table to fully interpret
3760    /// the rest of the trace.
3761    #[derive(Clone, PartialEq, ::prost::Message)]
3762    pub struct IncrementalStateConfig {
3763        /// If nonzero, notify eligible data sources to clear their incremental state
3764        /// periodically, with the given period. The notification is sent only to
3765        /// data sources that have |handles_incremental_state_clear| set in their
3766        /// DataSourceDescriptor. The notification requests that the data source
3767        /// stops referring to past trace contents. This is particularly useful when
3768        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
3769        /// trace data.
3770        ///
3771        /// Warning: this time-based global clearing is likely to be removed in the
3772        /// future, to be replaced with a smarter way of sending the notifications
3773        /// only when necessary.
3774        #[prost(uint32, optional, tag="1")]
3775        pub clear_period_ms: ::core::option::Option<u32>,
3776    }
3777    /// Android-only. Not for general use. If set, saves the trace into an
3778    /// incident. This field is read by perfetto_cmd, rather than the tracing
3779    /// service. This field must be set when passing the --upload flag to
3780    /// perfetto_cmd.
3781    ///
3782    /// In this message, either:
3783    ///   * all of |destination_package|, |destination_class| and |privacy_level|
3784    ///     must be set.
3785    ///   * |skip_incidentd| must be explicitly set to true.
3786    #[derive(Clone, PartialEq, ::prost::Message)]
3787    pub struct IncidentReportConfig {
3788        #[prost(string, optional, tag="1")]
3789        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
3790        #[prost(string, optional, tag="2")]
3791        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
3792        /// Level of filtering in the requested incident. See |Destination| in
3793        /// frameworks/base/core/proto/android/privacy.proto.
3794        #[prost(int32, optional, tag="3")]
3795        pub privacy_level: ::core::option::Option<i32>,
3796        /// If true, then skips saving the trace to incidentd.
3797        ///
3798        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3799        /// or when we explicitly don't want traces to go to incidentd even when they
3800        /// usually would (e.g. configs deployed using statsd but only used for
3801        /// inclusion in bugreports using |bugreport_score|).
3802        ///
3803        /// The motivation for having this flag, instead of just not setting
3804        /// |incident_report_config|, is prevent accidents where
3805        /// |incident_report_config| is omitted by mistake.
3806        #[prost(bool, optional, tag="5")]
3807        pub skip_incidentd: ::core::option::Option<bool>,
3808        /// If true, do not write the trace into dropbox (i.e. incident only).
3809        /// Otherwise, write to both dropbox and incident.
3810        /// TODO(lalitm): remove this field as we no longer use Dropbox.
3811        #[deprecated]
3812        #[prost(bool, optional, tag="4")]
3813        pub skip_dropbox: ::core::option::Option<bool>,
3814    }
3815    /// When set applies a post-filter to the trace contents using the filter
3816    /// provided. The filter is applied at ReadBuffers() time and works both in the
3817    /// case of IPC readback and write_into_file. This filter can be generated
3818    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
3819    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
3820    /// design.
3821    ///
3822    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
3823    /// Android T with a different field number. Updated in Android U with a new
3824    /// bytecode version which supports string filtering.
3825    ///
3826    /// =========================
3827    /// Filter bytecode.
3828    /// =========================
3829    #[derive(Clone, PartialEq, ::prost::Message)]
3830    pub struct TraceFilter {
3831        /// The bytecode as implemented in Android T.
3832        #[prost(bytes="vec", optional, tag="1")]
3833        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3834        /// The bytecode as implemented in Android U. Adds support for string
3835        /// filtering.
3836        #[prost(bytes="vec", optional, tag="2")]
3837        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3838        #[prost(message, optional, tag="3")]
3839        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
3840    }
3841    /// Nested message and enum types in `TraceFilter`.
3842    pub mod trace_filter {
3843        /// A rule specifies how strings should be filtered.
3844        #[derive(Clone, PartialEq, ::prost::Message)]
3845        pub struct StringFilterRule {
3846            /// The policy (i.e. algorithm) dictating how strings matching this rule
3847            /// should be handled.
3848            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
3849            pub policy: ::core::option::Option<i32>,
3850            /// The regex pattern used to match against each string.
3851            #[prost(string, optional, tag="2")]
3852            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
3853            /// The string which should appear after the tgid in atrace tracepoint
3854            /// strings.
3855            #[prost(string, optional, tag="3")]
3856            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
3857        }
3858        /// A chain is a list of rules which string will be sequentially checked
3859        /// against.
3860        #[derive(Clone, PartialEq, ::prost::Message)]
3861        pub struct StringFilterChain {
3862            #[prost(message, repeated, tag="1")]
3863            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
3864        }
3865        // =========================
3866        // String filtering
3867        // =========================
3868
3869        // The principles and terminology of string filtering is heavily inspired by
3870        // iptables. A "rule" decide how strings should be filtered. Each rule
3871        // contains a "policy" which indicates the algorithm to use for filtering.
3872        // A "chain" is a list of rules which will be sequentially checked against
3873        // each string.
3874        //
3875        // The first rule which applies to the string terminates filtering for that
3876        // string. If no rules apply, the string is left unchanged.
3877
3878        /// A policy specifies which algorithm should be used for filtering the
3879        /// string.
3880        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3881        #[repr(i32)]
3882        pub enum StringFilterPolicy {
3883            SfpUnspecified = 0,
3884            /// Tries to match the string field against |regex_pattern|. If it
3885            /// matches, all matching groups are "redacted" (i.e. replaced with a
3886            /// constant string) and filtering is terminated (i.e. no further rules are
3887            /// checked). If it doesn't match, the string is left unchanged and the
3888            /// next rule in chain is considered.
3889            SfpMatchRedactGroups = 1,
3890            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
3891            /// checking the regex. Specifically, it tries to parse the string field as
3892            /// an atrace tracepoint and checks if the post-tgid field starts with
3893            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3894            /// this check succeeds.
3895            SfpAtraceMatchRedactGroups = 2,
3896            /// Tries to match the string field against |regex_pattern|. If it
3897            /// matches, filtering is terminated (i.e. no further rules are checked).
3898            /// If it doesn't match, the string is left unchanged and the next rule in
3899            /// chain is considered.
3900            SfpMatchBreak = 3,
3901            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
3902            /// the regex. Specifically, it tries to parse the string field as an
3903            /// atrace tracepoint and checks if the post-tgid field starts with
3904            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3905            /// this check succeeds.
3906            SfpAtraceMatchBreak = 4,
3907            /// Tries to repeatedly search (i.e. find substrings of) the string field
3908            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
3909            /// replaced with a constant string). Once there are no further matches,
3910            /// filtering is terminated (i.e. no further rules are checked).
3911            ///
3912            /// Note that this is policy is a "search" policy not a "match" policy
3913            /// unlike the above policies:
3914            ///   * Match policies require matching the full string i.e. there is an
3915            ///     implicit leading `^` and trailing `$`.
3916            ///   * Search policies perform repeated partial matching of the string
3917            ///     e.g.
3918            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
3919            ///       - Pattern: `foo=(\d+)`
3920            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
3921            ///     where P6O is the redaction string
3922            ///
3923            /// All of this is only performed after some pre-work where we try to parse
3924            /// the string field as an atrace tracepoint and check if the post-tgid
3925            /// field starts with |atrace_post_tgid_starts_with|.
3926            ///
3927            /// If there are no partial matches, the string is left unchanged and the
3928            /// next rule in chain is considered.
3929            SfpAtraceRepeatedSearchRedactGroups = 5,
3930        }
3931        impl StringFilterPolicy {
3932            /// String value of the enum field names used in the ProtoBuf definition.
3933            ///
3934            /// The values are not transformed in any way and thus are considered stable
3935            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3936            pub fn as_str_name(&self) -> &'static str {
3937                match self {
3938                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
3939                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
3940                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
3941                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
3942                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
3943                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
3944                }
3945            }
3946        }
3947    }
3948    /// Android-only. Not for general use. If set, reports the trace to the
3949    /// Android framework. This field is read by perfetto_cmd, rather than the
3950    /// tracing service. This field must be set when passing the --upload flag to
3951    /// perfetto_cmd.
3952    ///
3953    /// In this message, either:
3954    ///   * |reporter_service_package| and |reporter_service_class| must be set.
3955    ///   * |skip_reporting| must be explicitly set to true.
3956    #[derive(Clone, PartialEq, ::prost::Message)]
3957    pub struct AndroidReportConfig {
3958        #[prost(string, optional, tag="1")]
3959        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
3960        #[prost(string, optional, tag="2")]
3961        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
3962        /// If true, then skips reporting the trace to Android framework.
3963        ///
3964        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3965        /// or when we explicitly don't want to report traces to the framework even
3966        /// when they usually would (e.g. configs deployed using statsd but only
3967        /// used for inclusion in bugreports using |bugreport_score|).
3968        ///
3969        /// The motivation for having this flag, instead of just not setting
3970        /// |framework_report_config|, is prevent accidents where
3971        /// |framework_report_config| is omitted by mistake.
3972        #[prost(bool, optional, tag="3")]
3973        pub skip_report: ::core::option::Option<bool>,
3974        /// If true, will direct the Android framework to read the data in trace
3975        /// file and pass it to the reporter class over a pipe instead of passing
3976        /// the file descriptor directly.
3977        ///
3978        /// This flag is needed because the Android test framework does not
3979        /// currently support priv-app helper apps (in terms of SELinux) and we
3980        /// really don't want to add an allow rule for untrusted_app to receive
3981        /// trace fds.
3982        ///
3983        /// Because of this, we instead will direct the framework to create a new
3984        /// pipe and pass this to the reporter process instead. As the pipe is
3985        /// created by the framework, we won't have any problems with SELinux
3986        /// (system_server is already allowed to pass pipe fds, even
3987        /// to untrusted apps).
3988        ///
3989        /// As the name suggests this option *MUST* only be used for testing.
3990        /// Note that the framework will reject (and drop) files which are too
3991        /// large both for simplicity and to be minimize the amount of data we
3992        /// pass to a non-priv app (note that the framework will still check
3993        /// manifest permissions even though SELinux permissions are worked around).
3994        #[prost(bool, optional, tag="4")]
3995        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
3996    }
3997    /// If set, delays the start of tracing by a random duration. The duration is
3998    /// chosen from a uniform distribution between the specified minimum and
3999    /// maximum.
4000    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4001    /// not work if you communicate with traced directly over the consumer API.
4002    /// Introduced in Android T.
4003    #[derive(Clone, PartialEq, ::prost::Message)]
4004    pub struct CmdTraceStartDelay {
4005        #[prost(uint32, optional, tag="1")]
4006        pub min_delay_ms: ::core::option::Option<u32>,
4007        #[prost(uint32, optional, tag="2")]
4008        pub max_delay_ms: ::core::option::Option<u32>,
4009    }
4010    /// When non-empty, ensures that for a each semaphore named `name at most
4011    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4012    /// minimum of all values specified by this config or any already-running
4013    /// session) can be be running.
4014    ///
4015    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4016    /// and the tracing session will not be started (or elgible to start in
4017    /// the case of deferred sessions).
4018    ///
4019    /// This is easiest to explain with an example. Suppose the tracing service has
4020    /// the following active tracing sessions:
4021    ///    S1 = [{name=foo, max_other_session_count=2},
4022    ///          {name=bar, max_other_session_count=0}]
4023    ///    S2 = [{name=foo, max_other_session_count=1},
4024    ///          {name=baz, max_other_session_count=1}]
4025    ///
4026    /// Then, for a new session, the following would be the expected behaviour of
4027    /// EnableSession given the state of `session_semaphores`.
4028    ///    Q: session_semaphores = []
4029    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4030    ///       no matter the state of any other tracing session.
4031    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4032    ///    A: Allowed because both S2 and this config specify
4033    ///       max_other_session_count=1 for baz.
4034    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4035    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4036    ///       takes that slot.
4037    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4038    ///    A: Denied because S1 takes the the slot specified by both S1 and
4039    ///       this config.
4040    ///
4041    /// Introduced in 24Q3 (Android V).
4042    #[derive(Clone, PartialEq, ::prost::Message)]
4043    pub struct SessionSemaphore {
4044        /// The name of the semaphore. Acts as a unique identifier across all
4045        /// tracing sessions (including the one being started).
4046        #[prost(string, optional, tag="1")]
4047        pub name: ::core::option::Option<::prost::alloc::string::String>,
4048        /// The maximum number of *other* sesssions which specify the same semaphore
4049        /// which can be active. The minimum of this value across all tracing
4050        /// sessions and the value specified by the config is used when deciding
4051        /// whether the tracing session can be started.
4052        #[prost(uint64, optional, tag="2")]
4053        pub max_other_session_count: ::core::option::Option<u64>,
4054    }
4055    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4056    #[repr(i32)]
4057    pub enum LockdownModeOperation {
4058        LockdownUnchanged = 0,
4059        LockdownClear = 1,
4060        LockdownSet = 2,
4061    }
4062    impl LockdownModeOperation {
4063        /// String value of the enum field names used in the ProtoBuf definition.
4064        ///
4065        /// The values are not transformed in any way and thus are considered stable
4066        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4067        pub fn as_str_name(&self) -> &'static str {
4068            match self {
4069                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4070                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4071                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4072            }
4073        }
4074    }
4075    /// Compress trace with the given method. Best effort.
4076    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4077    #[repr(i32)]
4078    pub enum CompressionType {
4079        Unspecified = 0,
4080        Deflate = 1,
4081    }
4082    impl CompressionType {
4083        /// String value of the enum field names used in the ProtoBuf definition.
4084        ///
4085        /// The values are not transformed in any way and thus are considered stable
4086        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4087        pub fn as_str_name(&self) -> &'static str {
4088            match self {
4089                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4090                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4091            }
4092        }
4093    }
4094    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4095    #[repr(i32)]
4096    pub enum StatsdLogging {
4097        Unspecified = 0,
4098        Enabled = 1,
4099        Disabled = 2,
4100    }
4101    impl StatsdLogging {
4102        /// String value of the enum field names used in the ProtoBuf definition.
4103        ///
4104        /// The values are not transformed in any way and thus are considered stable
4105        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4106        pub fn as_str_name(&self) -> &'static str {
4107            match self {
4108                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4109                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4110                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4111            }
4112        }
4113    }
4114}
4115// End of protos/perfetto/config/trace_config.proto
4116
4117// Begin of protos/perfetto/common/system_info.proto
4118
4119#[derive(Clone, PartialEq, ::prost::Message)]
4120pub struct Utsname {
4121    #[prost(string, optional, tag="1")]
4122    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4123    #[prost(string, optional, tag="2")]
4124    pub version: ::core::option::Option<::prost::alloc::string::String>,
4125    #[prost(string, optional, tag="3")]
4126    pub release: ::core::option::Option<::prost::alloc::string::String>,
4127    #[prost(string, optional, tag="4")]
4128    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4129}
4130/// Next id: 16
4131#[derive(Clone, PartialEq, ::prost::Message)]
4132pub struct SystemInfo {
4133    #[prost(message, optional, tag="1")]
4134    pub utsname: ::core::option::Option<Utsname>,
4135    #[prost(string, optional, tag="2")]
4136    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4137    /// The manufacturer of the product/hardware.
4138    /// Source : "ro.product.manufacturer"
4139    /// Introduced after Android W in Nov 2024 and is not supported on older
4140    /// versions.
4141    #[prost(string, optional, tag="14")]
4142    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4143    /// The SoC model from which trace is collected
4144    #[prost(string, optional, tag="9")]
4145    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4146    /// The guest SoC model from which trace is collected in case of VMs
4147    #[prost(string, optional, tag="13")]
4148    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4149    /// The hardware reversion from android device
4150    #[prost(string, optional, tag="10")]
4151    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4152    /// The storage component from android_device. This field has been introduced
4153    /// after Android W in Aug 2024 and is not supported on older versions.
4154    #[prost(string, optional, tag="11")]
4155    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4156    /// The RAM component information from android device. This field has been
4157    /// introduced after Android W in Aug 2024 and is not supported on older
4158    /// versions.
4159    #[prost(string, optional, tag="12")]
4160    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4161    /// The serial console information from android device.
4162    #[prost(string, optional, tag="15")]
4163    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4164    /// The version of traced (the same returned by `traced --version`).
4165    /// This is a human readable string with and its format varies depending on
4166    /// the build system and the repo (standalone vs AOSP).
4167    /// This is intended for human debugging only.
4168    #[prost(string, optional, tag="4")]
4169    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4170    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4171    /// Introduced in Android T.
4172    #[prost(uint64, optional, tag="5")]
4173    pub android_sdk_version: ::core::option::Option<u64>,
4174    /// Kernel page size - sysconf(_SC_PAGESIZE).
4175    #[prost(uint32, optional, tag="6")]
4176    pub page_size: ::core::option::Option<u32>,
4177    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4178    /// Might be different to the number of online cpus.
4179    /// Introduced in perfetto v44.
4180    #[prost(uint32, optional, tag="8")]
4181    pub num_cpus: ::core::option::Option<u32>,
4182    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4183    /// Introduced in v38 / Android V.
4184    #[prost(int32, optional, tag="7")]
4185    pub timezone_off_mins: ::core::option::Option<i32>,
4186    /// Ticks per second - sysconf(_SC_CLK_TCK).
4187    /// Not serialised as of perfetto v44.
4188    #[prost(int64, optional, tag="3")]
4189    pub hz: ::core::option::Option<i64>,
4190}
4191// End of protos/perfetto/common/system_info.proto
4192
4193// Begin of protos/perfetto/common/trace_stats.proto
4194
4195/// Statistics for the internals of the tracing service.
4196///
4197/// Next id: 19.
4198#[derive(Clone, PartialEq, ::prost::Message)]
4199pub struct TraceStats {
4200    /// Stats for the TraceBuffer(s) of the current trace session.
4201    #[prost(message, repeated, tag="1")]
4202    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4203    /// The thresholds of each the `writer_stats` histogram buckets. This is
4204    /// emitted only once as all WriterStats share the same bucket layout.
4205    /// This field has the same cardinality of the
4206    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4207    /// (The -1 is because the last overflow bucket is not reported in the _def).
4208    /// An array of values [10, 100, 1000] in the _def array means that there are
4209    /// four buckets (3 + the implicit overflow bucket):
4210    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4211    #[prost(int64, repeated, packed="false", tag="17")]
4212    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4213    #[prost(message, repeated, tag="18")]
4214    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4215    /// Num. producers connected (whether they are involved in the current tracing
4216    /// session or not).
4217    #[prost(uint32, optional, tag="2")]
4218    pub producers_connected: ::core::option::Option<u32>,
4219    /// Num. producers ever seen for all trace sessions since startup (it's a good
4220    /// proxy for inferring num. producers crashed / killed).
4221    #[prost(uint64, optional, tag="3")]
4222    pub producers_seen: ::core::option::Option<u64>,
4223    /// Num. data sources registered for all trace sessions.
4224    #[prost(uint32, optional, tag="4")]
4225    pub data_sources_registered: ::core::option::Option<u32>,
4226    /// Num. data sources ever seen for all trace sessions since startup.
4227    #[prost(uint64, optional, tag="5")]
4228    pub data_sources_seen: ::core::option::Option<u64>,
4229    /// Num. concurrently active tracing sessions.
4230    #[prost(uint32, optional, tag="6")]
4231    pub tracing_sessions: ::core::option::Option<u32>,
4232    /// Num. buffers for all tracing session (not just the current one). This will
4233    /// be >= buffer_stats.size(), because the latter is only about the current
4234    /// session.
4235    #[prost(uint32, optional, tag="7")]
4236    pub total_buffers: ::core::option::Option<u32>,
4237    // The fields below have been introduced in Android Q.
4238
4239    /// Num. chunks that were discarded by the service before attempting to commit
4240    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4241    #[prost(uint64, optional, tag="8")]
4242    pub chunks_discarded: ::core::option::Option<u64>,
4243    /// Num. patches that were discarded by the service before attempting to apply
4244    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4245    #[prost(uint64, optional, tag="9")]
4246    pub patches_discarded: ::core::option::Option<u64>,
4247    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4248    /// is a bug in the producer.
4249    #[prost(uint64, optional, tag="10")]
4250    pub invalid_packets: ::core::option::Option<u64>,
4251    #[prost(message, optional, tag="11")]
4252    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4253    /// Count of Flush() requests (either from the Consumer, or self-induced
4254    /// periodic flushes). The final Flush() is also included in the count.
4255    #[prost(uint64, optional, tag="12")]
4256    pub flushes_requested: ::core::option::Option<u64>,
4257    /// The count of the Flush() requests that were completed successfully.
4258    /// In a well behaving trace this should always be == `flush_requests`.
4259    #[prost(uint64, optional, tag="13")]
4260    pub flushes_succeeded: ::core::option::Option<u64>,
4261    /// The count of the Flush() requests that failed (in most timed out).
4262    /// In a well behaving trace this should always be == 0.
4263    #[prost(uint64, optional, tag="14")]
4264    pub flushes_failed: ::core::option::Option<u64>,
4265    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4266    pub final_flush_outcome: ::core::option::Option<i32>,
4267}
4268/// Nested message and enum types in `TraceStats`.
4269pub mod trace_stats {
4270    /// From TraceBuffer::Stats.
4271    ///
4272    /// Next id: 21.
4273    #[derive(Clone, PartialEq, ::prost::Message)]
4274    pub struct BufferStats {
4275        /// Size of the circular buffer in bytes.
4276        #[prost(uint64, optional, tag="12")]
4277        pub buffer_size: ::core::option::Option<u64>,
4278        /// Num. bytes written into the circular buffer, including chunk headers.
4279        #[prost(uint64, optional, tag="1")]
4280        pub bytes_written: ::core::option::Option<u64>,
4281        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4282        #[prost(uint64, optional, tag="13")]
4283        pub bytes_overwritten: ::core::option::Option<u64>,
4284        /// Total size of chunks that were fully read from the circular buffer by the
4285        /// consumer. This may not be equal to |bytes_written| either in the middle
4286        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4287        /// size of the chunks read from the buffer, including chunk headers, which
4288        /// will be different from the total size of packets returned to the
4289        /// consumer.
4290        ///
4291        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4292        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4293        /// adding the difference of |padding_bytes_written| and
4294        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4295        /// Note that this represents the total size of buffered data in the buffer,
4296        /// yet this data may be spread non-contiguously through the buffer and may
4297        /// be overridden before the utilization reaches 100%.
4298        #[prost(uint64, optional, tag="14")]
4299        pub bytes_read: ::core::option::Option<u64>,
4300        /// Num. bytes that were allocated as padding between chunks in the circular
4301        /// buffer.
4302        #[prost(uint64, optional, tag="15")]
4303        pub padding_bytes_written: ::core::option::Option<u64>,
4304        /// Num. of padding bytes that were removed from the circular buffer when
4305        /// they were overwritten.
4306        ///
4307        /// The difference between |padding_bytes_written| and
4308        /// |padding_bytes_cleared| denotes the total size of padding currently
4309        /// present in the buffer.
4310        #[prost(uint64, optional, tag="16")]
4311        pub padding_bytes_cleared: ::core::option::Option<u64>,
4312        /// Num. chunks (!= packets) written into the buffer.
4313        #[prost(uint64, optional, tag="2")]
4314        pub chunks_written: ::core::option::Option<u64>,
4315        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4316        /// the same chunk with additional packets appended to the end.
4317        #[prost(uint64, optional, tag="10")]
4318        pub chunks_rewritten: ::core::option::Option<u64>,
4319        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4320        #[prost(uint64, optional, tag="3")]
4321        pub chunks_overwritten: ::core::option::Option<u64>,
4322        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4323        /// is configured with FillPolicy == DISCARD.
4324        #[prost(uint64, optional, tag="18")]
4325        pub chunks_discarded: ::core::option::Option<u64>,
4326        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4327        /// the consumer. This may not be equal to |chunks_written| either in the
4328        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4329        #[prost(uint64, optional, tag="17")]
4330        pub chunks_read: ::core::option::Option<u64>,
4331        /// Num. chunks that were committed out of order.
4332        #[prost(uint64, optional, tag="11")]
4333        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4334        /// Num. times the ring buffer wrapped around.
4335        #[prost(uint64, optional, tag="4")]
4336        pub write_wrap_count: ::core::option::Option<u64>,
4337        /// Num. out-of-band (OOB) patches that succeeded.
4338        #[prost(uint64, optional, tag="5")]
4339        pub patches_succeeded: ::core::option::Option<u64>,
4340        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4341        #[prost(uint64, optional, tag="6")]
4342        pub patches_failed: ::core::option::Option<u64>,
4343        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4344        /// successful packet read.
4345        #[prost(uint64, optional, tag="7")]
4346        pub readaheads_succeeded: ::core::option::Option<u64>,
4347        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4348        /// Note that a small number > 0 is totally expected: occasionally, when
4349        /// issuing a read, the very last packet in a sequence might be incomplete
4350        /// (because the producer is still writing it while we read). The read will
4351        /// stop at that point, for that sequence, increasing this counter.
4352        #[prost(uint64, optional, tag="8")]
4353        pub readaheads_failed: ::core::option::Option<u64>,
4354        /// Num. of violations of the SharedMemoryABI found while writing or reading
4355        /// the buffer. This is an indication of either a bug in the producer(s) or
4356        /// malicious producer(s).
4357        #[prost(uint64, optional, tag="9")]
4358        pub abi_violations: ::core::option::Option<u64>,
4359        // The fields below have been introduced in Android R.
4360
4361        /// Num. of times the service detected packet loss on a trace writer
4362        /// sequence. This is usually caused by exhaustion of available chunks in the
4363        /// writer process's SMB. Note that this relies on the client's TraceWriter
4364        /// indicating this loss to the service -- packets lost for other reasons are
4365        /// not reflected in this stat.
4366        #[prost(uint64, optional, tag="19")]
4367        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4368    }
4369    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4370    /// visible as a unique sequence ID in the trace.
4371    #[derive(Clone, PartialEq, ::prost::Message)]
4372    pub struct WriterStats {
4373        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4374        /// correlate the stats with the actual packet types.
4375        #[prost(uint64, optional, tag="1")]
4376        pub sequence_id: ::core::option::Option<u64>,
4377        /// The buffer index (0..N, as defined in the TraceConfig).
4378        #[prost(uint32, optional, tag="4")]
4379        pub buffer: ::core::option::Option<u32>,
4380        /// These two arrays have the same cardinality and match the cardinality of
4381        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4382        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4383        /// for each bucket.
4384        #[prost(uint64, repeated, tag="2")]
4385        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4386        #[prost(int64, repeated, tag="3")]
4387        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4388    }
4389    /// This is set only when the TraceConfig specifies a TraceFilter.
4390    #[derive(Clone, PartialEq, ::prost::Message)]
4391    pub struct FilterStats {
4392        #[prost(uint64, optional, tag="1")]
4393        pub input_packets: ::core::option::Option<u64>,
4394        #[prost(uint64, optional, tag="2")]
4395        pub input_bytes: ::core::option::Option<u64>,
4396        #[prost(uint64, optional, tag="3")]
4397        pub output_bytes: ::core::option::Option<u64>,
4398        #[prost(uint64, optional, tag="4")]
4399        pub errors: ::core::option::Option<u64>,
4400        #[prost(uint64, optional, tag="5")]
4401        pub time_taken_ns: ::core::option::Option<u64>,
4402        /// The number of bytes discarded by the filter (i.e. output - input).
4403        /// The array has one entry for each buffer defined in the config (unless no
4404        /// packets for that buffer were seen and hence filtered).
4405        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4406        /// (output_bytes - input_bytes) because the filter might also discard
4407        /// server-generated synthetic packets, that have no buffer index.
4408        #[prost(uint64, repeated, packed="false", tag="20")]
4409        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4410    }
4411    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4412    #[repr(i32)]
4413    pub enum FinalFlushOutcome {
4414        FinalFlushUnspecified = 0,
4415        FinalFlushSucceeded = 1,
4416        FinalFlushFailed = 2,
4417    }
4418    impl FinalFlushOutcome {
4419        /// String value of the enum field names used in the ProtoBuf definition.
4420        ///
4421        /// The values are not transformed in any way and thus are considered stable
4422        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4423        pub fn as_str_name(&self) -> &'static str {
4424            match self {
4425                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4426                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4427                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4428            }
4429        }
4430    }
4431}
4432// End of protos/perfetto/common/trace_stats.proto
4433
4434// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4435
4436#[derive(Clone, PartialEq, ::prost::Message)]
4437pub struct AndroidGameInterventionList {
4438    #[prost(message, repeated, tag="1")]
4439    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4440    /// True when at least one error occurred when parsing
4441    /// game_mode_intervention.list
4442    #[prost(bool, optional, tag="2")]
4443    pub parse_error: ::core::option::Option<bool>,
4444    /// Failed to open / read game_mode_intervention.list
4445    #[prost(bool, optional, tag="3")]
4446    pub read_error: ::core::option::Option<bool>,
4447}
4448/// Nested message and enum types in `AndroidGameInterventionList`.
4449pub mod android_game_intervention_list {
4450    #[derive(Clone, PartialEq, ::prost::Message)]
4451    pub struct GameModeInfo {
4452        #[prost(uint32, optional, tag="1")]
4453        pub mode: ::core::option::Option<u32>,
4454        #[prost(bool, optional, tag="2")]
4455        pub use_angle: ::core::option::Option<bool>,
4456        #[prost(float, optional, tag="3")]
4457        pub resolution_downscale: ::core::option::Option<f32>,
4458        #[prost(float, optional, tag="4")]
4459        pub fps: ::core::option::Option<f32>,
4460    }
4461    #[derive(Clone, PartialEq, ::prost::Message)]
4462    pub struct GamePackageInfo {
4463        #[prost(string, optional, tag="1")]
4464        pub name: ::core::option::Option<::prost::alloc::string::String>,
4465        #[prost(uint64, optional, tag="2")]
4466        pub uid: ::core::option::Option<u64>,
4467        #[prost(uint32, optional, tag="3")]
4468        pub current_mode: ::core::option::Option<u32>,
4469        #[prost(message, repeated, tag="4")]
4470        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4471    }
4472}
4473// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4474
4475// Begin of protos/perfetto/trace/android/android_log.proto
4476
4477#[derive(Clone, PartialEq, ::prost::Message)]
4478pub struct AndroidLogPacket {
4479    #[prost(message, repeated, tag="1")]
4480    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4481    #[prost(message, optional, tag="2")]
4482    pub stats: ::core::option::Option<android_log_packet::Stats>,
4483}
4484/// Nested message and enum types in `AndroidLogPacket`.
4485pub mod android_log_packet {
4486    #[derive(Clone, PartialEq, ::prost::Message)]
4487    pub struct LogEvent {
4488        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4489        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4490        pub log_id: ::core::option::Option<i32>,
4491        /// PID (TGID), TID and UID of the task that emitted the event.
4492        #[prost(int32, optional, tag="2")]
4493        pub pid: ::core::option::Option<i32>,
4494        #[prost(int32, optional, tag="3")]
4495        pub tid: ::core::option::Option<i32>,
4496        #[prost(int32, optional, tag="4")]
4497        pub uid: ::core::option::Option<i32>,
4498        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4499        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4500        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4501        #[prost(uint64, optional, tag="5")]
4502        pub timestamp: ::core::option::Option<u64>,
4503        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4504        /// the second column of /system/etc/event-log-tags. For all other events,
4505        /// |tag| is the app-specified argument passed to __android_log_write().
4506        #[prost(string, optional, tag="6")]
4507        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4508        /// Empty when log_id == LID_EVENTS.
4509        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4510        pub prio: ::core::option::Option<i32>,
4511        /// Empty when log_id == LID_EVENTS.
4512        #[prost(string, optional, tag="8")]
4513        pub message: ::core::option::Option<::prost::alloc::string::String>,
4514        /// Only populated when log_id == LID_EVENTS.
4515        #[prost(message, repeated, tag="9")]
4516        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4517    }
4518    /// Nested message and enum types in `LogEvent`.
4519    pub mod log_event {
4520        #[derive(Clone, PartialEq, ::prost::Message)]
4521        pub struct Arg {
4522            #[prost(string, optional, tag="1")]
4523            pub name: ::core::option::Option<::prost::alloc::string::String>,
4524            #[prost(oneof="arg::Value", tags="2, 3, 4")]
4525            pub value: ::core::option::Option<arg::Value>,
4526        }
4527        /// Nested message and enum types in `Arg`.
4528        pub mod arg {
4529            #[derive(Clone, PartialEq, ::prost::Oneof)]
4530            pub enum Value {
4531                #[prost(int64, tag="2")]
4532                IntValue(i64),
4533                #[prost(float, tag="3")]
4534                FloatValue(f32),
4535                #[prost(string, tag="4")]
4536                StringValue(::prost::alloc::string::String),
4537            }
4538        }
4539    }
4540    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
4541    /// absolute counters since the beginning of the lifetime of the tracing
4542    /// session and NOT relative to the previous Stats snapshot).
4543    #[derive(Clone, PartialEq, ::prost::Message)]
4544    pub struct Stats {
4545        /// Total number of log events seen, including errors and skipped entries
4546        /// (num of events stored in the trace = total - failed - skipped).
4547        #[prost(uint64, optional, tag="1")]
4548        pub num_total: ::core::option::Option<u64>,
4549        /// Parser failures.
4550        #[prost(uint64, optional, tag="2")]
4551        pub num_failed: ::core::option::Option<u64>,
4552        /// Messages skipped due to filters.
4553        #[prost(uint64, optional, tag="3")]
4554        pub num_skipped: ::core::option::Option<u64>,
4555    }
4556}
4557// End of protos/perfetto/trace/android/android_log.proto
4558
4559// Begin of protos/perfetto/trace/android/android_system_property.proto
4560
4561#[derive(Clone, PartialEq, ::prost::Message)]
4562pub struct AndroidSystemProperty {
4563    #[prost(message, repeated, tag="1")]
4564    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
4565}
4566/// Nested message and enum types in `AndroidSystemProperty`.
4567pub mod android_system_property {
4568    #[derive(Clone, PartialEq, ::prost::Message)]
4569    pub struct PropertyValue {
4570        #[prost(string, optional, tag="1")]
4571        pub name: ::core::option::Option<::prost::alloc::string::String>,
4572        #[prost(string, optional, tag="2")]
4573        pub value: ::core::option::Option<::prost::alloc::string::String>,
4574    }
4575}
4576// End of protos/perfetto/trace/android/android_system_property.proto
4577
4578// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
4579
4580/// AppWakelockInfo describes the time-independent properties of a wakelock, such
4581/// as the owning package or wakelock tag. This is interned to reduce trace size.
4582/// Event bundles refer to interned wakelock info by the iid.
4583#[derive(Clone, PartialEq, ::prost::Message)]
4584pub struct AppWakelockInfo {
4585    /// The interned id of this wakelock.
4586    #[prost(int32, optional, tag="1")]
4587    pub iid: ::core::option::Option<i32>,
4588    /// The app-provided tag of the wakelock.
4589    #[prost(string, optional, tag="2")]
4590    pub tag: ::core::option::Option<::prost::alloc::string::String>,
4591    /// The wakelock flags (such as partial vs full).
4592    #[prost(int32, optional, tag="3")]
4593    pub flags: ::core::option::Option<i32>,
4594    /// The pid that created the wakelock.
4595    #[prost(int32, optional, tag="4")]
4596    pub owner_pid: ::core::option::Option<i32>,
4597    /// The uid that created the wakelock.
4598    #[prost(int32, optional, tag="5")]
4599    pub owner_uid: ::core::option::Option<i32>,
4600    /// The uid of the work source root (if present).
4601    #[prost(int32, optional, tag="6")]
4602    pub work_uid: ::core::option::Option<i32>,
4603}
4604/// AppWakelockBundle describes one or more wakelock events. Events are written
4605/// in two paired array, such that the details for event i are in intern_id\[i\]
4606/// and encoded_ts\[i\].
4607#[derive(Clone, PartialEq, ::prost::Message)]
4608pub struct AppWakelockBundle {
4609    /// The interned id for the WakelockInfo of the event.
4610    #[prost(uint32, repeated, tag="1")]
4611    pub intern_id: ::prost::alloc::vec::Vec<u32>,
4612    /// The timestamp and event type, encoded as:
4613    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
4614    #[prost(uint64, repeated, tag="2")]
4615    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
4616    /// For writing single packets (mainly by tokenization).
4617    #[prost(message, optional, tag="3")]
4618    pub info: ::core::option::Option<AppWakelockInfo>,
4619    #[prost(bool, optional, tag="4")]
4620    pub acquired: ::core::option::Option<bool>,
4621}
4622/// Trace event for bluetooth
4623#[derive(Clone, PartialEq, ::prost::Message)]
4624pub struct BluetoothTraceEvent {
4625    /// Packet type and direction
4626    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
4627    pub packet_type: ::core::option::Option<i32>,
4628    /// Total count of the packets collected during the collection interval
4629    #[prost(uint32, optional, tag="2")]
4630    pub count: ::core::option::Option<u32>,
4631    /// Total cumulative length of the packets collected during the collection
4632    /// interval
4633    #[prost(uint32, optional, tag="3")]
4634    pub length: ::core::option::Option<u32>,
4635    /// The collection interval in nanoseconds. This is the duration between the
4636    /// first and last packets collected.
4637    #[prost(uint32, optional, tag="4")]
4638    pub duration: ::core::option::Option<u32>,
4639    /// In case of CMD type, further breakdown of the type of command
4640    #[prost(uint32, optional, tag="5")]
4641    pub op_code: ::core::option::Option<u32>,
4642    /// In the case of EVT type, further breakdown of the type of event
4643    #[prost(uint32, optional, tag="6")]
4644    pub event_code: ::core::option::Option<u32>,
4645    /// When applicable for EVT type, further breakdown of event type into specific
4646    /// subevent
4647    #[prost(uint32, optional, tag="7")]
4648    pub subevent_code: ::core::option::Option<u32>,
4649    /// Associated handle for the bluetooth packet
4650    #[prost(uint32, optional, tag="8")]
4651    pub connection_handle: ::core::option::Option<u32>,
4652}
4653// End of protos/perfetto/trace/android/bluetooth_trace.proto
4654
4655// Begin of protos/perfetto/trace/android/camera_event.proto
4656
4657/// A profiling event corresponding to a single camera frame. This message
4658/// collects important details and timestamps involved in producing a single
4659/// camera frame.
4660/// Next ID: 17
4661#[derive(Clone, PartialEq, ::prost::Message)]
4662pub struct AndroidCameraFrameEvent {
4663    /// Identifier for the CameraCaptureSession this frame originates from. See:
4664    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4665    #[prost(uint64, optional, tag="1")]
4666    pub session_id: ::core::option::Option<u64>,
4667    /// Identifier for the camera sensor that is the source of this frame. This may
4668    /// be either a physical or logical camera (up to vendor interpretation).
4669    #[prost(uint32, optional, tag="2")]
4670    pub camera_id: ::core::option::Option<u32>,
4671    /// The frame number identifying this frame on this camera.
4672    #[prost(int64, optional, tag="3")]
4673    pub frame_number: ::core::option::Option<i64>,
4674    /// Identifier for the CaptureRequest. See:
4675    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
4676    ///
4677    /// If multiple cameras are streaming simultaneously, the request_id may be
4678    /// used to identify which frames were captured in service of the same request.
4679    #[prost(int64, optional, tag="4")]
4680    pub request_id: ::core::option::Option<i64>,
4681    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
4682    /// received by the camera HAL pipeline. Note that this request may wait for
4683    /// some time before processing actually begins. See also
4684    /// request_processing_started_ns.
4685    #[prost(int64, optional, tag="5")]
4686    pub request_received_ns: ::core::option::Option<i64>,
4687    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
4688    /// processing by the camera HAL pipeline. This is the time at which the
4689    /// pipeline actually begins to work on the request.
4690    #[prost(int64, optional, tag="6")]
4691    pub request_processing_started_ns: ::core::option::Option<i64>,
4692    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
4693    #[prost(int64, optional, tag="7")]
4694    pub start_of_exposure_ns: ::core::option::Option<i64>,
4695    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
4696    /// event.
4697    #[prost(int64, optional, tag="8")]
4698    pub start_of_frame_ns: ::core::option::Option<i64>,
4699    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
4700    /// for the frame.
4701    #[prost(int64, optional, tag="9")]
4702    pub responses_all_sent_ns: ::core::option::Option<i64>,
4703    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
4704    pub capture_result_status: ::core::option::Option<i32>,
4705    /// The number of sensor frames that were skipped between this frame and the
4706    /// previous frame. Under normal operation, this should be zero. Any number
4707    /// greater than zero indicates dropped sensor frames.
4708    #[prost(int32, optional, tag="11")]
4709    pub skipped_sensor_frames: ::core::option::Option<i32>,
4710    /// The value of CONTROL_CAPTURE_INTENT. See:
4711    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
4712    #[prost(int32, optional, tag="12")]
4713    pub capture_intent: ::core::option::Option<i32>,
4714    /// The number of streams in the capture request.
4715    #[prost(int32, optional, tag="13")]
4716    pub num_streams: ::core::option::Option<i32>,
4717    #[prost(message, repeated, tag="14")]
4718    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
4719    /// These fields capture vendor-specific additions to this proto message. In
4720    /// practice `vendor_data` typically contains a serialized message of the
4721    /// vendor's design, and `vendor_data_version` is incremented each time there
4722    /// is a backwards incompatible change made to the message.
4723    #[prost(int32, optional, tag="15")]
4724    pub vendor_data_version: ::core::option::Option<i32>,
4725    #[prost(bytes="vec", optional, tag="16")]
4726    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4727}
4728/// Nested message and enum types in `AndroidCameraFrameEvent`.
4729pub mod android_camera_frame_event {
4730    /// A profiling event corresponding to a single node processing within the
4731    /// camera pipeline. Intuitively this corresponds to a single stage of
4732    /// processing to produce a camera frame. Next ID: 6
4733    #[derive(Clone, PartialEq, ::prost::Message)]
4734    pub struct CameraNodeProcessingDetails {
4735        #[prost(int64, optional, tag="1")]
4736        pub node_id: ::core::option::Option<i64>,
4737        /// The timestamp at which node processing begins to run.
4738        #[prost(int64, optional, tag="2")]
4739        pub start_processing_ns: ::core::option::Option<i64>,
4740        /// The timestamp at which node processing finishes running.
4741        #[prost(int64, optional, tag="3")]
4742        pub end_processing_ns: ::core::option::Option<i64>,
4743        /// The delay between inputs becoming ready and the node actually beginning
4744        /// to run.
4745        #[prost(int64, optional, tag="4")]
4746        pub scheduling_latency_ns: ::core::option::Option<i64>,
4747    }
4748    /// The error status, if any, reported to the camera framework. Any status
4749    /// other than STATUS_OK indicates a dropped frame.
4750    /// Next Enum: 6
4751    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4752    #[repr(i32)]
4753    pub enum CaptureResultStatus {
4754        StatusUnspecified = 0,
4755        StatusOk = 1,
4756        /// Early metadata was returned to the camera framework with an error.
4757        StatusEarlyMetadataError = 2,
4758        /// Final metadata was returned to the camera framework with an error.
4759        StatusFinalMetadataError = 3,
4760        /// One or more buffers were returned to the camera framework with an error.
4761        StatusBufferError = 4,
4762        /// The frame was dropped as a result of a flush operation.
4763        StatusFlushError = 5,
4764    }
4765    impl CaptureResultStatus {
4766        /// String value of the enum field names used in the ProtoBuf definition.
4767        ///
4768        /// The values are not transformed in any way and thus are considered stable
4769        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4770        pub fn as_str_name(&self) -> &'static str {
4771            match self {
4772                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
4773                CaptureResultStatus::StatusOk => "STATUS_OK",
4774                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
4775                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
4776                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
4777                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
4778            }
4779        }
4780    }
4781}
4782/// A profiling event that may be emitted periodically (i.e., at a slower rate
4783/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
4784/// session-specific values.
4785#[derive(Clone, PartialEq, ::prost::Message)]
4786pub struct AndroidCameraSessionStats {
4787    /// Identifier for the CameraCaptureSession this frame originates from. See:
4788    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4789    #[prost(uint64, optional, tag="1")]
4790    pub session_id: ::core::option::Option<u64>,
4791    #[prost(message, optional, tag="2")]
4792    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
4793}
4794/// Nested message and enum types in `AndroidCameraSessionStats`.
4795pub mod android_camera_session_stats {
4796    /// Although vendor implementations may vary, camera pipeline processing is
4797    /// typically arranged into a directed graph-like structure. This message is
4798    /// used to record that graph.
4799    #[derive(Clone, PartialEq, ::prost::Message)]
4800    pub struct CameraGraph {
4801        #[prost(message, repeated, tag="1")]
4802        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
4803        #[prost(message, repeated, tag="2")]
4804        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
4805    }
4806    /// Nested message and enum types in `CameraGraph`.
4807    pub mod camera_graph {
4808        #[derive(Clone, PartialEq, ::prost::Message)]
4809        pub struct CameraNode {
4810            #[prost(int64, optional, tag="1")]
4811            pub node_id: ::core::option::Option<i64>,
4812            /// A list of inputs consumed by this node.
4813            #[prost(int64, repeated, packed="false", tag="2")]
4814            pub input_ids: ::prost::alloc::vec::Vec<i64>,
4815            /// A list of outputs produced by this node.
4816            #[prost(int64, repeated, packed="false", tag="3")]
4817            pub output_ids: ::prost::alloc::vec::Vec<i64>,
4818            /// These fields capture vendor-specific additions to this proto message.
4819            /// In practice `vendor_data` typically contains a serialized message of
4820            /// the vendor's design, and `vendor_data_version` is incremented each time
4821            /// there is a backwards incompatible change made to the message.
4822            #[prost(int32, optional, tag="4")]
4823            pub vendor_data_version: ::core::option::Option<i32>,
4824            #[prost(bytes="vec", optional, tag="5")]
4825            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4826        }
4827        /// An adjacency list describing connections between CameraNodes, mapping
4828        /// nodes and their outputs to other nodes that consume them as inputs.
4829        #[derive(Clone, PartialEq, ::prost::Message)]
4830        pub struct CameraEdge {
4831            /// The pair of IDs identifying the node and output connected by this edge.
4832            #[prost(int64, optional, tag="1")]
4833            pub output_node_id: ::core::option::Option<i64>,
4834            #[prost(int64, optional, tag="2")]
4835            pub output_id: ::core::option::Option<i64>,
4836            /// The pair of IDs identifying the node and input connected by this edge.
4837            #[prost(int64, optional, tag="3")]
4838            pub input_node_id: ::core::option::Option<i64>,
4839            #[prost(int64, optional, tag="4")]
4840            pub input_id: ::core::option::Option<i64>,
4841            /// These fields capture vendor-specific additions to this proto message.
4842            /// In practice `vendor_data` typically contains a serialized message of
4843            /// the vendor's design, and `vendor_data_version` is incremented each time
4844            /// there is a backwards incompatible change made to the message.
4845            #[prost(int32, optional, tag="5")]
4846            pub vendor_data_version: ::core::option::Option<i32>,
4847            #[prost(bytes="vec", optional, tag="6")]
4848            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4849        }
4850    }
4851}
4852// End of protos/perfetto/trace/android/camera_event.proto
4853
4854// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
4855
4856#[derive(Clone, PartialEq, ::prost::Message)]
4857pub struct CpuPerUidData {
4858    /// Number of clusters in the device. This will only be filled in the first
4859    /// packet in a sequence.
4860    #[prost(uint32, optional, tag="1")]
4861    pub cluster_count: ::core::option::Option<u32>,
4862    /// The UIDs for which we have data in this packet.
4863    #[prost(uint32, repeated, tag="2")]
4864    pub uid: ::prost::alloc::vec::Vec<u32>,
4865    /// List of times for {UID, cluster} tuples. This will be cluster_count
4866    /// times as long as the UID list.
4867    ///
4868    /// Ordered like:
4869    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
4870    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
4871    ///
4872    /// Each value is an absolute count for the first packet in a sequence, and a
4873    /// delta thereafter. UIDs for which all clusters have a zero delta are
4874    /// omitted; a single non-zero value for any cluster for a UID will cause
4875    /// values for all clusters to be recorded.
4876    #[prost(uint64, repeated, tag="3")]
4877    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
4878}
4879// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
4880
4881// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
4882
4883/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
4884/// Used in comparing the expected timeline of a frame to the actual timeline.
4885/// Key terms:
4886///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
4887///     2) SurfaceFrame - represents App's work on its frame
4888///     3) Timeline = start to end of a component's(app/SF) work on a frame.
4889/// SurfaceFlinger composites frames from many apps together, so
4890///     One DisplayFrame can map to N SurfaceFrame(s)
4891/// This relationship can be reconstructed by using
4892///     DisplayFrame.token = SurfaceFrame.display_frame_token
4893#[derive(Clone, PartialEq, ::prost::Message)]
4894pub struct FrameTimelineEvent {
4895    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
4896    pub event: ::core::option::Option<frame_timeline_event::Event>,
4897}
4898/// Nested message and enum types in `FrameTimelineEvent`.
4899pub mod frame_timeline_event {
4900    /// Indicates the start of expected timeline slice for SurfaceFrames.
4901    #[derive(Clone, PartialEq, ::prost::Message)]
4902    pub struct ExpectedSurfaceFrameStart {
4903        /// Cookie used to correlate between the start and end messages of the same
4904        /// frame. Since all values except the ts are same for start and end, cookie
4905        /// helps in preventing redundant data transmission.
4906        /// The same cookie is used only by start and end messages of a single frame
4907        /// and is otherwise unique.
4908        #[prost(int64, optional, tag="1")]
4909        pub cookie: ::core::option::Option<i64>,
4910        /// Token received by the app for its work. Can be shared between multiple
4911        /// layers of the same app (example: pip mode).
4912        #[prost(int64, optional, tag="2")]
4913        pub token: ::core::option::Option<i64>,
4914        /// The corresponding DisplayFrame token is required to link the App's work
4915        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4916        /// DisplayFrame.
4917        /// this.display_frame_token = DisplayFrame.token
4918        #[prost(int64, optional, tag="3")]
4919        pub display_frame_token: ::core::option::Option<i64>,
4920        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4921        /// the respective process track group.
4922        #[prost(int32, optional, tag="4")]
4923        pub pid: ::core::option::Option<i32>,
4924        #[prost(string, optional, tag="5")]
4925        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4926    }
4927    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
4928    /// includes the jank information.
4929    #[derive(Clone, PartialEq, ::prost::Message)]
4930    pub struct ActualSurfaceFrameStart {
4931        /// Cookie used to correlate between the start and end messages of the same
4932        /// frame. Since all values except the ts are same for start and end, cookie
4933        /// helps in preventing redundant data transmission.
4934        /// The same cookie is used only by start and end messages of a single frame
4935        /// and is otherwise unique.
4936        #[prost(int64, optional, tag="1")]
4937        pub cookie: ::core::option::Option<i64>,
4938        /// Token received by the app for its work. Can be shared between multiple
4939        /// layers of the same app (example: pip mode).
4940        #[prost(int64, optional, tag="2")]
4941        pub token: ::core::option::Option<i64>,
4942        /// The corresponding DisplayFrame token is required to link the App's work
4943        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4944        /// DisplayFrame.
4945        /// this.display_frame_token = DisplayFrame.token
4946        #[prost(int64, optional, tag="3")]
4947        pub display_frame_token: ::core::option::Option<i64>,
4948        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4949        /// the respective process track group.
4950        #[prost(int32, optional, tag="4")]
4951        pub pid: ::core::option::Option<i32>,
4952        #[prost(string, optional, tag="5")]
4953        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4954        #[prost(enumeration="PresentType", optional, tag="6")]
4955        pub present_type: ::core::option::Option<i32>,
4956        #[prost(bool, optional, tag="7")]
4957        pub on_time_finish: ::core::option::Option<bool>,
4958        #[prost(bool, optional, tag="8")]
4959        pub gpu_composition: ::core::option::Option<bool>,
4960        /// A bitmask of JankType. More than one reason can be attributed to a janky
4961        /// frame.
4962        #[prost(int32, optional, tag="9")]
4963        pub jank_type: ::core::option::Option<i32>,
4964        #[prost(enumeration="PredictionType", optional, tag="10")]
4965        pub prediction_type: ::core::option::Option<i32>,
4966        #[prost(bool, optional, tag="11")]
4967        pub is_buffer: ::core::option::Option<bool>,
4968        #[prost(enumeration="JankSeverityType", optional, tag="12")]
4969        pub jank_severity_type: ::core::option::Option<i32>,
4970    }
4971    /// Indicates the start of expected timeline slice for DisplayFrames.
4972    #[derive(Clone, PartialEq, ::prost::Message)]
4973    pub struct ExpectedDisplayFrameStart {
4974        /// Cookie used to correlate between the start and end messages of the same
4975        /// frame. Since all values except the ts are same for start and end, cookie
4976        /// helps in preventing redundant data transmission.
4977        /// The same cookie is used only by start and end messages of a single frame
4978        /// and is otherwise unique.
4979        #[prost(int64, optional, tag="1")]
4980        pub cookie: ::core::option::Option<i64>,
4981        /// Token received by SurfaceFlinger for its work
4982        /// this.token = SurfaceFrame.display_frame_token
4983        #[prost(int64, optional, tag="2")]
4984        pub token: ::core::option::Option<i64>,
4985        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
4986        /// inside the SurfaceFlinger process group.
4987        #[prost(int32, optional, tag="3")]
4988        pub pid: ::core::option::Option<i32>,
4989    }
4990    /// Indicates the start of actual timeline slice for DisplayFrames. Also
4991    /// includes the jank information.
4992    #[derive(Clone, PartialEq, ::prost::Message)]
4993    pub struct ActualDisplayFrameStart {
4994        /// Cookie used to correlate between the start and end messages of the same
4995        /// frame. Since all values except the ts are same for start and end, cookie
4996        /// helps in preventing redundant data transmission.
4997        /// The same cookie is used only by start and end messages of a single frame
4998        /// and is otherwise unique.
4999        #[prost(int64, optional, tag="1")]
5000        pub cookie: ::core::option::Option<i64>,
5001        /// Token received by SurfaceFlinger for its work
5002        /// this.token = SurfaceFrame.display_frame_token
5003        #[prost(int64, optional, tag="2")]
5004        pub token: ::core::option::Option<i64>,
5005        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5006        /// inside the SurfaceFlinger process group.
5007        #[prost(int32, optional, tag="3")]
5008        pub pid: ::core::option::Option<i32>,
5009        #[prost(enumeration="PresentType", optional, tag="4")]
5010        pub present_type: ::core::option::Option<i32>,
5011        #[prost(bool, optional, tag="5")]
5012        pub on_time_finish: ::core::option::Option<bool>,
5013        #[prost(bool, optional, tag="6")]
5014        pub gpu_composition: ::core::option::Option<bool>,
5015        /// A bitmask of JankType. More than one reason can be attributed to a janky
5016        /// frame.
5017        #[prost(int32, optional, tag="7")]
5018        pub jank_type: ::core::option::Option<i32>,
5019        #[prost(enumeration="PredictionType", optional, tag="8")]
5020        pub prediction_type: ::core::option::Option<i32>,
5021        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5022        pub jank_severity_type: ::core::option::Option<i32>,
5023    }
5024    /// FrameEnd just sends the cookie to indicate that the corresponding
5025    /// <display/surface>frame slice's end.
5026    #[derive(Clone, PartialEq, ::prost::Message)]
5027    pub struct FrameEnd {
5028        #[prost(int64, optional, tag="1")]
5029        pub cookie: ::core::option::Option<i64>,
5030    }
5031    /// Specifies the reason(s) most likely to have caused the jank.
5032    /// Used as a bitmask.
5033    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5034    #[repr(i32)]
5035    pub enum JankType {
5036        JankUnspecified = 0,
5037        JankNone = 1,
5038        JankSfScheduling = 2,
5039        JankPredictionError = 4,
5040        JankDisplayHal = 8,
5041        JankSfCpuDeadlineMissed = 16,
5042        JankSfGpuDeadlineMissed = 32,
5043        JankAppDeadlineMissed = 64,
5044        JankBufferStuffing = 128,
5045        JankUnknown = 256,
5046        JankSfStuffing = 512,
5047        JankDropped = 1024,
5048    }
5049    impl JankType {
5050        /// String value of the enum field names used in the ProtoBuf definition.
5051        ///
5052        /// The values are not transformed in any way and thus are considered stable
5053        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5054        pub fn as_str_name(&self) -> &'static str {
5055            match self {
5056                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5057                JankType::JankNone => "JANK_NONE",
5058                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5059                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5060                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5061                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5062                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5063                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5064                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5065                JankType::JankUnknown => "JANK_UNKNOWN",
5066                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5067                JankType::JankDropped => "JANK_DROPPED",
5068            }
5069        }
5070    }
5071    /// Specifies the severity of a jank.
5072    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5073    #[repr(i32)]
5074    pub enum JankSeverityType {
5075        SeverityUnknown = 0,
5076        SeverityNone = 1,
5077        SeverityPartial = 2,
5078        SeverityFull = 3,
5079    }
5080    impl JankSeverityType {
5081        /// String value of the enum field names used in the ProtoBuf definition.
5082        ///
5083        /// The values are not transformed in any way and thus are considered stable
5084        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5085        pub fn as_str_name(&self) -> &'static str {
5086            match self {
5087                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5088                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5089                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5090                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5091            }
5092        }
5093    }
5094    /// Specifies how a frame was presented on screen w.r.t. timing.
5095    /// Can be different for SurfaceFrame and DisplayFrame.
5096    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5097    #[repr(i32)]
5098    pub enum PresentType {
5099        PresentUnspecified = 0,
5100        PresentOnTime = 1,
5101        PresentLate = 2,
5102        PresentEarly = 3,
5103        PresentDropped = 4,
5104        PresentUnknown = 5,
5105    }
5106    impl PresentType {
5107        /// String value of the enum field names used in the ProtoBuf definition.
5108        ///
5109        /// The values are not transformed in any way and thus are considered stable
5110        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5111        pub fn as_str_name(&self) -> &'static str {
5112            match self {
5113                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5114                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5115                PresentType::PresentLate => "PRESENT_LATE",
5116                PresentType::PresentEarly => "PRESENT_EARLY",
5117                PresentType::PresentDropped => "PRESENT_DROPPED",
5118                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5119            }
5120        }
5121    }
5122    /// Specifies if the predictions for the frame are still valid, expired or
5123    /// unknown.
5124    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5125    #[repr(i32)]
5126    pub enum PredictionType {
5127        PredictionUnspecified = 0,
5128        PredictionValid = 1,
5129        PredictionExpired = 2,
5130        PredictionUnknown = 3,
5131    }
5132    impl PredictionType {
5133        /// String value of the enum field names used in the ProtoBuf definition.
5134        ///
5135        /// The values are not transformed in any way and thus are considered stable
5136        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5137        pub fn as_str_name(&self) -> &'static str {
5138            match self {
5139                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5140                PredictionType::PredictionValid => "PREDICTION_VALID",
5141                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5142                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5143            }
5144        }
5145    }
5146    #[derive(Clone, PartialEq, ::prost::Oneof)]
5147    pub enum Event {
5148        #[prost(message, tag="1")]
5149        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5150        #[prost(message, tag="2")]
5151        ActualDisplayFrameStart(ActualDisplayFrameStart),
5152        #[prost(message, tag="3")]
5153        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5154        #[prost(message, tag="4")]
5155        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5156        #[prost(message, tag="5")]
5157        FrameEnd(FrameEnd),
5158    }
5159}
5160// End of protos/perfetto/trace/android/frame_timeline_event.proto
5161
5162// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5163
5164/// Generated by Android's GpuService.
5165#[derive(Clone, PartialEq, ::prost::Message)]
5166pub struct GpuMemTotalEvent {
5167    #[prost(uint32, optional, tag="1")]
5168    pub gpu_id: ::core::option::Option<u32>,
5169    #[prost(uint32, optional, tag="2")]
5170    pub pid: ::core::option::Option<u32>,
5171    #[prost(uint64, optional, tag="3")]
5172    pub size: ::core::option::Option<u64>,
5173}
5174// End of protos/perfetto/trace/android/gpu_mem_event.proto
5175
5176// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5177
5178/// Generated by Android's SurfaceFlinger.
5179#[derive(Clone, PartialEq, ::prost::Message)]
5180pub struct GraphicsFrameEvent {
5181    #[prost(message, optional, tag="1")]
5182    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5183}
5184/// Nested message and enum types in `GraphicsFrameEvent`.
5185pub mod graphics_frame_event {
5186    #[derive(Clone, PartialEq, ::prost::Message)]
5187    pub struct BufferEvent {
5188        #[prost(uint32, optional, tag="1")]
5189        pub frame_number: ::core::option::Option<u32>,
5190        #[prost(enumeration="BufferEventType", optional, tag="2")]
5191        pub r#type: ::core::option::Option<i32>,
5192        #[prost(string, optional, tag="3")]
5193        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5194        /// If no duration is set, the event is an instant event.
5195        #[prost(uint64, optional, tag="4")]
5196        pub duration_ns: ::core::option::Option<u64>,
5197        /// Unique buffer identifier.
5198        #[prost(uint32, optional, tag="5")]
5199        pub buffer_id: ::core::option::Option<u32>,
5200    }
5201    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5202    #[repr(i32)]
5203    pub enum BufferEventType {
5204        Unspecified = 0,
5205        Dequeue = 1,
5206        Queue = 2,
5207        Post = 3,
5208        AcquireFence = 4,
5209        Latch = 5,
5210        /// HWC will compose this buffer
5211        HwcCompositionQueued = 6,
5212        /// renderEngine composition
5213        FallbackComposition = 7,
5214        PresentFence = 8,
5215        ReleaseFence = 9,
5216        Modify = 10,
5217        Detach = 11,
5218        Attach = 12,
5219        Cancel = 13,
5220    }
5221    impl BufferEventType {
5222        /// String value of the enum field names used in the ProtoBuf definition.
5223        ///
5224        /// The values are not transformed in any way and thus are considered stable
5225        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5226        pub fn as_str_name(&self) -> &'static str {
5227            match self {
5228                BufferEventType::Unspecified => "UNSPECIFIED",
5229                BufferEventType::Dequeue => "DEQUEUE",
5230                BufferEventType::Queue => "QUEUE",
5231                BufferEventType::Post => "POST",
5232                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5233                BufferEventType::Latch => "LATCH",
5234                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5235                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5236                BufferEventType::PresentFence => "PRESENT_FENCE",
5237                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5238                BufferEventType::Modify => "MODIFY",
5239                BufferEventType::Detach => "DETACH",
5240                BufferEventType::Attach => "ATTACH",
5241                BufferEventType::Cancel => "CANCEL",
5242            }
5243        }
5244    }
5245}
5246// End of protos/perfetto/trace/android/graphics_frame_event.proto
5247
5248// Begin of protos/perfetto/trace/android/initial_display_state.proto
5249
5250#[derive(Clone, PartialEq, ::prost::Message)]
5251pub struct InitialDisplayState {
5252    /// Same values as android.view.Display.STATE_*
5253    #[prost(int32, optional, tag="1")]
5254    pub display_state: ::core::option::Option<i32>,
5255    #[prost(double, optional, tag="2")]
5256    pub brightness: ::core::option::Option<f64>,
5257}
5258// End of protos/perfetto/trace/android/initial_display_state.proto
5259
5260// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
5261
5262#[derive(Clone, PartialEq, ::prost::Message)]
5263pub struct KernelWakelockData {
5264    /// This is only emitted when we encounter new wakelocks.
5265    #[prost(message, repeated, tag="1")]
5266    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
5267    /// Interning id.
5268    #[prost(uint32, repeated, tag="2")]
5269    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
5270    /// If we interned the wakelock name in this packet, this is the total time
5271    /// the wakelock has been held.
5272    /// If not, it's a delta from the last time we saw it.
5273    #[prost(uint64, repeated, tag="3")]
5274    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
5275    #[prost(uint64, optional, tag="4")]
5276    pub error_flags: ::core::option::Option<u64>,
5277}
5278/// Nested message and enum types in `KernelWakelockData`.
5279pub mod kernel_wakelock_data {
5280    #[derive(Clone, PartialEq, ::prost::Message)]
5281    pub struct Wakelock {
5282        /// Interning id.
5283        #[prost(uint32, optional, tag="1")]
5284        pub wakelock_id: ::core::option::Option<u32>,
5285        /// Name of the wakelock.
5286        #[prost(string, optional, tag="2")]
5287        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
5288        /// Type of the wakelock. We record data about both true kernel wakelocks
5289        /// and "native" wakelocks which are taken in userspace but are more
5290        /// conceptually similar to kernel wakelocks than normal userspace ones.
5291        #[prost(enumeration="wakelock::Type", optional, tag="3")]
5292        pub wakelock_type: ::core::option::Option<i32>,
5293    }
5294    /// Nested message and enum types in `Wakelock`.
5295    pub mod wakelock {
5296        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5297        #[repr(i32)]
5298        pub enum Type {
5299            WakelockTypeUnknown = 0,
5300            WakelockTypeKernel = 1,
5301            WakelockTypeNative = 2,
5302        }
5303        impl Type {
5304            /// String value of the enum field names used in the ProtoBuf definition.
5305            ///
5306            /// The values are not transformed in any way and thus are considered stable
5307            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5308            pub fn as_str_name(&self) -> &'static str {
5309                match self {
5310                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5311                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5312                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5313                }
5314            }
5315        }
5316    }
5317}
5318/// NetworkPacketEvent records the details of a single packet sent or received
5319/// on the network (in Linux kernel terminology, one sk_buff struct).
5320#[derive(Clone, PartialEq, ::prost::Message)]
5321pub struct NetworkPacketEvent {
5322    /// The direction traffic is flowing for this event.
5323    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5324    pub direction: ::core::option::Option<i32>,
5325    /// The name of the network interface if available (e.g. 'rmnet0').
5326    #[prost(string, optional, tag="2")]
5327    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
5328    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5329    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5330    /// NetworkPacketContext.
5331    #[prost(uint32, optional, tag="3")]
5332    pub length: ::core::option::Option<u32>,
5333    /// The Linux user id associated with the packet's socket.
5334    #[prost(uint32, optional, tag="4")]
5335    pub uid: ::core::option::Option<u32>,
5336    /// The Android network tag associated with the packet's socket.
5337    #[prost(uint32, optional, tag="5")]
5338    pub tag: ::core::option::Option<u32>,
5339    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5340    #[prost(uint32, optional, tag="6")]
5341    pub ip_proto: ::core::option::Option<u32>,
5342    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5343    #[prost(uint32, optional, tag="7")]
5344    pub tcp_flags: ::core::option::Option<u32>,
5345    /// The local udp/tcp port of the packet.
5346    #[prost(uint32, optional, tag="8")]
5347    pub local_port: ::core::option::Option<u32>,
5348    /// The remote udp/tcp port of the packet.
5349    #[prost(uint32, optional, tag="9")]
5350    pub remote_port: ::core::option::Option<u32>,
5351    /// The 1-byte ICMP type identifier.
5352    #[prost(uint32, optional, tag="10")]
5353    pub icmp_type: ::core::option::Option<u32>,
5354    /// The 1-byte ICMP code identifier.
5355    #[prost(uint32, optional, tag="11")]
5356    pub icmp_code: ::core::option::Option<u32>,
5357}
5358/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5359#[derive(Clone, PartialEq, ::prost::Message)]
5360pub struct NetworkPacketBundle {
5361    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5362    /// enclosing TracePacket's timestamp.
5363    #[prost(uint64, repeated, tag="3")]
5364    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5365    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5366    #[prost(uint32, repeated, tag="4")]
5367    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5368    /// Total number of packets in the bundle (when above aggregation_threshold).
5369    #[prost(uint32, optional, tag="5")]
5370    pub total_packets: ::core::option::Option<u32>,
5371    /// Duration between first and last packet (when above aggregation_threshold).
5372    #[prost(uint64, optional, tag="6")]
5373    pub total_duration: ::core::option::Option<u64>,
5374    /// Total packet length in bytes (when above aggregation_threshold).
5375    #[prost(uint64, optional, tag="7")]
5376    pub total_length: ::core::option::Option<u64>,
5377    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5378    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5379}
5380/// Nested message and enum types in `NetworkPacketBundle`.
5381pub mod network_packet_bundle {
5382    #[derive(Clone, PartialEq, ::prost::Oneof)]
5383    pub enum PacketContext {
5384        /// The intern id for looking up the associated packet context.
5385        #[prost(uint64, tag="1")]
5386        Iid(u64),
5387        /// The inlined context for events in this bundle.
5388        #[prost(message, tag="2")]
5389        Ctx(super::NetworkPacketEvent),
5390    }
5391}
5392/// An internable packet context.
5393#[derive(Clone, PartialEq, ::prost::Message)]
5394pub struct NetworkPacketContext {
5395    #[prost(uint64, optional, tag="1")]
5396    pub iid: ::core::option::Option<u64>,
5397    #[prost(message, optional, tag="2")]
5398    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5399}
5400// End of protos/perfetto/trace/android/network_trace.proto
5401
5402// Begin of protos/perfetto/trace/android/packages_list.proto
5403
5404#[derive(Clone, PartialEq, ::prost::Message)]
5405pub struct PackagesList {
5406    #[prost(message, repeated, tag="1")]
5407    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5408    /// At least one error occurred parsing the packages.list.
5409    #[prost(bool, optional, tag="2")]
5410    pub parse_error: ::core::option::Option<bool>,
5411    /// Failed to open / read packages.list.
5412    #[prost(bool, optional, tag="3")]
5413    pub read_error: ::core::option::Option<bool>,
5414}
5415/// Nested message and enum types in `PackagesList`.
5416pub mod packages_list {
5417    #[derive(Clone, PartialEq, ::prost::Message)]
5418    pub struct PackageInfo {
5419        #[prost(string, optional, tag="1")]
5420        pub name: ::core::option::Option<::prost::alloc::string::String>,
5421        #[prost(uint64, optional, tag="2")]
5422        pub uid: ::core::option::Option<u64>,
5423        #[prost(bool, optional, tag="3")]
5424        pub debuggable: ::core::option::Option<bool>,
5425        #[prost(bool, optional, tag="4")]
5426        pub profileable_from_shell: ::core::option::Option<bool>,
5427        #[prost(int64, optional, tag="5")]
5428        pub version_code: ::core::option::Option<i64>,
5429    }
5430}
5431// End of protos/perfetto/trace/android/packages_list.proto
5432
5433// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5434
5435#[derive(Clone, PartialEq, ::prost::Message)]
5436pub struct PixelModemEvents {
5437    /// Pigweed-format dehydrated events.
5438    #[prost(bytes="vec", repeated, tag="1")]
5439    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5440    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5441    /// timestamp is the absolute timestamp of the first event. Subsequent
5442    /// timestamps are deltas from the previous timestamp.
5443    /// The nth entry from `events` gets the nth entry here.
5444    #[prost(uint64, repeated, packed="false", tag="2")]
5445    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5446}
5447/// NB: this is not emitted in the trace but can be prepended later.
5448#[derive(Clone, PartialEq, ::prost::Message)]
5449pub struct PixelModemTokenDatabase {
5450    /// Pigweed-format database to allow event rehydration.
5451    #[prost(bytes="vec", optional, tag="1")]
5452    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5453}
5454// End of protos/perfetto/trace/android/pixel_modem_events.proto
5455
5456// Begin of protos/perfetto/trace/android/protolog.proto
5457
5458/// represents a single log entry 
5459#[derive(Clone, PartialEq, ::prost::Message)]
5460pub struct ProtoLogMessage {
5461    /// log statement identifier, created from message string and log level. 
5462    #[prost(fixed64, optional, tag="1")]
5463    pub message_id: ::core::option::Option<u64>,
5464    /// string parameters passed to the log call that have been interned. 
5465    #[prost(uint32, repeated, packed="false", tag="2")]
5466    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5467    /// integer parameters passed to the log call. 
5468    #[prost(sint64, repeated, packed="false", tag="3")]
5469    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5470    /// floating point parameters passed to the log call. 
5471    #[prost(double, repeated, packed="false", tag="4")]
5472    pub double_params: ::prost::alloc::vec::Vec<f64>,
5473    /// boolean parameters passed to the log call. 
5474    #[prost(int32, repeated, packed="false", tag="5")]
5475    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5476    /// id of the interned stacktrace string
5477    /// (only dumped if explicitly confuigured to do so)
5478    #[prost(uint32, optional, tag="6")]
5479    pub stacktrace_iid: ::core::option::Option<u32>,
5480}
5481/// contains all the data required to fully decode the protolog messages 
5482#[derive(Clone, PartialEq, ::prost::Message)]
5483pub struct ProtoLogViewerConfig {
5484    #[prost(message, repeated, tag="1")]
5485    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
5486    #[prost(message, repeated, tag="2")]
5487    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
5488}
5489/// Nested message and enum types in `ProtoLogViewerConfig`.
5490pub mod proto_log_viewer_config {
5491    #[derive(Clone, PartialEq, ::prost::Message)]
5492    pub struct MessageData {
5493        /// the id of the message that is logged in a ProtoLogMessage
5494        #[prost(fixed64, optional, tag="1")]
5495        pub message_id: ::core::option::Option<u64>,
5496        /// the string representation of the message
5497        #[prost(string, optional, tag="2")]
5498        pub message: ::core::option::Option<::prost::alloc::string::String>,
5499        /// the level of the message
5500        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
5501        pub level: ::core::option::Option<i32>,
5502        /// the id of the log group this message belongs to
5503        #[prost(uint32, optional, tag="4")]
5504        pub group_id: ::core::option::Option<u32>,
5505        /// path to the file where the message was logged
5506        #[prost(string, optional, tag="5")]
5507        pub location: ::core::option::Option<::prost::alloc::string::String>,
5508    }
5509    /// information about a ProtoLog log group 
5510    #[derive(Clone, PartialEq, ::prost::Message)]
5511    pub struct Group {
5512        #[prost(uint32, optional, tag="1")]
5513        pub id: ::core::option::Option<u32>,
5514        #[prost(string, optional, tag="2")]
5515        pub name: ::core::option::Option<::prost::alloc::string::String>,
5516        #[prost(string, optional, tag="3")]
5517        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5518    }
5519}
5520// End of protos/perfetto/trace/android/protolog.proto
5521
5522// Begin of protos/perfetto/trace/android/shell_transition.proto
5523
5524/// ShellTransition messages record information about the shell transitions in
5525/// the system. This is used to track the animations that are created and execute
5526/// through the shell transition system.
5527#[derive(Clone, PartialEq, ::prost::Message)]
5528pub struct ShellTransition {
5529    /// The unique identifier of the transition.
5530    #[prost(int32, optional, tag="1")]
5531    pub id: ::core::option::Option<i32>,
5532    /// The time the transition was created on the WM side
5533    /// (using SystemClock.elapsedRealtimeNanos())
5534    #[prost(int64, optional, tag="2")]
5535    pub create_time_ns: ::core::option::Option<i64>,
5536    /// The time the transition was sent from the WM side to shell
5537    /// (using SystemClock.elapsedRealtimeNanos())
5538    #[prost(int64, optional, tag="3")]
5539    pub send_time_ns: ::core::option::Option<i64>,
5540    /// The time the transition was dispatched by shell to execute
5541    /// (using SystemClock.elapsedRealtimeNanos())
5542    #[prost(int64, optional, tag="4")]
5543    pub dispatch_time_ns: ::core::option::Option<i64>,
5544    /// If the transition merge was accepted by the transition handler, this
5545    /// contains the time the transition was merged into transition with id
5546    /// `merge_target`.
5547    /// (using SystemClock.elapsedRealtimeNanos())
5548    #[prost(int64, optional, tag="5")]
5549    pub merge_time_ns: ::core::option::Option<i64>,
5550    /// The time shell proposed the transition should be merged to the transition
5551    /// handler into transition with id `merge_target`.
5552    /// (using SystemClock.elapsedRealtimeNanos()).
5553    #[prost(int64, optional, tag="6")]
5554    pub merge_request_time_ns: ::core::option::Option<i64>,
5555    /// If the transition was aborted on the shell side, this is the time that
5556    /// occurred.
5557    /// (using SystemClock.elapsedRealtimeNanos())
5558    #[prost(int64, optional, tag="7")]
5559    pub shell_abort_time_ns: ::core::option::Option<i64>,
5560    /// If the transition was aborted on the wm side, this is the time that
5561    /// occurred.
5562    /// (using SystemClock.elapsedRealtimeNanos())
5563    #[prost(int64, optional, tag="8")]
5564    pub wm_abort_time_ns: ::core::option::Option<i64>,
5565    /// The time WM considers the transition to be complete.
5566    /// (using SystemClock.elapsedRealtimeNanos())
5567    #[prost(int64, optional, tag="9")]
5568    pub finish_time_ns: ::core::option::Option<i64>,
5569    /// The id of the transaction that WM proposed to use as the starting
5570    /// transaction. It contains all the layer changes required to setup the
5571    /// transition and should be executed right at the start of the transition
5572    /// by the transition handler.
5573    #[prost(uint64, optional, tag="10")]
5574    pub start_transaction_id: ::core::option::Option<u64>,
5575    /// The if of the transaction that WM proposed to use as the finish
5576    /// transaction. It contains all the layer changes required to set the final
5577    /// state of the transition.
5578    #[prost(uint64, optional, tag="11")]
5579    pub finish_transaction_id: ::core::option::Option<u64>,
5580    /// The id of the handler that executed the transition. A HandlerMappings
5581    /// message in the trace will contain the mapping of id to a string
5582    /// representation of the handler.
5583    #[prost(int32, optional, tag="12")]
5584    pub handler: ::core::option::Option<i32>,
5585    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
5586    #[prost(int32, optional, tag="13")]
5587    pub r#type: ::core::option::Option<i32>,
5588    /// The list of targets that are part of this transition.
5589    #[prost(message, repeated, tag="14")]
5590    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
5591    /// The id of the transition we have requested to merge or have merged this
5592    /// transition into.
5593    #[prost(int32, optional, tag="15")]
5594    pub merge_target: ::core::option::Option<i32>,
5595    /// The flags set on this transition.
5596    #[prost(int32, optional, tag="16")]
5597    pub flags: ::core::option::Option<i32>,
5598    /// The time the starting window was removed. Tracked because this can
5599    /// happen after the transition finishes, but the app may not yet be visible
5600    /// until the starting window is removed. So in a sense the transition is not
5601    /// finished until the starting window is removed. (b/284302118)
5602    /// (using SystemClock.elapsedRealtimeNanos())
5603    #[prost(int64, optional, tag="17")]
5604    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
5605}
5606/// Nested message and enum types in `ShellTransition`.
5607pub mod shell_transition {
5608    /// Contains the information about the windows targeted in a transition.
5609    #[derive(Clone, PartialEq, ::prost::Message)]
5610    pub struct Target {
5611        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
5612        #[prost(int32, optional, tag="1")]
5613        pub mode: ::core::option::Option<i32>,
5614        /// The layer id of this target.
5615        #[prost(int32, optional, tag="2")]
5616        pub layer_id: ::core::option::Option<i32>,
5617        /// The window id of this target.
5618        #[prost(int32, optional, tag="3")]
5619        pub window_id: ::core::option::Option<i32>,
5620        /// The flags set on this target.
5621        #[prost(int32, optional, tag="4")]
5622        pub flags: ::core::option::Option<i32>,
5623    }
5624}
5625/// Contains mappings from handler ids to string representation of the handlers.
5626#[derive(Clone, PartialEq, ::prost::Message)]
5627pub struct ShellHandlerMappings {
5628    #[prost(message, repeated, tag="1")]
5629    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
5630}
5631#[derive(Clone, PartialEq, ::prost::Message)]
5632pub struct ShellHandlerMapping {
5633    /// The id of the handler used in the ShellTransition message.
5634    #[prost(int32, optional, tag="1")]
5635    pub id: ::core::option::Option<i32>,
5636    /// A human readable and meaningful string representation of the handler.
5637    #[prost(string, optional, tag="2")]
5638    pub name: ::core::option::Option<::prost::alloc::string::String>,
5639}
5640// End of protos/perfetto/trace/android/shell_transition.proto
5641
5642// Begin of protos/perfetto/trace/android/graphics/rect.proto
5643
5644#[derive(Clone, PartialEq, ::prost::Message)]
5645pub struct RectProto {
5646    #[prost(int32, optional, tag="1")]
5647    pub left: ::core::option::Option<i32>,
5648    #[prost(int32, optional, tag="2")]
5649    pub top: ::core::option::Option<i32>,
5650    #[prost(int32, optional, tag="3")]
5651    pub right: ::core::option::Option<i32>,
5652    #[prost(int32, optional, tag="4")]
5653    pub bottom: ::core::option::Option<i32>,
5654}
5655// End of protos/perfetto/trace/android/graphics/rect.proto
5656
5657// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
5658
5659#[derive(Clone, PartialEq, ::prost::Message)]
5660pub struct RegionProto {
5661    #[prost(message, repeated, tag="2")]
5662    pub rect: ::prost::alloc::vec::Vec<RectProto>,
5663}
5664#[derive(Clone, PartialEq, ::prost::Message)]
5665pub struct SizeProto {
5666    #[prost(int32, optional, tag="1")]
5667    pub w: ::core::option::Option<i32>,
5668    #[prost(int32, optional, tag="2")]
5669    pub h: ::core::option::Option<i32>,
5670}
5671#[derive(Clone, PartialEq, ::prost::Message)]
5672pub struct TransformProto {
5673    #[prost(float, optional, tag="1")]
5674    pub dsdx: ::core::option::Option<f32>,
5675    #[prost(float, optional, tag="2")]
5676    pub dtdx: ::core::option::Option<f32>,
5677    #[prost(float, optional, tag="3")]
5678    pub dsdy: ::core::option::Option<f32>,
5679    #[prost(float, optional, tag="4")]
5680    pub dtdy: ::core::option::Option<f32>,
5681    #[prost(int32, optional, tag="5")]
5682    pub r#type: ::core::option::Option<i32>,
5683}
5684#[derive(Clone, PartialEq, ::prost::Message)]
5685pub struct ColorProto {
5686    #[prost(float, optional, tag="1")]
5687    pub r: ::core::option::Option<f32>,
5688    #[prost(float, optional, tag="2")]
5689    pub g: ::core::option::Option<f32>,
5690    #[prost(float, optional, tag="3")]
5691    pub b: ::core::option::Option<f32>,
5692    #[prost(float, optional, tag="4")]
5693    pub a: ::core::option::Option<f32>,
5694}
5695#[derive(Clone, PartialEq, ::prost::Message)]
5696pub struct InputWindowInfoProto {
5697    #[prost(uint32, optional, tag="1")]
5698    pub layout_params_flags: ::core::option::Option<u32>,
5699    #[prost(int32, optional, tag="2")]
5700    pub layout_params_type: ::core::option::Option<i32>,
5701    #[prost(message, optional, tag="3")]
5702    pub frame: ::core::option::Option<RectProto>,
5703    #[prost(message, optional, tag="4")]
5704    pub touchable_region: ::core::option::Option<RegionProto>,
5705    #[prost(int32, optional, tag="5")]
5706    pub surface_inset: ::core::option::Option<i32>,
5707    #[prost(bool, optional, tag="6")]
5708    pub visible: ::core::option::Option<bool>,
5709    #[deprecated]
5710    #[prost(bool, optional, tag="7")]
5711    pub can_receive_keys: ::core::option::Option<bool>,
5712    #[prost(bool, optional, tag="8")]
5713    pub focusable: ::core::option::Option<bool>,
5714    #[prost(bool, optional, tag="9")]
5715    pub has_wallpaper: ::core::option::Option<bool>,
5716    #[prost(float, optional, tag="10")]
5717    pub global_scale_factor: ::core::option::Option<f32>,
5718    #[deprecated]
5719    #[prost(float, optional, tag="11")]
5720    pub window_x_scale: ::core::option::Option<f32>,
5721    #[deprecated]
5722    #[prost(float, optional, tag="12")]
5723    pub window_y_scale: ::core::option::Option<f32>,
5724    #[prost(int32, optional, tag="13")]
5725    pub crop_layer_id: ::core::option::Option<i32>,
5726    #[prost(bool, optional, tag="14")]
5727    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
5728    #[prost(message, optional, tag="15")]
5729    pub touchable_region_crop: ::core::option::Option<RectProto>,
5730    #[prost(message, optional, tag="16")]
5731    pub transform: ::core::option::Option<TransformProto>,
5732    #[prost(uint32, optional, tag="17")]
5733    pub input_config: ::core::option::Option<u32>,
5734}
5735#[derive(Clone, PartialEq, ::prost::Message)]
5736pub struct BlurRegion {
5737    #[prost(uint32, optional, tag="1")]
5738    pub blur_radius: ::core::option::Option<u32>,
5739    #[prost(uint32, optional, tag="2")]
5740    pub corner_radius_tl: ::core::option::Option<u32>,
5741    #[prost(uint32, optional, tag="3")]
5742    pub corner_radius_tr: ::core::option::Option<u32>,
5743    #[prost(uint32, optional, tag="4")]
5744    pub corner_radius_bl: ::core::option::Option<u32>,
5745    #[prost(float, optional, tag="5")]
5746    pub corner_radius_br: ::core::option::Option<f32>,
5747    #[prost(float, optional, tag="6")]
5748    pub alpha: ::core::option::Option<f32>,
5749    #[prost(int32, optional, tag="7")]
5750    pub left: ::core::option::Option<i32>,
5751    #[prost(int32, optional, tag="8")]
5752    pub top: ::core::option::Option<i32>,
5753    #[prost(int32, optional, tag="9")]
5754    pub right: ::core::option::Option<i32>,
5755    #[prost(int32, optional, tag="10")]
5756    pub bottom: ::core::option::Option<i32>,
5757}
5758#[derive(Clone, PartialEq, ::prost::Message)]
5759pub struct ColorTransformProto {
5760    /// This will be a 4x4 matrix of float values
5761    #[prost(float, repeated, tag="1")]
5762    pub val: ::prost::alloc::vec::Vec<f32>,
5763}
5764#[derive(Clone, PartialEq, ::prost::Message)]
5765pub struct BoxShadowSettings {
5766    #[prost(message, repeated, tag="1")]
5767    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
5768}
5769/// Nested message and enum types in `BoxShadowSettings`.
5770pub mod box_shadow_settings {
5771    #[derive(Clone, PartialEq, ::prost::Message)]
5772    pub struct BoxShadowParams {
5773        #[prost(float, optional, tag="1")]
5774        pub blur_radius: ::core::option::Option<f32>,
5775        #[prost(float, optional, tag="2")]
5776        pub spread_radius: ::core::option::Option<f32>,
5777        #[prost(int32, optional, tag="3")]
5778        pub color: ::core::option::Option<i32>,
5779        #[prost(float, optional, tag="4")]
5780        pub offset_x: ::core::option::Option<f32>,
5781        #[prost(float, optional, tag="5")]
5782        pub offset_y: ::core::option::Option<f32>,
5783    }
5784}
5785#[derive(Clone, PartialEq, ::prost::Message)]
5786pub struct BorderSettings {
5787    #[prost(float, optional, tag="1")]
5788    pub stroke_width: ::core::option::Option<f32>,
5789    #[prost(int32, optional, tag="2")]
5790    pub color: ::core::option::Option<i32>,
5791}
5792// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
5793
5794/// Message used by Winscope to process legacy trace files.
5795/// Represents a file full of surface flinger trace entries.
5796/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
5797/// (.LYRTRACE), such that they can be easily identified.
5798#[derive(Clone, PartialEq, ::prost::Message)]
5799pub struct LayersTraceFileProto {
5800    /// Must be the first field, set to value in MagicNumber
5801    #[prost(fixed64, optional, tag="1")]
5802    pub magic_number: ::core::option::Option<u64>,
5803    #[prost(message, repeated, tag="2")]
5804    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
5805    /// Offset between real-time clock and elapsed time clock in nanoseconds.
5806    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
5807    /// systemTime(SYSTEM_TIME_MONOTONIC)
5808    #[prost(fixed64, optional, tag="3")]
5809    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
5810}
5811/// Nested message and enum types in `LayersTraceFileProto`.
5812pub mod layers_trace_file_proto {
5813    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
5814    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
5815    /// and there's no nice way to put 64bit constants into .proto files.
5816    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5817    #[repr(i32)]
5818    pub enum MagicNumber {
5819        Invalid = 0,
5820        /// LYRT (little-endian ASCII)
5821        L = 1414682956,
5822        /// RACE (little-endian ASCII)
5823        H = 1162035538,
5824    }
5825    impl MagicNumber {
5826        /// String value of the enum field names used in the ProtoBuf definition.
5827        ///
5828        /// The values are not transformed in any way and thus are considered stable
5829        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5830        pub fn as_str_name(&self) -> &'static str {
5831            match self {
5832                MagicNumber::Invalid => "INVALID",
5833                MagicNumber::L => "MAGIC_NUMBER_L",
5834                MagicNumber::H => "MAGIC_NUMBER_H",
5835            }
5836        }
5837    }
5838}
5839#[derive(Clone, PartialEq, ::prost::Message)]
5840pub struct LayersSnapshotProto {
5841    /// elapsed realtime in nanos since boot of when this entry was logged
5842    #[prost(sfixed64, optional, tag="1")]
5843    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
5844    /// SurfaceFlinger's stage where the snapshot was triggered.
5845    /// Currently either "visibleRegionsDirty" or "bufferLatched".
5846    #[prost(string, optional, tag="2")]
5847    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
5848    #[prost(message, optional, tag="3")]
5849    pub layers: ::core::option::Option<LayersProto>,
5850    /// Blob for the current HWC information for all layers, reported by dumpsys.
5851    /// Example:
5852    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
5853    #[prost(string, optional, tag="4")]
5854    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
5855    /// Excludes state sent during composition like visible region and composition
5856    /// type.
5857    #[prost(bool, optional, tag="5")]
5858    pub excludes_composition_state: ::core::option::Option<bool>,
5859    /// Number of missed entries since the last entry was recorded.
5860    #[prost(uint32, optional, tag="6")]
5861    pub missed_entries: ::core::option::Option<u32>,
5862    #[prost(message, repeated, tag="7")]
5863    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
5864    #[prost(int64, optional, tag="8")]
5865    pub vsync_id: ::core::option::Option<i64>,
5866}
5867/// Contains a list of all layers.
5868#[derive(Clone, PartialEq, ::prost::Message)]
5869pub struct LayersProto {
5870    #[prost(message, repeated, tag="1")]
5871    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
5872}
5873#[derive(Clone, PartialEq, ::prost::Message)]
5874pub struct DisplayProto {
5875    #[prost(uint64, optional, tag="1")]
5876    pub id: ::core::option::Option<u64>,
5877    /// Display descriptor, e.g. "Built-In Screen"
5878    #[prost(string, optional, tag="2")]
5879    pub name: ::core::option::Option<::prost::alloc::string::String>,
5880    #[prost(uint32, optional, tag="3")]
5881    pub layer_stack: ::core::option::Option<u32>,
5882    #[prost(message, optional, tag="4")]
5883    pub size: ::core::option::Option<SizeProto>,
5884    #[prost(message, optional, tag="5")]
5885    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
5886    #[prost(message, optional, tag="6")]
5887    pub transform: ::core::option::Option<TransformProto>,
5888    #[prost(bool, optional, tag="7")]
5889    pub is_virtual: ::core::option::Option<bool>,
5890    #[prost(double, optional, tag="8")]
5891    pub dpi_x: ::core::option::Option<f64>,
5892    #[prost(double, optional, tag="9")]
5893    pub dpi_y: ::core::option::Option<f64>,
5894}
5895/// Information about each layer.
5896#[derive(Clone, PartialEq, ::prost::Message)]
5897pub struct LayerProto {
5898    /// unique id per layer.
5899    #[prost(int32, optional, tag="1")]
5900    pub id: ::core::option::Option<i32>,
5901    /// unique name per layer.
5902    /// Example: "Wallpaper".
5903    #[prost(string, optional, tag="2")]
5904    pub name: ::core::option::Option<::prost::alloc::string::String>,
5905    /// list of children this layer may have. May be empty.
5906    #[prost(int32, repeated, tag="3")]
5907    pub children: ::prost::alloc::vec::Vec<i32>,
5908    /// list of layers that are z order relative to this layer.
5909    #[prost(int32, repeated, tag="4")]
5910    pub relatives: ::prost::alloc::vec::Vec<i32>,
5911    /// The type of layer.
5912    /// Examples: "ContainerLayer", "BufferStateLayer".
5913    #[prost(string, optional, tag="5")]
5914    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
5915    #[prost(message, optional, tag="6")]
5916    pub transparent_region: ::core::option::Option<RegionProto>,
5917    #[prost(message, optional, tag="7")]
5918    pub visible_region: ::core::option::Option<RegionProto>,
5919    #[prost(message, optional, tag="8")]
5920    pub damage_region: ::core::option::Option<RegionProto>,
5921    #[prost(uint32, optional, tag="9")]
5922    pub layer_stack: ::core::option::Option<u32>,
5923    /// The layer's z order. Can be z order in layer stack, relative to parent,
5924    /// or relative to another layer specified in zOrderRelative.
5925    #[prost(int32, optional, tag="10")]
5926    pub z: ::core::option::Option<i32>,
5927    /// The layer's position on the display.
5928    #[prost(message, optional, tag="11")]
5929    pub position: ::core::option::Option<PositionProto>,
5930    /// The layer's requested position.
5931    #[prost(message, optional, tag="12")]
5932    pub requested_position: ::core::option::Option<PositionProto>,
5933    /// The layer's size.
5934    #[prost(message, optional, tag="13")]
5935    pub size: ::core::option::Option<SizeProto>,
5936    /// The layer's crop in its own bounds.
5937    #[prost(message, optional, tag="14")]
5938    pub crop: ::core::option::Option<RectProto>,
5939    /// The layer's crop in its parent's bounds.
5940    #[deprecated]
5941    #[prost(message, optional, tag="15")]
5942    pub final_crop: ::core::option::Option<RectProto>,
5943    #[prost(bool, optional, tag="16")]
5944    pub is_opaque: ::core::option::Option<bool>,
5945    #[prost(bool, optional, tag="17")]
5946    pub invalidate: ::core::option::Option<bool>,
5947    /// Composition states's dataspace.
5948    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
5949    /// See full enum in
5950    /// frameworks/native/libs/nativewindow/include/android/data_space.h
5951    #[prost(string, optional, tag="18")]
5952    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
5953    /// Buffer's pixel format
5954    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
5955    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
5956    #[prost(string, optional, tag="19")]
5957    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
5958    /// The layer's actual color.
5959    #[prost(message, optional, tag="20")]
5960    pub color: ::core::option::Option<ColorProto>,
5961    /// The layer's requested color.
5962    #[prost(message, optional, tag="21")]
5963    pub requested_color: ::core::option::Option<ColorProto>,
5964    /// Can be any combination of
5965    ///     hidden = 0x01
5966    ///     opaque = 0x02,
5967    ///     secure = 0x80,
5968    #[prost(uint32, optional, tag="22")]
5969    pub flags: ::core::option::Option<u32>,
5970    /// The layer's actual transform
5971    #[prost(message, optional, tag="23")]
5972    pub transform: ::core::option::Option<TransformProto>,
5973    /// The layer's requested transform.
5974    #[prost(message, optional, tag="24")]
5975    pub requested_transform: ::core::option::Option<TransformProto>,
5976    /// The parent layer. This value can be null if there is no parent.
5977    #[prost(int32, optional, tag="25")]
5978    pub parent: ::core::option::Option<i32>,
5979    /// The layer that this layer has a z order relative to. This value can be
5980    /// null.
5981    #[prost(int32, optional, tag="26")]
5982    pub z_order_relative_of: ::core::option::Option<i32>,
5983    /// This value can be null if there's nothing to draw.
5984    #[prost(message, optional, tag="27")]
5985    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
5986    /// The number of frames available.
5987    #[prost(int32, optional, tag="28")]
5988    pub queued_frames: ::core::option::Option<i32>,
5989    #[prost(bool, optional, tag="29")]
5990    pub refresh_pending: ::core::option::Option<bool>,
5991    /// The layer's composer backend destination frame
5992    #[prost(message, optional, tag="30")]
5993    pub hwc_frame: ::core::option::Option<RectProto>,
5994    /// The layer's composer backend source crop
5995    #[prost(message, optional, tag="31")]
5996    pub hwc_crop: ::core::option::Option<FloatRectProto>,
5997    /// The layer's composer backend transform
5998    #[prost(int32, optional, tag="32")]
5999    pub hwc_transform: ::core::option::Option<i32>,
6000    #[deprecated]
6001    #[prost(int32, optional, tag="33")]
6002    pub window_type: ::core::option::Option<i32>,
6003    #[deprecated]
6004    #[prost(int32, optional, tag="34")]
6005    pub app_id: ::core::option::Option<i32>,
6006    /// The layer's composition type
6007    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6008    pub hwc_composition_type: ::core::option::Option<i32>,
6009    /// If it's a buffer layer, indicate if the content is protected
6010    #[prost(bool, optional, tag="36")]
6011    pub is_protected: ::core::option::Option<bool>,
6012    /// Current frame number being rendered.
6013    #[prost(uint64, optional, tag="37")]
6014    pub curr_frame: ::core::option::Option<u64>,
6015    /// A list of barriers that the layer is waiting to update state.
6016    #[prost(message, repeated, tag="38")]
6017    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6018    /// If active_buffer is not null, record its transform.
6019    #[prost(message, optional, tag="39")]
6020    pub buffer_transform: ::core::option::Option<TransformProto>,
6021    #[prost(int32, optional, tag="40")]
6022    pub effective_scaling_mode: ::core::option::Option<i32>,
6023    /// Layer's corner radius
6024    #[deprecated]
6025    #[prost(float, optional, tag="41")]
6026    pub corner_radius: ::core::option::Option<f32>,
6027    /// Metadata map. May be empty.
6028    #[prost(map="int32, string", tag="42")]
6029    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
6030    #[prost(message, optional, tag="43")]
6031    pub effective_transform: ::core::option::Option<TransformProto>,
6032    #[prost(message, optional, tag="44")]
6033    pub source_bounds: ::core::option::Option<FloatRectProto>,
6034    #[prost(message, optional, tag="45")]
6035    pub bounds: ::core::option::Option<FloatRectProto>,
6036    #[prost(message, optional, tag="46")]
6037    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6038    #[prost(message, optional, tag="47")]
6039    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6040    /// Crop used to draw the rounded corner.
6041    #[prost(message, optional, tag="48")]
6042    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6043    /// length of the shadow to draw around the layer, it may be set on the
6044    /// layer or set by a parent layer.
6045    #[prost(float, optional, tag="49")]
6046    pub shadow_radius: ::core::option::Option<f32>,
6047    #[prost(message, optional, tag="50")]
6048    pub color_transform: ::core::option::Option<ColorTransformProto>,
6049    #[prost(bool, optional, tag="51")]
6050    pub is_relative_of: ::core::option::Option<bool>,
6051    /// Layer's background blur radius in pixels.
6052    #[prost(int32, optional, tag="52")]
6053    pub background_blur_radius: ::core::option::Option<i32>,
6054    #[prost(uint32, optional, tag="53")]
6055    pub owner_uid: ::core::option::Option<u32>,
6056    /// Regions of a layer, where blur should be applied.
6057    #[prost(message, repeated, tag="54")]
6058    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6059    #[prost(bool, optional, tag="55")]
6060    pub is_trusted_overlay: ::core::option::Option<bool>,
6061    /// Corner radius explicitly set on layer rather than inherited
6062    #[deprecated]
6063    #[prost(float, optional, tag="56")]
6064    pub requested_corner_radius: ::core::option::Option<f32>,
6065    #[prost(message, optional, tag="57")]
6066    pub destination_frame: ::core::option::Option<RectProto>,
6067    #[prost(uint32, optional, tag="58")]
6068    pub original_id: ::core::option::Option<u32>,
6069    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6070    pub trusted_overlay: ::core::option::Option<i32>,
6071    /// Layer's scale during background blur, relative to 1.0f=100%
6072    #[prost(float, optional, tag="60")]
6073    pub background_blur_scale: ::core::option::Option<f32>,
6074    /// Layer's corner radius.
6075    #[prost(message, optional, tag="61")]
6076    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6077    /// Corner radius explicitly set on layer rather than inherited
6078    #[prost(message, optional, tag="62")]
6079    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6080    /// Corner radius explicity set as drawn by client
6081    #[prost(message, optional, tag="63")]
6082    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6083    /// Priority value of the layer set by the system.
6084    #[prost(int32, optional, tag="64")]
6085    pub system_content_priority: ::core::option::Option<i32>,
6086    /// Settings which specify how shadows should be drawn for a layer.
6087    #[prost(message, optional, tag="65")]
6088    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6089    /// Settings which specify how an outline should be drawn for a layer.
6090    #[prost(message, optional, tag="66")]
6091    pub border_settings: ::core::option::Option<BorderSettings>,
6092}
6093#[derive(Clone, PartialEq, ::prost::Message)]
6094pub struct PositionProto {
6095    #[prost(float, optional, tag="1")]
6096    pub x: ::core::option::Option<f32>,
6097    #[prost(float, optional, tag="2")]
6098    pub y: ::core::option::Option<f32>,
6099}
6100#[derive(Clone, PartialEq, ::prost::Message)]
6101pub struct FloatRectProto {
6102    #[prost(float, optional, tag="1")]
6103    pub left: ::core::option::Option<f32>,
6104    #[prost(float, optional, tag="2")]
6105    pub top: ::core::option::Option<f32>,
6106    #[prost(float, optional, tag="3")]
6107    pub right: ::core::option::Option<f32>,
6108    #[prost(float, optional, tag="4")]
6109    pub bottom: ::core::option::Option<f32>,
6110}
6111#[derive(Clone, PartialEq, ::prost::Message)]
6112pub struct CornerRadiiProto {
6113    #[prost(float, optional, tag="1")]
6114    pub tl: ::core::option::Option<f32>,
6115    #[prost(float, optional, tag="2")]
6116    pub tr: ::core::option::Option<f32>,
6117    #[prost(float, optional, tag="3")]
6118    pub bl: ::core::option::Option<f32>,
6119    #[prost(float, optional, tag="4")]
6120    pub br: ::core::option::Option<f32>,
6121}
6122#[derive(Clone, PartialEq, ::prost::Message)]
6123pub struct ActiveBufferProto {
6124    #[prost(uint32, optional, tag="1")]
6125    pub width: ::core::option::Option<u32>,
6126    #[prost(uint32, optional, tag="2")]
6127    pub height: ::core::option::Option<u32>,
6128    #[prost(uint32, optional, tag="3")]
6129    pub stride: ::core::option::Option<u32>,
6130    #[prost(int32, optional, tag="4")]
6131    pub format: ::core::option::Option<i32>,
6132    #[prost(uint64, optional, tag="5")]
6133    pub usage: ::core::option::Option<u64>,
6134}
6135#[derive(Clone, PartialEq, ::prost::Message)]
6136pub struct BarrierLayerProto {
6137    /// layer id the barrier is waiting on.
6138    #[prost(int32, optional, tag="1")]
6139    pub id: ::core::option::Option<i32>,
6140    /// frame number the barrier is waiting on.
6141    #[prost(uint64, optional, tag="2")]
6142    pub frame_number: ::core::option::Option<u64>,
6143}
6144// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6145
6146// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6147
6148/// Message used by Winscope to process legacy trace files.
6149/// Represents a file full of surface flinger transactions.
6150/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6151/// (.TNXTRACE), such that they can be easily identified.
6152#[derive(Clone, PartialEq, ::prost::Message)]
6153pub struct TransactionTraceFile {
6154    /// Must be the first field, set to value in MagicNumber
6155    #[prost(fixed64, optional, tag="1")]
6156    pub magic_number: ::core::option::Option<u64>,
6157    #[prost(message, repeated, tag="2")]
6158    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6159    /// offset between real-time clock and elapsed time clock in nanoseconds.
6160    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6161    /// systemTime(SYSTEM_TIME_MONOTONIC)
6162    #[prost(fixed64, optional, tag="3")]
6163    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6164    #[prost(uint32, optional, tag="4")]
6165    pub version: ::core::option::Option<u32>,
6166}
6167/// Nested message and enum types in `TransactionTraceFile`.
6168pub mod transaction_trace_file {
6169    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6170    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6171    /// and there's no nice way to put 64bit constants into .proto files.
6172    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6173    #[repr(i32)]
6174    pub enum MagicNumber {
6175        Invalid = 0,
6176        /// TNXT (little-endian ASCII)
6177        L = 1415073364,
6178        /// RACE (little-endian ASCII)
6179        H = 1162035538,
6180    }
6181    impl MagicNumber {
6182        /// String value of the enum field names used in the ProtoBuf definition.
6183        ///
6184        /// The values are not transformed in any way and thus are considered stable
6185        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6186        pub fn as_str_name(&self) -> &'static str {
6187            match self {
6188                MagicNumber::Invalid => "INVALID",
6189                MagicNumber::L => "MAGIC_NUMBER_L",
6190                MagicNumber::H => "MAGIC_NUMBER_H",
6191            }
6192        }
6193    }
6194}
6195#[derive(Clone, PartialEq, ::prost::Message)]
6196pub struct TransactionTraceEntry {
6197    #[prost(int64, optional, tag="1")]
6198    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6199    #[prost(int64, optional, tag="2")]
6200    pub vsync_id: ::core::option::Option<i64>,
6201    #[prost(message, repeated, tag="3")]
6202    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6203    #[prost(message, repeated, tag="4")]
6204    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6205    #[prost(uint32, repeated, packed="false", tag="5")]
6206    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6207    #[prost(message, repeated, tag="6")]
6208    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6209    #[prost(int32, repeated, packed="false", tag="7")]
6210    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6211    #[prost(uint32, repeated, packed="false", tag="8")]
6212    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6213    #[prost(bool, optional, tag="9")]
6214    pub displays_changed: ::core::option::Option<bool>,
6215    #[prost(message, repeated, tag="10")]
6216    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
6217}
6218#[derive(Clone, PartialEq, ::prost::Message)]
6219pub struct DisplayInfo {
6220    #[prost(uint32, optional, tag="1")]
6221    pub layer_stack: ::core::option::Option<u32>,
6222    #[prost(int32, optional, tag="2")]
6223    pub display_id: ::core::option::Option<i32>,
6224    #[prost(int32, optional, tag="3")]
6225    pub logical_width: ::core::option::Option<i32>,
6226    #[prost(int32, optional, tag="4")]
6227    pub logical_height: ::core::option::Option<i32>,
6228    #[prost(message, optional, tag="5")]
6229    pub transform_inverse: ::core::option::Option<Transform>,
6230    #[prost(message, optional, tag="6")]
6231    pub transform: ::core::option::Option<Transform>,
6232    #[prost(bool, optional, tag="7")]
6233    pub receives_input: ::core::option::Option<bool>,
6234    #[prost(bool, optional, tag="8")]
6235    pub is_secure: ::core::option::Option<bool>,
6236    #[prost(bool, optional, tag="9")]
6237    pub is_primary: ::core::option::Option<bool>,
6238    #[prost(bool, optional, tag="10")]
6239    pub is_virtual: ::core::option::Option<bool>,
6240    #[prost(int32, optional, tag="11")]
6241    pub rotation_flags: ::core::option::Option<i32>,
6242    #[prost(int32, optional, tag="12")]
6243    pub transform_hint: ::core::option::Option<i32>,
6244}
6245#[derive(Clone, PartialEq, ::prost::Message)]
6246pub struct LayerCreationArgs {
6247    #[prost(uint32, optional, tag="1")]
6248    pub layer_id: ::core::option::Option<u32>,
6249    #[prost(string, optional, tag="2")]
6250    pub name: ::core::option::Option<::prost::alloc::string::String>,
6251    #[prost(uint32, optional, tag="3")]
6252    pub flags: ::core::option::Option<u32>,
6253    #[prost(uint32, optional, tag="4")]
6254    pub parent_id: ::core::option::Option<u32>,
6255    #[prost(uint32, optional, tag="5")]
6256    pub mirror_from_id: ::core::option::Option<u32>,
6257    #[prost(bool, optional, tag="6")]
6258    pub add_to_root: ::core::option::Option<bool>,
6259    #[prost(uint32, optional, tag="7")]
6260    pub layer_stack_to_mirror: ::core::option::Option<u32>,
6261}
6262#[derive(Clone, PartialEq, ::prost::Message)]
6263pub struct Transform {
6264    #[prost(float, optional, tag="1")]
6265    pub dsdx: ::core::option::Option<f32>,
6266    #[prost(float, optional, tag="2")]
6267    pub dtdx: ::core::option::Option<f32>,
6268    #[prost(float, optional, tag="3")]
6269    pub dtdy: ::core::option::Option<f32>,
6270    #[prost(float, optional, tag="4")]
6271    pub dsdy: ::core::option::Option<f32>,
6272    #[prost(float, optional, tag="5")]
6273    pub tx: ::core::option::Option<f32>,
6274    #[prost(float, optional, tag="6")]
6275    pub ty: ::core::option::Option<f32>,
6276}
6277#[derive(Clone, PartialEq, ::prost::Message)]
6278pub struct TransactionBarrier {
6279    #[prost(string, optional, tag="1")]
6280    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
6281    #[prost(uint32, optional, tag="2")]
6282    pub kind: ::core::option::Option<u32>,
6283}
6284#[derive(Clone, PartialEq, ::prost::Message)]
6285pub struct TransactionState {
6286    #[prost(int32, optional, tag="1")]
6287    pub pid: ::core::option::Option<i32>,
6288    #[prost(int32, optional, tag="2")]
6289    pub uid: ::core::option::Option<i32>,
6290    #[prost(int64, optional, tag="3")]
6291    pub vsync_id: ::core::option::Option<i64>,
6292    #[prost(int32, optional, tag="4")]
6293    pub input_event_id: ::core::option::Option<i32>,
6294    #[prost(int64, optional, tag="5")]
6295    pub post_time: ::core::option::Option<i64>,
6296    #[prost(uint64, optional, tag="6")]
6297    pub transaction_id: ::core::option::Option<u64>,
6298    #[prost(message, repeated, tag="7")]
6299    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
6300    #[prost(message, repeated, tag="8")]
6301    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
6302    #[prost(uint64, repeated, packed="false", tag="9")]
6303    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
6304    #[prost(uint64, optional, tag="10")]
6305    pub apply_token: ::core::option::Option<u64>,
6306    #[prost(message, repeated, tag="11")]
6307    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
6308}
6309/// Keep insync with layer_state_t
6310#[derive(Clone, PartialEq, ::prost::Message)]
6311pub struct LayerState {
6312    #[prost(uint32, optional, tag="1")]
6313    pub layer_id: ::core::option::Option<u32>,
6314    #[prost(uint64, optional, tag="2")]
6315    pub what: ::core::option::Option<u64>,
6316    #[prost(float, optional, tag="3")]
6317    pub x: ::core::option::Option<f32>,
6318    #[prost(float, optional, tag="4")]
6319    pub y: ::core::option::Option<f32>,
6320    #[prost(int32, optional, tag="5")]
6321    pub z: ::core::option::Option<i32>,
6322    #[prost(uint32, optional, tag="6")]
6323    pub w: ::core::option::Option<u32>,
6324    #[prost(uint32, optional, tag="7")]
6325    pub h: ::core::option::Option<u32>,
6326    #[prost(uint32, optional, tag="8")]
6327    pub layer_stack: ::core::option::Option<u32>,
6328    #[prost(uint32, optional, tag="9")]
6329    pub flags: ::core::option::Option<u32>,
6330    #[prost(uint32, optional, tag="10")]
6331    pub mask: ::core::option::Option<u32>,
6332    #[prost(message, optional, tag="11")]
6333    pub matrix: ::core::option::Option<layer_state::Matrix22>,
6334    #[deprecated]
6335    #[prost(float, optional, tag="12")]
6336    pub corner_radius: ::core::option::Option<f32>,
6337    #[prost(uint32, optional, tag="13")]
6338    pub background_blur_radius: ::core::option::Option<u32>,
6339    #[prost(uint32, optional, tag="14")]
6340    pub parent_id: ::core::option::Option<u32>,
6341    #[prost(uint32, optional, tag="15")]
6342    pub relative_parent_id: ::core::option::Option<u32>,
6343    #[prost(float, optional, tag="16")]
6344    pub alpha: ::core::option::Option<f32>,
6345    #[prost(message, optional, tag="17")]
6346    pub color: ::core::option::Option<layer_state::Color3>,
6347    #[prost(message, optional, tag="18")]
6348    pub transparent_region: ::core::option::Option<RegionProto>,
6349    #[prost(uint32, optional, tag="19")]
6350    pub transform: ::core::option::Option<u32>,
6351    #[prost(bool, optional, tag="20")]
6352    pub transform_to_display_inverse: ::core::option::Option<bool>,
6353    #[prost(message, optional, tag="21")]
6354    pub crop: ::core::option::Option<RectProto>,
6355    #[prost(message, optional, tag="22")]
6356    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
6357    #[prost(int32, optional, tag="23")]
6358    pub api: ::core::option::Option<i32>,
6359    #[prost(bool, optional, tag="24")]
6360    pub has_sideband_stream: ::core::option::Option<bool>,
6361    #[prost(message, optional, tag="25")]
6362    pub color_transform: ::core::option::Option<ColorTransformProto>,
6363    #[prost(message, repeated, tag="26")]
6364    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6365    #[prost(message, optional, tag="27")]
6366    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
6367    #[prost(float, optional, tag="28")]
6368    pub bg_color_alpha: ::core::option::Option<f32>,
6369    #[prost(int32, optional, tag="29")]
6370    pub bg_color_dataspace: ::core::option::Option<i32>,
6371    #[prost(bool, optional, tag="30")]
6372    pub color_space_agnostic: ::core::option::Option<bool>,
6373    #[prost(float, optional, tag="31")]
6374    pub shadow_radius: ::core::option::Option<f32>,
6375    #[prost(int32, optional, tag="32")]
6376    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6377    #[prost(float, optional, tag="33")]
6378    pub frame_rate: ::core::option::Option<f32>,
6379    #[prost(int32, optional, tag="34")]
6380    pub frame_rate_compatibility: ::core::option::Option<i32>,
6381    #[prost(int32, optional, tag="35")]
6382    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6383    #[prost(uint32, optional, tag="36")]
6384    pub fixed_transform_hint: ::core::option::Option<u32>,
6385    #[prost(uint64, optional, tag="37")]
6386    pub frame_number: ::core::option::Option<u64>,
6387    #[prost(bool, optional, tag="38")]
6388    pub auto_refresh: ::core::option::Option<bool>,
6389    /// unused
6390    #[prost(bool, optional, tag="39")]
6391    pub is_trusted_overlay: ::core::option::Option<bool>,
6392    #[prost(message, optional, tag="40")]
6393    pub buffer_crop: ::core::option::Option<RectProto>,
6394    #[prost(message, optional, tag="41")]
6395    pub destination_frame: ::core::option::Option<RectProto>,
6396    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6397    pub drop_input_mode: ::core::option::Option<i32>,
6398    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6399    pub trusted_overlay: ::core::option::Option<i32>,
6400    #[prost(float, optional, tag="44")]
6401    pub background_blur_scale: ::core::option::Option<f32>,
6402    #[prost(message, optional, tag="45")]
6403    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6404    #[prost(message, optional, tag="46")]
6405    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6406    #[prost(int32, optional, tag="47")]
6407    pub system_content_priority: ::core::option::Option<i32>,
6408    #[prost(message, optional, tag="48")]
6409    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6410    #[prost(message, optional, tag="49")]
6411    pub border_settings: ::core::option::Option<BorderSettings>,
6412}
6413/// Nested message and enum types in `LayerState`.
6414pub mod layer_state {
6415    #[derive(Clone, PartialEq, ::prost::Message)]
6416    pub struct Matrix22 {
6417        #[prost(float, optional, tag="1")]
6418        pub dsdx: ::core::option::Option<f32>,
6419        #[prost(float, optional, tag="2")]
6420        pub dtdx: ::core::option::Option<f32>,
6421        #[prost(float, optional, tag="3")]
6422        pub dtdy: ::core::option::Option<f32>,
6423        #[prost(float, optional, tag="4")]
6424        pub dsdy: ::core::option::Option<f32>,
6425    }
6426    #[derive(Clone, PartialEq, ::prost::Message)]
6427    pub struct CornerRadii {
6428        #[prost(float, optional, tag="1")]
6429        pub tl: ::core::option::Option<f32>,
6430        #[prost(float, optional, tag="2")]
6431        pub tr: ::core::option::Option<f32>,
6432        #[prost(float, optional, tag="3")]
6433        pub bl: ::core::option::Option<f32>,
6434        #[prost(float, optional, tag="4")]
6435        pub br: ::core::option::Option<f32>,
6436    }
6437    #[derive(Clone, PartialEq, ::prost::Message)]
6438    pub struct Color3 {
6439        #[prost(float, optional, tag="1")]
6440        pub r: ::core::option::Option<f32>,
6441        #[prost(float, optional, tag="2")]
6442        pub g: ::core::option::Option<f32>,
6443        #[prost(float, optional, tag="3")]
6444        pub b: ::core::option::Option<f32>,
6445    }
6446    #[derive(Clone, PartialEq, ::prost::Message)]
6447    pub struct BufferData {
6448        #[prost(uint64, optional, tag="1")]
6449        pub buffer_id: ::core::option::Option<u64>,
6450        #[prost(uint32, optional, tag="2")]
6451        pub width: ::core::option::Option<u32>,
6452        #[prost(uint32, optional, tag="3")]
6453        pub height: ::core::option::Option<u32>,
6454        #[prost(uint64, optional, tag="4")]
6455        pub frame_number: ::core::option::Option<u64>,
6456        #[prost(uint32, optional, tag="5")]
6457        pub flags: ::core::option::Option<u32>,
6458        #[prost(uint64, optional, tag="6")]
6459        pub cached_buffer_id: ::core::option::Option<u64>,
6460        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
6461        pub pixel_format: ::core::option::Option<i32>,
6462        #[prost(uint64, optional, tag="8")]
6463        pub usage: ::core::option::Option<u64>,
6464    }
6465    /// Nested message and enum types in `BufferData`.
6466    pub mod buffer_data {
6467        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6468        #[repr(i32)]
6469        pub enum BufferDataChange {
6470            None = 0,
6471            FenceChanged = 1,
6472            FrameNumberChanged = 2,
6473            CachedBufferChanged = 4,
6474        }
6475        impl BufferDataChange {
6476            /// String value of the enum field names used in the ProtoBuf definition.
6477            ///
6478            /// The values are not transformed in any way and thus are considered stable
6479            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6480            pub fn as_str_name(&self) -> &'static str {
6481                match self {
6482                    BufferDataChange::None => "BufferDataChangeNone",
6483                    BufferDataChange::FenceChanged => "fenceChanged",
6484                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
6485                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
6486                }
6487            }
6488        }
6489        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6490        #[repr(i32)]
6491        pub enum PixelFormat {
6492            Unknown = 0,
6493            Custom = -4,
6494            Translucent = -3,
6495            Transparent = -2,
6496            Opaque = -1,
6497            Rgba8888 = 1,
6498            Rgbx8888 = 2,
6499            Rgb888 = 3,
6500            Rgb565 = 4,
6501            Bgra8888 = 5,
6502            Rgba5551 = 6,
6503            Rgba4444 = 7,
6504            RgbaFp16 = 22,
6505            Rgba1010102 = 43,
6506            R8 = 56,
6507        }
6508        impl PixelFormat {
6509            /// String value of the enum field names used in the ProtoBuf definition.
6510            ///
6511            /// The values are not transformed in any way and thus are considered stable
6512            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6513            pub fn as_str_name(&self) -> &'static str {
6514                match self {
6515                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
6516                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
6517                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
6518                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
6519                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
6520                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
6521                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
6522                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
6523                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
6524                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
6525                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
6526                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
6527                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
6528                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
6529                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
6530                }
6531            }
6532        }
6533    }
6534    #[derive(Clone, PartialEq, ::prost::Message)]
6535    pub struct WindowInfo {
6536        #[prost(uint32, optional, tag="1")]
6537        pub layout_params_flags: ::core::option::Option<u32>,
6538        #[prost(int32, optional, tag="2")]
6539        pub layout_params_type: ::core::option::Option<i32>,
6540        #[prost(message, optional, tag="3")]
6541        pub touchable_region: ::core::option::Option<super::RegionProto>,
6542        #[prost(int32, optional, tag="4")]
6543        pub surface_inset: ::core::option::Option<i32>,
6544        /// unused
6545        #[prost(bool, optional, tag="5")]
6546        pub focusable: ::core::option::Option<bool>,
6547        /// unused
6548        #[prost(bool, optional, tag="6")]
6549        pub has_wallpaper: ::core::option::Option<bool>,
6550        #[prost(float, optional, tag="7")]
6551        pub global_scale_factor: ::core::option::Option<f32>,
6552        #[prost(uint32, optional, tag="8")]
6553        pub crop_layer_id: ::core::option::Option<u32>,
6554        #[prost(bool, optional, tag="9")]
6555        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6556        #[prost(message, optional, tag="10")]
6557        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
6558        #[prost(message, optional, tag="11")]
6559        pub transform: ::core::option::Option<super::Transform>,
6560        #[prost(uint32, optional, tag="12")]
6561        pub input_config: ::core::option::Option<u32>,
6562    }
6563    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
6564    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
6565    /// enums have to be 32 bits and there's no nice way to put 64bit constants
6566    /// into .proto files.
6567    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6568    #[repr(i32)]
6569    pub enum ChangesLsb {
6570        EChangesLsbNone = 0,
6571        EPositionChanged = 1,
6572        ELayerChanged = 2,
6573        /// unused = 0x00000004;
6574        EAlphaChanged = 8,
6575        EMatrixChanged = 16,
6576        ETransparentRegionChanged = 32,
6577        EFlagsChanged = 64,
6578        ELayerStackChanged = 128,
6579        EReleaseBufferListenerChanged = 1024,
6580        EShadowRadiusChanged = 2048,
6581        EBufferCropChanged = 8192,
6582        ERelativeLayerChanged = 16384,
6583        EReparent = 32768,
6584        EColorChanged = 65536,
6585        EBufferTransformChanged = 262144,
6586        ETransformToDisplayInverseChanged = 524288,
6587        ECropChanged = 1048576,
6588        EBufferChanged = 2097152,
6589        EAcquireFenceChanged = 4194304,
6590        EDataspaceChanged = 8388608,
6591        EHdrMetadataChanged = 16777216,
6592        ESurfaceDamageRegionChanged = 33554432,
6593        EApiChanged = 67108864,
6594        ESidebandStreamChanged = 134217728,
6595        EColorTransformChanged = 268435456,
6596        EHasListenerCallbacksChanged = 536870912,
6597        EInputInfoChanged = 1073741824,
6598        /// 0x80000000; (proto stores enums as signed int)
6599        ECornerRadiusChanged = -2147483648,
6600    }
6601    impl ChangesLsb {
6602        /// String value of the enum field names used in the ProtoBuf definition.
6603        ///
6604        /// The values are not transformed in any way and thus are considered stable
6605        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6606        pub fn as_str_name(&self) -> &'static str {
6607            match self {
6608                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
6609                ChangesLsb::EPositionChanged => "ePositionChanged",
6610                ChangesLsb::ELayerChanged => "eLayerChanged",
6611                ChangesLsb::EAlphaChanged => "eAlphaChanged",
6612                ChangesLsb::EMatrixChanged => "eMatrixChanged",
6613                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
6614                ChangesLsb::EFlagsChanged => "eFlagsChanged",
6615                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
6616                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
6617                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
6618                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
6619                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
6620                ChangesLsb::EReparent => "eReparent",
6621                ChangesLsb::EColorChanged => "eColorChanged",
6622                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
6623                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
6624                ChangesLsb::ECropChanged => "eCropChanged",
6625                ChangesLsb::EBufferChanged => "eBufferChanged",
6626                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
6627                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
6628                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
6629                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
6630                ChangesLsb::EApiChanged => "eApiChanged",
6631                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
6632                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
6633                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
6634                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
6635                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
6636            }
6637        }
6638    }
6639    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6640    #[repr(i32)]
6641    pub enum ChangesMsb {
6642        EChangesMsbNone = 0,
6643        EDestinationFrameChanged = 1,
6644        ECachedBufferChanged = 2,
6645        EBackgroundColorChanged = 4,
6646        EMetadataChanged = 8,
6647        EColorSpaceAgnosticChanged = 16,
6648        EFrameRateSelectionPriority = 32,
6649        EFrameRateChanged = 64,
6650        EBackgroundBlurRadiusChanged = 128,
6651        EProducerDisconnect = 256,
6652        EFixedTransformHintChanged = 512,
6653        EFrameNumberChanged = 1024,
6654        EBlurRegionsChanged = 2048,
6655        EAutoRefreshChanged = 4096,
6656        EStretchChanged = 8192,
6657        ETrustedOverlayChanged = 16384,
6658        EDropInputModeChanged = 32768,
6659        EClientDrawnCornerRadiusChanged = 65536,
6660        ESystemContentPriorityChanged = 131072,
6661        EBoxShadowSettingsChanged = 262144,
6662        EBorderSettingsChanged = 524288,
6663    }
6664    impl ChangesMsb {
6665        /// String value of the enum field names used in the ProtoBuf definition.
6666        ///
6667        /// The values are not transformed in any way and thus are considered stable
6668        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6669        pub fn as_str_name(&self) -> &'static str {
6670            match self {
6671                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
6672                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
6673                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
6674                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
6675                ChangesMsb::EMetadataChanged => "eMetadataChanged",
6676                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
6677                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
6678                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
6679                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
6680                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
6681                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
6682                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
6683                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
6684                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
6685                ChangesMsb::EStretchChanged => "eStretchChanged",
6686                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
6687                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
6688                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
6689                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
6690                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
6691                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
6692            }
6693        }
6694    }
6695    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6696    #[repr(i32)]
6697    pub enum Flags {
6698        EFlagsNone = 0,
6699        ELayerHidden = 1,
6700        ELayerOpaque = 2,
6701        ELayerSkipScreenshot = 64,
6702        ELayerSecure = 128,
6703        EEnableBackpressure = 256,
6704        ELayerIsDisplayDecoration = 512,
6705    }
6706    impl Flags {
6707        /// String value of the enum field names used in the ProtoBuf definition.
6708        ///
6709        /// The values are not transformed in any way and thus are considered stable
6710        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6711        pub fn as_str_name(&self) -> &'static str {
6712            match self {
6713                Flags::EFlagsNone => "eFlagsNone",
6714                Flags::ELayerHidden => "eLayerHidden",
6715                Flags::ELayerOpaque => "eLayerOpaque",
6716                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
6717                Flags::ELayerSecure => "eLayerSecure",
6718                Flags::EEnableBackpressure => "eEnableBackpressure",
6719                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
6720            }
6721        }
6722    }
6723    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6724    #[repr(i32)]
6725    pub enum DropInputMode {
6726        None = 0,
6727        All = 1,
6728        Obscured = 2,
6729    }
6730    impl DropInputMode {
6731        /// String value of the enum field names used in the ProtoBuf definition.
6732        ///
6733        /// The values are not transformed in any way and thus are considered stable
6734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6735        pub fn as_str_name(&self) -> &'static str {
6736            match self {
6737                DropInputMode::None => "NONE",
6738                DropInputMode::All => "ALL",
6739                DropInputMode::Obscured => "OBSCURED",
6740            }
6741        }
6742    }
6743}
6744#[derive(Clone, PartialEq, ::prost::Message)]
6745pub struct DisplayState {
6746    #[prost(int32, optional, tag="1")]
6747    pub id: ::core::option::Option<i32>,
6748    #[prost(uint32, optional, tag="2")]
6749    pub what: ::core::option::Option<u32>,
6750    #[prost(uint32, optional, tag="3")]
6751    pub flags: ::core::option::Option<u32>,
6752    #[prost(uint32, optional, tag="4")]
6753    pub layer_stack: ::core::option::Option<u32>,
6754    #[prost(uint32, optional, tag="5")]
6755    pub orientation: ::core::option::Option<u32>,
6756    #[prost(message, optional, tag="6")]
6757    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6758    #[prost(message, optional, tag="7")]
6759    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
6760    #[prost(uint32, optional, tag="8")]
6761    pub width: ::core::option::Option<u32>,
6762    #[prost(uint32, optional, tag="9")]
6763    pub height: ::core::option::Option<u32>,
6764}
6765/// Nested message and enum types in `DisplayState`.
6766pub mod display_state {
6767    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6768    #[repr(i32)]
6769    pub enum Changes {
6770        EChangesNone = 0,
6771        ESurfaceChanged = 1,
6772        ELayerStackChanged = 2,
6773        EDisplayProjectionChanged = 4,
6774        EDisplaySizeChanged = 8,
6775        EFlagsChanged = 16,
6776    }
6777    impl Changes {
6778        /// String value of the enum field names used in the ProtoBuf definition.
6779        ///
6780        /// The values are not transformed in any way and thus are considered stable
6781        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6782        pub fn as_str_name(&self) -> &'static str {
6783            match self {
6784                Changes::EChangesNone => "eChangesNone",
6785                Changes::ESurfaceChanged => "eSurfaceChanged",
6786                Changes::ELayerStackChanged => "eLayerStackChanged",
6787                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
6788                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
6789                Changes::EFlagsChanged => "eFlagsChanged",
6790            }
6791        }
6792    }
6793}
6794// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6795
6796// Begin of protos/perfetto/trace/android/winscope_extensions.proto
6797
6798#[derive(Clone, PartialEq, ::prost::Message)]
6799pub struct WinscopeExtensions {
6800}
6801// End of protos/perfetto/trace/android/winscope_extensions.proto
6802
6803// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6804
6805/// This message is not intended to be written by the chrome on the device.
6806/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
6807/// part of the trace that's written by the telemetry tracing agent).
6808#[derive(Clone, PartialEq, ::prost::Message)]
6809pub struct ChromeBenchmarkMetadata {
6810    /// Time when the benchmark execution started (host unixtime in microseconds).
6811    #[prost(int64, optional, tag="1")]
6812    pub benchmark_start_time_us: ::core::option::Option<i64>,
6813    /// Time when this particular story was run (host unixtime in microseconds).
6814    #[prost(int64, optional, tag="2")]
6815    pub story_run_time_us: ::core::option::Option<i64>,
6816    /// Name of benchmark.
6817    #[prost(string, optional, tag="3")]
6818    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
6819    /// Description of benchmark.
6820    #[prost(string, optional, tag="4")]
6821    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
6822    /// Optional label.
6823    #[prost(string, optional, tag="5")]
6824    pub label: ::core::option::Option<::prost::alloc::string::String>,
6825    /// Name of story.
6826    #[prost(string, optional, tag="6")]
6827    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
6828    /// List of story tags.
6829    #[prost(string, repeated, tag="7")]
6830    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6831    /// Index of the story run (>0 if the same story was run several times).
6832    #[prost(int32, optional, tag="8")]
6833    pub story_run_index: ::core::option::Option<i32>,
6834    /// Whether this run failed.
6835    #[prost(bool, optional, tag="9")]
6836    pub had_failures: ::core::option::Option<bool>,
6837}
6838// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6839
6840// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
6841
6842/// Metadata for chrome traces.
6843#[derive(Clone, PartialEq, ::prost::Message)]
6844pub struct ChromeMetadataPacket {
6845    #[prost(message, optional, tag="1")]
6846    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
6847    /// Version code of Chrome used by Android's Play Store. This field is only set
6848    /// on Android.
6849    #[prost(int32, optional, tag="2")]
6850    pub chrome_version_code: ::core::option::Option<i32>,
6851    /// Comma separated list of enabled categories for tracing. The list of
6852    /// possible category strings are listed in code
6853    /// base/trace_event/builtin_categories.h.
6854    #[prost(string, optional, tag="3")]
6855    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
6856    /// List of Finch study/groups that apply to this trace.
6857    #[prost(message, repeated, tag="4")]
6858    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
6859}
6860/// Nested message and enum types in `ChromeMetadataPacket`.
6861pub mod chrome_metadata_packet {
6862    /// Finch name and group based on the ActiveGroupId.
6863    #[derive(Clone, PartialEq, ::prost::Message)]
6864    pub struct FinchHash {
6865        #[prost(uint32, optional, tag="1")]
6866        pub name: ::core::option::Option<u32>,
6867        #[prost(uint32, optional, tag="2")]
6868        pub group: ::core::option::Option<u32>,
6869    }
6870}
6871/// Metadata related to background tracing scenarios, states and triggers.
6872#[derive(Clone, PartialEq, ::prost::Message)]
6873pub struct BackgroundTracingMetadata {
6874    /// Specifies the rule that caused the trace to be uploaded.
6875    #[prost(message, optional, tag="1")]
6876    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
6877    /// List of all active triggers in current session, when trace was triggered.
6878    #[prost(message, repeated, tag="2")]
6879    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
6880    /// Hash of the scenario name.
6881    #[prost(fixed32, optional, tag="3")]
6882    pub scenario_name_hash: ::core::option::Option<u32>,
6883}
6884/// Nested message and enum types in `BackgroundTracingMetadata`.
6885pub mod background_tracing_metadata {
6886    /// Information about a trigger rule defined in the experiment config.
6887    #[derive(Clone, PartialEq, ::prost::Message)]
6888    pub struct TriggerRule {
6889        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
6890        pub trigger_type: ::core::option::Option<i32>,
6891        #[prost(message, optional, tag="2")]
6892        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
6893        #[prost(message, optional, tag="3")]
6894        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
6895        /// Hash of the rule name.
6896        #[prost(fixed32, optional, tag="4")]
6897        pub name_hash: ::core::option::Option<u32>,
6898    }
6899    /// Nested message and enum types in `TriggerRule`.
6900    pub mod trigger_rule {
6901        /// Configuration of histogram trigger.
6902        #[derive(Clone, PartialEq, ::prost::Message)]
6903        pub struct HistogramRule {
6904            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
6905            #[prost(fixed64, optional, tag="1")]
6906            pub histogram_name_hash: ::core::option::Option<u64>,
6907            /// Range of values of the histogram that activates trigger.
6908            #[prost(int64, optional, tag="2")]
6909            pub histogram_min_trigger: ::core::option::Option<i64>,
6910            #[prost(int64, optional, tag="3")]
6911            pub histogram_max_trigger: ::core::option::Option<i64>,
6912        }
6913        /// Configuration of named trigger.
6914        #[derive(Clone, PartialEq, ::prost::Message)]
6915        pub struct NamedRule {
6916            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
6917            pub event_type: ::core::option::Option<i32>,
6918            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
6919            /// content-trigger that actually fired.
6920            #[prost(fixed64, optional, tag="2")]
6921            pub content_trigger_name_hash: ::core::option::Option<u64>,
6922        }
6923        /// Nested message and enum types in `NamedRule`.
6924        pub mod named_rule {
6925            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6926            #[repr(i32)]
6927            pub enum EventType {
6928                Unspecified = 0,
6929                SessionRestore = 1,
6930                Navigation = 2,
6931                Startup = 3,
6932                ReachedCode = 4,
6933                ContentTrigger = 5,
6934                TestRule = 1000,
6935            }
6936            impl EventType {
6937                /// String value of the enum field names used in the ProtoBuf definition.
6938                ///
6939                /// The values are not transformed in any way and thus are considered stable
6940                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6941                pub fn as_str_name(&self) -> &'static str {
6942                    match self {
6943                        EventType::Unspecified => "UNSPECIFIED",
6944                        EventType::SessionRestore => "SESSION_RESTORE",
6945                        EventType::Navigation => "NAVIGATION",
6946                        EventType::Startup => "STARTUP",
6947                        EventType::ReachedCode => "REACHED_CODE",
6948                        EventType::ContentTrigger => "CONTENT_TRIGGER",
6949                        EventType::TestRule => "TEST_RULE",
6950                    }
6951                }
6952            }
6953        }
6954        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6955        #[repr(i32)]
6956        pub enum TriggerType {
6957            TriggerUnspecified = 0,
6958            /// Traces are triggered by specific range of values of an UMA histogram.
6959            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
6960            /// Traces are triggered by specific named events in chromium codebase,
6961            /// like "second-update-failure".
6962            MonitorAndDumpWhenTriggerNamed = 2,
6963        }
6964        impl TriggerType {
6965            /// String value of the enum field names used in the ProtoBuf definition.
6966            ///
6967            /// The values are not transformed in any way and thus are considered stable
6968            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6969            pub fn as_str_name(&self) -> &'static str {
6970                match self {
6971                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
6972                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
6973                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
6974                }
6975            }
6976        }
6977    }
6978}
6979// End of protos/perfetto/trace/chrome/chrome_metadata.proto
6980
6981// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
6982
6983#[derive(Clone, PartialEq, ::prost::Message)]
6984pub struct ChromeTracedValue {
6985    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
6986    pub nested_type: ::core::option::Option<i32>,
6987    #[prost(string, repeated, tag="2")]
6988    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6989    #[prost(message, repeated, tag="3")]
6990    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6991    #[prost(message, repeated, tag="4")]
6992    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6993    #[prost(int32, optional, tag="5")]
6994    pub int_value: ::core::option::Option<i32>,
6995    #[prost(double, optional, tag="6")]
6996    pub double_value: ::core::option::Option<f64>,
6997    #[prost(bool, optional, tag="7")]
6998    pub bool_value: ::core::option::Option<bool>,
6999    #[prost(string, optional, tag="8")]
7000    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7001}
7002/// Nested message and enum types in `ChromeTracedValue`.
7003pub mod chrome_traced_value {
7004    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7005    #[repr(i32)]
7006    pub enum NestedType {
7007        Dict = 0,
7008        Array = 1,
7009    }
7010    impl NestedType {
7011        /// String value of the enum field names used in the ProtoBuf definition.
7012        ///
7013        /// The values are not transformed in any way and thus are considered stable
7014        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7015        pub fn as_str_name(&self) -> &'static str {
7016            match self {
7017                NestedType::Dict => "DICT",
7018                NestedType::Array => "ARRAY",
7019            }
7020        }
7021    }
7022}
7023#[derive(Clone, PartialEq, ::prost::Message)]
7024pub struct ChromeStringTableEntry {
7025    #[prost(string, optional, tag="1")]
7026    pub value: ::core::option::Option<::prost::alloc::string::String>,
7027    #[prost(int32, optional, tag="2")]
7028    pub index: ::core::option::Option<i32>,
7029}
7030/// Deprecated, use TrackEvent protos instead.
7031#[derive(Clone, PartialEq, ::prost::Message)]
7032pub struct ChromeTraceEvent {
7033    #[prost(string, optional, tag="1")]
7034    pub name: ::core::option::Option<::prost::alloc::string::String>,
7035    #[prost(int64, optional, tag="2")]
7036    pub timestamp: ::core::option::Option<i64>,
7037    #[prost(int32, optional, tag="3")]
7038    pub phase: ::core::option::Option<i32>,
7039    #[prost(int32, optional, tag="4")]
7040    pub thread_id: ::core::option::Option<i32>,
7041    #[prost(int64, optional, tag="5")]
7042    pub duration: ::core::option::Option<i64>,
7043    #[prost(int64, optional, tag="6")]
7044    pub thread_duration: ::core::option::Option<i64>,
7045    #[prost(string, optional, tag="7")]
7046    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7047    #[prost(uint64, optional, tag="8")]
7048    pub id: ::core::option::Option<u64>,
7049    #[prost(uint32, optional, tag="9")]
7050    pub flags: ::core::option::Option<u32>,
7051    #[prost(string, optional, tag="10")]
7052    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7053    #[prost(int32, optional, tag="11")]
7054    pub process_id: ::core::option::Option<i32>,
7055    #[prost(int64, optional, tag="12")]
7056    pub thread_timestamp: ::core::option::Option<i64>,
7057    #[prost(uint64, optional, tag="13")]
7058    pub bind_id: ::core::option::Option<u64>,
7059    #[prost(message, repeated, tag="14")]
7060    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7061    /// Takes precedence over respectively |name| and
7062    /// |category_group_name_index| if set,
7063    /// and are indices into |string_table|.
7064    #[prost(uint32, optional, tag="15")]
7065    pub name_index: ::core::option::Option<u32>,
7066    #[prost(uint32, optional, tag="16")]
7067    pub category_group_name_index: ::core::option::Option<u32>,
7068}
7069/// Nested message and enum types in `ChromeTraceEvent`.
7070pub mod chrome_trace_event {
7071    #[derive(Clone, PartialEq, ::prost::Message)]
7072    pub struct Arg {
7073        #[prost(string, optional, tag="1")]
7074        pub name: ::core::option::Option<::prost::alloc::string::String>,
7075        /// Takes precedence over |name| if set,
7076        /// and is an index into |string_table|.
7077        #[prost(uint32, optional, tag="9")]
7078        pub name_index: ::core::option::Option<u32>,
7079        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7080        pub value: ::core::option::Option<arg::Value>,
7081    }
7082    /// Nested message and enum types in `Arg`.
7083    pub mod arg {
7084        #[derive(Clone, PartialEq, ::prost::Oneof)]
7085        pub enum Value {
7086            #[prost(bool, tag="2")]
7087            BoolValue(bool),
7088            #[prost(uint64, tag="3")]
7089            UintValue(u64),
7090            #[prost(int64, tag="4")]
7091            IntValue(i64),
7092            #[prost(double, tag="5")]
7093            DoubleValue(f64),
7094            #[prost(string, tag="6")]
7095            StringValue(::prost::alloc::string::String),
7096            /// Pointers are stored in a separate type as the JSON output treats them
7097            /// differently from other uint64 values.
7098            #[prost(uint64, tag="7")]
7099            PointerValue(u64),
7100            #[prost(string, tag="8")]
7101            JsonValue(::prost::alloc::string::String),
7102            #[prost(message, tag="10")]
7103            TracedValue(super::super::ChromeTracedValue),
7104        }
7105    }
7106}
7107#[derive(Clone, PartialEq, ::prost::Message)]
7108pub struct ChromeMetadata {
7109    #[prost(string, optional, tag="1")]
7110    pub name: ::core::option::Option<::prost::alloc::string::String>,
7111    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7112    pub value: ::core::option::Option<chrome_metadata::Value>,
7113}
7114/// Nested message and enum types in `ChromeMetadata`.
7115pub mod chrome_metadata {
7116    #[derive(Clone, PartialEq, ::prost::Oneof)]
7117    pub enum Value {
7118        #[prost(string, tag="2")]
7119        StringValue(::prost::alloc::string::String),
7120        #[prost(bool, tag="3")]
7121        BoolValue(bool),
7122        #[prost(int64, tag="4")]
7123        IntValue(i64),
7124        #[prost(string, tag="5")]
7125        JsonValue(::prost::alloc::string::String),
7126    }
7127}
7128/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7129/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7130/// TODO(eseckler): Update these agents to become perfetto producers.
7131#[derive(Clone, PartialEq, ::prost::Message)]
7132pub struct ChromeLegacyJsonTrace {
7133    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7134    pub r#type: ::core::option::Option<i32>,
7135    #[prost(string, optional, tag="2")]
7136    pub data: ::core::option::Option<::prost::alloc::string::String>,
7137}
7138/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7139pub mod chrome_legacy_json_trace {
7140    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7141    #[repr(i32)]
7142    pub enum TraceType {
7143        UserTrace = 0,
7144        /// Deprecated.
7145        SystemTrace = 1,
7146    }
7147    impl TraceType {
7148        /// String value of the enum field names used in the ProtoBuf definition.
7149        ///
7150        /// The values are not transformed in any way and thus are considered stable
7151        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7152        pub fn as_str_name(&self) -> &'static str {
7153            match self {
7154                TraceType::UserTrace => "USER_TRACE",
7155                TraceType::SystemTrace => "SYSTEM_TRACE",
7156            }
7157        }
7158    }
7159}
7160#[derive(Clone, PartialEq, ::prost::Message)]
7161pub struct ChromeEventBundle {
7162    /// Deprecated, use TrackEvent protos instead.
7163    #[deprecated]
7164    #[prost(message, repeated, tag="1")]
7165    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7166    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7167    /// which contains typed fields.
7168    #[prost(message, repeated, tag="2")]
7169    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7170    /// ftrace output from CrOS and Cast system tracing agents.
7171    /// TODO(eseckler): Replace system traces with native perfetto service.
7172    #[prost(string, repeated, tag="4")]
7173    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7174    #[prost(message, repeated, tag="5")]
7175    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7176    /// Contents of a string table that's valid for
7177    /// the whole ChromeEventBundle entry.
7178    #[deprecated]
7179    #[prost(message, repeated, tag="3")]
7180    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7181}
7182// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7183
7184// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7185
7186/// Information about a specific trigger during a background tracing scenario
7187/// Associated packet timestamps are useful to delimitate a scenario range in a
7188/// trace. Triggers are also useful for filtering traces.
7189#[derive(Clone, PartialEq, ::prost::Message)]
7190pub struct ChromeTrigger {
7191    /// Name of the trigger which was received.
7192    #[prost(string, optional, tag="1")]
7193    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7194    /// SHA1 hash of the trigger name.
7195    #[prost(fixed32, optional, tag="2")]
7196    pub trigger_name_hash: ::core::option::Option<u32>,
7197    /// Flow id which should terminate on this trigger.
7198    #[prost(fixed64, optional, tag="3")]
7199    pub flow_id: ::core::option::Option<u64>,
7200}
7201// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7202
7203// Begin of protos/perfetto/trace/chrome/v8.proto
7204
7205// These are the protos for the V8 data source.
7206//
7207// All events are associated to a V8 isolate instance. There can be multiple
7208// instances associated to a given thread, although this is rare.
7209//
7210// Generated code in V8 is allocated in the V8 heap (in a special executeable
7211// section), this means that code can be garbage collected (when no longer used)
7212// or can be moved around (e.g. during heap compactation). This means that a
7213// given callsite might correspond to function `A` at one point in time and to
7214// function `B` later on.
7215// In addition V8 code has various levels of optimization, so a function might
7216// have multiple associated code snippets.
7217//
7218// V8 does not track code deletion, so we have to indirectly infer it by
7219// detecting code overlaps, if a newer code creation event overlaps with older
7220// code we need to asume that the old code was deleted. Code moves are logged,
7221// and there is an event to track those.
7222
7223/// Strings used by V8 can have different encodings, instead of coverting to a
7224/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7225/// "raw" string and do the convestion at trace ingestion time.
7226///
7227/// ATTENTION: There is some overhead in using a message (as opossed to having
7228/// the `oneof encoded_string`` direcly embedded in the message), so use this
7229/// message in places were these extra bytes don't matter that much.
7230/// Next id: 5
7231#[derive(Clone, PartialEq, ::prost::Message)]
7232pub struct V8String {
7233    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7234    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7235}
7236/// Nested message and enum types in `V8String`.
7237pub mod v8_string {
7238    #[derive(Clone, PartialEq, ::prost::Oneof)]
7239    pub enum EncodedString {
7240        /// ISO/IEC 8859-1:1998 encoding aka latin1
7241        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7242        #[prost(bytes, tag="1")]
7243        Latin1(::prost::alloc::vec::Vec<u8>),
7244        /// UTF-16 Little Endian Encoding
7245        #[prost(bytes, tag="2")]
7246        Utf16Le(::prost::alloc::vec::Vec<u8>),
7247        /// UTF-16 Big Endian Encoding
7248        #[prost(bytes, tag="3")]
7249        Utf16Be(::prost::alloc::vec::Vec<u8>),
7250    }
7251}
7252/// Interned version of V8String
7253#[derive(Clone, PartialEq, ::prost::Message)]
7254pub struct InternedV8String {
7255    #[prost(uint64, optional, tag="1")]
7256    pub iid: ::core::option::Option<u64>,
7257    /// We inline the fields in V8String here to save some bytes in the serialized
7258    /// proto format. Interning is about saving bytes so this makes sense here.
7259    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7260    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7261}
7262/// Nested message and enum types in `InternedV8String`.
7263pub mod interned_v8_string {
7264    /// We inline the fields in V8String here to save some bytes in the serialized
7265    /// proto format. Interning is about saving bytes so this makes sense here.
7266    #[derive(Clone, PartialEq, ::prost::Oneof)]
7267    pub enum EncodedString {
7268        /// ISO/IEC 8859-1:1998 encoding aka latin1
7269        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7270        #[prost(bytes, tag="2")]
7271        Latin1(::prost::alloc::vec::Vec<u8>),
7272        /// UTF-16 Little Endian Encoding
7273        #[prost(bytes, tag="3")]
7274        Utf16Le(::prost::alloc::vec::Vec<u8>),
7275        /// UTF-16 Big Endian Encoding
7276        #[prost(bytes, tag="4")]
7277        Utf16Be(::prost::alloc::vec::Vec<u8>),
7278    }
7279}
7280/// Represents a script that was compiled to generate code. Some V8 code is
7281/// generated out of scripts and will reference a V8Script other types of code
7282/// will not (e.g. builtins).
7283#[derive(Clone, PartialEq, ::prost::Message)]
7284pub struct InternedV8JsScript {
7285    #[prost(uint64, optional, tag="1")]
7286    pub iid: ::core::option::Option<u64>,
7287    /// Unique in a given isolate
7288    #[prost(int32, optional, tag="2")]
7289    pub script_id: ::core::option::Option<i32>,
7290    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7291    pub r#type: ::core::option::Option<i32>,
7292    #[prost(message, optional, tag="4")]
7293    pub name: ::core::option::Option<V8String>,
7294    /// Actual source of the script
7295    #[prost(message, optional, tag="5")]
7296    pub source: ::core::option::Option<V8String>,
7297}
7298/// Nested message and enum types in `InternedV8JsScript`.
7299pub mod interned_v8_js_script {
7300    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7301    #[repr(i32)]
7302    pub enum Type {
7303        Unknown = 0,
7304        Normal = 1,
7305        Eval = 2,
7306        Module = 3,
7307        Native = 4,
7308        Extension = 5,
7309        Inspector = 6,
7310    }
7311    impl Type {
7312        /// String value of the enum field names used in the ProtoBuf definition.
7313        ///
7314        /// The values are not transformed in any way and thus are considered stable
7315        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7316        pub fn as_str_name(&self) -> &'static str {
7317            match self {
7318                Type::Unknown => "TYPE_UNKNOWN",
7319                Type::Normal => "TYPE_NORMAL",
7320                Type::Eval => "TYPE_EVAL",
7321                Type::Module => "TYPE_MODULE",
7322                Type::Native => "TYPE_NATIVE",
7323                Type::Extension => "TYPE_EXTENSION",
7324                Type::Inspector => "TYPE_INSPECTOR",
7325            }
7326        }
7327    }
7328}
7329#[derive(Clone, PartialEq, ::prost::Message)]
7330pub struct InternedV8WasmScript {
7331    #[prost(uint64, optional, tag="1")]
7332    pub iid: ::core::option::Option<u64>,
7333    /// Unique in a given isolate
7334    #[prost(int32, optional, tag="2")]
7335    pub script_id: ::core::option::Option<i32>,
7336    #[prost(string, optional, tag="3")]
7337    pub url: ::core::option::Option<::prost::alloc::string::String>,
7338    /// Raw transferred wasm native module wire bytes.
7339    #[prost(bytes="vec", optional, tag="4")]
7340    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7341}
7342#[derive(Clone, PartialEq, ::prost::Message)]
7343pub struct InternedV8JsFunction {
7344    #[prost(uint64, optional, tag="1")]
7345    pub iid: ::core::option::Option<u64>,
7346    #[prost(uint64, optional, tag="2")]
7347    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7348    #[prost(uint64, optional, tag="3")]
7349    pub v8_js_script_iid: ::core::option::Option<u64>,
7350    #[prost(bool, optional, tag="4")]
7351    pub is_toplevel: ::core::option::Option<bool>,
7352    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7353    pub kind: ::core::option::Option<i32>,
7354    /// Where in the script source this function is defined. This is counted in
7355    /// bytes not characters.
7356    #[prost(uint32, optional, tag="6")]
7357    pub byte_offset: ::core::option::Option<u32>,
7358    #[prost(uint32, optional, tag="7")]
7359    pub line: ::core::option::Option<u32>,
7360    #[prost(uint32, optional, tag="8")]
7361    pub column: ::core::option::Option<u32>,
7362}
7363/// Nested message and enum types in `InternedV8JsFunction`.
7364pub mod interned_v8_js_function {
7365    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7366    #[repr(i32)]
7367    pub enum Kind {
7368        Unknown = 0,
7369        NormalFunction = 1,
7370        Module = 2,
7371        AsyncModule = 3,
7372        BaseConstructor = 4,
7373        DefaultBaseConstructor = 5,
7374        DefaultDerivedConstructor = 6,
7375        DerivedConstructor = 7,
7376        GetterFunction = 8,
7377        StaticGetterFunction = 9,
7378        SetterFunction = 10,
7379        StaticSetterFunction = 11,
7380        ArrowFunction = 12,
7381        AsyncArrowFunction = 13,
7382        AsyncFunction = 14,
7383        AsyncConciseMethod = 15,
7384        StaticAsyncConciseMethod = 16,
7385        AsyncConciseGeneratorMethod = 17,
7386        StaticAsyncConciseGeneratorMethod = 18,
7387        AsyncGeneratorFunction = 19,
7388        GeneratorFunction = 20,
7389        ConciseGeneratorMethod = 21,
7390        StaticConciseGeneratorMethod = 22,
7391        ConciseMethod = 23,
7392        StaticConciseMethod = 24,
7393        ClassMembersInitializerFunction = 25,
7394        ClassStaticInitializerFunction = 26,
7395        Invalid = 27,
7396    }
7397    impl Kind {
7398        /// String value of the enum field names used in the ProtoBuf definition.
7399        ///
7400        /// The values are not transformed in any way and thus are considered stable
7401        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7402        pub fn as_str_name(&self) -> &'static str {
7403            match self {
7404                Kind::Unknown => "KIND_UNKNOWN",
7405                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7406                Kind::Module => "KIND_MODULE",
7407                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7408                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7409                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7410                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7411                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7412                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7413                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7414                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7415                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7416                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7417                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7418                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7419                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7420                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7421                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7422                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7423                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7424                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7425                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7426                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7427                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7428                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7429                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7430                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7431                Kind::Invalid => "KIND_INVALID",
7432            }
7433        }
7434    }
7435}
7436/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7437/// engine.
7438#[derive(Clone, PartialEq, ::prost::Message)]
7439pub struct InternedV8Isolate {
7440    #[prost(uint64, optional, tag="1")]
7441    pub iid: ::core::option::Option<u64>,
7442    #[prost(uint32, optional, tag="2")]
7443    pub pid: ::core::option::Option<u32>,
7444    /// Process unique isolate id.
7445    #[prost(int32, optional, tag="3")]
7446    pub isolate_id: ::core::option::Option<i32>,
7447    #[prost(message, optional, tag="4")]
7448    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7449    /// The embedded blob holds code for built in functions that are precompiled in
7450    /// the V8 library.
7451    #[prost(uint64, optional, tag="5")]
7452    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7453    #[prost(uint64, optional, tag="6")]
7454    pub embedded_blob_code_size: ::core::option::Option<u64>,
7455}
7456/// Nested message and enum types in `InternedV8Isolate`.
7457pub mod interned_v8_isolate {
7458    /// A code range is a virtual memory cage that may contain executable code.
7459    /// Depending on the Isolate settings the Isolate might have one or not.
7460    /// See:
7461    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7462    /// If the isolate defines code range this will be tracked here.
7463    #[derive(Clone, PartialEq, ::prost::Message)]
7464    pub struct CodeRange {
7465        #[prost(uint64, optional, tag="1")]
7466        pub base_address: ::core::option::Option<u64>,
7467        #[prost(uint64, optional, tag="2")]
7468        pub size: ::core::option::Option<u64>,
7469        /// Used when short builtin calls are enabled, where embedded builtins are
7470        /// copied into the CodeRange so calls can be nearer.
7471        #[prost(uint64, optional, tag="3")]
7472        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7473        /// Whether this code range is shared with other Isolates in the same process
7474        #[prost(bool, optional, tag="4")]
7475        pub is_process_wide: ::core::option::Option<bool>,
7476    }
7477}
7478#[derive(Clone, PartialEq, ::prost::Message)]
7479pub struct V8JsCode {
7480    #[prost(uint64, optional, tag="1")]
7481    pub v8_isolate_iid: ::core::option::Option<u64>,
7482    #[prost(uint32, optional, tag="2")]
7483    pub tid: ::core::option::Option<u32>,
7484    #[prost(uint64, optional, tag="3")]
7485    pub v8_js_function_iid: ::core::option::Option<u64>,
7486    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7487    pub tier: ::core::option::Option<i32>,
7488    #[prost(uint64, optional, tag="5")]
7489    pub instruction_start: ::core::option::Option<u64>,
7490    #[prost(uint64, optional, tag="6")]
7491    pub instruction_size_bytes: ::core::option::Option<u64>,
7492    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7493    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7494}
7495/// Nested message and enum types in `V8JsCode`.
7496pub mod v8_js_code {
7497    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7498    #[repr(i32)]
7499    pub enum Tier {
7500        Unknown = 0,
7501        Ignition = 1,
7502        Sparkplug = 2,
7503        Maglev = 3,
7504        Turboshaft = 4,
7505        Turbofan = 5,
7506    }
7507    impl Tier {
7508        /// String value of the enum field names used in the ProtoBuf definition.
7509        ///
7510        /// The values are not transformed in any way and thus are considered stable
7511        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7512        pub fn as_str_name(&self) -> &'static str {
7513            match self {
7514                Tier::Unknown => "TIER_UNKNOWN",
7515                Tier::Ignition => "TIER_IGNITION",
7516                Tier::Sparkplug => "TIER_SPARKPLUG",
7517                Tier::Maglev => "TIER_MAGLEV",
7518                Tier::Turboshaft => "TIER_TURBOSHAFT",
7519                Tier::Turbofan => "TIER_TURBOFAN",
7520            }
7521        }
7522    }
7523    #[derive(Clone, PartialEq, ::prost::Oneof)]
7524    pub enum Instructions {
7525        #[prost(bytes, tag="7")]
7526        MachineCode(::prost::alloc::vec::Vec<u8>),
7527        #[prost(bytes, tag="8")]
7528        Bytecode(::prost::alloc::vec::Vec<u8>),
7529    }
7530}
7531#[derive(Clone, PartialEq, ::prost::Message)]
7532pub struct V8InternalCode {
7533    #[prost(uint64, optional, tag="1")]
7534    pub v8_isolate_iid: ::core::option::Option<u64>,
7535    #[prost(uint32, optional, tag="2")]
7536    pub tid: ::core::option::Option<u32>,
7537    #[prost(string, optional, tag="3")]
7538    pub name: ::core::option::Option<::prost::alloc::string::String>,
7539    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7540    pub r#type: ::core::option::Option<i32>,
7541    #[prost(int32, optional, tag="5")]
7542    pub builtin_id: ::core::option::Option<i32>,
7543    #[prost(uint64, optional, tag="6")]
7544    pub instruction_start: ::core::option::Option<u64>,
7545    #[prost(uint64, optional, tag="7")]
7546    pub instruction_size_bytes: ::core::option::Option<u64>,
7547    #[prost(bytes="vec", optional, tag="8")]
7548    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7549}
7550/// Nested message and enum types in `V8InternalCode`.
7551pub mod v8_internal_code {
7552    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7553    #[repr(i32)]
7554    pub enum Type {
7555        Unknown = 0,
7556        BytecodeHandler = 1,
7557        ForTesting = 2,
7558        Builtin = 3,
7559        WasmFunction = 4,
7560        WasmToCapiFunction = 5,
7561        WasmToJsFunction = 6,
7562        JsToWasmFunction = 7,
7563        JsToJsFunction = 8,
7564        CWasmEntry = 9,
7565    }
7566    impl Type {
7567        /// String value of the enum field names used in the ProtoBuf definition.
7568        ///
7569        /// The values are not transformed in any way and thus are considered stable
7570        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7571        pub fn as_str_name(&self) -> &'static str {
7572            match self {
7573                Type::Unknown => "TYPE_UNKNOWN",
7574                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7575                Type::ForTesting => "TYPE_FOR_TESTING",
7576                Type::Builtin => "TYPE_BUILTIN",
7577                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7578                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7579                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7580                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7581                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7582                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7583            }
7584        }
7585    }
7586}
7587#[derive(Clone, PartialEq, ::prost::Message)]
7588pub struct V8WasmCode {
7589    #[prost(uint64, optional, tag="1")]
7590    pub v8_isolate_iid: ::core::option::Option<u64>,
7591    #[prost(uint32, optional, tag="2")]
7592    pub tid: ::core::option::Option<u32>,
7593    #[prost(uint64, optional, tag="3")]
7594    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7595    #[prost(string, optional, tag="4")]
7596    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7597    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7598    pub tier: ::core::option::Option<i32>,
7599    #[prost(int32, optional, tag="6")]
7600    pub code_offset_in_module: ::core::option::Option<i32>,
7601    #[prost(uint64, optional, tag="7")]
7602    pub instruction_start: ::core::option::Option<u64>,
7603    #[prost(uint64, optional, tag="8")]
7604    pub instruction_size_bytes: ::core::option::Option<u64>,
7605    #[prost(bytes="vec", optional, tag="9")]
7606    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7607}
7608/// Nested message and enum types in `V8WasmCode`.
7609pub mod v8_wasm_code {
7610    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7611    #[repr(i32)]
7612    pub enum Tier {
7613        Unknown = 0,
7614        Liftoff = 1,
7615        Turbofan = 2,
7616    }
7617    impl Tier {
7618        /// String value of the enum field names used in the ProtoBuf definition.
7619        ///
7620        /// The values are not transformed in any way and thus are considered stable
7621        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7622        pub fn as_str_name(&self) -> &'static str {
7623            match self {
7624                Tier::Unknown => "TIER_UNKNOWN",
7625                Tier::Liftoff => "TIER_LIFTOFF",
7626                Tier::Turbofan => "TIER_TURBOFAN",
7627            }
7628        }
7629    }
7630}
7631#[derive(Clone, PartialEq, ::prost::Message)]
7632pub struct V8RegExpCode {
7633    #[prost(uint64, optional, tag="1")]
7634    pub v8_isolate_iid: ::core::option::Option<u64>,
7635    #[prost(uint32, optional, tag="2")]
7636    pub tid: ::core::option::Option<u32>,
7637    #[prost(message, optional, tag="3")]
7638    pub pattern: ::core::option::Option<V8String>,
7639    #[prost(uint64, optional, tag="4")]
7640    pub instruction_start: ::core::option::Option<u64>,
7641    #[prost(uint64, optional, tag="5")]
7642    pub instruction_size_bytes: ::core::option::Option<u64>,
7643    #[prost(bytes="vec", optional, tag="6")]
7644    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7645}
7646/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7647/// memory by V8's GC.
7648#[derive(Clone, PartialEq, ::prost::Message)]
7649pub struct V8CodeMove {
7650    #[prost(uint64, optional, tag="1")]
7651    pub isolate_iid: ::core::option::Option<u64>,
7652    #[prost(uint32, optional, tag="2")]
7653    pub tid: ::core::option::Option<u32>,
7654    #[prost(uint64, optional, tag="3")]
7655    pub from_instruction_start_address: ::core::option::Option<u64>,
7656    #[prost(uint64, optional, tag="4")]
7657    pub to_instruction_start_address: ::core::option::Option<u64>,
7658    #[prost(uint64, optional, tag="5")]
7659    pub instruction_size_bytes: ::core::option::Option<u64>,
7660    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7661    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7662}
7663/// Nested message and enum types in `V8CodeMove`.
7664pub mod v8_code_move {
7665    #[derive(Clone, PartialEq, ::prost::Oneof)]
7666    pub enum ToInstructions {
7667        #[prost(bytes, tag="6")]
7668        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7669        #[prost(bytes, tag="7")]
7670        ToBytecode(::prost::alloc::vec::Vec<u8>),
7671    }
7672}
7673#[derive(Clone, PartialEq, ::prost::Message)]
7674pub struct V8CodeDefaults {
7675    #[prost(uint32, optional, tag="1")]
7676    pub tid: ::core::option::Option<u32>,
7677}
7678// End of protos/perfetto/trace/chrome/v8.proto
7679
7680// Begin of protos/perfetto/trace/clock_snapshot.proto
7681
7682/// A snapshot of clock readings to allow for trace alignment.
7683#[derive(Clone, PartialEq, ::prost::Message)]
7684pub struct ClockSnapshot {
7685    #[prost(message, repeated, tag="1")]
7686    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
7687    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
7688    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
7689    /// attempt to translate packet/event timestamps from various data sources (and
7690    /// their chosen clock domains) to this domain during import.
7691    #[prost(enumeration="BuiltinClock", optional, tag="2")]
7692    pub primary_trace_clock: ::core::option::Option<i32>,
7693}
7694/// Nested message and enum types in `ClockSnapshot`.
7695pub mod clock_snapshot {
7696    #[derive(Clone, PartialEq, ::prost::Message)]
7697    pub struct Clock {
7698        /// Clock IDs have the following semantic:
7699        /// [1, 63]:    Builtin types, see BuiltinClock from
7700        ///              ../common/builtin_clock.proto.
7701        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
7702        ///              are only valid within the same |trusted_packet_sequence_id|
7703        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
7704        ///              that emitted the clock snapshot).
7705        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
7706        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
7707        #[prost(uint32, optional, tag="1")]
7708        pub clock_id: ::core::option::Option<u32>,
7709        /// Absolute timestamp. Unit is ns unless specified otherwise by the
7710        /// unit_multiplier_ns field below.
7711        #[prost(uint64, optional, tag="2")]
7712        pub timestamp: ::core::option::Option<u64>,
7713        /// When true each TracePacket's timestamp should be interpreted as a delta
7714        /// from the last TracePacket's timestamp (referencing this clock) emitted by
7715        /// the same packet_sequence_id. Should only be used for user-defined
7716        /// sequence-local clocks. The first packet timestamp after each
7717        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
7718        /// the ClockSnapshot.
7719        #[prost(bool, optional, tag="3")]
7720        pub is_incremental: ::core::option::Option<bool>,
7721        /// Allows to specify a custom unit different than the default (ns) for this
7722        /// clock domain.
7723        ///
7724        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
7725        ///    as 3000 ns = 3 us.
7726        /// * All snapshots for the same clock within a trace need to use the same
7727        ///    unit.
7728        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
7729        #[prost(uint64, optional, tag="4")]
7730        pub unit_multiplier_ns: ::core::option::Option<u64>,
7731    }
7732    /// Nested message and enum types in `Clock`.
7733    pub mod clock {
7734        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
7735        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7736        #[repr(i32)]
7737        pub enum BuiltinClocks {
7738            Unknown = 0,
7739            Realtime = 1,
7740            RealtimeCoarse = 2,
7741            Monotonic = 3,
7742            MonotonicCoarse = 4,
7743            MonotonicRaw = 5,
7744            Boottime = 6,
7745            BuiltinClockMaxId = 63,
7746        }
7747        impl BuiltinClocks {
7748            /// String value of the enum field names used in the ProtoBuf definition.
7749            ///
7750            /// The values are not transformed in any way and thus are considered stable
7751            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7752            pub fn as_str_name(&self) -> &'static str {
7753                match self {
7754                    BuiltinClocks::Unknown => "UNKNOWN",
7755                    BuiltinClocks::Realtime => "REALTIME",
7756                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
7757                    BuiltinClocks::Monotonic => "MONOTONIC",
7758                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
7759                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
7760                    BuiltinClocks::Boottime => "BOOTTIME",
7761                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
7762                }
7763            }
7764        }
7765    }
7766}
7767// End of protos/perfetto/trace/clock_snapshot.proto
7768
7769// Begin of protos/perfetto/trace/etw/etw.proto
7770
7771/// Proto definition based on the Thread_v2 CSwitch class definition
7772/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
7773#[derive(Clone, PartialEq, ::prost::Message)]
7774pub struct CSwitchEtwEvent {
7775    /// New thread ID after the switch.
7776    #[prost(uint32, optional, tag="1")]
7777    pub new_thread_id: ::core::option::Option<u32>,
7778    /// Previous thread ID.
7779    #[prost(uint32, optional, tag="2")]
7780    pub old_thread_id: ::core::option::Option<u32>,
7781    /// Thread priority of the new thread.
7782    #[prost(sint32, optional, tag="3")]
7783    pub new_thread_priority: ::core::option::Option<i32>,
7784    /// Thread priority of the previous thread.
7785    #[prost(sint32, optional, tag="4")]
7786    pub old_thread_priority: ::core::option::Option<i32>,
7787    /// The index of the C-state that was last used by the processor. A value of 0
7788    /// represents the lightest idle state with higher values representing deeper
7789    /// C-states.
7790    #[prost(uint32, optional, tag="5")]
7791    pub previous_c_state: ::core::option::Option<u32>,
7792    /// Ideal wait time of the previous thread.
7793    #[prost(sint32, optional, tag="9")]
7794    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
7795    /// Wait time for the new thread.
7796    #[prost(uint32, optional, tag="10")]
7797    pub new_thread_wait_time: ::core::option::Option<u32>,
7798    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
7799    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
7800    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
7801    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
7802    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
7803    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
7804}
7805/// Nested message and enum types in `CSwitchEtwEvent`.
7806pub mod c_switch_etw_event {
7807    /// Wait reason for the previous thread. The ordering is important as based on
7808    /// the OldThreadWaitReason definition from the link above. The following are
7809    /// the possible values:
7810    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7811    #[repr(i32)]
7812    pub enum OldThreadWaitReason {
7813        Executive = 0,
7814        FreePage = 1,
7815        PageIn = 2,
7816        PoolAllocation = 3,
7817        DelayExecution = 4,
7818        Suspend = 5,
7819        UserRequest = 6,
7820        WrExecutive = 7,
7821        WrFreePage = 8,
7822        WrPageIn = 9,
7823        WrPoolAllocation = 10,
7824        WrDelayExecution = 11,
7825        WrSuspended = 12,
7826        WrUserRequest = 13,
7827        WrEventPair = 14,
7828        WrQueue = 15,
7829        WrLpcReceiver = 16,
7830        WrLpcReply = 17,
7831        WrVirtualMemory = 18,
7832        WrPageOut = 19,
7833        WrRendezVous = 20,
7834        WrKeyedEvent = 21,
7835        WrTerminated = 22,
7836        WrProcessInSwap = 23,
7837        WrCpuRateControl = 24,
7838        WrCalloutStack = 25,
7839        WrKernel = 26,
7840        WrResource = 27,
7841        WrPushLock = 28,
7842        WrMutex = 29,
7843        WrQuantumEnd = 30,
7844        WrDispatchInt = 31,
7845        WrPreempted = 32,
7846        WrYieldExecution = 33,
7847        WrFastMutex = 34,
7848        WrGuardMutex = 35,
7849        WrRundown = 36,
7850        MaximumWaitReason = 37,
7851    }
7852    impl OldThreadWaitReason {
7853        /// String value of the enum field names used in the ProtoBuf definition.
7854        ///
7855        /// The values are not transformed in any way and thus are considered stable
7856        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7857        pub fn as_str_name(&self) -> &'static str {
7858            match self {
7859                OldThreadWaitReason::Executive => "EXECUTIVE",
7860                OldThreadWaitReason::FreePage => "FREE_PAGE",
7861                OldThreadWaitReason::PageIn => "PAGE_IN",
7862                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
7863                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
7864                OldThreadWaitReason::Suspend => "SUSPEND",
7865                OldThreadWaitReason::UserRequest => "USER_REQUEST",
7866                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
7867                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
7868                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
7869                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
7870                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
7871                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
7872                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
7873                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
7874                OldThreadWaitReason::WrQueue => "WR_QUEUE",
7875                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
7876                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
7877                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
7878                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
7879                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
7880                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
7881                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
7882                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
7883                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
7884                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
7885                OldThreadWaitReason::WrKernel => "WR_KERNEL",
7886                OldThreadWaitReason::WrResource => "WR_RESOURCE",
7887                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
7888                OldThreadWaitReason::WrMutex => "WR_MUTEX",
7889                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
7890                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
7891                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
7892                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
7893                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
7894                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
7895                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
7896                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
7897            }
7898        }
7899    }
7900    /// Wait mode for the previous thread. The ordering is important as based on
7901    /// the OldThreadWaitMode definition from the link above. The following are the
7902    /// possible values:
7903    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7904    #[repr(i32)]
7905    pub enum OldThreadWaitMode {
7906        KernelMode = 0,
7907        UserMode = 1,
7908    }
7909    impl OldThreadWaitMode {
7910        /// String value of the enum field names used in the ProtoBuf definition.
7911        ///
7912        /// The values are not transformed in any way and thus are considered stable
7913        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7914        pub fn as_str_name(&self) -> &'static str {
7915            match self {
7916                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
7917                OldThreadWaitMode::UserMode => "USER_MODE",
7918            }
7919        }
7920    }
7921    /// State of the previous thread. The ordering is important as based on the
7922    /// OldThreadState definition from the link above. The following are the
7923    /// possible state values:
7924    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7925    #[repr(i32)]
7926    pub enum OldThreadState {
7927        Initialized = 0,
7928        Ready = 1,
7929        Running = 2,
7930        Standby = 3,
7931        Terminated = 4,
7932        Waiting = 5,
7933        Transition = 6,
7934        DeferredReady = 7,
7935    }
7936    impl OldThreadState {
7937        /// String value of the enum field names used in the ProtoBuf definition.
7938        ///
7939        /// The values are not transformed in any way and thus are considered stable
7940        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7941        pub fn as_str_name(&self) -> &'static str {
7942            match self {
7943                OldThreadState::Initialized => "INITIALIZED",
7944                OldThreadState::Ready => "READY",
7945                OldThreadState::Running => "RUNNING",
7946                OldThreadState::Standby => "STANDBY",
7947                OldThreadState::Terminated => "TERMINATED",
7948                OldThreadState::Waiting => "WAITING",
7949                OldThreadState::Transition => "TRANSITION",
7950                OldThreadState::DeferredReady => "DEFERRED_READY",
7951            }
7952        }
7953    }
7954    #[derive(Clone, PartialEq, ::prost::Oneof)]
7955    pub enum OldThreadWaitReasonEnumOrInt {
7956        #[prost(enumeration="OldThreadWaitReason", tag="6")]
7957        OldThreadWaitReason(i32),
7958        #[prost(int32, tag="11")]
7959        OldThreadWaitReasonInt(i32),
7960    }
7961    #[derive(Clone, PartialEq, ::prost::Oneof)]
7962    pub enum OldThreadWaitModeEnumOrInt {
7963        #[prost(enumeration="OldThreadWaitMode", tag="7")]
7964        OldThreadWaitMode(i32),
7965        #[prost(int32, tag="12")]
7966        OldThreadWaitModeInt(i32),
7967    }
7968    #[derive(Clone, PartialEq, ::prost::Oneof)]
7969    pub enum OldThreadStateEnumOrInt {
7970        #[prost(enumeration="OldThreadState", tag="8")]
7971        OldThreadState(i32),
7972        #[prost(sint32, tag="13")]
7973        OldThreadStateInt(i32),
7974    }
7975}
7976/// Proto definition based on the Thread_v2 CSwitch class definition
7977/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
7978#[derive(Clone, PartialEq, ::prost::Message)]
7979pub struct ReadyThreadEtwEvent {
7980    /// The thread identifier of the thread being readied for execution.
7981    #[prost(uint32, optional, tag="1")]
7982    pub t_thread_id: ::core::option::Option<u32>,
7983    ///   The value by which the priority is being adjusted.
7984    #[prost(sint32, optional, tag="3")]
7985    pub adjust_increment: ::core::option::Option<i32>,
7986    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
7987    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
7988    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
7989    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
7990}
7991/// Nested message and enum types in `ReadyThreadEtwEvent`.
7992pub mod ready_thread_etw_event {
7993    /// The reason for the priority boost. The ordering is important as based on
7994    /// the AdjustReason definition from the link above.
7995    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7996    #[repr(i32)]
7997    pub enum AdjustReason {
7998        IgnoreTheIncrement = 0,
7999        /// Apply the increment, which will decay incrementally at the end of each
8000        /// quantum.
8001        ApplyIncrement = 1,
8002        /// Apply the increment as a boost that will decay in its entirety at quantum
8003        /// (typically for priority donation).
8004        ApplyIncrementBoost = 2,
8005    }
8006    impl AdjustReason {
8007        /// String value of the enum field names used in the ProtoBuf definition.
8008        ///
8009        /// The values are not transformed in any way and thus are considered stable
8010        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8011        pub fn as_str_name(&self) -> &'static str {
8012            match self {
8013                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8014                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8015                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8016            }
8017        }
8018    }
8019    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8020    #[repr(i32)]
8021    pub enum TraceFlag {
8022        Unspecified = 0,
8023        /// The thread has been readied from DPC (deferred procedure call).
8024        ThreadReadied = 1,
8025        /// The kernel stack is currently swapped out.
8026        KernelStackSwappedOut = 2,
8027        /// The process address space is swapped out.
8028        ProcessAddressSwappedOut = 4,
8029    }
8030    impl TraceFlag {
8031        /// String value of the enum field names used in the ProtoBuf definition.
8032        ///
8033        /// The values are not transformed in any way and thus are considered stable
8034        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8035        pub fn as_str_name(&self) -> &'static str {
8036            match self {
8037                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8038                TraceFlag::ThreadReadied => "THREAD_READIED",
8039                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8040                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8041            }
8042        }
8043    }
8044    #[derive(Clone, PartialEq, ::prost::Oneof)]
8045    pub enum AdjustReasonEnumOrInt {
8046        #[prost(enumeration="AdjustReason", tag="2")]
8047        AdjustReason(i32),
8048        #[prost(int32, tag="5")]
8049        AdjustReasonInt(i32),
8050    }
8051    #[derive(Clone, PartialEq, ::prost::Oneof)]
8052    pub enum FlagEnumOrInt {
8053        #[prost(enumeration="TraceFlag", tag="4")]
8054        Flag(i32),
8055        #[prost(int32, tag="6")]
8056        FlagInt(i32),
8057    }
8058}
8059/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8060/// on local traces using tracerpt:
8061/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8062#[derive(Clone, PartialEq, ::prost::Message)]
8063pub struct MemInfoEtwEvent {
8064    /// Number of memory priorities on the system.
8065    #[prost(uint32, optional, tag="1")]
8066    pub priority_levels: ::core::option::Option<u32>,
8067    /// Number of pages in the zero list.
8068    #[prost(uint64, optional, tag="2")]
8069    pub zero_page_count: ::core::option::Option<u64>,
8070    /// Number of pages in the free list.
8071    #[prost(uint64, optional, tag="3")]
8072    pub free_page_count: ::core::option::Option<u64>,
8073    /// Number of pages in the modified list.
8074    #[prost(uint64, optional, tag="4")]
8075    pub modified_page_count: ::core::option::Option<u64>,
8076    /// Number of modified non-paged pool pages.
8077    #[prost(uint64, optional, tag="5")]
8078    pub modified_no_write_page_count: ::core::option::Option<u64>,
8079    /// Number of bad pages.
8080    #[prost(uint64, optional, tag="6")]
8081    pub bad_page_count: ::core::option::Option<u64>,
8082    /// Number of standby pages by memory priority.
8083    #[prost(uint64, repeated, packed="false", tag="7")]
8084    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8085    /// Number of repurposed pages by memory priority.
8086    #[prost(uint64, repeated, packed="false", tag="8")]
8087    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8088    /// Modified paged pages.
8089    #[prost(uint64, optional, tag="9")]
8090    pub modified_page_count_page_file: ::core::option::Option<u64>,
8091    /// Pool page counts.
8092    #[prost(uint64, optional, tag="10")]
8093    pub paged_pool_page_count: ::core::option::Option<u64>,
8094    #[prost(uint64, optional, tag="11")]
8095    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8096    /// Memory Descriptor List page count.
8097    #[prost(uint64, optional, tag="12")]
8098    pub mdl_page_count: ::core::option::Option<u64>,
8099    /// Commit weight.
8100    #[prost(uint64, optional, tag="13")]
8101    pub commit_page_count: ::core::option::Option<u64>,
8102}
8103// End of protos/perfetto/trace/etw/etw.proto
8104
8105// Begin of protos/perfetto/trace/etw/etw_event.proto
8106
8107#[derive(Clone, PartialEq, ::prost::Message)]
8108pub struct EtwTraceEvent {
8109    #[prost(uint64, optional, tag="1")]
8110    pub timestamp: ::core::option::Option<u64>,
8111    #[prost(uint32, optional, tag="4")]
8112    pub cpu: ::core::option::Option<u32>,
8113    #[prost(uint32, optional, tag="5")]
8114    pub thread_id: ::core::option::Option<u32>,
8115    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6")]
8116    pub event: ::core::option::Option<etw_trace_event::Event>,
8117}
8118/// Nested message and enum types in `EtwTraceEvent`.
8119pub mod etw_trace_event {
8120    #[derive(Clone, PartialEq, ::prost::Oneof)]
8121    pub enum Event {
8122        #[prost(message, tag="2")]
8123        CSwitch(super::CSwitchEtwEvent),
8124        #[prost(message, tag="3")]
8125        ReadyThread(super::ReadyThreadEtwEvent),
8126        #[prost(message, tag="6")]
8127        MemInfo(super::MemInfoEtwEvent),
8128    }
8129}
8130// End of protos/perfetto/trace/etw/etw_event.proto
8131
8132// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
8133
8134/// The result of tracing one or more etw event uses per-processor buffers where
8135/// an in-use buffer is assigned to each processor at all times. Therefore,
8136/// collecting multiple events they should already be synchronized.
8137#[derive(Clone, PartialEq, ::prost::Message)]
8138pub struct EtwTraceEventBundle {
8139    #[prost(uint32, optional, tag="1")]
8140    pub cpu: ::core::option::Option<u32>,
8141    #[prost(message, repeated, tag="2")]
8142    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
8143}
8144// Begin of protos/perfetto/trace/evdev.proto
8145
8146/// Records an event in the evdev protocol, as used by Linux and some other *nix
8147/// kernels to report events from human interface devices.
8148///
8149/// Next ID: 3
8150#[derive(Clone, PartialEq, ::prost::Message)]
8151pub struct EvdevEvent {
8152    /// The device's unique ID number. This need not be the number of its
8153    /// /dev/input/event node.
8154    #[prost(uint32, optional, tag="1")]
8155    pub device_id: ::core::option::Option<u32>,
8156    #[prost(oneof="evdev_event::Event", tags="2")]
8157    pub event: ::core::option::Option<evdev_event::Event>,
8158}
8159/// Nested message and enum types in `EvdevEvent`.
8160pub mod evdev_event {
8161    /// Proto version of Linux's struct input_event. The meaning of types and codes
8162    /// are described in the Linux kernel documentation at
8163    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
8164    ///
8165    /// Next ID: 5
8166    #[derive(Clone, PartialEq, ::prost::Message)]
8167    pub struct InputEvent {
8168        /// The monotonic timestamp at which the event occurred, as reported by the
8169        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
8170        /// since the previous event.
8171        #[prost(uint64, optional, tag="1")]
8172        pub kernel_timestamp: ::core::option::Option<u64>,
8173        /// The code grouping for this event, used to distinguish signals, absolute
8174        /// and relative axis changes, and other types of event.
8175        #[prost(uint32, optional, tag="2")]
8176        pub r#type: ::core::option::Option<u32>,
8177        /// The precise type of the event, such as the axis code for absolute and
8178        /// relative events.
8179        #[prost(uint32, optional, tag="3")]
8180        pub code: ::core::option::Option<u32>,
8181        /// The new value of the axis described by type and code.
8182        #[prost(sint32, optional, tag="4")]
8183        pub value: ::core::option::Option<i32>,
8184    }
8185    #[derive(Clone, PartialEq, ::prost::Oneof)]
8186    pub enum Event {
8187        #[prost(message, tag="2")]
8188        InputEvent(InputEvent),
8189    }
8190}
8191// End of protos/perfetto/trace/evdev.proto
8192
8193// Begin of protos/perfetto/common/descriptor.proto
8194
8195/// The protocol compiler can output a FileDescriptorSet containing the .proto
8196/// files it parses.
8197#[derive(Clone, PartialEq, ::prost::Message)]
8198pub struct FileDescriptorSet {
8199    #[prost(message, repeated, tag="1")]
8200    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
8201}
8202/// Describes a complete .proto file.
8203#[derive(Clone, PartialEq, ::prost::Message)]
8204pub struct FileDescriptorProto {
8205    /// file name, relative to root of source tree
8206    #[prost(string, optional, tag="1")]
8207    pub name: ::core::option::Option<::prost::alloc::string::String>,
8208    /// e.g. "foo", "foo.bar", etc.
8209    #[prost(string, optional, tag="2")]
8210    pub package: ::core::option::Option<::prost::alloc::string::String>,
8211    /// Names of files imported by this file.
8212    #[prost(string, repeated, tag="3")]
8213    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8214    /// Indexes of the public imported files in the dependency list above.
8215    #[prost(int32, repeated, packed="false", tag="10")]
8216    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
8217    /// Indexes of the weak imported files in the dependency list.
8218    /// For Google-internal migration only. Do not use.
8219    #[prost(int32, repeated, packed="false", tag="11")]
8220    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8221    /// All top-level definitions in this file.
8222    #[prost(message, repeated, tag="4")]
8223    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8224    #[prost(message, repeated, tag="5")]
8225    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8226    #[prost(message, repeated, tag="7")]
8227    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8228}
8229/// Describes a message type.
8230#[derive(Clone, PartialEq, ::prost::Message)]
8231pub struct DescriptorProto {
8232    #[prost(string, optional, tag="1")]
8233    pub name: ::core::option::Option<::prost::alloc::string::String>,
8234    #[prost(message, repeated, tag="2")]
8235    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8236    #[prost(message, repeated, tag="6")]
8237    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8238    #[prost(message, repeated, tag="3")]
8239    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8240    #[prost(message, repeated, tag="4")]
8241    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8242    #[prost(message, repeated, tag="8")]
8243    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8244    #[prost(message, repeated, tag="9")]
8245    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8246    /// Reserved field names, which may not be used by fields in the same message.
8247    /// A given name may only be reserved once.
8248    #[prost(string, repeated, tag="10")]
8249    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8250}
8251/// Nested message and enum types in `DescriptorProto`.
8252pub mod descriptor_proto {
8253    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8254    /// fields or extension ranges in the same message. Reserved ranges may
8255    /// not overlap.
8256    #[derive(Clone, PartialEq, ::prost::Message)]
8257    pub struct ReservedRange {
8258        /// Inclusive.
8259        #[prost(int32, optional, tag="1")]
8260        pub start: ::core::option::Option<i32>,
8261        /// Exclusive.
8262        #[prost(int32, optional, tag="2")]
8263        pub end: ::core::option::Option<i32>,
8264    }
8265}
8266/// A message representing a option the parser does not recognize. This only
8267/// appears in options protos created by the compiler::Parser class.
8268/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8269/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8270/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8271/// in them.
8272#[derive(Clone, PartialEq, ::prost::Message)]
8273pub struct UninterpretedOption {
8274    #[prost(message, repeated, tag="2")]
8275    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8276    /// The value of the uninterpreted option, in whatever type the tokenizer
8277    /// identified it as during parsing. Exactly one of these should be set.
8278    #[prost(string, optional, tag="3")]
8279    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8280    #[prost(uint64, optional, tag="4")]
8281    pub positive_int_value: ::core::option::Option<u64>,
8282    #[prost(int64, optional, tag="5")]
8283    pub negative_int_value: ::core::option::Option<i64>,
8284    #[prost(double, optional, tag="6")]
8285    pub double_value: ::core::option::Option<f64>,
8286    #[prost(bytes="vec", optional, tag="7")]
8287    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8288    #[prost(string, optional, tag="8")]
8289    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8290}
8291/// Nested message and enum types in `UninterpretedOption`.
8292pub mod uninterpreted_option {
8293    /// The name of the uninterpreted option.  Each string represents a segment in
8294    /// a dot-separated name.  is_extension is true iff a segment represents an
8295    /// extension (denoted with parentheses in options specs in .proto files).
8296    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8297    /// "foo.(bar.baz).moo".
8298    #[derive(Clone, PartialEq, ::prost::Message)]
8299    pub struct NamePart {
8300        #[prost(string, optional, tag="1")]
8301        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8302        #[prost(bool, optional, tag="2")]
8303        pub is_extension: ::core::option::Option<bool>,
8304    }
8305}
8306#[derive(Clone, PartialEq, ::prost::Message)]
8307pub struct FieldOptions {
8308    /// The packed option can be enabled for repeated primitive fields to enable
8309    /// a more efficient representation on the wire. Rather than repeatedly
8310    /// writing the tag and type for each element, the entire array is encoded as
8311    /// a single length-delimited blob. In proto3, only explicit setting it to
8312    /// false will avoid using packed encoding.
8313    #[prost(bool, optional, tag="2")]
8314    pub packed: ::core::option::Option<bool>,
8315    /// The parser stores options it doesn't recognize here. See above.
8316    #[prost(message, repeated, tag="999")]
8317    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8318}
8319/// Describes a field within a message.
8320#[derive(Clone, PartialEq, ::prost::Message)]
8321pub struct FieldDescriptorProto {
8322    #[prost(string, optional, tag="1")]
8323    pub name: ::core::option::Option<::prost::alloc::string::String>,
8324    #[prost(int32, optional, tag="3")]
8325    pub number: ::core::option::Option<i32>,
8326    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
8327    pub label: ::core::option::Option<i32>,
8328    /// If type_name is set, this need not be set.  If both this and type_name
8329    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8330    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
8331    pub r#type: ::core::option::Option<i32>,
8332    /// For message and enum types, this is the name of the type.  If the name
8333    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8334    /// rules are used to find the type (i.e. first the nested types within this
8335    /// message are searched, then within the parent, on up to the root
8336    /// namespace).
8337    #[prost(string, optional, tag="6")]
8338    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8339    /// For extensions, this is the name of the type being extended.  It is
8340    /// resolved in the same manner as type_name.
8341    #[prost(string, optional, tag="2")]
8342    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8343    /// For numeric types, contains the original text representation of the value.
8344    /// For booleans, "true" or "false".
8345    /// For strings, contains the default text contents (not escaped in any way).
8346    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8347    /// TODO(kenton):  Base-64 encode?
8348    #[prost(string, optional, tag="7")]
8349    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8350    #[prost(message, optional, tag="8")]
8351    pub options: ::core::option::Option<FieldOptions>,
8352    /// If set, gives the index of a oneof in the containing type's oneof_decl
8353    /// list.  This field is a member of that oneof.
8354    #[prost(int32, optional, tag="9")]
8355    pub oneof_index: ::core::option::Option<i32>,
8356}
8357/// Nested message and enum types in `FieldDescriptorProto`.
8358pub mod field_descriptor_proto {
8359    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8360    #[repr(i32)]
8361    pub enum Type {
8362        /// 0 is reserved for errors.
8363        /// Order is weird for historical reasons.
8364        Double = 1,
8365        Float = 2,
8366        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8367        /// negative values are likely.
8368        Int64 = 3,
8369        Uint64 = 4,
8370        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8371        /// negative values are likely.
8372        Int32 = 5,
8373        Fixed64 = 6,
8374        Fixed32 = 7,
8375        Bool = 8,
8376        String = 9,
8377        /// Tag-delimited aggregate.
8378        /// Group type is deprecated and not supported in proto3. However, Proto3
8379        /// implementations should still be able to parse the group wire format and
8380        /// treat group fields as unknown fields.
8381        Group = 10,
8382        /// Length-delimited aggregate.
8383        Message = 11,
8384        /// New in version 2.
8385        Bytes = 12,
8386        Uint32 = 13,
8387        Enum = 14,
8388        Sfixed32 = 15,
8389        Sfixed64 = 16,
8390        /// Uses ZigZag encoding.
8391        Sint32 = 17,
8392        /// Uses ZigZag encoding.
8393        Sint64 = 18,
8394    }
8395    impl Type {
8396        /// String value of the enum field names used in the ProtoBuf definition.
8397        ///
8398        /// The values are not transformed in any way and thus are considered stable
8399        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8400        pub fn as_str_name(&self) -> &'static str {
8401            match self {
8402                Type::Double => "TYPE_DOUBLE",
8403                Type::Float => "TYPE_FLOAT",
8404                Type::Int64 => "TYPE_INT64",
8405                Type::Uint64 => "TYPE_UINT64",
8406                Type::Int32 => "TYPE_INT32",
8407                Type::Fixed64 => "TYPE_FIXED64",
8408                Type::Fixed32 => "TYPE_FIXED32",
8409                Type::Bool => "TYPE_BOOL",
8410                Type::String => "TYPE_STRING",
8411                Type::Group => "TYPE_GROUP",
8412                Type::Message => "TYPE_MESSAGE",
8413                Type::Bytes => "TYPE_BYTES",
8414                Type::Uint32 => "TYPE_UINT32",
8415                Type::Enum => "TYPE_ENUM",
8416                Type::Sfixed32 => "TYPE_SFIXED32",
8417                Type::Sfixed64 => "TYPE_SFIXED64",
8418                Type::Sint32 => "TYPE_SINT32",
8419                Type::Sint64 => "TYPE_SINT64",
8420            }
8421        }
8422    }
8423    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8424    #[repr(i32)]
8425    pub enum Label {
8426        /// 0 is reserved for errors
8427        Optional = 1,
8428        Required = 2,
8429        Repeated = 3,
8430    }
8431    impl Label {
8432        /// String value of the enum field names used in the ProtoBuf definition.
8433        ///
8434        /// The values are not transformed in any way and thus are considered stable
8435        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8436        pub fn as_str_name(&self) -> &'static str {
8437            match self {
8438                Label::Optional => "LABEL_OPTIONAL",
8439                Label::Required => "LABEL_REQUIRED",
8440                Label::Repeated => "LABEL_REPEATED",
8441            }
8442        }
8443    }
8444}
8445/// Describes a oneof.
8446#[derive(Clone, PartialEq, ::prost::Message)]
8447pub struct OneofDescriptorProto {
8448    #[prost(string, optional, tag="1")]
8449    pub name: ::core::option::Option<::prost::alloc::string::String>,
8450    #[prost(message, optional, tag="2")]
8451    pub options: ::core::option::Option<OneofOptions>,
8452}
8453/// Describes an enum type.
8454#[derive(Clone, PartialEq, ::prost::Message)]
8455pub struct EnumDescriptorProto {
8456    #[prost(string, optional, tag="1")]
8457    pub name: ::core::option::Option<::prost::alloc::string::String>,
8458    #[prost(message, repeated, tag="2")]
8459    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8460    /// Reserved enum value names, which may not be reused. A given name may only
8461    /// be reserved once.
8462    #[prost(string, repeated, tag="5")]
8463    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8464}
8465/// Describes a value within an enum.
8466#[derive(Clone, PartialEq, ::prost::Message)]
8467pub struct EnumValueDescriptorProto {
8468    #[prost(string, optional, tag="1")]
8469    pub name: ::core::option::Option<::prost::alloc::string::String>,
8470    #[prost(int32, optional, tag="2")]
8471    pub number: ::core::option::Option<i32>,
8472}
8473#[derive(Clone, PartialEq, ::prost::Message)]
8474pub struct OneofOptions {
8475}
8476// End of protos/perfetto/common/descriptor.proto
8477
8478// Begin of protos/perfetto/trace/extension_descriptor.proto
8479
8480/// This message contains descriptors used to parse extension fields of
8481/// TrackEvent.
8482///
8483/// See docs/design-docs/extensions.md for more details.
8484#[derive(Clone, PartialEq, ::prost::Message)]
8485pub struct ExtensionDescriptor {
8486    #[prost(message, optional, tag="1")]
8487    pub extension_set: ::core::option::Option<FileDescriptorSet>,
8488}
8489// End of protos/perfetto/trace/extension_descriptor.proto
8490
8491// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
8492
8493/// Represents the mapping between inode numbers in a block device and their path
8494/// on the filesystem
8495#[derive(Clone, PartialEq, ::prost::Message)]
8496pub struct InodeFileMap {
8497    #[prost(uint64, optional, tag="1")]
8498    pub block_device_id: ::core::option::Option<u64>,
8499    /// The mount points of the block device, e.g. \["system"\].
8500    #[prost(string, repeated, tag="2")]
8501    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8502    /// The list of all the entries from the block device
8503    #[prost(message, repeated, tag="3")]
8504    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
8505}
8506/// Nested message and enum types in `InodeFileMap`.
8507pub mod inode_file_map {
8508    /// Representation of Entry
8509    #[derive(Clone, PartialEq, ::prost::Message)]
8510    pub struct Entry {
8511        #[prost(uint64, optional, tag="1")]
8512        pub inode_number: ::core::option::Option<u64>,
8513        /// The path to the file, e.g. "etc/file.xml"
8514        /// List of strings for multiple hardlinks
8515        #[prost(string, repeated, tag="2")]
8516        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8517        #[prost(enumeration="entry::Type", optional, tag="3")]
8518        pub r#type: ::core::option::Option<i32>,
8519    }
8520    /// Nested message and enum types in `Entry`.
8521    pub mod entry {
8522        /// The file type
8523        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8524        #[repr(i32)]
8525        pub enum Type {
8526            Unknown = 0,
8527            File = 1,
8528            Directory = 2,
8529        }
8530        impl Type {
8531            /// String value of the enum field names used in the ProtoBuf definition.
8532            ///
8533            /// The values are not transformed in any way and thus are considered stable
8534            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8535            pub fn as_str_name(&self) -> &'static str {
8536                match self {
8537                    Type::Unknown => "UNKNOWN",
8538                    Type::File => "FILE",
8539                    Type::Directory => "DIRECTORY",
8540                }
8541            }
8542        }
8543    }
8544}
8545// End of protos/perfetto/trace/filesystem/inode_file_map.proto
8546
8547// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8548
8549#[derive(Clone, PartialEq, ::prost::Message)]
8550pub struct AndroidFsDatareadEndFtraceEvent {
8551    #[prost(int32, optional, tag="1")]
8552    pub bytes: ::core::option::Option<i32>,
8553    #[prost(uint64, optional, tag="2")]
8554    pub ino: ::core::option::Option<u64>,
8555    #[prost(int64, optional, tag="3")]
8556    pub offset: ::core::option::Option<i64>,
8557}
8558#[derive(Clone, PartialEq, ::prost::Message)]
8559pub struct AndroidFsDatareadStartFtraceEvent {
8560    #[prost(int32, optional, tag="1")]
8561    pub bytes: ::core::option::Option<i32>,
8562    #[prost(string, optional, tag="2")]
8563    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8564    #[prost(int64, optional, tag="3")]
8565    pub i_size: ::core::option::Option<i64>,
8566    #[prost(uint64, optional, tag="4")]
8567    pub ino: ::core::option::Option<u64>,
8568    #[prost(int64, optional, tag="5")]
8569    pub offset: ::core::option::Option<i64>,
8570    #[prost(string, optional, tag="6")]
8571    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8572    #[prost(int32, optional, tag="7")]
8573    pub pid: ::core::option::Option<i32>,
8574}
8575#[derive(Clone, PartialEq, ::prost::Message)]
8576pub struct AndroidFsDatawriteEndFtraceEvent {
8577    #[prost(int32, optional, tag="1")]
8578    pub bytes: ::core::option::Option<i32>,
8579    #[prost(uint64, optional, tag="2")]
8580    pub ino: ::core::option::Option<u64>,
8581    #[prost(int64, optional, tag="3")]
8582    pub offset: ::core::option::Option<i64>,
8583}
8584#[derive(Clone, PartialEq, ::prost::Message)]
8585pub struct AndroidFsDatawriteStartFtraceEvent {
8586    #[prost(int32, optional, tag="1")]
8587    pub bytes: ::core::option::Option<i32>,
8588    #[prost(string, optional, tag="2")]
8589    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8590    #[prost(int64, optional, tag="3")]
8591    pub i_size: ::core::option::Option<i64>,
8592    #[prost(uint64, optional, tag="4")]
8593    pub ino: ::core::option::Option<u64>,
8594    #[prost(int64, optional, tag="5")]
8595    pub offset: ::core::option::Option<i64>,
8596    #[prost(string, optional, tag="6")]
8597    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8598    #[prost(int32, optional, tag="7")]
8599    pub pid: ::core::option::Option<i32>,
8600}
8601#[derive(Clone, PartialEq, ::prost::Message)]
8602pub struct AndroidFsFsyncEndFtraceEvent {
8603    #[prost(int32, optional, tag="1")]
8604    pub bytes: ::core::option::Option<i32>,
8605    #[prost(uint64, optional, tag="2")]
8606    pub ino: ::core::option::Option<u64>,
8607    #[prost(int64, optional, tag="3")]
8608    pub offset: ::core::option::Option<i64>,
8609}
8610#[derive(Clone, PartialEq, ::prost::Message)]
8611pub struct AndroidFsFsyncStartFtraceEvent {
8612    #[prost(string, optional, tag="1")]
8613    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8614    #[prost(int64, optional, tag="2")]
8615    pub i_size: ::core::option::Option<i64>,
8616    #[prost(uint64, optional, tag="3")]
8617    pub ino: ::core::option::Option<u64>,
8618    #[prost(string, optional, tag="4")]
8619    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8620    #[prost(int32, optional, tag="5")]
8621    pub pid: ::core::option::Option<i32>,
8622}
8623// End of protos/perfetto/trace/ftrace/android_fs.proto
8624
8625// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
8626
8627#[derive(Clone, PartialEq, ::prost::Message)]
8628pub struct BclIrqTriggerFtraceEvent {
8629    #[prost(int32, optional, tag="1")]
8630    pub id: ::core::option::Option<i32>,
8631    #[prost(int32, optional, tag="2")]
8632    pub throttle: ::core::option::Option<i32>,
8633    #[prost(int32, optional, tag="3")]
8634    pub cpu0_limit: ::core::option::Option<i32>,
8635    #[prost(int32, optional, tag="4")]
8636    pub cpu1_limit: ::core::option::Option<i32>,
8637    #[prost(int32, optional, tag="5")]
8638    pub cpu2_limit: ::core::option::Option<i32>,
8639    #[prost(int32, optional, tag="6")]
8640    pub tpu_limit: ::core::option::Option<i32>,
8641    #[prost(int32, optional, tag="7")]
8642    pub gpu_limit: ::core::option::Option<i32>,
8643    #[prost(int32, optional, tag="8")]
8644    pub voltage: ::core::option::Option<i32>,
8645    #[prost(int32, optional, tag="9")]
8646    pub capacity: ::core::option::Option<i32>,
8647}
8648// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
8649
8650// Begin of protos/perfetto/trace/ftrace/binder.proto
8651
8652#[derive(Clone, PartialEq, ::prost::Message)]
8653pub struct BinderTransactionFtraceEvent {
8654    #[prost(int32, optional, tag="1")]
8655    pub debug_id: ::core::option::Option<i32>,
8656    #[prost(int32, optional, tag="2")]
8657    pub target_node: ::core::option::Option<i32>,
8658    #[prost(int32, optional, tag="3")]
8659    pub to_proc: ::core::option::Option<i32>,
8660    #[prost(int32, optional, tag="4")]
8661    pub to_thread: ::core::option::Option<i32>,
8662    #[prost(int32, optional, tag="5")]
8663    pub reply: ::core::option::Option<i32>,
8664    #[prost(uint32, optional, tag="6")]
8665    pub code: ::core::option::Option<u32>,
8666    #[prost(uint32, optional, tag="7")]
8667    pub flags: ::core::option::Option<u32>,
8668}
8669#[derive(Clone, PartialEq, ::prost::Message)]
8670pub struct BinderTransactionReceivedFtraceEvent {
8671    #[prost(int32, optional, tag="1")]
8672    pub debug_id: ::core::option::Option<i32>,
8673}
8674#[derive(Clone, PartialEq, ::prost::Message)]
8675pub struct BinderSetPriorityFtraceEvent {
8676    #[prost(int32, optional, tag="1")]
8677    pub proc: ::core::option::Option<i32>,
8678    #[prost(int32, optional, tag="2")]
8679    pub thread: ::core::option::Option<i32>,
8680    #[prost(uint32, optional, tag="3")]
8681    pub old_prio: ::core::option::Option<u32>,
8682    #[prost(uint32, optional, tag="4")]
8683    pub new_prio: ::core::option::Option<u32>,
8684    #[prost(uint32, optional, tag="5")]
8685    pub desired_prio: ::core::option::Option<u32>,
8686}
8687#[derive(Clone, PartialEq, ::prost::Message)]
8688pub struct BinderLockFtraceEvent {
8689    #[prost(string, optional, tag="1")]
8690    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8691}
8692#[derive(Clone, PartialEq, ::prost::Message)]
8693pub struct BinderLockedFtraceEvent {
8694    #[prost(string, optional, tag="1")]
8695    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8696}
8697#[derive(Clone, PartialEq, ::prost::Message)]
8698pub struct BinderUnlockFtraceEvent {
8699    #[prost(string, optional, tag="1")]
8700    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8701}
8702#[derive(Clone, PartialEq, ::prost::Message)]
8703pub struct BinderTransactionAllocBufFtraceEvent {
8704    #[prost(uint64, optional, tag="1")]
8705    pub data_size: ::core::option::Option<u64>,
8706    #[prost(int32, optional, tag="2")]
8707    pub debug_id: ::core::option::Option<i32>,
8708    #[prost(uint64, optional, tag="3")]
8709    pub offsets_size: ::core::option::Option<u64>,
8710    #[prost(uint64, optional, tag="4")]
8711    pub extra_buffers_size: ::core::option::Option<u64>,
8712}
8713#[derive(Clone, PartialEq, ::prost::Message)]
8714pub struct BinderCommandFtraceEvent {
8715    #[prost(uint32, optional, tag="1")]
8716    pub cmd: ::core::option::Option<u32>,
8717}
8718#[derive(Clone, PartialEq, ::prost::Message)]
8719pub struct BinderReturnFtraceEvent {
8720    #[prost(uint32, optional, tag="1")]
8721    pub cmd: ::core::option::Option<u32>,
8722}
8723// End of protos/perfetto/trace/ftrace/binder.proto
8724
8725// Begin of protos/perfetto/trace/ftrace/block.proto
8726
8727#[derive(Clone, PartialEq, ::prost::Message)]
8728pub struct BlockRqIssueFtraceEvent {
8729    #[prost(uint64, optional, tag="1")]
8730    pub dev: ::core::option::Option<u64>,
8731    #[prost(uint64, optional, tag="2")]
8732    pub sector: ::core::option::Option<u64>,
8733    #[prost(uint32, optional, tag="3")]
8734    pub nr_sector: ::core::option::Option<u32>,
8735    #[prost(uint32, optional, tag="4")]
8736    pub bytes: ::core::option::Option<u32>,
8737    #[prost(string, optional, tag="5")]
8738    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8739    #[prost(string, optional, tag="6")]
8740    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8741    #[prost(string, optional, tag="7")]
8742    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8743}
8744#[derive(Clone, PartialEq, ::prost::Message)]
8745pub struct BlockBioBackmergeFtraceEvent {
8746    #[prost(uint64, optional, tag="1")]
8747    pub dev: ::core::option::Option<u64>,
8748    #[prost(uint64, optional, tag="2")]
8749    pub sector: ::core::option::Option<u64>,
8750    #[prost(uint32, optional, tag="3")]
8751    pub nr_sector: ::core::option::Option<u32>,
8752    #[prost(string, optional, tag="4")]
8753    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8754    #[prost(string, optional, tag="5")]
8755    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8756}
8757#[derive(Clone, PartialEq, ::prost::Message)]
8758pub struct BlockBioBounceFtraceEvent {
8759    #[prost(uint64, optional, tag="1")]
8760    pub dev: ::core::option::Option<u64>,
8761    #[prost(uint64, optional, tag="2")]
8762    pub sector: ::core::option::Option<u64>,
8763    #[prost(uint32, optional, tag="3")]
8764    pub nr_sector: ::core::option::Option<u32>,
8765    #[prost(string, optional, tag="4")]
8766    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8767    #[prost(string, optional, tag="5")]
8768    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8769}
8770#[derive(Clone, PartialEq, ::prost::Message)]
8771pub struct BlockBioCompleteFtraceEvent {
8772    #[prost(uint64, optional, tag="1")]
8773    pub dev: ::core::option::Option<u64>,
8774    #[prost(uint64, optional, tag="2")]
8775    pub sector: ::core::option::Option<u64>,
8776    #[prost(uint32, optional, tag="3")]
8777    pub nr_sector: ::core::option::Option<u32>,
8778    #[prost(int32, optional, tag="4")]
8779    pub error: ::core::option::Option<i32>,
8780    #[prost(string, optional, tag="5")]
8781    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8782}
8783#[derive(Clone, PartialEq, ::prost::Message)]
8784pub struct BlockBioFrontmergeFtraceEvent {
8785    #[prost(uint64, optional, tag="1")]
8786    pub dev: ::core::option::Option<u64>,
8787    #[prost(uint64, optional, tag="2")]
8788    pub sector: ::core::option::Option<u64>,
8789    #[prost(uint32, optional, tag="3")]
8790    pub nr_sector: ::core::option::Option<u32>,
8791    #[prost(string, optional, tag="4")]
8792    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8793    #[prost(string, optional, tag="5")]
8794    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8795}
8796#[derive(Clone, PartialEq, ::prost::Message)]
8797pub struct BlockBioQueueFtraceEvent {
8798    #[prost(uint64, optional, tag="1")]
8799    pub dev: ::core::option::Option<u64>,
8800    #[prost(uint64, optional, tag="2")]
8801    pub sector: ::core::option::Option<u64>,
8802    #[prost(uint32, optional, tag="3")]
8803    pub nr_sector: ::core::option::Option<u32>,
8804    #[prost(string, optional, tag="4")]
8805    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8806    #[prost(string, optional, tag="5")]
8807    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8808}
8809#[derive(Clone, PartialEq, ::prost::Message)]
8810pub struct BlockBioRemapFtraceEvent {
8811    #[prost(uint64, optional, tag="1")]
8812    pub dev: ::core::option::Option<u64>,
8813    #[prost(uint64, optional, tag="2")]
8814    pub sector: ::core::option::Option<u64>,
8815    #[prost(uint32, optional, tag="3")]
8816    pub nr_sector: ::core::option::Option<u32>,
8817    #[prost(uint64, optional, tag="4")]
8818    pub old_dev: ::core::option::Option<u64>,
8819    #[prost(uint64, optional, tag="5")]
8820    pub old_sector: ::core::option::Option<u64>,
8821    #[prost(string, optional, tag="6")]
8822    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8823}
8824#[derive(Clone, PartialEq, ::prost::Message)]
8825pub struct BlockDirtyBufferFtraceEvent {
8826    #[prost(uint64, optional, tag="1")]
8827    pub dev: ::core::option::Option<u64>,
8828    #[prost(uint64, optional, tag="2")]
8829    pub sector: ::core::option::Option<u64>,
8830    #[prost(uint64, optional, tag="3")]
8831    pub size: ::core::option::Option<u64>,
8832}
8833#[derive(Clone, PartialEq, ::prost::Message)]
8834pub struct BlockGetrqFtraceEvent {
8835    #[prost(uint64, optional, tag="1")]
8836    pub dev: ::core::option::Option<u64>,
8837    #[prost(uint64, optional, tag="2")]
8838    pub sector: ::core::option::Option<u64>,
8839    #[prost(uint32, optional, tag="3")]
8840    pub nr_sector: ::core::option::Option<u32>,
8841    #[prost(string, optional, tag="4")]
8842    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8843    #[prost(string, optional, tag="5")]
8844    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8845}
8846#[derive(Clone, PartialEq, ::prost::Message)]
8847pub struct BlockPlugFtraceEvent {
8848    #[prost(string, optional, tag="1")]
8849    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8850}
8851#[derive(Clone, PartialEq, ::prost::Message)]
8852pub struct BlockRqAbortFtraceEvent {
8853    #[prost(uint64, optional, tag="1")]
8854    pub dev: ::core::option::Option<u64>,
8855    #[prost(uint64, optional, tag="2")]
8856    pub sector: ::core::option::Option<u64>,
8857    #[prost(uint32, optional, tag="3")]
8858    pub nr_sector: ::core::option::Option<u32>,
8859    #[prost(int32, optional, tag="4")]
8860    pub errors: ::core::option::Option<i32>,
8861    #[prost(string, optional, tag="5")]
8862    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8863    #[prost(string, optional, tag="6")]
8864    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8865}
8866#[derive(Clone, PartialEq, ::prost::Message)]
8867pub struct BlockRqCompleteFtraceEvent {
8868    #[prost(uint64, optional, tag="1")]
8869    pub dev: ::core::option::Option<u64>,
8870    #[prost(uint64, optional, tag="2")]
8871    pub sector: ::core::option::Option<u64>,
8872    #[prost(uint32, optional, tag="3")]
8873    pub nr_sector: ::core::option::Option<u32>,
8874    #[prost(int32, optional, tag="4")]
8875    pub errors: ::core::option::Option<i32>,
8876    #[prost(string, optional, tag="5")]
8877    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8878    #[prost(string, optional, tag="6")]
8879    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8880    #[prost(int32, optional, tag="7")]
8881    pub error: ::core::option::Option<i32>,
8882}
8883#[derive(Clone, PartialEq, ::prost::Message)]
8884pub struct BlockRqInsertFtraceEvent {
8885    #[prost(uint64, optional, tag="1")]
8886    pub dev: ::core::option::Option<u64>,
8887    #[prost(uint64, optional, tag="2")]
8888    pub sector: ::core::option::Option<u64>,
8889    #[prost(uint32, optional, tag="3")]
8890    pub nr_sector: ::core::option::Option<u32>,
8891    #[prost(uint32, optional, tag="4")]
8892    pub bytes: ::core::option::Option<u32>,
8893    #[prost(string, optional, tag="5")]
8894    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8895    #[prost(string, optional, tag="6")]
8896    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8897    #[prost(string, optional, tag="7")]
8898    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8899}
8900#[derive(Clone, PartialEq, ::prost::Message)]
8901pub struct BlockRqRemapFtraceEvent {
8902    #[prost(uint64, optional, tag="1")]
8903    pub dev: ::core::option::Option<u64>,
8904    #[prost(uint64, optional, tag="2")]
8905    pub sector: ::core::option::Option<u64>,
8906    #[prost(uint32, optional, tag="3")]
8907    pub nr_sector: ::core::option::Option<u32>,
8908    #[prost(uint64, optional, tag="4")]
8909    pub old_dev: ::core::option::Option<u64>,
8910    #[prost(uint64, optional, tag="5")]
8911    pub old_sector: ::core::option::Option<u64>,
8912    #[prost(uint32, optional, tag="6")]
8913    pub nr_bios: ::core::option::Option<u32>,
8914    #[prost(string, optional, tag="7")]
8915    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8916}
8917#[derive(Clone, PartialEq, ::prost::Message)]
8918pub struct BlockRqRequeueFtraceEvent {
8919    #[prost(uint64, optional, tag="1")]
8920    pub dev: ::core::option::Option<u64>,
8921    #[prost(uint64, optional, tag="2")]
8922    pub sector: ::core::option::Option<u64>,
8923    #[prost(uint32, optional, tag="3")]
8924    pub nr_sector: ::core::option::Option<u32>,
8925    #[prost(int32, optional, tag="4")]
8926    pub errors: ::core::option::Option<i32>,
8927    #[prost(string, optional, tag="5")]
8928    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8929    #[prost(string, optional, tag="6")]
8930    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8931}
8932#[derive(Clone, PartialEq, ::prost::Message)]
8933pub struct BlockSleeprqFtraceEvent {
8934    #[prost(uint64, optional, tag="1")]
8935    pub dev: ::core::option::Option<u64>,
8936    #[prost(uint64, optional, tag="2")]
8937    pub sector: ::core::option::Option<u64>,
8938    #[prost(uint32, optional, tag="3")]
8939    pub nr_sector: ::core::option::Option<u32>,
8940    #[prost(string, optional, tag="4")]
8941    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8942    #[prost(string, optional, tag="5")]
8943    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8944}
8945#[derive(Clone, PartialEq, ::prost::Message)]
8946pub struct BlockSplitFtraceEvent {
8947    #[prost(uint64, optional, tag="1")]
8948    pub dev: ::core::option::Option<u64>,
8949    #[prost(uint64, optional, tag="2")]
8950    pub sector: ::core::option::Option<u64>,
8951    #[prost(uint64, optional, tag="3")]
8952    pub new_sector: ::core::option::Option<u64>,
8953    #[prost(string, optional, tag="4")]
8954    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8955    #[prost(string, optional, tag="5")]
8956    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8957}
8958#[derive(Clone, PartialEq, ::prost::Message)]
8959pub struct BlockTouchBufferFtraceEvent {
8960    #[prost(uint64, optional, tag="1")]
8961    pub dev: ::core::option::Option<u64>,
8962    #[prost(uint64, optional, tag="2")]
8963    pub sector: ::core::option::Option<u64>,
8964    #[prost(uint64, optional, tag="3")]
8965    pub size: ::core::option::Option<u64>,
8966}
8967#[derive(Clone, PartialEq, ::prost::Message)]
8968pub struct BlockUnplugFtraceEvent {
8969    #[prost(int32, optional, tag="1")]
8970    pub nr_rq: ::core::option::Option<i32>,
8971    #[prost(string, optional, tag="2")]
8972    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8973}
8974#[derive(Clone, PartialEq, ::prost::Message)]
8975pub struct BlockIoStartFtraceEvent {
8976    #[prost(uint64, optional, tag="1")]
8977    pub dev: ::core::option::Option<u64>,
8978    #[prost(uint64, optional, tag="2")]
8979    pub sector: ::core::option::Option<u64>,
8980    #[prost(uint32, optional, tag="3")]
8981    pub nr_sector: ::core::option::Option<u32>,
8982    #[prost(uint32, optional, tag="4")]
8983    pub bytes: ::core::option::Option<u32>,
8984    #[prost(uint32, optional, tag="5")]
8985    pub ioprio: ::core::option::Option<u32>,
8986    #[prost(string, optional, tag="6")]
8987    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8988    #[prost(string, optional, tag="7")]
8989    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8990    #[prost(string, optional, tag="8")]
8991    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8992}
8993#[derive(Clone, PartialEq, ::prost::Message)]
8994pub struct BlockIoDoneFtraceEvent {
8995    #[prost(uint64, optional, tag="1")]
8996    pub dev: ::core::option::Option<u64>,
8997    #[prost(uint64, optional, tag="2")]
8998    pub sector: ::core::option::Option<u64>,
8999    #[prost(uint32, optional, tag="3")]
9000    pub nr_sector: ::core::option::Option<u32>,
9001    #[prost(uint32, optional, tag="4")]
9002    pub bytes: ::core::option::Option<u32>,
9003    #[prost(uint32, optional, tag="5")]
9004    pub ioprio: ::core::option::Option<u32>,
9005    #[prost(string, optional, tag="6")]
9006    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9007    #[prost(string, optional, tag="7")]
9008    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9009    #[prost(string, optional, tag="8")]
9010    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9011}
9012// End of protos/perfetto/trace/ftrace/block.proto
9013
9014// Begin of protos/perfetto/trace/ftrace/cgroup.proto
9015
9016#[derive(Clone, PartialEq, ::prost::Message)]
9017pub struct CgroupAttachTaskFtraceEvent {
9018    #[prost(int32, optional, tag="1")]
9019    pub dst_root: ::core::option::Option<i32>,
9020    #[prost(int32, optional, tag="2")]
9021    pub dst_id: ::core::option::Option<i32>,
9022    #[prost(int32, optional, tag="3")]
9023    pub pid: ::core::option::Option<i32>,
9024    #[prost(string, optional, tag="4")]
9025    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9026    #[prost(string, optional, tag="5")]
9027    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9028    #[prost(int32, optional, tag="6")]
9029    pub dst_level: ::core::option::Option<i32>,
9030    #[prost(string, optional, tag="7")]
9031    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9032}
9033#[derive(Clone, PartialEq, ::prost::Message)]
9034pub struct CgroupMkdirFtraceEvent {
9035    #[prost(int32, optional, tag="1")]
9036    pub root: ::core::option::Option<i32>,
9037    #[prost(int32, optional, tag="2")]
9038    pub id: ::core::option::Option<i32>,
9039    #[prost(string, optional, tag="3")]
9040    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9041    #[prost(int32, optional, tag="4")]
9042    pub level: ::core::option::Option<i32>,
9043    #[prost(string, optional, tag="5")]
9044    pub path: ::core::option::Option<::prost::alloc::string::String>,
9045}
9046#[derive(Clone, PartialEq, ::prost::Message)]
9047pub struct CgroupRemountFtraceEvent {
9048    #[prost(int32, optional, tag="1")]
9049    pub root: ::core::option::Option<i32>,
9050    #[prost(uint32, optional, tag="2")]
9051    pub ss_mask: ::core::option::Option<u32>,
9052    #[prost(string, optional, tag="3")]
9053    pub name: ::core::option::Option<::prost::alloc::string::String>,
9054}
9055#[derive(Clone, PartialEq, ::prost::Message)]
9056pub struct CgroupRmdirFtraceEvent {
9057    #[prost(int32, optional, tag="1")]
9058    pub root: ::core::option::Option<i32>,
9059    #[prost(int32, optional, tag="2")]
9060    pub id: ::core::option::Option<i32>,
9061    #[prost(string, optional, tag="3")]
9062    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9063    #[prost(int32, optional, tag="4")]
9064    pub level: ::core::option::Option<i32>,
9065    #[prost(string, optional, tag="5")]
9066    pub path: ::core::option::Option<::prost::alloc::string::String>,
9067}
9068#[derive(Clone, PartialEq, ::prost::Message)]
9069pub struct CgroupTransferTasksFtraceEvent {
9070    #[prost(int32, optional, tag="1")]
9071    pub dst_root: ::core::option::Option<i32>,
9072    #[prost(int32, optional, tag="2")]
9073    pub dst_id: ::core::option::Option<i32>,
9074    #[prost(int32, optional, tag="3")]
9075    pub pid: ::core::option::Option<i32>,
9076    #[prost(string, optional, tag="4")]
9077    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9078    #[prost(string, optional, tag="5")]
9079    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9080    #[prost(int32, optional, tag="6")]
9081    pub dst_level: ::core::option::Option<i32>,
9082    #[prost(string, optional, tag="7")]
9083    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9084}
9085#[derive(Clone, PartialEq, ::prost::Message)]
9086pub struct CgroupDestroyRootFtraceEvent {
9087    #[prost(int32, optional, tag="1")]
9088    pub root: ::core::option::Option<i32>,
9089    #[prost(uint32, optional, tag="2")]
9090    pub ss_mask: ::core::option::Option<u32>,
9091    #[prost(string, optional, tag="3")]
9092    pub name: ::core::option::Option<::prost::alloc::string::String>,
9093}
9094#[derive(Clone, PartialEq, ::prost::Message)]
9095pub struct CgroupReleaseFtraceEvent {
9096    #[prost(int32, optional, tag="1")]
9097    pub root: ::core::option::Option<i32>,
9098    #[prost(int32, optional, tag="2")]
9099    pub id: ::core::option::Option<i32>,
9100    #[prost(string, optional, tag="3")]
9101    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9102    #[prost(int32, optional, tag="4")]
9103    pub level: ::core::option::Option<i32>,
9104    #[prost(string, optional, tag="5")]
9105    pub path: ::core::option::Option<::prost::alloc::string::String>,
9106}
9107#[derive(Clone, PartialEq, ::prost::Message)]
9108pub struct CgroupRenameFtraceEvent {
9109    #[prost(int32, optional, tag="1")]
9110    pub root: ::core::option::Option<i32>,
9111    #[prost(int32, optional, tag="2")]
9112    pub id: ::core::option::Option<i32>,
9113    #[prost(string, optional, tag="3")]
9114    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9115    #[prost(int32, optional, tag="4")]
9116    pub level: ::core::option::Option<i32>,
9117    #[prost(string, optional, tag="5")]
9118    pub path: ::core::option::Option<::prost::alloc::string::String>,
9119}
9120#[derive(Clone, PartialEq, ::prost::Message)]
9121pub struct CgroupSetupRootFtraceEvent {
9122    #[prost(int32, optional, tag="1")]
9123    pub root: ::core::option::Option<i32>,
9124    #[prost(uint32, optional, tag="2")]
9125    pub ss_mask: ::core::option::Option<u32>,
9126    #[prost(string, optional, tag="3")]
9127    pub name: ::core::option::Option<::prost::alloc::string::String>,
9128}
9129// End of protos/perfetto/trace/ftrace/cgroup.proto
9130
9131// Begin of protos/perfetto/trace/ftrace/clk.proto
9132
9133#[derive(Clone, PartialEq, ::prost::Message)]
9134pub struct ClkEnableFtraceEvent {
9135    #[prost(string, optional, tag="1")]
9136    pub name: ::core::option::Option<::prost::alloc::string::String>,
9137}
9138#[derive(Clone, PartialEq, ::prost::Message)]
9139pub struct ClkDisableFtraceEvent {
9140    #[prost(string, optional, tag="1")]
9141    pub name: ::core::option::Option<::prost::alloc::string::String>,
9142}
9143#[derive(Clone, PartialEq, ::prost::Message)]
9144pub struct ClkSetRateFtraceEvent {
9145    #[prost(string, optional, tag="1")]
9146    pub name: ::core::option::Option<::prost::alloc::string::String>,
9147    #[prost(uint64, optional, tag="2")]
9148    pub rate: ::core::option::Option<u64>,
9149}
9150// End of protos/perfetto/trace/ftrace/clk.proto
9151
9152// Begin of protos/perfetto/trace/ftrace/cma.proto
9153
9154#[derive(Clone, PartialEq, ::prost::Message)]
9155pub struct CmaAllocStartFtraceEvent {
9156    #[prost(uint32, optional, tag="1")]
9157    pub align: ::core::option::Option<u32>,
9158    #[prost(uint32, optional, tag="2")]
9159    pub count: ::core::option::Option<u32>,
9160    #[prost(string, optional, tag="3")]
9161    pub name: ::core::option::Option<::prost::alloc::string::String>,
9162}
9163#[derive(Clone, PartialEq, ::prost::Message)]
9164pub struct CmaAllocInfoFtraceEvent {
9165    #[prost(uint32, optional, tag="1")]
9166    pub align: ::core::option::Option<u32>,
9167    #[prost(uint32, optional, tag="2")]
9168    pub count: ::core::option::Option<u32>,
9169    #[prost(uint32, optional, tag="3")]
9170    pub err_iso: ::core::option::Option<u32>,
9171    #[prost(uint32, optional, tag="4")]
9172    pub err_mig: ::core::option::Option<u32>,
9173    #[prost(uint32, optional, tag="5")]
9174    pub err_test: ::core::option::Option<u32>,
9175    #[prost(string, optional, tag="6")]
9176    pub name: ::core::option::Option<::prost::alloc::string::String>,
9177    #[prost(uint64, optional, tag="7")]
9178    pub nr_mapped: ::core::option::Option<u64>,
9179    #[prost(uint64, optional, tag="8")]
9180    pub nr_migrated: ::core::option::Option<u64>,
9181    #[prost(uint64, optional, tag="9")]
9182    pub nr_reclaimed: ::core::option::Option<u64>,
9183    #[prost(uint64, optional, tag="10")]
9184    pub pfn: ::core::option::Option<u64>,
9185}
9186#[derive(Clone, PartialEq, ::prost::Message)]
9187pub struct CmaAllocFinishFtraceEvent {
9188    #[prost(string, optional, tag="1")]
9189    pub name: ::core::option::Option<::prost::alloc::string::String>,
9190    #[prost(uint64, optional, tag="2")]
9191    pub pfn: ::core::option::Option<u64>,
9192    #[prost(uint64, optional, tag="3")]
9193    pub page: ::core::option::Option<u64>,
9194    #[prost(uint64, optional, tag="4")]
9195    pub count: ::core::option::Option<u64>,
9196    #[prost(uint32, optional, tag="5")]
9197    pub align: ::core::option::Option<u32>,
9198    #[prost(int32, optional, tag="6")]
9199    pub errorno: ::core::option::Option<i32>,
9200}
9201// End of protos/perfetto/trace/ftrace/cma.proto
9202
9203// Begin of protos/perfetto/trace/ftrace/compaction.proto
9204
9205#[derive(Clone, PartialEq, ::prost::Message)]
9206pub struct MmCompactionBeginFtraceEvent {
9207    #[prost(uint64, optional, tag="1")]
9208    pub zone_start: ::core::option::Option<u64>,
9209    #[prost(uint64, optional, tag="2")]
9210    pub migrate_pfn: ::core::option::Option<u64>,
9211    #[prost(uint64, optional, tag="3")]
9212    pub free_pfn: ::core::option::Option<u64>,
9213    #[prost(uint64, optional, tag="4")]
9214    pub zone_end: ::core::option::Option<u64>,
9215    #[prost(uint32, optional, tag="5")]
9216    pub sync: ::core::option::Option<u32>,
9217}
9218#[derive(Clone, PartialEq, ::prost::Message)]
9219pub struct MmCompactionDeferCompactionFtraceEvent {
9220    #[prost(int32, optional, tag="1")]
9221    pub nid: ::core::option::Option<i32>,
9222    #[prost(uint32, optional, tag="2")]
9223    pub idx: ::core::option::Option<u32>,
9224    #[prost(int32, optional, tag="3")]
9225    pub order: ::core::option::Option<i32>,
9226    #[prost(uint32, optional, tag="4")]
9227    pub considered: ::core::option::Option<u32>,
9228    #[prost(uint32, optional, tag="5")]
9229    pub defer_shift: ::core::option::Option<u32>,
9230    #[prost(int32, optional, tag="6")]
9231    pub order_failed: ::core::option::Option<i32>,
9232}
9233#[derive(Clone, PartialEq, ::prost::Message)]
9234pub struct MmCompactionDeferredFtraceEvent {
9235    #[prost(int32, optional, tag="1")]
9236    pub nid: ::core::option::Option<i32>,
9237    #[prost(uint32, optional, tag="2")]
9238    pub idx: ::core::option::Option<u32>,
9239    #[prost(int32, optional, tag="3")]
9240    pub order: ::core::option::Option<i32>,
9241    #[prost(uint32, optional, tag="4")]
9242    pub considered: ::core::option::Option<u32>,
9243    #[prost(uint32, optional, tag="5")]
9244    pub defer_shift: ::core::option::Option<u32>,
9245    #[prost(int32, optional, tag="6")]
9246    pub order_failed: ::core::option::Option<i32>,
9247}
9248#[derive(Clone, PartialEq, ::prost::Message)]
9249pub struct MmCompactionDeferResetFtraceEvent {
9250    #[prost(int32, optional, tag="1")]
9251    pub nid: ::core::option::Option<i32>,
9252    #[prost(uint32, optional, tag="2")]
9253    pub idx: ::core::option::Option<u32>,
9254    #[prost(int32, optional, tag="3")]
9255    pub order: ::core::option::Option<i32>,
9256    #[prost(uint32, optional, tag="4")]
9257    pub considered: ::core::option::Option<u32>,
9258    #[prost(uint32, optional, tag="5")]
9259    pub defer_shift: ::core::option::Option<u32>,
9260    #[prost(int32, optional, tag="6")]
9261    pub order_failed: ::core::option::Option<i32>,
9262}
9263#[derive(Clone, PartialEq, ::prost::Message)]
9264pub struct MmCompactionEndFtraceEvent {
9265    #[prost(uint64, optional, tag="1")]
9266    pub zone_start: ::core::option::Option<u64>,
9267    #[prost(uint64, optional, tag="2")]
9268    pub migrate_pfn: ::core::option::Option<u64>,
9269    #[prost(uint64, optional, tag="3")]
9270    pub free_pfn: ::core::option::Option<u64>,
9271    #[prost(uint64, optional, tag="4")]
9272    pub zone_end: ::core::option::Option<u64>,
9273    #[prost(uint32, optional, tag="5")]
9274    pub sync: ::core::option::Option<u32>,
9275    #[prost(int32, optional, tag="6")]
9276    pub status: ::core::option::Option<i32>,
9277}
9278#[derive(Clone, PartialEq, ::prost::Message)]
9279pub struct MmCompactionFinishedFtraceEvent {
9280    #[prost(int32, optional, tag="1")]
9281    pub nid: ::core::option::Option<i32>,
9282    #[prost(uint32, optional, tag="2")]
9283    pub idx: ::core::option::Option<u32>,
9284    #[prost(int32, optional, tag="3")]
9285    pub order: ::core::option::Option<i32>,
9286    #[prost(int32, optional, tag="4")]
9287    pub ret: ::core::option::Option<i32>,
9288}
9289#[derive(Clone, PartialEq, ::prost::Message)]
9290pub struct MmCompactionIsolateFreepagesFtraceEvent {
9291    #[prost(uint64, optional, tag="1")]
9292    pub start_pfn: ::core::option::Option<u64>,
9293    #[prost(uint64, optional, tag="2")]
9294    pub end_pfn: ::core::option::Option<u64>,
9295    #[prost(uint64, optional, tag="3")]
9296    pub nr_scanned: ::core::option::Option<u64>,
9297    #[prost(uint64, optional, tag="4")]
9298    pub nr_taken: ::core::option::Option<u64>,
9299}
9300#[derive(Clone, PartialEq, ::prost::Message)]
9301pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9302    #[prost(uint64, optional, tag="1")]
9303    pub start_pfn: ::core::option::Option<u64>,
9304    #[prost(uint64, optional, tag="2")]
9305    pub end_pfn: ::core::option::Option<u64>,
9306    #[prost(uint64, optional, tag="3")]
9307    pub nr_scanned: ::core::option::Option<u64>,
9308    #[prost(uint64, optional, tag="4")]
9309    pub nr_taken: ::core::option::Option<u64>,
9310}
9311#[derive(Clone, PartialEq, ::prost::Message)]
9312pub struct MmCompactionKcompactdSleepFtraceEvent {
9313    #[prost(int32, optional, tag="1")]
9314    pub nid: ::core::option::Option<i32>,
9315}
9316#[derive(Clone, PartialEq, ::prost::Message)]
9317pub struct MmCompactionKcompactdWakeFtraceEvent {
9318    #[prost(int32, optional, tag="1")]
9319    pub nid: ::core::option::Option<i32>,
9320    #[prost(int32, optional, tag="2")]
9321    pub order: ::core::option::Option<i32>,
9322    #[prost(uint32, optional, tag="3")]
9323    pub classzone_idx: ::core::option::Option<u32>,
9324    #[prost(uint32, optional, tag="4")]
9325    pub highest_zoneidx: ::core::option::Option<u32>,
9326}
9327#[derive(Clone, PartialEq, ::prost::Message)]
9328pub struct MmCompactionMigratepagesFtraceEvent {
9329    #[prost(uint64, optional, tag="1")]
9330    pub nr_migrated: ::core::option::Option<u64>,
9331    #[prost(uint64, optional, tag="2")]
9332    pub nr_failed: ::core::option::Option<u64>,
9333}
9334#[derive(Clone, PartialEq, ::prost::Message)]
9335pub struct MmCompactionSuitableFtraceEvent {
9336    #[prost(int32, optional, tag="1")]
9337    pub nid: ::core::option::Option<i32>,
9338    #[prost(uint32, optional, tag="2")]
9339    pub idx: ::core::option::Option<u32>,
9340    #[prost(int32, optional, tag="3")]
9341    pub order: ::core::option::Option<i32>,
9342    #[prost(int32, optional, tag="4")]
9343    pub ret: ::core::option::Option<i32>,
9344}
9345#[derive(Clone, PartialEq, ::prost::Message)]
9346pub struct MmCompactionTryToCompactPagesFtraceEvent {
9347    #[prost(int32, optional, tag="1")]
9348    pub order: ::core::option::Option<i32>,
9349    #[prost(uint32, optional, tag="2")]
9350    pub gfp_mask: ::core::option::Option<u32>,
9351    #[prost(uint32, optional, tag="3")]
9352    pub mode: ::core::option::Option<u32>,
9353    #[prost(int32, optional, tag="4")]
9354    pub prio: ::core::option::Option<i32>,
9355}
9356#[derive(Clone, PartialEq, ::prost::Message)]
9357pub struct MmCompactionWakeupKcompactdFtraceEvent {
9358    #[prost(int32, optional, tag="1")]
9359    pub nid: ::core::option::Option<i32>,
9360    #[prost(int32, optional, tag="2")]
9361    pub order: ::core::option::Option<i32>,
9362    #[prost(uint32, optional, tag="3")]
9363    pub classzone_idx: ::core::option::Option<u32>,
9364    #[prost(uint32, optional, tag="4")]
9365    pub highest_zoneidx: ::core::option::Option<u32>,
9366}
9367// End of protos/perfetto/trace/ftrace/compaction.proto
9368
9369// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
9370
9371#[derive(Clone, PartialEq, ::prost::Message)]
9372pub struct ParamSetValueCpmFtraceEvent {
9373    #[prost(string, optional, tag="1")]
9374    pub body: ::core::option::Option<::prost::alloc::string::String>,
9375    #[prost(uint32, optional, tag="2")]
9376    pub value: ::core::option::Option<u32>,
9377    #[prost(int64, optional, tag="3")]
9378    pub timestamp: ::core::option::Option<i64>,
9379}
9380// End of protos/perfetto/trace/ftrace/cpm_trace.proto
9381
9382// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
9383
9384#[derive(Clone, PartialEq, ::prost::Message)]
9385pub struct CpuhpExitFtraceEvent {
9386    #[prost(uint32, optional, tag="1")]
9387    pub cpu: ::core::option::Option<u32>,
9388    #[prost(int32, optional, tag="2")]
9389    pub idx: ::core::option::Option<i32>,
9390    #[prost(int32, optional, tag="3")]
9391    pub ret: ::core::option::Option<i32>,
9392    #[prost(int32, optional, tag="4")]
9393    pub state: ::core::option::Option<i32>,
9394}
9395#[derive(Clone, PartialEq, ::prost::Message)]
9396pub struct CpuhpMultiEnterFtraceEvent {
9397    #[prost(uint32, optional, tag="1")]
9398    pub cpu: ::core::option::Option<u32>,
9399    #[prost(uint64, optional, tag="2")]
9400    pub fun: ::core::option::Option<u64>,
9401    #[prost(int32, optional, tag="3")]
9402    pub idx: ::core::option::Option<i32>,
9403    #[prost(int32, optional, tag="4")]
9404    pub target: ::core::option::Option<i32>,
9405}
9406#[derive(Clone, PartialEq, ::prost::Message)]
9407pub struct CpuhpEnterFtraceEvent {
9408    #[prost(uint32, optional, tag="1")]
9409    pub cpu: ::core::option::Option<u32>,
9410    #[prost(uint64, optional, tag="2")]
9411    pub fun: ::core::option::Option<u64>,
9412    #[prost(int32, optional, tag="3")]
9413    pub idx: ::core::option::Option<i32>,
9414    #[prost(int32, optional, tag="4")]
9415    pub target: ::core::option::Option<i32>,
9416}
9417#[derive(Clone, PartialEq, ::prost::Message)]
9418pub struct CpuhpLatencyFtraceEvent {
9419    #[prost(uint32, optional, tag="1")]
9420    pub cpu: ::core::option::Option<u32>,
9421    #[prost(int32, optional, tag="2")]
9422    pub ret: ::core::option::Option<i32>,
9423    #[prost(uint32, optional, tag="3")]
9424    pub state: ::core::option::Option<u32>,
9425    #[prost(uint64, optional, tag="4")]
9426    pub time: ::core::option::Option<u64>,
9427}
9428#[derive(Clone, PartialEq, ::prost::Message)]
9429pub struct CpuhpPauseFtraceEvent {
9430    #[prost(uint32, optional, tag="1")]
9431    pub active_cpus: ::core::option::Option<u32>,
9432    #[prost(uint32, optional, tag="2")]
9433    pub cpus: ::core::option::Option<u32>,
9434    #[prost(uint32, optional, tag="3")]
9435    pub pause: ::core::option::Option<u32>,
9436    #[prost(uint32, optional, tag="4")]
9437    pub time: ::core::option::Option<u32>,
9438}
9439// End of protos/perfetto/trace/ftrace/cpuhp.proto
9440
9441// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
9442
9443#[derive(Clone, PartialEq, ::prost::Message)]
9444pub struct CrosEcSensorhubDataFtraceEvent {
9445    #[prost(int64, optional, tag="1")]
9446    pub current_time: ::core::option::Option<i64>,
9447    #[prost(int64, optional, tag="2")]
9448    pub current_timestamp: ::core::option::Option<i64>,
9449    #[prost(int64, optional, tag="3")]
9450    pub delta: ::core::option::Option<i64>,
9451    #[prost(uint32, optional, tag="4")]
9452    pub ec_fifo_timestamp: ::core::option::Option<u32>,
9453    #[prost(uint32, optional, tag="5")]
9454    pub ec_sensor_num: ::core::option::Option<u32>,
9455    #[prost(int64, optional, tag="6")]
9456    pub fifo_timestamp: ::core::option::Option<i64>,
9457}
9458// End of protos/perfetto/trace/ftrace/cros_ec.proto
9459
9460// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
9461
9462#[derive(Clone, PartialEq, ::prost::Message)]
9463pub struct DcvshFreqFtraceEvent {
9464    #[prost(uint64, optional, tag="1")]
9465    pub cpu: ::core::option::Option<u64>,
9466    #[prost(uint64, optional, tag="2")]
9467    pub freq: ::core::option::Option<u64>,
9468}
9469// End of protos/perfetto/trace/ftrace/dcvsh.proto
9470
9471// Begin of protos/perfetto/trace/ftrace/devfreq.proto
9472
9473#[derive(Clone, PartialEq, ::prost::Message)]
9474pub struct DevfreqFrequencyFtraceEvent {
9475    #[prost(string, optional, tag="1")]
9476    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
9477    #[prost(uint64, optional, tag="2")]
9478    pub freq: ::core::option::Option<u64>,
9479    #[prost(uint64, optional, tag="3")]
9480    pub prev_freq: ::core::option::Option<u64>,
9481    #[prost(uint64, optional, tag="4")]
9482    pub busy_time: ::core::option::Option<u64>,
9483    #[prost(uint64, optional, tag="5")]
9484    pub total_time: ::core::option::Option<u64>,
9485}
9486// End of protos/perfetto/trace/ftrace/devfreq.proto
9487
9488// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
9489
9490#[derive(Clone, PartialEq, ::prost::Message)]
9491pub struct DmaFenceInitFtraceEvent {
9492    #[prost(uint32, optional, tag="1")]
9493    pub context: ::core::option::Option<u32>,
9494    #[prost(string, optional, tag="2")]
9495    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9496    #[prost(uint32, optional, tag="3")]
9497    pub seqno: ::core::option::Option<u32>,
9498    #[prost(string, optional, tag="4")]
9499    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9500}
9501#[derive(Clone, PartialEq, ::prost::Message)]
9502pub struct DmaFenceEmitFtraceEvent {
9503    #[prost(uint32, optional, tag="1")]
9504    pub context: ::core::option::Option<u32>,
9505    #[prost(string, optional, tag="2")]
9506    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9507    #[prost(uint32, optional, tag="3")]
9508    pub seqno: ::core::option::Option<u32>,
9509    #[prost(string, optional, tag="4")]
9510    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9511}
9512#[derive(Clone, PartialEq, ::prost::Message)]
9513pub struct DmaFenceSignaledFtraceEvent {
9514    #[prost(uint32, optional, tag="1")]
9515    pub context: ::core::option::Option<u32>,
9516    #[prost(string, optional, tag="2")]
9517    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9518    #[prost(uint32, optional, tag="3")]
9519    pub seqno: ::core::option::Option<u32>,
9520    #[prost(string, optional, tag="4")]
9521    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9522}
9523#[derive(Clone, PartialEq, ::prost::Message)]
9524pub struct DmaFenceWaitStartFtraceEvent {
9525    #[prost(uint32, optional, tag="1")]
9526    pub context: ::core::option::Option<u32>,
9527    #[prost(string, optional, tag="2")]
9528    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9529    #[prost(uint32, optional, tag="3")]
9530    pub seqno: ::core::option::Option<u32>,
9531    #[prost(string, optional, tag="4")]
9532    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9533}
9534#[derive(Clone, PartialEq, ::prost::Message)]
9535pub struct DmaFenceWaitEndFtraceEvent {
9536    #[prost(uint32, optional, tag="1")]
9537    pub context: ::core::option::Option<u32>,
9538    #[prost(string, optional, tag="2")]
9539    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9540    #[prost(uint32, optional, tag="3")]
9541    pub seqno: ::core::option::Option<u32>,
9542    #[prost(string, optional, tag="4")]
9543    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9544}
9545// End of protos/perfetto/trace/ftrace/dma_fence.proto
9546
9547// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9548
9549#[derive(Clone, PartialEq, ::prost::Message)]
9550pub struct DmaHeapStatFtraceEvent {
9551    #[prost(uint64, optional, tag="1")]
9552    pub inode: ::core::option::Option<u64>,
9553    #[prost(int64, optional, tag="2")]
9554    pub len: ::core::option::Option<i64>,
9555    #[prost(uint64, optional, tag="3")]
9556    pub total_allocated: ::core::option::Option<u64>,
9557}
9558// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9559
9560// Begin of protos/perfetto/trace/ftrace/dpu.proto
9561
9562#[derive(Clone, PartialEq, ::prost::Message)]
9563pub struct DpuTracingMarkWriteFtraceEvent {
9564    #[prost(int32, optional, tag="1")]
9565    pub pid: ::core::option::Option<i32>,
9566    #[prost(string, optional, tag="2")]
9567    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
9568    #[prost(uint32, optional, tag="3")]
9569    pub trace_begin: ::core::option::Option<u32>,
9570    #[prost(string, optional, tag="4")]
9571    pub name: ::core::option::Option<::prost::alloc::string::String>,
9572    #[prost(uint32, optional, tag="5")]
9573    pub r#type: ::core::option::Option<u32>,
9574    #[prost(int32, optional, tag="6")]
9575    pub value: ::core::option::Option<i32>,
9576}
9577#[derive(Clone, PartialEq, ::prost::Message)]
9578pub struct DpuDsiCmdFifoStatusFtraceEvent {
9579    #[prost(uint32, optional, tag="1")]
9580    pub header: ::core::option::Option<u32>,
9581    #[prost(uint32, optional, tag="2")]
9582    pub payload: ::core::option::Option<u32>,
9583}
9584#[derive(Clone, PartialEq, ::prost::Message)]
9585pub struct DpuDsiRxFtraceEvent {
9586    #[prost(uint32, optional, tag="1")]
9587    pub cmd: ::core::option::Option<u32>,
9588    #[prost(uint32, optional, tag="2")]
9589    pub rx_buf: ::core::option::Option<u32>,
9590}
9591#[derive(Clone, PartialEq, ::prost::Message)]
9592pub struct DpuDsiTxFtraceEvent {
9593    #[prost(uint32, optional, tag="1")]
9594    pub r#type: ::core::option::Option<u32>,
9595    #[prost(uint32, optional, tag="2")]
9596    pub tx_buf: ::core::option::Option<u32>,
9597    #[prost(uint32, optional, tag="3")]
9598    pub last: ::core::option::Option<u32>,
9599    #[prost(uint32, optional, tag="4")]
9600    pub delay_ms: ::core::option::Option<u32>,
9601}
9602#[derive(Clone, PartialEq, ::prost::Message)]
9603pub struct DpuDispDpuUnderrunFtraceEvent {
9604    #[prost(int32, optional, tag="1")]
9605    pub id: ::core::option::Option<i32>,
9606    #[prost(int32, optional, tag="2")]
9607    pub frames_pending: ::core::option::Option<i32>,
9608    #[prost(int32, optional, tag="3")]
9609    pub vsync_count: ::core::option::Option<i32>,
9610}
9611#[derive(Clone, PartialEq, ::prost::Message)]
9612pub struct DpuDispVblankIrqEnableFtraceEvent {
9613    #[prost(int32, optional, tag="1")]
9614    pub id: ::core::option::Option<i32>,
9615    #[prost(int32, optional, tag="2")]
9616    pub output_id: ::core::option::Option<i32>,
9617    #[prost(int32, optional, tag="3")]
9618    pub enable: ::core::option::Option<i32>,
9619}
9620// End of protos/perfetto/trace/ftrace/dpu.proto
9621
9622// Begin of protos/perfetto/trace/ftrace/drm.proto
9623
9624#[derive(Clone, PartialEq, ::prost::Message)]
9625pub struct DrmVblankEventFtraceEvent {
9626    #[prost(int32, optional, tag="1")]
9627    pub crtc: ::core::option::Option<i32>,
9628    #[prost(uint32, optional, tag="2")]
9629    pub high_prec: ::core::option::Option<u32>,
9630    #[prost(uint32, optional, tag="3")]
9631    pub seq: ::core::option::Option<u32>,
9632    #[prost(int64, optional, tag="4")]
9633    pub time: ::core::option::Option<i64>,
9634}
9635#[derive(Clone, PartialEq, ::prost::Message)]
9636pub struct DrmVblankEventDeliveredFtraceEvent {
9637    #[prost(int32, optional, tag="1")]
9638    pub crtc: ::core::option::Option<i32>,
9639    #[prost(uint64, optional, tag="2")]
9640    pub file: ::core::option::Option<u64>,
9641    #[prost(uint32, optional, tag="3")]
9642    pub seq: ::core::option::Option<u32>,
9643}
9644// End of protos/perfetto/trace/ftrace/drm.proto
9645
9646// Begin of protos/perfetto/trace/ftrace/dwc3.proto
9647
9648#[derive(Clone, PartialEq, ::prost::Message)]
9649pub struct Dwc3AllocRequestFtraceEvent {
9650    #[prost(string, optional, tag="1")]
9651    pub name: ::core::option::Option<::prost::alloc::string::String>,
9652    #[prost(uint64, optional, tag="2")]
9653    pub req: ::core::option::Option<u64>,
9654    #[prost(uint32, optional, tag="3")]
9655    pub actual: ::core::option::Option<u32>,
9656    #[prost(uint32, optional, tag="4")]
9657    pub length: ::core::option::Option<u32>,
9658    #[prost(int32, optional, tag="5")]
9659    pub status: ::core::option::Option<i32>,
9660    #[prost(int32, optional, tag="6")]
9661    pub zero: ::core::option::Option<i32>,
9662    #[prost(int32, optional, tag="7")]
9663    pub short_not_ok: ::core::option::Option<i32>,
9664    #[prost(int32, optional, tag="8")]
9665    pub no_interrupt: ::core::option::Option<i32>,
9666}
9667#[derive(Clone, PartialEq, ::prost::Message)]
9668pub struct Dwc3CompleteTrbFtraceEvent {
9669    #[prost(string, optional, tag="1")]
9670    pub name: ::core::option::Option<::prost::alloc::string::String>,
9671    #[prost(uint64, optional, tag="2")]
9672    pub trb: ::core::option::Option<u64>,
9673    #[prost(uint32, optional, tag="3")]
9674    pub allocated: ::core::option::Option<u32>,
9675    #[prost(uint32, optional, tag="4")]
9676    pub queued: ::core::option::Option<u32>,
9677    #[prost(uint32, optional, tag="5")]
9678    pub bpl: ::core::option::Option<u32>,
9679    #[prost(uint32, optional, tag="6")]
9680    pub bph: ::core::option::Option<u32>,
9681    #[prost(uint32, optional, tag="7")]
9682    pub size: ::core::option::Option<u32>,
9683    #[prost(uint32, optional, tag="8")]
9684    pub ctrl: ::core::option::Option<u32>,
9685    #[prost(uint32, optional, tag="9")]
9686    pub r#type: ::core::option::Option<u32>,
9687    #[prost(uint32, optional, tag="10")]
9688    pub enqueue: ::core::option::Option<u32>,
9689    #[prost(uint32, optional, tag="11")]
9690    pub dequeue: ::core::option::Option<u32>,
9691}
9692#[derive(Clone, PartialEq, ::prost::Message)]
9693pub struct Dwc3CtrlReqFtraceEvent {
9694    #[prost(uint32, optional, tag="1")]
9695    pub b_request_type: ::core::option::Option<u32>,
9696    #[prost(uint32, optional, tag="2")]
9697    pub b_request: ::core::option::Option<u32>,
9698    #[prost(uint32, optional, tag="3")]
9699    pub w_value: ::core::option::Option<u32>,
9700    #[prost(uint32, optional, tag="4")]
9701    pub w_index: ::core::option::Option<u32>,
9702    #[prost(uint32, optional, tag="5")]
9703    pub w_length: ::core::option::Option<u32>,
9704    #[prost(string, optional, tag="6")]
9705    pub str: ::core::option::Option<::prost::alloc::string::String>,
9706}
9707#[derive(Clone, PartialEq, ::prost::Message)]
9708pub struct Dwc3EpDequeueFtraceEvent {
9709    #[prost(string, optional, tag="1")]
9710    pub name: ::core::option::Option<::prost::alloc::string::String>,
9711    #[prost(uint64, optional, tag="2")]
9712    pub req: ::core::option::Option<u64>,
9713    #[prost(uint32, optional, tag="3")]
9714    pub actual: ::core::option::Option<u32>,
9715    #[prost(uint32, optional, tag="4")]
9716    pub length: ::core::option::Option<u32>,
9717    #[prost(int32, optional, tag="5")]
9718    pub status: ::core::option::Option<i32>,
9719    #[prost(int32, optional, tag="6")]
9720    pub zero: ::core::option::Option<i32>,
9721    #[prost(int32, optional, tag="7")]
9722    pub short_not_ok: ::core::option::Option<i32>,
9723    #[prost(int32, optional, tag="8")]
9724    pub no_interrupt: ::core::option::Option<i32>,
9725}
9726#[derive(Clone, PartialEq, ::prost::Message)]
9727pub struct Dwc3EpQueueFtraceEvent {
9728    #[prost(string, optional, tag="1")]
9729    pub name: ::core::option::Option<::prost::alloc::string::String>,
9730    #[prost(uint64, optional, tag="2")]
9731    pub req: ::core::option::Option<u64>,
9732    #[prost(uint32, optional, tag="3")]
9733    pub actual: ::core::option::Option<u32>,
9734    #[prost(uint32, optional, tag="4")]
9735    pub length: ::core::option::Option<u32>,
9736    #[prost(int32, optional, tag="5")]
9737    pub status: ::core::option::Option<i32>,
9738    #[prost(int32, optional, tag="6")]
9739    pub zero: ::core::option::Option<i32>,
9740    #[prost(int32, optional, tag="7")]
9741    pub short_not_ok: ::core::option::Option<i32>,
9742    #[prost(int32, optional, tag="8")]
9743    pub no_interrupt: ::core::option::Option<i32>,
9744}
9745#[derive(Clone, PartialEq, ::prost::Message)]
9746pub struct Dwc3EventFtraceEvent {
9747    #[prost(uint32, optional, tag="1")]
9748    pub event: ::core::option::Option<u32>,
9749    #[prost(uint32, optional, tag="2")]
9750    pub ep0state: ::core::option::Option<u32>,
9751    #[prost(string, optional, tag="3")]
9752    pub str: ::core::option::Option<::prost::alloc::string::String>,
9753}
9754#[derive(Clone, PartialEq, ::prost::Message)]
9755pub struct Dwc3FreeRequestFtraceEvent {
9756    #[prost(string, optional, tag="1")]
9757    pub name: ::core::option::Option<::prost::alloc::string::String>,
9758    #[prost(uint64, optional, tag="2")]
9759    pub req: ::core::option::Option<u64>,
9760    #[prost(uint32, optional, tag="3")]
9761    pub actual: ::core::option::Option<u32>,
9762    #[prost(uint32, optional, tag="4")]
9763    pub length: ::core::option::Option<u32>,
9764    #[prost(int32, optional, tag="5")]
9765    pub status: ::core::option::Option<i32>,
9766    #[prost(int32, optional, tag="6")]
9767    pub zero: ::core::option::Option<i32>,
9768    #[prost(int32, optional, tag="7")]
9769    pub short_not_ok: ::core::option::Option<i32>,
9770    #[prost(int32, optional, tag="8")]
9771    pub no_interrupt: ::core::option::Option<i32>,
9772}
9773#[derive(Clone, PartialEq, ::prost::Message)]
9774pub struct Dwc3GadgetEpCmdFtraceEvent {
9775    #[prost(string, optional, tag="1")]
9776    pub name: ::core::option::Option<::prost::alloc::string::String>,
9777    #[prost(uint32, optional, tag="2")]
9778    pub cmd: ::core::option::Option<u32>,
9779    #[prost(uint32, optional, tag="3")]
9780    pub param0: ::core::option::Option<u32>,
9781    #[prost(uint32, optional, tag="4")]
9782    pub param1: ::core::option::Option<u32>,
9783    #[prost(uint32, optional, tag="5")]
9784    pub param2: ::core::option::Option<u32>,
9785    #[prost(int32, optional, tag="6")]
9786    pub cmd_status: ::core::option::Option<i32>,
9787}
9788#[derive(Clone, PartialEq, ::prost::Message)]
9789pub struct Dwc3GadgetEpDisableFtraceEvent {
9790    #[prost(string, optional, tag="1")]
9791    pub name: ::core::option::Option<::prost::alloc::string::String>,
9792    #[prost(uint32, optional, tag="2")]
9793    pub maxpacket: ::core::option::Option<u32>,
9794    #[prost(uint32, optional, tag="3")]
9795    pub maxpacket_limit: ::core::option::Option<u32>,
9796    #[prost(uint32, optional, tag="4")]
9797    pub max_streams: ::core::option::Option<u32>,
9798    #[prost(uint32, optional, tag="5")]
9799    pub maxburst: ::core::option::Option<u32>,
9800    #[prost(uint32, optional, tag="6")]
9801    pub flags: ::core::option::Option<u32>,
9802    #[prost(uint32, optional, tag="7")]
9803    pub direction: ::core::option::Option<u32>,
9804    #[prost(uint32, optional, tag="8")]
9805    pub trb_enqueue: ::core::option::Option<u32>,
9806    #[prost(uint32, optional, tag="9")]
9807    pub trb_dequeue: ::core::option::Option<u32>,
9808}
9809#[derive(Clone, PartialEq, ::prost::Message)]
9810pub struct Dwc3GadgetEpEnableFtraceEvent {
9811    #[prost(string, optional, tag="1")]
9812    pub name: ::core::option::Option<::prost::alloc::string::String>,
9813    #[prost(uint32, optional, tag="2")]
9814    pub maxpacket: ::core::option::Option<u32>,
9815    #[prost(uint32, optional, tag="3")]
9816    pub maxpacket_limit: ::core::option::Option<u32>,
9817    #[prost(uint32, optional, tag="4")]
9818    pub max_streams: ::core::option::Option<u32>,
9819    #[prost(uint32, optional, tag="5")]
9820    pub maxburst: ::core::option::Option<u32>,
9821    #[prost(uint32, optional, tag="6")]
9822    pub flags: ::core::option::Option<u32>,
9823    #[prost(uint32, optional, tag="7")]
9824    pub direction: ::core::option::Option<u32>,
9825    #[prost(uint32, optional, tag="8")]
9826    pub trb_enqueue: ::core::option::Option<u32>,
9827    #[prost(uint32, optional, tag="9")]
9828    pub trb_dequeue: ::core::option::Option<u32>,
9829}
9830#[derive(Clone, PartialEq, ::prost::Message)]
9831pub struct Dwc3GadgetGenericCmdFtraceEvent {
9832    #[prost(uint32, optional, tag="1")]
9833    pub cmd: ::core::option::Option<u32>,
9834    #[prost(uint32, optional, tag="2")]
9835    pub param: ::core::option::Option<u32>,
9836    #[prost(int32, optional, tag="3")]
9837    pub status: ::core::option::Option<i32>,
9838}
9839#[derive(Clone, PartialEq, ::prost::Message)]
9840pub struct Dwc3GadgetGivebackFtraceEvent {
9841    #[prost(string, optional, tag="1")]
9842    pub name: ::core::option::Option<::prost::alloc::string::String>,
9843    #[prost(uint64, optional, tag="2")]
9844    pub req: ::core::option::Option<u64>,
9845    #[prost(uint32, optional, tag="3")]
9846    pub actual: ::core::option::Option<u32>,
9847    #[prost(uint32, optional, tag="4")]
9848    pub length: ::core::option::Option<u32>,
9849    #[prost(int32, optional, tag="5")]
9850    pub status: ::core::option::Option<i32>,
9851    #[prost(int32, optional, tag="6")]
9852    pub zero: ::core::option::Option<i32>,
9853    #[prost(int32, optional, tag="7")]
9854    pub short_not_ok: ::core::option::Option<i32>,
9855    #[prost(int32, optional, tag="8")]
9856    pub no_interrupt: ::core::option::Option<i32>,
9857}
9858#[derive(Clone, PartialEq, ::prost::Message)]
9859pub struct Dwc3PrepareTrbFtraceEvent {
9860    #[prost(string, optional, tag="1")]
9861    pub name: ::core::option::Option<::prost::alloc::string::String>,
9862    #[prost(uint64, optional, tag="2")]
9863    pub trb: ::core::option::Option<u64>,
9864    #[prost(uint32, optional, tag="3")]
9865    pub allocated: ::core::option::Option<u32>,
9866    #[prost(uint32, optional, tag="4")]
9867    pub queued: ::core::option::Option<u32>,
9868    #[prost(uint32, optional, tag="5")]
9869    pub bpl: ::core::option::Option<u32>,
9870    #[prost(uint32, optional, tag="6")]
9871    pub bph: ::core::option::Option<u32>,
9872    #[prost(uint32, optional, tag="7")]
9873    pub size: ::core::option::Option<u32>,
9874    #[prost(uint32, optional, tag="8")]
9875    pub ctrl: ::core::option::Option<u32>,
9876    #[prost(uint32, optional, tag="9")]
9877    pub r#type: ::core::option::Option<u32>,
9878    #[prost(uint32, optional, tag="10")]
9879    pub enqueue: ::core::option::Option<u32>,
9880    #[prost(uint32, optional, tag="11")]
9881    pub dequeue: ::core::option::Option<u32>,
9882}
9883#[derive(Clone, PartialEq, ::prost::Message)]
9884pub struct Dwc3ReadlFtraceEvent {
9885    #[prost(uint64, optional, tag="1")]
9886    pub base: ::core::option::Option<u64>,
9887    #[prost(uint32, optional, tag="2")]
9888    pub offset: ::core::option::Option<u32>,
9889    #[prost(uint32, optional, tag="3")]
9890    pub value: ::core::option::Option<u32>,
9891    #[prost(string, optional, tag="4")]
9892    pub msg: ::core::option::Option<::prost::alloc::string::String>,
9893}
9894#[derive(Clone, PartialEq, ::prost::Message)]
9895pub struct Dwc3WritelFtraceEvent {
9896    #[prost(uint64, optional, tag="1")]
9897    pub base: ::core::option::Option<u64>,
9898    #[prost(uint32, optional, tag="2")]
9899    pub offset: ::core::option::Option<u32>,
9900    #[prost(uint32, optional, tag="3")]
9901    pub value: ::core::option::Option<u32>,
9902    #[prost(string, optional, tag="4")]
9903    pub msg: ::core::option::Option<::prost::alloc::string::String>,
9904}
9905// End of protos/perfetto/trace/ftrace/dwc3.proto
9906
9907// Begin of protos/perfetto/trace/ftrace/ext4.proto
9908
9909#[derive(Clone, PartialEq, ::prost::Message)]
9910pub struct Ext4DaWriteBeginFtraceEvent {
9911    #[prost(uint64, optional, tag="1")]
9912    pub dev: ::core::option::Option<u64>,
9913    #[prost(uint64, optional, tag="2")]
9914    pub ino: ::core::option::Option<u64>,
9915    #[prost(int64, optional, tag="3")]
9916    pub pos: ::core::option::Option<i64>,
9917    #[prost(uint32, optional, tag="4")]
9918    pub len: ::core::option::Option<u32>,
9919    #[prost(uint32, optional, tag="5")]
9920    pub flags: ::core::option::Option<u32>,
9921}
9922#[derive(Clone, PartialEq, ::prost::Message)]
9923pub struct Ext4DaWriteEndFtraceEvent {
9924    #[prost(uint64, optional, tag="1")]
9925    pub dev: ::core::option::Option<u64>,
9926    #[prost(uint64, optional, tag="2")]
9927    pub ino: ::core::option::Option<u64>,
9928    #[prost(int64, optional, tag="3")]
9929    pub pos: ::core::option::Option<i64>,
9930    #[prost(uint32, optional, tag="4")]
9931    pub len: ::core::option::Option<u32>,
9932    #[prost(uint32, optional, tag="5")]
9933    pub copied: ::core::option::Option<u32>,
9934}
9935#[derive(Clone, PartialEq, ::prost::Message)]
9936pub struct Ext4SyncFileEnterFtraceEvent {
9937    #[prost(uint64, optional, tag="1")]
9938    pub dev: ::core::option::Option<u64>,
9939    #[prost(uint64, optional, tag="2")]
9940    pub ino: ::core::option::Option<u64>,
9941    #[prost(uint64, optional, tag="3")]
9942    pub parent: ::core::option::Option<u64>,
9943    #[prost(int32, optional, tag="4")]
9944    pub datasync: ::core::option::Option<i32>,
9945}
9946#[derive(Clone, PartialEq, ::prost::Message)]
9947pub struct Ext4SyncFileExitFtraceEvent {
9948    #[prost(uint64, optional, tag="1")]
9949    pub dev: ::core::option::Option<u64>,
9950    #[prost(uint64, optional, tag="2")]
9951    pub ino: ::core::option::Option<u64>,
9952    #[prost(int32, optional, tag="3")]
9953    pub ret: ::core::option::Option<i32>,
9954}
9955#[derive(Clone, PartialEq, ::prost::Message)]
9956pub struct Ext4AllocDaBlocksFtraceEvent {
9957    #[prost(uint64, optional, tag="1")]
9958    pub dev: ::core::option::Option<u64>,
9959    #[prost(uint64, optional, tag="2")]
9960    pub ino: ::core::option::Option<u64>,
9961    #[prost(uint32, optional, tag="3")]
9962    pub data_blocks: ::core::option::Option<u32>,
9963    #[prost(uint32, optional, tag="4")]
9964    pub meta_blocks: ::core::option::Option<u32>,
9965}
9966#[derive(Clone, PartialEq, ::prost::Message)]
9967pub struct Ext4AllocateBlocksFtraceEvent {
9968    #[prost(uint64, optional, tag="1")]
9969    pub dev: ::core::option::Option<u64>,
9970    #[prost(uint64, optional, tag="2")]
9971    pub ino: ::core::option::Option<u64>,
9972    #[prost(uint64, optional, tag="3")]
9973    pub block: ::core::option::Option<u64>,
9974    #[prost(uint32, optional, tag="4")]
9975    pub len: ::core::option::Option<u32>,
9976    #[prost(uint32, optional, tag="5")]
9977    pub logical: ::core::option::Option<u32>,
9978    #[prost(uint32, optional, tag="6")]
9979    pub lleft: ::core::option::Option<u32>,
9980    #[prost(uint32, optional, tag="7")]
9981    pub lright: ::core::option::Option<u32>,
9982    #[prost(uint64, optional, tag="8")]
9983    pub goal: ::core::option::Option<u64>,
9984    #[prost(uint64, optional, tag="9")]
9985    pub pleft: ::core::option::Option<u64>,
9986    #[prost(uint64, optional, tag="10")]
9987    pub pright: ::core::option::Option<u64>,
9988    #[prost(uint32, optional, tag="11")]
9989    pub flags: ::core::option::Option<u32>,
9990}
9991#[derive(Clone, PartialEq, ::prost::Message)]
9992pub struct Ext4AllocateInodeFtraceEvent {
9993    #[prost(uint64, optional, tag="1")]
9994    pub dev: ::core::option::Option<u64>,
9995    #[prost(uint64, optional, tag="2")]
9996    pub ino: ::core::option::Option<u64>,
9997    #[prost(uint64, optional, tag="3")]
9998    pub dir: ::core::option::Option<u64>,
9999    #[prost(uint32, optional, tag="4")]
10000    pub mode: ::core::option::Option<u32>,
10001}
10002#[derive(Clone, PartialEq, ::prost::Message)]
10003pub struct Ext4BeginOrderedTruncateFtraceEvent {
10004    #[prost(uint64, optional, tag="1")]
10005    pub dev: ::core::option::Option<u64>,
10006    #[prost(uint64, optional, tag="2")]
10007    pub ino: ::core::option::Option<u64>,
10008    #[prost(int64, optional, tag="3")]
10009    pub new_size: ::core::option::Option<i64>,
10010}
10011#[derive(Clone, PartialEq, ::prost::Message)]
10012pub struct Ext4CollapseRangeFtraceEvent {
10013    #[prost(uint64, optional, tag="1")]
10014    pub dev: ::core::option::Option<u64>,
10015    #[prost(uint64, optional, tag="2")]
10016    pub ino: ::core::option::Option<u64>,
10017    #[prost(int64, optional, tag="3")]
10018    pub offset: ::core::option::Option<i64>,
10019    #[prost(int64, optional, tag="4")]
10020    pub len: ::core::option::Option<i64>,
10021}
10022#[derive(Clone, PartialEq, ::prost::Message)]
10023pub struct Ext4DaReleaseSpaceFtraceEvent {
10024    #[prost(uint64, optional, tag="1")]
10025    pub dev: ::core::option::Option<u64>,
10026    #[prost(uint64, optional, tag="2")]
10027    pub ino: ::core::option::Option<u64>,
10028    #[prost(uint64, optional, tag="3")]
10029    pub i_blocks: ::core::option::Option<u64>,
10030    #[prost(int32, optional, tag="4")]
10031    pub freed_blocks: ::core::option::Option<i32>,
10032    #[prost(int32, optional, tag="5")]
10033    pub reserved_data_blocks: ::core::option::Option<i32>,
10034    #[prost(int32, optional, tag="6")]
10035    pub reserved_meta_blocks: ::core::option::Option<i32>,
10036    #[prost(int32, optional, tag="7")]
10037    pub allocated_meta_blocks: ::core::option::Option<i32>,
10038    #[prost(uint32, optional, tag="8")]
10039    pub mode: ::core::option::Option<u32>,
10040}
10041#[derive(Clone, PartialEq, ::prost::Message)]
10042pub struct Ext4DaReserveSpaceFtraceEvent {
10043    #[prost(uint64, optional, tag="1")]
10044    pub dev: ::core::option::Option<u64>,
10045    #[prost(uint64, optional, tag="2")]
10046    pub ino: ::core::option::Option<u64>,
10047    #[prost(uint64, optional, tag="3")]
10048    pub i_blocks: ::core::option::Option<u64>,
10049    #[prost(int32, optional, tag="4")]
10050    pub reserved_data_blocks: ::core::option::Option<i32>,
10051    #[prost(int32, optional, tag="5")]
10052    pub reserved_meta_blocks: ::core::option::Option<i32>,
10053    #[prost(uint32, optional, tag="6")]
10054    pub mode: ::core::option::Option<u32>,
10055    #[prost(int32, optional, tag="7")]
10056    pub md_needed: ::core::option::Option<i32>,
10057}
10058#[derive(Clone, PartialEq, ::prost::Message)]
10059pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
10060    #[prost(uint64, optional, tag="1")]
10061    pub dev: ::core::option::Option<u64>,
10062    #[prost(uint64, optional, tag="2")]
10063    pub ino: ::core::option::Option<u64>,
10064    #[prost(uint64, optional, tag="3")]
10065    pub i_blocks: ::core::option::Option<u64>,
10066    #[prost(int32, optional, tag="4")]
10067    pub used_blocks: ::core::option::Option<i32>,
10068    #[prost(int32, optional, tag="5")]
10069    pub reserved_data_blocks: ::core::option::Option<i32>,
10070    #[prost(int32, optional, tag="6")]
10071    pub reserved_meta_blocks: ::core::option::Option<i32>,
10072    #[prost(int32, optional, tag="7")]
10073    pub allocated_meta_blocks: ::core::option::Option<i32>,
10074    #[prost(int32, optional, tag="8")]
10075    pub quota_claim: ::core::option::Option<i32>,
10076    #[prost(uint32, optional, tag="9")]
10077    pub mode: ::core::option::Option<u32>,
10078}
10079#[derive(Clone, PartialEq, ::prost::Message)]
10080pub struct Ext4DaWritePagesFtraceEvent {
10081    #[prost(uint64, optional, tag="1")]
10082    pub dev: ::core::option::Option<u64>,
10083    #[prost(uint64, optional, tag="2")]
10084    pub ino: ::core::option::Option<u64>,
10085    #[prost(uint64, optional, tag="3")]
10086    pub first_page: ::core::option::Option<u64>,
10087    #[prost(int64, optional, tag="4")]
10088    pub nr_to_write: ::core::option::Option<i64>,
10089    #[prost(int32, optional, tag="5")]
10090    pub sync_mode: ::core::option::Option<i32>,
10091    #[prost(uint64, optional, tag="6")]
10092    pub b_blocknr: ::core::option::Option<u64>,
10093    #[prost(uint32, optional, tag="7")]
10094    pub b_size: ::core::option::Option<u32>,
10095    #[prost(uint32, optional, tag="8")]
10096    pub b_state: ::core::option::Option<u32>,
10097    #[prost(int32, optional, tag="9")]
10098    pub io_done: ::core::option::Option<i32>,
10099    #[prost(int32, optional, tag="10")]
10100    pub pages_written: ::core::option::Option<i32>,
10101}
10102#[derive(Clone, PartialEq, ::prost::Message)]
10103pub struct Ext4DaWritePagesExtentFtraceEvent {
10104    #[prost(uint64, optional, tag="1")]
10105    pub dev: ::core::option::Option<u64>,
10106    #[prost(uint64, optional, tag="2")]
10107    pub ino: ::core::option::Option<u64>,
10108    #[prost(uint64, optional, tag="3")]
10109    pub lblk: ::core::option::Option<u64>,
10110    #[prost(uint32, optional, tag="4")]
10111    pub len: ::core::option::Option<u32>,
10112    #[prost(uint32, optional, tag="5")]
10113    pub flags: ::core::option::Option<u32>,
10114}
10115#[derive(Clone, PartialEq, ::prost::Message)]
10116pub struct Ext4DirectIoEnterFtraceEvent {
10117    #[prost(uint64, optional, tag="1")]
10118    pub dev: ::core::option::Option<u64>,
10119    #[prost(uint64, optional, tag="2")]
10120    pub ino: ::core::option::Option<u64>,
10121    #[prost(int64, optional, tag="3")]
10122    pub pos: ::core::option::Option<i64>,
10123    #[prost(uint64, optional, tag="4")]
10124    pub len: ::core::option::Option<u64>,
10125    #[prost(int32, optional, tag="5")]
10126    pub rw: ::core::option::Option<i32>,
10127}
10128#[derive(Clone, PartialEq, ::prost::Message)]
10129pub struct Ext4DirectIoExitFtraceEvent {
10130    #[prost(uint64, optional, tag="1")]
10131    pub dev: ::core::option::Option<u64>,
10132    #[prost(uint64, optional, tag="2")]
10133    pub ino: ::core::option::Option<u64>,
10134    #[prost(int64, optional, tag="3")]
10135    pub pos: ::core::option::Option<i64>,
10136    #[prost(uint64, optional, tag="4")]
10137    pub len: ::core::option::Option<u64>,
10138    #[prost(int32, optional, tag="5")]
10139    pub rw: ::core::option::Option<i32>,
10140    #[prost(int32, optional, tag="6")]
10141    pub ret: ::core::option::Option<i32>,
10142}
10143#[derive(Clone, PartialEq, ::prost::Message)]
10144pub struct Ext4DiscardBlocksFtraceEvent {
10145    #[prost(uint64, optional, tag="1")]
10146    pub dev: ::core::option::Option<u64>,
10147    #[prost(uint64, optional, tag="2")]
10148    pub blk: ::core::option::Option<u64>,
10149    #[prost(uint64, optional, tag="3")]
10150    pub count: ::core::option::Option<u64>,
10151}
10152#[derive(Clone, PartialEq, ::prost::Message)]
10153pub struct Ext4DiscardPreallocationsFtraceEvent {
10154    #[prost(uint64, optional, tag="1")]
10155    pub dev: ::core::option::Option<u64>,
10156    #[prost(uint64, optional, tag="2")]
10157    pub ino: ::core::option::Option<u64>,
10158    #[prost(uint32, optional, tag="3")]
10159    pub len: ::core::option::Option<u32>,
10160    #[prost(uint32, optional, tag="4")]
10161    pub needed: ::core::option::Option<u32>,
10162}
10163#[derive(Clone, PartialEq, ::prost::Message)]
10164pub struct Ext4DropInodeFtraceEvent {
10165    #[prost(uint64, optional, tag="1")]
10166    pub dev: ::core::option::Option<u64>,
10167    #[prost(uint64, optional, tag="2")]
10168    pub ino: ::core::option::Option<u64>,
10169    #[prost(int32, optional, tag="3")]
10170    pub drop: ::core::option::Option<i32>,
10171}
10172#[derive(Clone, PartialEq, ::prost::Message)]
10173pub struct Ext4EsCacheExtentFtraceEvent {
10174    #[prost(uint64, optional, tag="1")]
10175    pub dev: ::core::option::Option<u64>,
10176    #[prost(uint64, optional, tag="2")]
10177    pub ino: ::core::option::Option<u64>,
10178    #[prost(uint32, optional, tag="3")]
10179    pub lblk: ::core::option::Option<u32>,
10180    #[prost(uint32, optional, tag="4")]
10181    pub len: ::core::option::Option<u32>,
10182    #[prost(uint64, optional, tag="5")]
10183    pub pblk: ::core::option::Option<u64>,
10184    #[prost(uint32, optional, tag="6")]
10185    pub status: ::core::option::Option<u32>,
10186}
10187#[derive(Clone, PartialEq, ::prost::Message)]
10188pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
10189    #[prost(uint64, optional, tag="1")]
10190    pub dev: ::core::option::Option<u64>,
10191    #[prost(uint64, optional, tag="2")]
10192    pub ino: ::core::option::Option<u64>,
10193    #[prost(uint32, optional, tag="3")]
10194    pub lblk: ::core::option::Option<u32>,
10195}
10196#[derive(Clone, PartialEq, ::prost::Message)]
10197pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
10198    #[prost(uint64, optional, tag="1")]
10199    pub dev: ::core::option::Option<u64>,
10200    #[prost(uint64, optional, tag="2")]
10201    pub ino: ::core::option::Option<u64>,
10202    #[prost(uint32, optional, tag="3")]
10203    pub lblk: ::core::option::Option<u32>,
10204    #[prost(uint32, optional, tag="4")]
10205    pub len: ::core::option::Option<u32>,
10206    #[prost(uint64, optional, tag="5")]
10207    pub pblk: ::core::option::Option<u64>,
10208    #[prost(uint64, optional, tag="6")]
10209    pub status: ::core::option::Option<u64>,
10210}
10211#[derive(Clone, PartialEq, ::prost::Message)]
10212pub struct Ext4EsInsertExtentFtraceEvent {
10213    #[prost(uint64, optional, tag="1")]
10214    pub dev: ::core::option::Option<u64>,
10215    #[prost(uint64, optional, tag="2")]
10216    pub ino: ::core::option::Option<u64>,
10217    #[prost(uint32, optional, tag="3")]
10218    pub lblk: ::core::option::Option<u32>,
10219    #[prost(uint32, optional, tag="4")]
10220    pub len: ::core::option::Option<u32>,
10221    #[prost(uint64, optional, tag="5")]
10222    pub pblk: ::core::option::Option<u64>,
10223    #[prost(uint64, optional, tag="6")]
10224    pub status: ::core::option::Option<u64>,
10225}
10226#[derive(Clone, PartialEq, ::prost::Message)]
10227pub struct Ext4EsLookupExtentEnterFtraceEvent {
10228    #[prost(uint64, optional, tag="1")]
10229    pub dev: ::core::option::Option<u64>,
10230    #[prost(uint64, optional, tag="2")]
10231    pub ino: ::core::option::Option<u64>,
10232    #[prost(uint32, optional, tag="3")]
10233    pub lblk: ::core::option::Option<u32>,
10234}
10235#[derive(Clone, PartialEq, ::prost::Message)]
10236pub struct Ext4EsLookupExtentExitFtraceEvent {
10237    #[prost(uint64, optional, tag="1")]
10238    pub dev: ::core::option::Option<u64>,
10239    #[prost(uint64, optional, tag="2")]
10240    pub ino: ::core::option::Option<u64>,
10241    #[prost(uint32, optional, tag="3")]
10242    pub lblk: ::core::option::Option<u32>,
10243    #[prost(uint32, optional, tag="4")]
10244    pub len: ::core::option::Option<u32>,
10245    #[prost(uint64, optional, tag="5")]
10246    pub pblk: ::core::option::Option<u64>,
10247    #[prost(uint64, optional, tag="6")]
10248    pub status: ::core::option::Option<u64>,
10249    #[prost(int32, optional, tag="7")]
10250    pub found: ::core::option::Option<i32>,
10251}
10252#[derive(Clone, PartialEq, ::prost::Message)]
10253pub struct Ext4EsRemoveExtentFtraceEvent {
10254    #[prost(uint64, optional, tag="1")]
10255    pub dev: ::core::option::Option<u64>,
10256    #[prost(uint64, optional, tag="2")]
10257    pub ino: ::core::option::Option<u64>,
10258    #[prost(int64, optional, tag="3")]
10259    pub lblk: ::core::option::Option<i64>,
10260    #[prost(int64, optional, tag="4")]
10261    pub len: ::core::option::Option<i64>,
10262}
10263#[derive(Clone, PartialEq, ::prost::Message)]
10264pub struct Ext4EsShrinkFtraceEvent {
10265    #[prost(uint64, optional, tag="1")]
10266    pub dev: ::core::option::Option<u64>,
10267    #[prost(int32, optional, tag="2")]
10268    pub nr_shrunk: ::core::option::Option<i32>,
10269    #[prost(uint64, optional, tag="3")]
10270    pub scan_time: ::core::option::Option<u64>,
10271    #[prost(int32, optional, tag="4")]
10272    pub nr_skipped: ::core::option::Option<i32>,
10273    #[prost(int32, optional, tag="5")]
10274    pub retried: ::core::option::Option<i32>,
10275}
10276#[derive(Clone, PartialEq, ::prost::Message)]
10277pub struct Ext4EsShrinkCountFtraceEvent {
10278    #[prost(uint64, optional, tag="1")]
10279    pub dev: ::core::option::Option<u64>,
10280    #[prost(int32, optional, tag="2")]
10281    pub nr_to_scan: ::core::option::Option<i32>,
10282    #[prost(int32, optional, tag="3")]
10283    pub cache_cnt: ::core::option::Option<i32>,
10284}
10285#[derive(Clone, PartialEq, ::prost::Message)]
10286pub struct Ext4EsShrinkScanEnterFtraceEvent {
10287    #[prost(uint64, optional, tag="1")]
10288    pub dev: ::core::option::Option<u64>,
10289    #[prost(int32, optional, tag="2")]
10290    pub nr_to_scan: ::core::option::Option<i32>,
10291    #[prost(int32, optional, tag="3")]
10292    pub cache_cnt: ::core::option::Option<i32>,
10293}
10294#[derive(Clone, PartialEq, ::prost::Message)]
10295pub struct Ext4EsShrinkScanExitFtraceEvent {
10296    #[prost(uint64, optional, tag="1")]
10297    pub dev: ::core::option::Option<u64>,
10298    #[prost(int32, optional, tag="2")]
10299    pub nr_shrunk: ::core::option::Option<i32>,
10300    #[prost(int32, optional, tag="3")]
10301    pub cache_cnt: ::core::option::Option<i32>,
10302}
10303#[derive(Clone, PartialEq, ::prost::Message)]
10304pub struct Ext4EvictInodeFtraceEvent {
10305    #[prost(uint64, optional, tag="1")]
10306    pub dev: ::core::option::Option<u64>,
10307    #[prost(uint64, optional, tag="2")]
10308    pub ino: ::core::option::Option<u64>,
10309    #[prost(int32, optional, tag="3")]
10310    pub nlink: ::core::option::Option<i32>,
10311}
10312#[derive(Clone, PartialEq, ::prost::Message)]
10313pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10314    #[prost(uint64, optional, tag="1")]
10315    pub dev: ::core::option::Option<u64>,
10316    #[prost(uint64, optional, tag="2")]
10317    pub ino: ::core::option::Option<u64>,
10318    #[prost(uint32, optional, tag="3")]
10319    pub m_lblk: ::core::option::Option<u32>,
10320    #[prost(uint32, optional, tag="4")]
10321    pub m_len: ::core::option::Option<u32>,
10322    #[prost(uint32, optional, tag="5")]
10323    pub u_lblk: ::core::option::Option<u32>,
10324    #[prost(uint32, optional, tag="6")]
10325    pub u_len: ::core::option::Option<u32>,
10326    #[prost(uint64, optional, tag="7")]
10327    pub u_pblk: ::core::option::Option<u64>,
10328}
10329#[derive(Clone, PartialEq, ::prost::Message)]
10330pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
10331    #[prost(uint64, optional, tag="1")]
10332    pub dev: ::core::option::Option<u64>,
10333    #[prost(uint64, optional, tag="2")]
10334    pub ino: ::core::option::Option<u64>,
10335    #[prost(uint32, optional, tag="3")]
10336    pub m_lblk: ::core::option::Option<u32>,
10337    #[prost(uint32, optional, tag="4")]
10338    pub m_len: ::core::option::Option<u32>,
10339    #[prost(uint32, optional, tag="5")]
10340    pub u_lblk: ::core::option::Option<u32>,
10341    #[prost(uint32, optional, tag="6")]
10342    pub u_len: ::core::option::Option<u32>,
10343    #[prost(uint64, optional, tag="7")]
10344    pub u_pblk: ::core::option::Option<u64>,
10345    #[prost(uint32, optional, tag="8")]
10346    pub i_lblk: ::core::option::Option<u32>,
10347    #[prost(uint32, optional, tag="9")]
10348    pub i_len: ::core::option::Option<u32>,
10349    #[prost(uint64, optional, tag="10")]
10350    pub i_pblk: ::core::option::Option<u64>,
10351}
10352#[derive(Clone, PartialEq, ::prost::Message)]
10353pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
10354    #[prost(uint64, optional, tag="1")]
10355    pub dev: ::core::option::Option<u64>,
10356    #[prost(uint64, optional, tag="2")]
10357    pub ino: ::core::option::Option<u64>,
10358    #[prost(int32, optional, tag="3")]
10359    pub flags: ::core::option::Option<i32>,
10360    #[prost(uint32, optional, tag="4")]
10361    pub lblk: ::core::option::Option<u32>,
10362    #[prost(uint64, optional, tag="5")]
10363    pub pblk: ::core::option::Option<u64>,
10364    #[prost(uint32, optional, tag="6")]
10365    pub len: ::core::option::Option<u32>,
10366    #[prost(uint32, optional, tag="7")]
10367    pub allocated: ::core::option::Option<u32>,
10368    #[prost(uint64, optional, tag="8")]
10369    pub newblk: ::core::option::Option<u64>,
10370}
10371#[derive(Clone, PartialEq, ::prost::Message)]
10372pub struct Ext4ExtInCacheFtraceEvent {
10373    #[prost(uint64, optional, tag="1")]
10374    pub dev: ::core::option::Option<u64>,
10375    #[prost(uint64, optional, tag="2")]
10376    pub ino: ::core::option::Option<u64>,
10377    #[prost(uint32, optional, tag="3")]
10378    pub lblk: ::core::option::Option<u32>,
10379    #[prost(int32, optional, tag="4")]
10380    pub ret: ::core::option::Option<i32>,
10381}
10382#[derive(Clone, PartialEq, ::prost::Message)]
10383pub struct Ext4ExtLoadExtentFtraceEvent {
10384    #[prost(uint64, optional, tag="1")]
10385    pub dev: ::core::option::Option<u64>,
10386    #[prost(uint64, optional, tag="2")]
10387    pub ino: ::core::option::Option<u64>,
10388    #[prost(uint64, optional, tag="3")]
10389    pub pblk: ::core::option::Option<u64>,
10390    #[prost(uint32, optional, tag="4")]
10391    pub lblk: ::core::option::Option<u32>,
10392}
10393#[derive(Clone, PartialEq, ::prost::Message)]
10394pub struct Ext4ExtMapBlocksEnterFtraceEvent {
10395    #[prost(uint64, optional, tag="1")]
10396    pub dev: ::core::option::Option<u64>,
10397    #[prost(uint64, optional, tag="2")]
10398    pub ino: ::core::option::Option<u64>,
10399    #[prost(uint32, optional, tag="3")]
10400    pub lblk: ::core::option::Option<u32>,
10401    #[prost(uint32, optional, tag="4")]
10402    pub len: ::core::option::Option<u32>,
10403    #[prost(uint32, optional, tag="5")]
10404    pub flags: ::core::option::Option<u32>,
10405}
10406#[derive(Clone, PartialEq, ::prost::Message)]
10407pub struct Ext4ExtMapBlocksExitFtraceEvent {
10408    #[prost(uint64, optional, tag="1")]
10409    pub dev: ::core::option::Option<u64>,
10410    #[prost(uint64, optional, tag="2")]
10411    pub ino: ::core::option::Option<u64>,
10412    #[prost(uint32, optional, tag="3")]
10413    pub flags: ::core::option::Option<u32>,
10414    #[prost(uint64, optional, tag="4")]
10415    pub pblk: ::core::option::Option<u64>,
10416    #[prost(uint32, optional, tag="5")]
10417    pub lblk: ::core::option::Option<u32>,
10418    #[prost(uint32, optional, tag="6")]
10419    pub len: ::core::option::Option<u32>,
10420    #[prost(uint32, optional, tag="7")]
10421    pub mflags: ::core::option::Option<u32>,
10422    #[prost(int32, optional, tag="8")]
10423    pub ret: ::core::option::Option<i32>,
10424}
10425#[derive(Clone, PartialEq, ::prost::Message)]
10426pub struct Ext4ExtPutInCacheFtraceEvent {
10427    #[prost(uint64, optional, tag="1")]
10428    pub dev: ::core::option::Option<u64>,
10429    #[prost(uint64, optional, tag="2")]
10430    pub ino: ::core::option::Option<u64>,
10431    #[prost(uint32, optional, tag="3")]
10432    pub lblk: ::core::option::Option<u32>,
10433    #[prost(uint32, optional, tag="4")]
10434    pub len: ::core::option::Option<u32>,
10435    #[prost(uint64, optional, tag="5")]
10436    pub start: ::core::option::Option<u64>,
10437}
10438#[derive(Clone, PartialEq, ::prost::Message)]
10439pub struct Ext4ExtRemoveSpaceFtraceEvent {
10440    #[prost(uint64, optional, tag="1")]
10441    pub dev: ::core::option::Option<u64>,
10442    #[prost(uint64, optional, tag="2")]
10443    pub ino: ::core::option::Option<u64>,
10444    #[prost(uint32, optional, tag="3")]
10445    pub start: ::core::option::Option<u32>,
10446    #[prost(uint32, optional, tag="4")]
10447    pub end: ::core::option::Option<u32>,
10448    #[prost(int32, optional, tag="5")]
10449    pub depth: ::core::option::Option<i32>,
10450}
10451#[derive(Clone, PartialEq, ::prost::Message)]
10452pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
10453    #[prost(uint64, optional, tag="1")]
10454    pub dev: ::core::option::Option<u64>,
10455    #[prost(uint64, optional, tag="2")]
10456    pub ino: ::core::option::Option<u64>,
10457    #[prost(uint32, optional, tag="3")]
10458    pub start: ::core::option::Option<u32>,
10459    #[prost(uint32, optional, tag="4")]
10460    pub end: ::core::option::Option<u32>,
10461    #[prost(int32, optional, tag="5")]
10462    pub depth: ::core::option::Option<i32>,
10463    #[prost(int64, optional, tag="6")]
10464    pub partial: ::core::option::Option<i64>,
10465    #[prost(uint32, optional, tag="7")]
10466    pub eh_entries: ::core::option::Option<u32>,
10467    #[prost(uint32, optional, tag="8")]
10468    pub pc_lblk: ::core::option::Option<u32>,
10469    #[prost(uint64, optional, tag="9")]
10470    pub pc_pclu: ::core::option::Option<u64>,
10471    #[prost(int32, optional, tag="10")]
10472    pub pc_state: ::core::option::Option<i32>,
10473}
10474#[derive(Clone, PartialEq, ::prost::Message)]
10475pub struct Ext4ExtRmIdxFtraceEvent {
10476    #[prost(uint64, optional, tag="1")]
10477    pub dev: ::core::option::Option<u64>,
10478    #[prost(uint64, optional, tag="2")]
10479    pub ino: ::core::option::Option<u64>,
10480    #[prost(uint64, optional, tag="3")]
10481    pub pblk: ::core::option::Option<u64>,
10482}
10483#[derive(Clone, PartialEq, ::prost::Message)]
10484pub struct Ext4ExtRmLeafFtraceEvent {
10485    #[prost(uint64, optional, tag="1")]
10486    pub dev: ::core::option::Option<u64>,
10487    #[prost(uint64, optional, tag="2")]
10488    pub ino: ::core::option::Option<u64>,
10489    #[prost(int64, optional, tag="3")]
10490    pub partial: ::core::option::Option<i64>,
10491    #[prost(uint32, optional, tag="4")]
10492    pub start: ::core::option::Option<u32>,
10493    #[prost(uint32, optional, tag="5")]
10494    pub ee_lblk: ::core::option::Option<u32>,
10495    #[prost(uint64, optional, tag="6")]
10496    pub ee_pblk: ::core::option::Option<u64>,
10497    #[prost(int32, optional, tag="7")]
10498    pub ee_len: ::core::option::Option<i32>,
10499    #[prost(uint32, optional, tag="8")]
10500    pub pc_lblk: ::core::option::Option<u32>,
10501    #[prost(uint64, optional, tag="9")]
10502    pub pc_pclu: ::core::option::Option<u64>,
10503    #[prost(int32, optional, tag="10")]
10504    pub pc_state: ::core::option::Option<i32>,
10505}
10506#[derive(Clone, PartialEq, ::prost::Message)]
10507pub struct Ext4ExtShowExtentFtraceEvent {
10508    #[prost(uint64, optional, tag="1")]
10509    pub dev: ::core::option::Option<u64>,
10510    #[prost(uint64, optional, tag="2")]
10511    pub ino: ::core::option::Option<u64>,
10512    #[prost(uint64, optional, tag="3")]
10513    pub pblk: ::core::option::Option<u64>,
10514    #[prost(uint32, optional, tag="4")]
10515    pub lblk: ::core::option::Option<u32>,
10516    #[prost(uint32, optional, tag="5")]
10517    pub len: ::core::option::Option<u32>,
10518}
10519#[derive(Clone, PartialEq, ::prost::Message)]
10520pub struct Ext4FallocateEnterFtraceEvent {
10521    #[prost(uint64, optional, tag="1")]
10522    pub dev: ::core::option::Option<u64>,
10523    #[prost(uint64, optional, tag="2")]
10524    pub ino: ::core::option::Option<u64>,
10525    #[prost(int64, optional, tag="3")]
10526    pub offset: ::core::option::Option<i64>,
10527    #[prost(int64, optional, tag="4")]
10528    pub len: ::core::option::Option<i64>,
10529    #[prost(int32, optional, tag="5")]
10530    pub mode: ::core::option::Option<i32>,
10531    #[prost(int64, optional, tag="6")]
10532    pub pos: ::core::option::Option<i64>,
10533}
10534#[derive(Clone, PartialEq, ::prost::Message)]
10535pub struct Ext4FallocateExitFtraceEvent {
10536    #[prost(uint64, optional, tag="1")]
10537    pub dev: ::core::option::Option<u64>,
10538    #[prost(uint64, optional, tag="2")]
10539    pub ino: ::core::option::Option<u64>,
10540    #[prost(int64, optional, tag="3")]
10541    pub pos: ::core::option::Option<i64>,
10542    #[prost(uint32, optional, tag="4")]
10543    pub blocks: ::core::option::Option<u32>,
10544    #[prost(int32, optional, tag="5")]
10545    pub ret: ::core::option::Option<i32>,
10546}
10547#[derive(Clone, PartialEq, ::prost::Message)]
10548pub struct Ext4FindDelallocRangeFtraceEvent {
10549    #[prost(uint64, optional, tag="1")]
10550    pub dev: ::core::option::Option<u64>,
10551    #[prost(uint64, optional, tag="2")]
10552    pub ino: ::core::option::Option<u64>,
10553    #[prost(uint32, optional, tag="3")]
10554    pub from: ::core::option::Option<u32>,
10555    #[prost(uint32, optional, tag="4")]
10556    pub to: ::core::option::Option<u32>,
10557    #[prost(int32, optional, tag="5")]
10558    pub reverse: ::core::option::Option<i32>,
10559    #[prost(int32, optional, tag="6")]
10560    pub found: ::core::option::Option<i32>,
10561    #[prost(uint32, optional, tag="7")]
10562    pub found_blk: ::core::option::Option<u32>,
10563}
10564#[derive(Clone, PartialEq, ::prost::Message)]
10565pub struct Ext4ForgetFtraceEvent {
10566    #[prost(uint64, optional, tag="1")]
10567    pub dev: ::core::option::Option<u64>,
10568    #[prost(uint64, optional, tag="2")]
10569    pub ino: ::core::option::Option<u64>,
10570    #[prost(uint64, optional, tag="3")]
10571    pub block: ::core::option::Option<u64>,
10572    #[prost(int32, optional, tag="4")]
10573    pub is_metadata: ::core::option::Option<i32>,
10574    #[prost(uint32, optional, tag="5")]
10575    pub mode: ::core::option::Option<u32>,
10576}
10577#[derive(Clone, PartialEq, ::prost::Message)]
10578pub struct Ext4FreeBlocksFtraceEvent {
10579    #[prost(uint64, optional, tag="1")]
10580    pub dev: ::core::option::Option<u64>,
10581    #[prost(uint64, optional, tag="2")]
10582    pub ino: ::core::option::Option<u64>,
10583    #[prost(uint64, optional, tag="3")]
10584    pub block: ::core::option::Option<u64>,
10585    #[prost(uint64, optional, tag="4")]
10586    pub count: ::core::option::Option<u64>,
10587    #[prost(int32, optional, tag="5")]
10588    pub flags: ::core::option::Option<i32>,
10589    #[prost(uint32, optional, tag="6")]
10590    pub mode: ::core::option::Option<u32>,
10591}
10592#[derive(Clone, PartialEq, ::prost::Message)]
10593pub struct Ext4FreeInodeFtraceEvent {
10594    #[prost(uint64, optional, tag="1")]
10595    pub dev: ::core::option::Option<u64>,
10596    #[prost(uint64, optional, tag="2")]
10597    pub ino: ::core::option::Option<u64>,
10598    #[prost(uint32, optional, tag="3")]
10599    pub uid: ::core::option::Option<u32>,
10600    #[prost(uint32, optional, tag="4")]
10601    pub gid: ::core::option::Option<u32>,
10602    #[prost(uint64, optional, tag="5")]
10603    pub blocks: ::core::option::Option<u64>,
10604    #[prost(uint32, optional, tag="6")]
10605    pub mode: ::core::option::Option<u32>,
10606}
10607#[derive(Clone, PartialEq, ::prost::Message)]
10608pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
10609    #[prost(uint64, optional, tag="1")]
10610    pub dev: ::core::option::Option<u64>,
10611    #[prost(uint32, optional, tag="2")]
10612    pub flags: ::core::option::Option<u32>,
10613    #[prost(uint32, optional, tag="3")]
10614    pub lblk: ::core::option::Option<u32>,
10615    #[prost(uint64, optional, tag="4")]
10616    pub pblk: ::core::option::Option<u64>,
10617    #[prost(uint32, optional, tag="5")]
10618    pub len: ::core::option::Option<u32>,
10619    #[prost(int32, optional, tag="6")]
10620    pub ret: ::core::option::Option<i32>,
10621}
10622#[derive(Clone, PartialEq, ::prost::Message)]
10623pub struct Ext4GetReservedClusterAllocFtraceEvent {
10624    #[prost(uint64, optional, tag="1")]
10625    pub dev: ::core::option::Option<u64>,
10626    #[prost(uint64, optional, tag="2")]
10627    pub ino: ::core::option::Option<u64>,
10628    #[prost(uint32, optional, tag="3")]
10629    pub lblk: ::core::option::Option<u32>,
10630    #[prost(uint32, optional, tag="4")]
10631    pub len: ::core::option::Option<u32>,
10632}
10633#[derive(Clone, PartialEq, ::prost::Message)]
10634pub struct Ext4IndMapBlocksEnterFtraceEvent {
10635    #[prost(uint64, optional, tag="1")]
10636    pub dev: ::core::option::Option<u64>,
10637    #[prost(uint64, optional, tag="2")]
10638    pub ino: ::core::option::Option<u64>,
10639    #[prost(uint32, optional, tag="3")]
10640    pub lblk: ::core::option::Option<u32>,
10641    #[prost(uint32, optional, tag="4")]
10642    pub len: ::core::option::Option<u32>,
10643    #[prost(uint32, optional, tag="5")]
10644    pub flags: ::core::option::Option<u32>,
10645}
10646#[derive(Clone, PartialEq, ::prost::Message)]
10647pub struct Ext4IndMapBlocksExitFtraceEvent {
10648    #[prost(uint64, optional, tag="1")]
10649    pub dev: ::core::option::Option<u64>,
10650    #[prost(uint64, optional, tag="2")]
10651    pub ino: ::core::option::Option<u64>,
10652    #[prost(uint32, optional, tag="3")]
10653    pub flags: ::core::option::Option<u32>,
10654    #[prost(uint64, optional, tag="4")]
10655    pub pblk: ::core::option::Option<u64>,
10656    #[prost(uint32, optional, tag="5")]
10657    pub lblk: ::core::option::Option<u32>,
10658    #[prost(uint32, optional, tag="6")]
10659    pub len: ::core::option::Option<u32>,
10660    #[prost(uint32, optional, tag="7")]
10661    pub mflags: ::core::option::Option<u32>,
10662    #[prost(int32, optional, tag="8")]
10663    pub ret: ::core::option::Option<i32>,
10664}
10665#[derive(Clone, PartialEq, ::prost::Message)]
10666pub struct Ext4InsertRangeFtraceEvent {
10667    #[prost(uint64, optional, tag="1")]
10668    pub dev: ::core::option::Option<u64>,
10669    #[prost(uint64, optional, tag="2")]
10670    pub ino: ::core::option::Option<u64>,
10671    #[prost(int64, optional, tag="3")]
10672    pub offset: ::core::option::Option<i64>,
10673    #[prost(int64, optional, tag="4")]
10674    pub len: ::core::option::Option<i64>,
10675}
10676#[derive(Clone, PartialEq, ::prost::Message)]
10677pub struct Ext4InvalidatepageFtraceEvent {
10678    #[prost(uint64, optional, tag="1")]
10679    pub dev: ::core::option::Option<u64>,
10680    #[prost(uint64, optional, tag="2")]
10681    pub ino: ::core::option::Option<u64>,
10682    #[prost(uint64, optional, tag="3")]
10683    pub index: ::core::option::Option<u64>,
10684    #[prost(uint64, optional, tag="4")]
10685    pub offset: ::core::option::Option<u64>,
10686    #[prost(uint32, optional, tag="5")]
10687    pub length: ::core::option::Option<u32>,
10688}
10689#[derive(Clone, PartialEq, ::prost::Message)]
10690pub struct Ext4JournalStartFtraceEvent {
10691    #[prost(uint64, optional, tag="1")]
10692    pub dev: ::core::option::Option<u64>,
10693    #[prost(uint64, optional, tag="2")]
10694    pub ip: ::core::option::Option<u64>,
10695    #[prost(int32, optional, tag="3")]
10696    pub blocks: ::core::option::Option<i32>,
10697    #[prost(int32, optional, tag="4")]
10698    pub rsv_blocks: ::core::option::Option<i32>,
10699    #[prost(int32, optional, tag="5")]
10700    pub nblocks: ::core::option::Option<i32>,
10701    #[prost(int32, optional, tag="6")]
10702    pub revoke_creds: ::core::option::Option<i32>,
10703}
10704#[derive(Clone, PartialEq, ::prost::Message)]
10705pub struct Ext4JournalStartReservedFtraceEvent {
10706    #[prost(uint64, optional, tag="1")]
10707    pub dev: ::core::option::Option<u64>,
10708    #[prost(uint64, optional, tag="2")]
10709    pub ip: ::core::option::Option<u64>,
10710    #[prost(int32, optional, tag="3")]
10711    pub blocks: ::core::option::Option<i32>,
10712}
10713#[derive(Clone, PartialEq, ::prost::Message)]
10714pub struct Ext4JournalledInvalidatepageFtraceEvent {
10715    #[prost(uint64, optional, tag="1")]
10716    pub dev: ::core::option::Option<u64>,
10717    #[prost(uint64, optional, tag="2")]
10718    pub ino: ::core::option::Option<u64>,
10719    #[prost(uint64, optional, tag="3")]
10720    pub index: ::core::option::Option<u64>,
10721    #[prost(uint64, optional, tag="4")]
10722    pub offset: ::core::option::Option<u64>,
10723    #[prost(uint32, optional, tag="5")]
10724    pub length: ::core::option::Option<u32>,
10725}
10726#[derive(Clone, PartialEq, ::prost::Message)]
10727pub struct Ext4JournalledWriteEndFtraceEvent {
10728    #[prost(uint64, optional, tag="1")]
10729    pub dev: ::core::option::Option<u64>,
10730    #[prost(uint64, optional, tag="2")]
10731    pub ino: ::core::option::Option<u64>,
10732    #[prost(int64, optional, tag="3")]
10733    pub pos: ::core::option::Option<i64>,
10734    #[prost(uint32, optional, tag="4")]
10735    pub len: ::core::option::Option<u32>,
10736    #[prost(uint32, optional, tag="5")]
10737    pub copied: ::core::option::Option<u32>,
10738}
10739#[derive(Clone, PartialEq, ::prost::Message)]
10740pub struct Ext4LoadInodeFtraceEvent {
10741    #[prost(uint64, optional, tag="1")]
10742    pub dev: ::core::option::Option<u64>,
10743    #[prost(uint64, optional, tag="2")]
10744    pub ino: ::core::option::Option<u64>,
10745}
10746#[derive(Clone, PartialEq, ::prost::Message)]
10747pub struct Ext4LoadInodeBitmapFtraceEvent {
10748    #[prost(uint64, optional, tag="1")]
10749    pub dev: ::core::option::Option<u64>,
10750    #[prost(uint32, optional, tag="2")]
10751    pub group: ::core::option::Option<u32>,
10752}
10753#[derive(Clone, PartialEq, ::prost::Message)]
10754pub struct Ext4MarkInodeDirtyFtraceEvent {
10755    #[prost(uint64, optional, tag="1")]
10756    pub dev: ::core::option::Option<u64>,
10757    #[prost(uint64, optional, tag="2")]
10758    pub ino: ::core::option::Option<u64>,
10759    #[prost(uint64, optional, tag="3")]
10760    pub ip: ::core::option::Option<u64>,
10761}
10762#[derive(Clone, PartialEq, ::prost::Message)]
10763pub struct Ext4MbBitmapLoadFtraceEvent {
10764    #[prost(uint64, optional, tag="1")]
10765    pub dev: ::core::option::Option<u64>,
10766    #[prost(uint32, optional, tag="2")]
10767    pub group: ::core::option::Option<u32>,
10768}
10769#[derive(Clone, PartialEq, ::prost::Message)]
10770pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
10771    #[prost(uint64, optional, tag="1")]
10772    pub dev: ::core::option::Option<u64>,
10773    #[prost(uint32, optional, tag="2")]
10774    pub group: ::core::option::Option<u32>,
10775}
10776#[derive(Clone, PartialEq, ::prost::Message)]
10777pub struct Ext4MbDiscardPreallocationsFtraceEvent {
10778    #[prost(uint64, optional, tag="1")]
10779    pub dev: ::core::option::Option<u64>,
10780    #[prost(int32, optional, tag="2")]
10781    pub needed: ::core::option::Option<i32>,
10782}
10783#[derive(Clone, PartialEq, ::prost::Message)]
10784pub struct Ext4MbNewGroupPaFtraceEvent {
10785    #[prost(uint64, optional, tag="1")]
10786    pub dev: ::core::option::Option<u64>,
10787    #[prost(uint64, optional, tag="2")]
10788    pub ino: ::core::option::Option<u64>,
10789    #[prost(uint64, optional, tag="3")]
10790    pub pa_pstart: ::core::option::Option<u64>,
10791    #[prost(uint64, optional, tag="4")]
10792    pub pa_lstart: ::core::option::Option<u64>,
10793    #[prost(uint32, optional, tag="5")]
10794    pub pa_len: ::core::option::Option<u32>,
10795}
10796#[derive(Clone, PartialEq, ::prost::Message)]
10797pub struct Ext4MbNewInodePaFtraceEvent {
10798    #[prost(uint64, optional, tag="1")]
10799    pub dev: ::core::option::Option<u64>,
10800    #[prost(uint64, optional, tag="2")]
10801    pub ino: ::core::option::Option<u64>,
10802    #[prost(uint64, optional, tag="3")]
10803    pub pa_pstart: ::core::option::Option<u64>,
10804    #[prost(uint64, optional, tag="4")]
10805    pub pa_lstart: ::core::option::Option<u64>,
10806    #[prost(uint32, optional, tag="5")]
10807    pub pa_len: ::core::option::Option<u32>,
10808}
10809#[derive(Clone, PartialEq, ::prost::Message)]
10810pub struct Ext4MbReleaseGroupPaFtraceEvent {
10811    #[prost(uint64, optional, tag="1")]
10812    pub dev: ::core::option::Option<u64>,
10813    #[prost(uint64, optional, tag="2")]
10814    pub pa_pstart: ::core::option::Option<u64>,
10815    #[prost(uint32, optional, tag="3")]
10816    pub pa_len: ::core::option::Option<u32>,
10817}
10818#[derive(Clone, PartialEq, ::prost::Message)]
10819pub struct Ext4MbReleaseInodePaFtraceEvent {
10820    #[prost(uint64, optional, tag="1")]
10821    pub dev: ::core::option::Option<u64>,
10822    #[prost(uint64, optional, tag="2")]
10823    pub ino: ::core::option::Option<u64>,
10824    #[prost(uint64, optional, tag="3")]
10825    pub block: ::core::option::Option<u64>,
10826    #[prost(uint32, optional, tag="4")]
10827    pub count: ::core::option::Option<u32>,
10828}
10829#[derive(Clone, PartialEq, ::prost::Message)]
10830pub struct Ext4MballocAllocFtraceEvent {
10831    #[prost(uint64, optional, tag="1")]
10832    pub dev: ::core::option::Option<u64>,
10833    #[prost(uint64, optional, tag="2")]
10834    pub ino: ::core::option::Option<u64>,
10835    #[prost(uint32, optional, tag="3")]
10836    pub orig_logical: ::core::option::Option<u32>,
10837    #[prost(int32, optional, tag="4")]
10838    pub orig_start: ::core::option::Option<i32>,
10839    #[prost(uint32, optional, tag="5")]
10840    pub orig_group: ::core::option::Option<u32>,
10841    #[prost(int32, optional, tag="6")]
10842    pub orig_len: ::core::option::Option<i32>,
10843    #[prost(uint32, optional, tag="7")]
10844    pub goal_logical: ::core::option::Option<u32>,
10845    #[prost(int32, optional, tag="8")]
10846    pub goal_start: ::core::option::Option<i32>,
10847    #[prost(uint32, optional, tag="9")]
10848    pub goal_group: ::core::option::Option<u32>,
10849    #[prost(int32, optional, tag="10")]
10850    pub goal_len: ::core::option::Option<i32>,
10851    #[prost(uint32, optional, tag="11")]
10852    pub result_logical: ::core::option::Option<u32>,
10853    #[prost(int32, optional, tag="12")]
10854    pub result_start: ::core::option::Option<i32>,
10855    #[prost(uint32, optional, tag="13")]
10856    pub result_group: ::core::option::Option<u32>,
10857    #[prost(int32, optional, tag="14")]
10858    pub result_len: ::core::option::Option<i32>,
10859    #[prost(uint32, optional, tag="15")]
10860    pub found: ::core::option::Option<u32>,
10861    #[prost(uint32, optional, tag="16")]
10862    pub groups: ::core::option::Option<u32>,
10863    #[prost(uint32, optional, tag="17")]
10864    pub buddy: ::core::option::Option<u32>,
10865    #[prost(uint32, optional, tag="18")]
10866    pub flags: ::core::option::Option<u32>,
10867    #[prost(uint32, optional, tag="19")]
10868    pub tail: ::core::option::Option<u32>,
10869    #[prost(uint32, optional, tag="20")]
10870    pub cr: ::core::option::Option<u32>,
10871}
10872#[derive(Clone, PartialEq, ::prost::Message)]
10873pub struct Ext4MballocDiscardFtraceEvent {
10874    #[prost(uint64, optional, tag="1")]
10875    pub dev: ::core::option::Option<u64>,
10876    #[prost(uint64, optional, tag="2")]
10877    pub ino: ::core::option::Option<u64>,
10878    #[prost(int32, optional, tag="3")]
10879    pub result_start: ::core::option::Option<i32>,
10880    #[prost(uint32, optional, tag="4")]
10881    pub result_group: ::core::option::Option<u32>,
10882    #[prost(int32, optional, tag="5")]
10883    pub result_len: ::core::option::Option<i32>,
10884}
10885#[derive(Clone, PartialEq, ::prost::Message)]
10886pub struct Ext4MballocFreeFtraceEvent {
10887    #[prost(uint64, optional, tag="1")]
10888    pub dev: ::core::option::Option<u64>,
10889    #[prost(uint64, optional, tag="2")]
10890    pub ino: ::core::option::Option<u64>,
10891    #[prost(int32, optional, tag="3")]
10892    pub result_start: ::core::option::Option<i32>,
10893    #[prost(uint32, optional, tag="4")]
10894    pub result_group: ::core::option::Option<u32>,
10895    #[prost(int32, optional, tag="5")]
10896    pub result_len: ::core::option::Option<i32>,
10897}
10898#[derive(Clone, PartialEq, ::prost::Message)]
10899pub struct Ext4MballocPreallocFtraceEvent {
10900    #[prost(uint64, optional, tag="1")]
10901    pub dev: ::core::option::Option<u64>,
10902    #[prost(uint64, optional, tag="2")]
10903    pub ino: ::core::option::Option<u64>,
10904    #[prost(uint32, optional, tag="3")]
10905    pub orig_logical: ::core::option::Option<u32>,
10906    #[prost(int32, optional, tag="4")]
10907    pub orig_start: ::core::option::Option<i32>,
10908    #[prost(uint32, optional, tag="5")]
10909    pub orig_group: ::core::option::Option<u32>,
10910    #[prost(int32, optional, tag="6")]
10911    pub orig_len: ::core::option::Option<i32>,
10912    #[prost(uint32, optional, tag="7")]
10913    pub result_logical: ::core::option::Option<u32>,
10914    #[prost(int32, optional, tag="8")]
10915    pub result_start: ::core::option::Option<i32>,
10916    #[prost(uint32, optional, tag="9")]
10917    pub result_group: ::core::option::Option<u32>,
10918    #[prost(int32, optional, tag="10")]
10919    pub result_len: ::core::option::Option<i32>,
10920}
10921#[derive(Clone, PartialEq, ::prost::Message)]
10922pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
10923    #[prost(uint64, optional, tag="1")]
10924    pub dev: ::core::option::Option<u64>,
10925    #[prost(uint64, optional, tag="2")]
10926    pub ino: ::core::option::Option<u64>,
10927    #[prost(uint64, optional, tag="3")]
10928    pub orig_ino: ::core::option::Option<u64>,
10929    #[prost(uint32, optional, tag="4")]
10930    pub uid: ::core::option::Option<u32>,
10931    #[prost(uint32, optional, tag="5")]
10932    pub gid: ::core::option::Option<u32>,
10933    #[prost(uint32, optional, tag="6")]
10934    pub mode: ::core::option::Option<u32>,
10935}
10936#[derive(Clone, PartialEq, ::prost::Message)]
10937pub struct Ext4PunchHoleFtraceEvent {
10938    #[prost(uint64, optional, tag="1")]
10939    pub dev: ::core::option::Option<u64>,
10940    #[prost(uint64, optional, tag="2")]
10941    pub ino: ::core::option::Option<u64>,
10942    #[prost(int64, optional, tag="3")]
10943    pub offset: ::core::option::Option<i64>,
10944    #[prost(int64, optional, tag="4")]
10945    pub len: ::core::option::Option<i64>,
10946    #[prost(int32, optional, tag="5")]
10947    pub mode: ::core::option::Option<i32>,
10948}
10949#[derive(Clone, PartialEq, ::prost::Message)]
10950pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
10951    #[prost(uint64, optional, tag="1")]
10952    pub dev: ::core::option::Option<u64>,
10953    #[prost(uint32, optional, tag="2")]
10954    pub group: ::core::option::Option<u32>,
10955    #[prost(uint32, optional, tag="3")]
10956    pub prefetch: ::core::option::Option<u32>,
10957}
10958#[derive(Clone, PartialEq, ::prost::Message)]
10959pub struct Ext4ReadpageFtraceEvent {
10960    #[prost(uint64, optional, tag="1")]
10961    pub dev: ::core::option::Option<u64>,
10962    #[prost(uint64, optional, tag="2")]
10963    pub ino: ::core::option::Option<u64>,
10964    #[prost(uint64, optional, tag="3")]
10965    pub index: ::core::option::Option<u64>,
10966}
10967#[derive(Clone, PartialEq, ::prost::Message)]
10968pub struct Ext4ReleasepageFtraceEvent {
10969    #[prost(uint64, optional, tag="1")]
10970    pub dev: ::core::option::Option<u64>,
10971    #[prost(uint64, optional, tag="2")]
10972    pub ino: ::core::option::Option<u64>,
10973    #[prost(uint64, optional, tag="3")]
10974    pub index: ::core::option::Option<u64>,
10975}
10976#[derive(Clone, PartialEq, ::prost::Message)]
10977pub struct Ext4RemoveBlocksFtraceEvent {
10978    #[prost(uint64, optional, tag="1")]
10979    pub dev: ::core::option::Option<u64>,
10980    #[prost(uint64, optional, tag="2")]
10981    pub ino: ::core::option::Option<u64>,
10982    #[prost(uint32, optional, tag="3")]
10983    pub from: ::core::option::Option<u32>,
10984    #[prost(uint32, optional, tag="4")]
10985    pub to: ::core::option::Option<u32>,
10986    #[prost(int64, optional, tag="5")]
10987    pub partial: ::core::option::Option<i64>,
10988    #[prost(uint64, optional, tag="6")]
10989    pub ee_pblk: ::core::option::Option<u64>,
10990    #[prost(uint32, optional, tag="7")]
10991    pub ee_lblk: ::core::option::Option<u32>,
10992    #[prost(uint32, optional, tag="8")]
10993    pub ee_len: ::core::option::Option<u32>,
10994    #[prost(uint32, optional, tag="9")]
10995    pub pc_lblk: ::core::option::Option<u32>,
10996    #[prost(uint64, optional, tag="10")]
10997    pub pc_pclu: ::core::option::Option<u64>,
10998    #[prost(int32, optional, tag="11")]
10999    pub pc_state: ::core::option::Option<i32>,
11000}
11001#[derive(Clone, PartialEq, ::prost::Message)]
11002pub struct Ext4RequestBlocksFtraceEvent {
11003    #[prost(uint64, optional, tag="1")]
11004    pub dev: ::core::option::Option<u64>,
11005    #[prost(uint64, optional, tag="2")]
11006    pub ino: ::core::option::Option<u64>,
11007    #[prost(uint32, optional, tag="3")]
11008    pub len: ::core::option::Option<u32>,
11009    #[prost(uint32, optional, tag="4")]
11010    pub logical: ::core::option::Option<u32>,
11011    #[prost(uint32, optional, tag="5")]
11012    pub lleft: ::core::option::Option<u32>,
11013    #[prost(uint32, optional, tag="6")]
11014    pub lright: ::core::option::Option<u32>,
11015    #[prost(uint64, optional, tag="7")]
11016    pub goal: ::core::option::Option<u64>,
11017    #[prost(uint64, optional, tag="8")]
11018    pub pleft: ::core::option::Option<u64>,
11019    #[prost(uint64, optional, tag="9")]
11020    pub pright: ::core::option::Option<u64>,
11021    #[prost(uint32, optional, tag="10")]
11022    pub flags: ::core::option::Option<u32>,
11023}
11024#[derive(Clone, PartialEq, ::prost::Message)]
11025pub struct Ext4RequestInodeFtraceEvent {
11026    #[prost(uint64, optional, tag="1")]
11027    pub dev: ::core::option::Option<u64>,
11028    #[prost(uint64, optional, tag="2")]
11029    pub dir: ::core::option::Option<u64>,
11030    #[prost(uint32, optional, tag="3")]
11031    pub mode: ::core::option::Option<u32>,
11032}
11033#[derive(Clone, PartialEq, ::prost::Message)]
11034pub struct Ext4SyncFsFtraceEvent {
11035    #[prost(uint64, optional, tag="1")]
11036    pub dev: ::core::option::Option<u64>,
11037    #[prost(int32, optional, tag="2")]
11038    pub wait: ::core::option::Option<i32>,
11039}
11040#[derive(Clone, PartialEq, ::prost::Message)]
11041pub struct Ext4TrimAllFreeFtraceEvent {
11042    #[prost(int32, optional, tag="1")]
11043    pub dev_major: ::core::option::Option<i32>,
11044    #[prost(int32, optional, tag="2")]
11045    pub dev_minor: ::core::option::Option<i32>,
11046    #[prost(uint32, optional, tag="3")]
11047    pub group: ::core::option::Option<u32>,
11048    #[prost(int32, optional, tag="4")]
11049    pub start: ::core::option::Option<i32>,
11050    #[prost(int32, optional, tag="5")]
11051    pub len: ::core::option::Option<i32>,
11052}
11053#[derive(Clone, PartialEq, ::prost::Message)]
11054pub struct Ext4TrimExtentFtraceEvent {
11055    #[prost(int32, optional, tag="1")]
11056    pub dev_major: ::core::option::Option<i32>,
11057    #[prost(int32, optional, tag="2")]
11058    pub dev_minor: ::core::option::Option<i32>,
11059    #[prost(uint32, optional, tag="3")]
11060    pub group: ::core::option::Option<u32>,
11061    #[prost(int32, optional, tag="4")]
11062    pub start: ::core::option::Option<i32>,
11063    #[prost(int32, optional, tag="5")]
11064    pub len: ::core::option::Option<i32>,
11065}
11066#[derive(Clone, PartialEq, ::prost::Message)]
11067pub struct Ext4TruncateEnterFtraceEvent {
11068    #[prost(uint64, optional, tag="1")]
11069    pub dev: ::core::option::Option<u64>,
11070    #[prost(uint64, optional, tag="2")]
11071    pub ino: ::core::option::Option<u64>,
11072    #[prost(uint64, optional, tag="3")]
11073    pub blocks: ::core::option::Option<u64>,
11074}
11075#[derive(Clone, PartialEq, ::prost::Message)]
11076pub struct Ext4TruncateExitFtraceEvent {
11077    #[prost(uint64, optional, tag="1")]
11078    pub dev: ::core::option::Option<u64>,
11079    #[prost(uint64, optional, tag="2")]
11080    pub ino: ::core::option::Option<u64>,
11081    #[prost(uint64, optional, tag="3")]
11082    pub blocks: ::core::option::Option<u64>,
11083}
11084#[derive(Clone, PartialEq, ::prost::Message)]
11085pub struct Ext4UnlinkEnterFtraceEvent {
11086    #[prost(uint64, optional, tag="1")]
11087    pub dev: ::core::option::Option<u64>,
11088    #[prost(uint64, optional, tag="2")]
11089    pub ino: ::core::option::Option<u64>,
11090    #[prost(uint64, optional, tag="3")]
11091    pub parent: ::core::option::Option<u64>,
11092    #[prost(int64, optional, tag="4")]
11093    pub size: ::core::option::Option<i64>,
11094}
11095#[derive(Clone, PartialEq, ::prost::Message)]
11096pub struct Ext4UnlinkExitFtraceEvent {
11097    #[prost(uint64, optional, tag="1")]
11098    pub dev: ::core::option::Option<u64>,
11099    #[prost(uint64, optional, tag="2")]
11100    pub ino: ::core::option::Option<u64>,
11101    #[prost(int32, optional, tag="3")]
11102    pub ret: ::core::option::Option<i32>,
11103}
11104#[derive(Clone, PartialEq, ::prost::Message)]
11105pub struct Ext4WriteBeginFtraceEvent {
11106    #[prost(uint64, optional, tag="1")]
11107    pub dev: ::core::option::Option<u64>,
11108    #[prost(uint64, optional, tag="2")]
11109    pub ino: ::core::option::Option<u64>,
11110    #[prost(int64, optional, tag="3")]
11111    pub pos: ::core::option::Option<i64>,
11112    #[prost(uint32, optional, tag="4")]
11113    pub len: ::core::option::Option<u32>,
11114    #[prost(uint32, optional, tag="5")]
11115    pub flags: ::core::option::Option<u32>,
11116}
11117#[derive(Clone, PartialEq, ::prost::Message)]
11118pub struct Ext4WriteEndFtraceEvent {
11119    #[prost(uint64, optional, tag="1")]
11120    pub dev: ::core::option::Option<u64>,
11121    #[prost(uint64, optional, tag="2")]
11122    pub ino: ::core::option::Option<u64>,
11123    #[prost(int64, optional, tag="3")]
11124    pub pos: ::core::option::Option<i64>,
11125    #[prost(uint32, optional, tag="4")]
11126    pub len: ::core::option::Option<u32>,
11127    #[prost(uint32, optional, tag="5")]
11128    pub copied: ::core::option::Option<u32>,
11129}
11130#[derive(Clone, PartialEq, ::prost::Message)]
11131pub struct Ext4WritepageFtraceEvent {
11132    #[prost(uint64, optional, tag="1")]
11133    pub dev: ::core::option::Option<u64>,
11134    #[prost(uint64, optional, tag="2")]
11135    pub ino: ::core::option::Option<u64>,
11136    #[prost(uint64, optional, tag="3")]
11137    pub index: ::core::option::Option<u64>,
11138}
11139#[derive(Clone, PartialEq, ::prost::Message)]
11140pub struct Ext4WritepagesFtraceEvent {
11141    #[prost(uint64, optional, tag="1")]
11142    pub dev: ::core::option::Option<u64>,
11143    #[prost(uint64, optional, tag="2")]
11144    pub ino: ::core::option::Option<u64>,
11145    #[prost(int64, optional, tag="3")]
11146    pub nr_to_write: ::core::option::Option<i64>,
11147    #[prost(int64, optional, tag="4")]
11148    pub pages_skipped: ::core::option::Option<i64>,
11149    #[prost(int64, optional, tag="5")]
11150    pub range_start: ::core::option::Option<i64>,
11151    #[prost(int64, optional, tag="6")]
11152    pub range_end: ::core::option::Option<i64>,
11153    #[prost(uint64, optional, tag="7")]
11154    pub writeback_index: ::core::option::Option<u64>,
11155    #[prost(int32, optional, tag="8")]
11156    pub sync_mode: ::core::option::Option<i32>,
11157    #[prost(uint32, optional, tag="9")]
11158    pub for_kupdate: ::core::option::Option<u32>,
11159    #[prost(uint32, optional, tag="10")]
11160    pub range_cyclic: ::core::option::Option<u32>,
11161}
11162#[derive(Clone, PartialEq, ::prost::Message)]
11163pub struct Ext4WritepagesResultFtraceEvent {
11164    #[prost(uint64, optional, tag="1")]
11165    pub dev: ::core::option::Option<u64>,
11166    #[prost(uint64, optional, tag="2")]
11167    pub ino: ::core::option::Option<u64>,
11168    #[prost(int32, optional, tag="3")]
11169    pub ret: ::core::option::Option<i32>,
11170    #[prost(int32, optional, tag="4")]
11171    pub pages_written: ::core::option::Option<i32>,
11172    #[prost(int64, optional, tag="5")]
11173    pub pages_skipped: ::core::option::Option<i64>,
11174    #[prost(uint64, optional, tag="6")]
11175    pub writeback_index: ::core::option::Option<u64>,
11176    #[prost(int32, optional, tag="7")]
11177    pub sync_mode: ::core::option::Option<i32>,
11178}
11179#[derive(Clone, PartialEq, ::prost::Message)]
11180pub struct Ext4ZeroRangeFtraceEvent {
11181    #[prost(uint64, optional, tag="1")]
11182    pub dev: ::core::option::Option<u64>,
11183    #[prost(uint64, optional, tag="2")]
11184    pub ino: ::core::option::Option<u64>,
11185    #[prost(int64, optional, tag="3")]
11186    pub offset: ::core::option::Option<i64>,
11187    #[prost(int64, optional, tag="4")]
11188    pub len: ::core::option::Option<i64>,
11189    #[prost(int32, optional, tag="5")]
11190    pub mode: ::core::option::Option<i32>,
11191}
11192// End of protos/perfetto/trace/ftrace/ext4.proto
11193
11194// Begin of protos/perfetto/trace/ftrace/f2fs.proto
11195
11196#[derive(Clone, PartialEq, ::prost::Message)]
11197pub struct F2fsDoSubmitBioFtraceEvent {
11198    #[prost(uint64, optional, tag="1")]
11199    pub dev: ::core::option::Option<u64>,
11200    #[prost(int32, optional, tag="2")]
11201    pub btype: ::core::option::Option<i32>,
11202    #[prost(uint32, optional, tag="3")]
11203    pub sync: ::core::option::Option<u32>,
11204    #[prost(uint64, optional, tag="4")]
11205    pub sector: ::core::option::Option<u64>,
11206    #[prost(uint32, optional, tag="5")]
11207    pub size: ::core::option::Option<u32>,
11208}
11209#[derive(Clone, PartialEq, ::prost::Message)]
11210pub struct F2fsEvictInodeFtraceEvent {
11211    #[prost(uint64, optional, tag="1")]
11212    pub dev: ::core::option::Option<u64>,
11213    #[prost(uint64, optional, tag="2")]
11214    pub ino: ::core::option::Option<u64>,
11215    #[prost(uint64, optional, tag="3")]
11216    pub pino: ::core::option::Option<u64>,
11217    #[prost(uint32, optional, tag="4")]
11218    pub mode: ::core::option::Option<u32>,
11219    #[prost(int64, optional, tag="5")]
11220    pub size: ::core::option::Option<i64>,
11221    #[prost(uint32, optional, tag="6")]
11222    pub nlink: ::core::option::Option<u32>,
11223    #[prost(uint64, optional, tag="7")]
11224    pub blocks: ::core::option::Option<u64>,
11225    #[prost(uint32, optional, tag="8")]
11226    pub advise: ::core::option::Option<u32>,
11227}
11228#[derive(Clone, PartialEq, ::prost::Message)]
11229pub struct F2fsFallocateFtraceEvent {
11230    #[prost(uint64, optional, tag="1")]
11231    pub dev: ::core::option::Option<u64>,
11232    #[prost(uint64, optional, tag="2")]
11233    pub ino: ::core::option::Option<u64>,
11234    #[prost(int32, optional, tag="3")]
11235    pub mode: ::core::option::Option<i32>,
11236    #[prost(int64, optional, tag="4")]
11237    pub offset: ::core::option::Option<i64>,
11238    #[prost(int64, optional, tag="5")]
11239    pub len: ::core::option::Option<i64>,
11240    #[prost(int64, optional, tag="6")]
11241    pub size: ::core::option::Option<i64>,
11242    #[prost(uint64, optional, tag="7")]
11243    pub blocks: ::core::option::Option<u64>,
11244    #[prost(int32, optional, tag="8")]
11245    pub ret: ::core::option::Option<i32>,
11246}
11247#[derive(Clone, PartialEq, ::prost::Message)]
11248pub struct F2fsGetDataBlockFtraceEvent {
11249    #[prost(uint64, optional, tag="1")]
11250    pub dev: ::core::option::Option<u64>,
11251    #[prost(uint64, optional, tag="2")]
11252    pub ino: ::core::option::Option<u64>,
11253    #[prost(uint64, optional, tag="3")]
11254    pub iblock: ::core::option::Option<u64>,
11255    #[prost(uint64, optional, tag="4")]
11256    pub bh_start: ::core::option::Option<u64>,
11257    #[prost(uint64, optional, tag="5")]
11258    pub bh_size: ::core::option::Option<u64>,
11259    #[prost(int32, optional, tag="6")]
11260    pub ret: ::core::option::Option<i32>,
11261}
11262#[derive(Clone, PartialEq, ::prost::Message)]
11263pub struct F2fsGetVictimFtraceEvent {
11264    #[prost(uint64, optional, tag="1")]
11265    pub dev: ::core::option::Option<u64>,
11266    #[prost(int32, optional, tag="2")]
11267    pub r#type: ::core::option::Option<i32>,
11268    #[prost(int32, optional, tag="3")]
11269    pub gc_type: ::core::option::Option<i32>,
11270    #[prost(int32, optional, tag="4")]
11271    pub alloc_mode: ::core::option::Option<i32>,
11272    #[prost(int32, optional, tag="5")]
11273    pub gc_mode: ::core::option::Option<i32>,
11274    #[prost(uint32, optional, tag="6")]
11275    pub victim: ::core::option::Option<u32>,
11276    #[prost(uint32, optional, tag="7")]
11277    pub ofs_unit: ::core::option::Option<u32>,
11278    #[prost(uint32, optional, tag="8")]
11279    pub pre_victim: ::core::option::Option<u32>,
11280    #[prost(uint32, optional, tag="9")]
11281    pub prefree: ::core::option::Option<u32>,
11282    #[prost(uint32, optional, tag="10")]
11283    pub free: ::core::option::Option<u32>,
11284    #[prost(uint32, optional, tag="11")]
11285    pub cost: ::core::option::Option<u32>,
11286}
11287#[derive(Clone, PartialEq, ::prost::Message)]
11288pub struct F2fsIgetFtraceEvent {
11289    #[prost(uint64, optional, tag="1")]
11290    pub dev: ::core::option::Option<u64>,
11291    #[prost(uint64, optional, tag="2")]
11292    pub ino: ::core::option::Option<u64>,
11293    #[prost(uint64, optional, tag="3")]
11294    pub pino: ::core::option::Option<u64>,
11295    #[prost(uint32, optional, tag="4")]
11296    pub mode: ::core::option::Option<u32>,
11297    #[prost(int64, optional, tag="5")]
11298    pub size: ::core::option::Option<i64>,
11299    #[prost(uint32, optional, tag="6")]
11300    pub nlink: ::core::option::Option<u32>,
11301    #[prost(uint64, optional, tag="7")]
11302    pub blocks: ::core::option::Option<u64>,
11303    #[prost(uint32, optional, tag="8")]
11304    pub advise: ::core::option::Option<u32>,
11305}
11306#[derive(Clone, PartialEq, ::prost::Message)]
11307pub struct F2fsIgetExitFtraceEvent {
11308    #[prost(uint64, optional, tag="1")]
11309    pub dev: ::core::option::Option<u64>,
11310    #[prost(uint64, optional, tag="2")]
11311    pub ino: ::core::option::Option<u64>,
11312    #[prost(int32, optional, tag="3")]
11313    pub ret: ::core::option::Option<i32>,
11314}
11315#[derive(Clone, PartialEq, ::prost::Message)]
11316pub struct F2fsNewInodeFtraceEvent {
11317    #[prost(uint64, optional, tag="1")]
11318    pub dev: ::core::option::Option<u64>,
11319    #[prost(uint64, optional, tag="2")]
11320    pub ino: ::core::option::Option<u64>,
11321    #[prost(int32, optional, tag="3")]
11322    pub ret: ::core::option::Option<i32>,
11323}
11324#[derive(Clone, PartialEq, ::prost::Message)]
11325pub struct F2fsReadpageFtraceEvent {
11326    #[prost(uint64, optional, tag="1")]
11327    pub dev: ::core::option::Option<u64>,
11328    #[prost(uint64, optional, tag="2")]
11329    pub ino: ::core::option::Option<u64>,
11330    #[prost(uint64, optional, tag="3")]
11331    pub index: ::core::option::Option<u64>,
11332    #[prost(uint64, optional, tag="4")]
11333    pub blkaddr: ::core::option::Option<u64>,
11334    #[prost(int32, optional, tag="5")]
11335    pub r#type: ::core::option::Option<i32>,
11336    #[prost(int32, optional, tag="6")]
11337    pub dir: ::core::option::Option<i32>,
11338    #[prost(int32, optional, tag="7")]
11339    pub dirty: ::core::option::Option<i32>,
11340    #[prost(int32, optional, tag="8")]
11341    pub uptodate: ::core::option::Option<i32>,
11342}
11343#[derive(Clone, PartialEq, ::prost::Message)]
11344pub struct F2fsReserveNewBlockFtraceEvent {
11345    #[prost(uint64, optional, tag="1")]
11346    pub dev: ::core::option::Option<u64>,
11347    #[prost(uint32, optional, tag="2")]
11348    pub nid: ::core::option::Option<u32>,
11349    #[prost(uint32, optional, tag="3")]
11350    pub ofs_in_node: ::core::option::Option<u32>,
11351}
11352#[derive(Clone, PartialEq, ::prost::Message)]
11353pub struct F2fsSetPageDirtyFtraceEvent {
11354    #[prost(uint64, optional, tag="1")]
11355    pub dev: ::core::option::Option<u64>,
11356    #[prost(uint64, optional, tag="2")]
11357    pub ino: ::core::option::Option<u64>,
11358    #[prost(int32, optional, tag="3")]
11359    pub r#type: ::core::option::Option<i32>,
11360    #[prost(int32, optional, tag="4")]
11361    pub dir: ::core::option::Option<i32>,
11362    #[prost(uint64, optional, tag="5")]
11363    pub index: ::core::option::Option<u64>,
11364    #[prost(int32, optional, tag="6")]
11365    pub dirty: ::core::option::Option<i32>,
11366    #[prost(int32, optional, tag="7")]
11367    pub uptodate: ::core::option::Option<i32>,
11368}
11369#[derive(Clone, PartialEq, ::prost::Message)]
11370pub struct F2fsSubmitWritePageFtraceEvent {
11371    #[prost(uint64, optional, tag="1")]
11372    pub dev: ::core::option::Option<u64>,
11373    #[prost(uint64, optional, tag="2")]
11374    pub ino: ::core::option::Option<u64>,
11375    #[prost(int32, optional, tag="3")]
11376    pub r#type: ::core::option::Option<i32>,
11377    #[prost(uint64, optional, tag="4")]
11378    pub index: ::core::option::Option<u64>,
11379    #[prost(uint32, optional, tag="5")]
11380    pub block: ::core::option::Option<u32>,
11381}
11382#[derive(Clone, PartialEq, ::prost::Message)]
11383pub struct F2fsSyncFileEnterFtraceEvent {
11384    #[prost(uint64, optional, tag="1")]
11385    pub dev: ::core::option::Option<u64>,
11386    #[prost(uint64, optional, tag="2")]
11387    pub ino: ::core::option::Option<u64>,
11388    #[prost(uint64, optional, tag="3")]
11389    pub pino: ::core::option::Option<u64>,
11390    #[prost(uint32, optional, tag="4")]
11391    pub mode: ::core::option::Option<u32>,
11392    #[prost(int64, optional, tag="5")]
11393    pub size: ::core::option::Option<i64>,
11394    #[prost(uint32, optional, tag="6")]
11395    pub nlink: ::core::option::Option<u32>,
11396    #[prost(uint64, optional, tag="7")]
11397    pub blocks: ::core::option::Option<u64>,
11398    #[prost(uint32, optional, tag="8")]
11399    pub advise: ::core::option::Option<u32>,
11400}
11401#[derive(Clone, PartialEq, ::prost::Message)]
11402pub struct F2fsSyncFileExitFtraceEvent {
11403    #[prost(uint64, optional, tag="1")]
11404    pub dev: ::core::option::Option<u64>,
11405    #[prost(uint64, optional, tag="2")]
11406    pub ino: ::core::option::Option<u64>,
11407    #[prost(uint32, optional, tag="3")]
11408    pub need_cp: ::core::option::Option<u32>,
11409    #[prost(int32, optional, tag="4")]
11410    pub datasync: ::core::option::Option<i32>,
11411    #[prost(int32, optional, tag="5")]
11412    pub ret: ::core::option::Option<i32>,
11413    #[prost(int32, optional, tag="6")]
11414    pub cp_reason: ::core::option::Option<i32>,
11415}
11416#[derive(Clone, PartialEq, ::prost::Message)]
11417pub struct F2fsSyncFsFtraceEvent {
11418    #[prost(uint64, optional, tag="1")]
11419    pub dev: ::core::option::Option<u64>,
11420    #[prost(int32, optional, tag="2")]
11421    pub dirty: ::core::option::Option<i32>,
11422    #[prost(int32, optional, tag="3")]
11423    pub wait: ::core::option::Option<i32>,
11424}
11425#[derive(Clone, PartialEq, ::prost::Message)]
11426pub struct F2fsTruncateFtraceEvent {
11427    #[prost(uint64, optional, tag="1")]
11428    pub dev: ::core::option::Option<u64>,
11429    #[prost(uint64, optional, tag="2")]
11430    pub ino: ::core::option::Option<u64>,
11431    #[prost(uint64, optional, tag="3")]
11432    pub pino: ::core::option::Option<u64>,
11433    #[prost(uint32, optional, tag="4")]
11434    pub mode: ::core::option::Option<u32>,
11435    #[prost(int64, optional, tag="5")]
11436    pub size: ::core::option::Option<i64>,
11437    #[prost(uint32, optional, tag="6")]
11438    pub nlink: ::core::option::Option<u32>,
11439    #[prost(uint64, optional, tag="7")]
11440    pub blocks: ::core::option::Option<u64>,
11441    #[prost(uint32, optional, tag="8")]
11442    pub advise: ::core::option::Option<u32>,
11443}
11444#[derive(Clone, PartialEq, ::prost::Message)]
11445pub struct F2fsTruncateBlocksEnterFtraceEvent {
11446    #[prost(uint64, optional, tag="1")]
11447    pub dev: ::core::option::Option<u64>,
11448    #[prost(uint64, optional, tag="2")]
11449    pub ino: ::core::option::Option<u64>,
11450    #[prost(int64, optional, tag="3")]
11451    pub size: ::core::option::Option<i64>,
11452    #[prost(uint64, optional, tag="4")]
11453    pub blocks: ::core::option::Option<u64>,
11454    #[prost(uint64, optional, tag="5")]
11455    pub from: ::core::option::Option<u64>,
11456}
11457#[derive(Clone, PartialEq, ::prost::Message)]
11458pub struct F2fsTruncateBlocksExitFtraceEvent {
11459    #[prost(uint64, optional, tag="1")]
11460    pub dev: ::core::option::Option<u64>,
11461    #[prost(uint64, optional, tag="2")]
11462    pub ino: ::core::option::Option<u64>,
11463    #[prost(int32, optional, tag="3")]
11464    pub ret: ::core::option::Option<i32>,
11465}
11466#[derive(Clone, PartialEq, ::prost::Message)]
11467pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
11468    #[prost(uint64, optional, tag="1")]
11469    pub dev: ::core::option::Option<u64>,
11470    #[prost(uint64, optional, tag="2")]
11471    pub ino: ::core::option::Option<u64>,
11472    #[prost(uint32, optional, tag="3")]
11473    pub nid: ::core::option::Option<u32>,
11474    #[prost(uint32, optional, tag="4")]
11475    pub ofs: ::core::option::Option<u32>,
11476    #[prost(int32, optional, tag="5")]
11477    pub free: ::core::option::Option<i32>,
11478}
11479#[derive(Clone, PartialEq, ::prost::Message)]
11480pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
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(int64, optional, tag="3")]
11486    pub size: ::core::option::Option<i64>,
11487    #[prost(uint64, optional, tag="4")]
11488    pub blocks: ::core::option::Option<u64>,
11489    #[prost(uint64, optional, tag="5")]
11490    pub from: ::core::option::Option<u64>,
11491}
11492#[derive(Clone, PartialEq, ::prost::Message)]
11493pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
11494    #[prost(uint64, optional, tag="1")]
11495    pub dev: ::core::option::Option<u64>,
11496    #[prost(uint64, optional, tag="2")]
11497    pub ino: ::core::option::Option<u64>,
11498    #[prost(int32, optional, tag="3")]
11499    pub ret: ::core::option::Option<i32>,
11500}
11501#[derive(Clone, PartialEq, ::prost::Message)]
11502pub struct F2fsTruncateNodeFtraceEvent {
11503    #[prost(uint64, optional, tag="1")]
11504    pub dev: ::core::option::Option<u64>,
11505    #[prost(uint64, optional, tag="2")]
11506    pub ino: ::core::option::Option<u64>,
11507    #[prost(uint32, optional, tag="3")]
11508    pub nid: ::core::option::Option<u32>,
11509    #[prost(uint32, optional, tag="4")]
11510    pub blk_addr: ::core::option::Option<u32>,
11511}
11512#[derive(Clone, PartialEq, ::prost::Message)]
11513pub struct F2fsTruncateNodesEnterFtraceEvent {
11514    #[prost(uint64, optional, tag="1")]
11515    pub dev: ::core::option::Option<u64>,
11516    #[prost(uint64, optional, tag="2")]
11517    pub ino: ::core::option::Option<u64>,
11518    #[prost(uint32, optional, tag="3")]
11519    pub nid: ::core::option::Option<u32>,
11520    #[prost(uint32, optional, tag="4")]
11521    pub blk_addr: ::core::option::Option<u32>,
11522}
11523#[derive(Clone, PartialEq, ::prost::Message)]
11524pub struct F2fsTruncateNodesExitFtraceEvent {
11525    #[prost(uint64, optional, tag="1")]
11526    pub dev: ::core::option::Option<u64>,
11527    #[prost(uint64, optional, tag="2")]
11528    pub ino: ::core::option::Option<u64>,
11529    #[prost(int32, optional, tag="3")]
11530    pub ret: ::core::option::Option<i32>,
11531}
11532#[derive(Clone, PartialEq, ::prost::Message)]
11533pub struct F2fsTruncatePartialNodesFtraceEvent {
11534    #[prost(uint64, optional, tag="1")]
11535    pub dev: ::core::option::Option<u64>,
11536    #[prost(uint64, optional, tag="2")]
11537    pub ino: ::core::option::Option<u64>,
11538    #[prost(uint32, optional, tag="3")]
11539    pub nid: ::core::option::Option<u32>,
11540    #[prost(int32, optional, tag="4")]
11541    pub depth: ::core::option::Option<i32>,
11542    #[prost(int32, optional, tag="5")]
11543    pub err: ::core::option::Option<i32>,
11544}
11545#[derive(Clone, PartialEq, ::prost::Message)]
11546pub struct F2fsUnlinkEnterFtraceEvent {
11547    #[prost(uint64, optional, tag="1")]
11548    pub dev: ::core::option::Option<u64>,
11549    #[prost(uint64, optional, tag="2")]
11550    pub ino: ::core::option::Option<u64>,
11551    #[prost(int64, optional, tag="3")]
11552    pub size: ::core::option::Option<i64>,
11553    #[prost(uint64, optional, tag="4")]
11554    pub blocks: ::core::option::Option<u64>,
11555    #[prost(string, optional, tag="5")]
11556    pub name: ::core::option::Option<::prost::alloc::string::String>,
11557}
11558#[derive(Clone, PartialEq, ::prost::Message)]
11559pub struct F2fsUnlinkExitFtraceEvent {
11560    #[prost(uint64, optional, tag="1")]
11561    pub dev: ::core::option::Option<u64>,
11562    #[prost(uint64, optional, tag="2")]
11563    pub ino: ::core::option::Option<u64>,
11564    #[prost(int32, optional, tag="3")]
11565    pub ret: ::core::option::Option<i32>,
11566}
11567#[derive(Clone, PartialEq, ::prost::Message)]
11568pub struct F2fsVmPageMkwriteFtraceEvent {
11569    #[prost(uint64, optional, tag="1")]
11570    pub dev: ::core::option::Option<u64>,
11571    #[prost(uint64, optional, tag="2")]
11572    pub ino: ::core::option::Option<u64>,
11573    #[prost(int32, optional, tag="3")]
11574    pub r#type: ::core::option::Option<i32>,
11575    #[prost(int32, optional, tag="4")]
11576    pub dir: ::core::option::Option<i32>,
11577    #[prost(uint64, optional, tag="5")]
11578    pub index: ::core::option::Option<u64>,
11579    #[prost(int32, optional, tag="6")]
11580    pub dirty: ::core::option::Option<i32>,
11581    #[prost(int32, optional, tag="7")]
11582    pub uptodate: ::core::option::Option<i32>,
11583}
11584#[derive(Clone, PartialEq, ::prost::Message)]
11585pub struct F2fsWriteBeginFtraceEvent {
11586    #[prost(uint64, optional, tag="1")]
11587    pub dev: ::core::option::Option<u64>,
11588    #[prost(uint64, optional, tag="2")]
11589    pub ino: ::core::option::Option<u64>,
11590    #[prost(int64, optional, tag="3")]
11591    pub pos: ::core::option::Option<i64>,
11592    #[prost(uint32, optional, tag="4")]
11593    pub len: ::core::option::Option<u32>,
11594    #[prost(uint32, optional, tag="5")]
11595    pub flags: ::core::option::Option<u32>,
11596}
11597#[derive(Clone, PartialEq, ::prost::Message)]
11598pub struct F2fsWriteCheckpointFtraceEvent {
11599    #[prost(uint64, optional, tag="1")]
11600    pub dev: ::core::option::Option<u64>,
11601    #[prost(uint32, optional, tag="2")]
11602    pub is_umount: ::core::option::Option<u32>,
11603    #[prost(string, optional, tag="3")]
11604    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11605    #[prost(int32, optional, tag="4")]
11606    pub reason: ::core::option::Option<i32>,
11607}
11608#[derive(Clone, PartialEq, ::prost::Message)]
11609pub struct F2fsWriteEndFtraceEvent {
11610    #[prost(uint64, optional, tag="1")]
11611    pub dev: ::core::option::Option<u64>,
11612    #[prost(uint64, optional, tag="2")]
11613    pub ino: ::core::option::Option<u64>,
11614    #[prost(int64, optional, tag="3")]
11615    pub pos: ::core::option::Option<i64>,
11616    #[prost(uint32, optional, tag="4")]
11617    pub len: ::core::option::Option<u32>,
11618    #[prost(uint32, optional, tag="5")]
11619    pub copied: ::core::option::Option<u32>,
11620}
11621#[derive(Clone, PartialEq, ::prost::Message)]
11622pub struct F2fsIostatFtraceEvent {
11623    #[prost(uint64, optional, tag="1")]
11624    pub app_bio: ::core::option::Option<u64>,
11625    #[prost(uint64, optional, tag="2")]
11626    pub app_brio: ::core::option::Option<u64>,
11627    #[prost(uint64, optional, tag="3")]
11628    pub app_dio: ::core::option::Option<u64>,
11629    #[prost(uint64, optional, tag="4")]
11630    pub app_drio: ::core::option::Option<u64>,
11631    #[prost(uint64, optional, tag="5")]
11632    pub app_mio: ::core::option::Option<u64>,
11633    #[prost(uint64, optional, tag="6")]
11634    pub app_mrio: ::core::option::Option<u64>,
11635    #[prost(uint64, optional, tag="7")]
11636    pub app_rio: ::core::option::Option<u64>,
11637    #[prost(uint64, optional, tag="8")]
11638    pub app_wio: ::core::option::Option<u64>,
11639    #[prost(uint64, optional, tag="9")]
11640    pub dev: ::core::option::Option<u64>,
11641    #[prost(uint64, optional, tag="10")]
11642    pub fs_cdrio: ::core::option::Option<u64>,
11643    #[prost(uint64, optional, tag="11")]
11644    pub fs_cp_dio: ::core::option::Option<u64>,
11645    #[prost(uint64, optional, tag="12")]
11646    pub fs_cp_mio: ::core::option::Option<u64>,
11647    #[prost(uint64, optional, tag="13")]
11648    pub fs_cp_nio: ::core::option::Option<u64>,
11649    #[prost(uint64, optional, tag="14")]
11650    pub fs_dio: ::core::option::Option<u64>,
11651    #[prost(uint64, optional, tag="15")]
11652    pub fs_discard: ::core::option::Option<u64>,
11653    #[prost(uint64, optional, tag="16")]
11654    pub fs_drio: ::core::option::Option<u64>,
11655    #[prost(uint64, optional, tag="17")]
11656    pub fs_gc_dio: ::core::option::Option<u64>,
11657    #[prost(uint64, optional, tag="18")]
11658    pub fs_gc_nio: ::core::option::Option<u64>,
11659    #[prost(uint64, optional, tag="19")]
11660    pub fs_gdrio: ::core::option::Option<u64>,
11661    #[prost(uint64, optional, tag="20")]
11662    pub fs_mio: ::core::option::Option<u64>,
11663    #[prost(uint64, optional, tag="21")]
11664    pub fs_mrio: ::core::option::Option<u64>,
11665    #[prost(uint64, optional, tag="22")]
11666    pub fs_nio: ::core::option::Option<u64>,
11667    #[prost(uint64, optional, tag="23")]
11668    pub fs_nrio: ::core::option::Option<u64>,
11669}
11670#[derive(Clone, PartialEq, ::prost::Message)]
11671pub struct F2fsIostatLatencyFtraceEvent {
11672    #[prost(uint32, optional, tag="1")]
11673    pub d_rd_avg: ::core::option::Option<u32>,
11674    #[prost(uint32, optional, tag="2")]
11675    pub d_rd_cnt: ::core::option::Option<u32>,
11676    #[prost(uint32, optional, tag="3")]
11677    pub d_rd_peak: ::core::option::Option<u32>,
11678    #[prost(uint32, optional, tag="4")]
11679    pub d_wr_as_avg: ::core::option::Option<u32>,
11680    #[prost(uint32, optional, tag="5")]
11681    pub d_wr_as_cnt: ::core::option::Option<u32>,
11682    #[prost(uint32, optional, tag="6")]
11683    pub d_wr_as_peak: ::core::option::Option<u32>,
11684    #[prost(uint32, optional, tag="7")]
11685    pub d_wr_s_avg: ::core::option::Option<u32>,
11686    #[prost(uint32, optional, tag="8")]
11687    pub d_wr_s_cnt: ::core::option::Option<u32>,
11688    #[prost(uint32, optional, tag="9")]
11689    pub d_wr_s_peak: ::core::option::Option<u32>,
11690    #[prost(uint64, optional, tag="10")]
11691    pub dev: ::core::option::Option<u64>,
11692    #[prost(uint32, optional, tag="11")]
11693    pub m_rd_avg: ::core::option::Option<u32>,
11694    #[prost(uint32, optional, tag="12")]
11695    pub m_rd_cnt: ::core::option::Option<u32>,
11696    #[prost(uint32, optional, tag="13")]
11697    pub m_rd_peak: ::core::option::Option<u32>,
11698    #[prost(uint32, optional, tag="14")]
11699    pub m_wr_as_avg: ::core::option::Option<u32>,
11700    #[prost(uint32, optional, tag="15")]
11701    pub m_wr_as_cnt: ::core::option::Option<u32>,
11702    #[prost(uint32, optional, tag="16")]
11703    pub m_wr_as_peak: ::core::option::Option<u32>,
11704    #[prost(uint32, optional, tag="17")]
11705    pub m_wr_s_avg: ::core::option::Option<u32>,
11706    #[prost(uint32, optional, tag="18")]
11707    pub m_wr_s_cnt: ::core::option::Option<u32>,
11708    #[prost(uint32, optional, tag="19")]
11709    pub m_wr_s_peak: ::core::option::Option<u32>,
11710    #[prost(uint32, optional, tag="20")]
11711    pub n_rd_avg: ::core::option::Option<u32>,
11712    #[prost(uint32, optional, tag="21")]
11713    pub n_rd_cnt: ::core::option::Option<u32>,
11714    #[prost(uint32, optional, tag="22")]
11715    pub n_rd_peak: ::core::option::Option<u32>,
11716    #[prost(uint32, optional, tag="23")]
11717    pub n_wr_as_avg: ::core::option::Option<u32>,
11718    #[prost(uint32, optional, tag="24")]
11719    pub n_wr_as_cnt: ::core::option::Option<u32>,
11720    #[prost(uint32, optional, tag="25")]
11721    pub n_wr_as_peak: ::core::option::Option<u32>,
11722    #[prost(uint32, optional, tag="26")]
11723    pub n_wr_s_avg: ::core::option::Option<u32>,
11724    #[prost(uint32, optional, tag="27")]
11725    pub n_wr_s_cnt: ::core::option::Option<u32>,
11726    #[prost(uint32, optional, tag="28")]
11727    pub n_wr_s_peak: ::core::option::Option<u32>,
11728}
11729#[derive(Clone, PartialEq, ::prost::Message)]
11730pub struct F2fsBackgroundGcFtraceEvent {
11731    #[prost(uint64, optional, tag="1")]
11732    pub dev: ::core::option::Option<u64>,
11733    #[prost(uint32, optional, tag="2")]
11734    pub wait_ms: ::core::option::Option<u32>,
11735    #[prost(uint32, optional, tag="3")]
11736    pub prefree: ::core::option::Option<u32>,
11737    #[prost(uint32, optional, tag="4")]
11738    pub free: ::core::option::Option<u32>,
11739}
11740#[derive(Clone, PartialEq, ::prost::Message)]
11741pub struct F2fsGcBeginFtraceEvent {
11742    #[prost(uint64, optional, tag="1")]
11743    pub dev: ::core::option::Option<u64>,
11744    #[prost(uint32, optional, tag="2")]
11745    pub sync: ::core::option::Option<u32>,
11746    #[prost(uint32, optional, tag="3")]
11747    pub background: ::core::option::Option<u32>,
11748    #[prost(int64, optional, tag="4")]
11749    pub dirty_nodes: ::core::option::Option<i64>,
11750    #[prost(int64, optional, tag="5")]
11751    pub dirty_dents: ::core::option::Option<i64>,
11752    #[prost(int64, optional, tag="6")]
11753    pub dirty_imeta: ::core::option::Option<i64>,
11754    #[prost(uint32, optional, tag="7")]
11755    pub free_sec: ::core::option::Option<u32>,
11756    #[prost(uint32, optional, tag="8")]
11757    pub free_seg: ::core::option::Option<u32>,
11758    #[prost(int32, optional, tag="9")]
11759    pub reserved_seg: ::core::option::Option<i32>,
11760    #[prost(uint32, optional, tag="10")]
11761    pub prefree_seg: ::core::option::Option<u32>,
11762    #[prost(int32, optional, tag="11")]
11763    pub gc_type: ::core::option::Option<i32>,
11764    #[prost(uint32, optional, tag="12")]
11765    pub no_bg_gc: ::core::option::Option<u32>,
11766    #[prost(uint32, optional, tag="13")]
11767    pub nr_free_secs: ::core::option::Option<u32>,
11768}
11769#[derive(Clone, PartialEq, ::prost::Message)]
11770pub struct F2fsGcEndFtraceEvent {
11771    #[prost(uint64, optional, tag="1")]
11772    pub dev: ::core::option::Option<u64>,
11773    #[prost(int32, optional, tag="2")]
11774    pub ret: ::core::option::Option<i32>,
11775    #[prost(int32, optional, tag="3")]
11776    pub seg_freed: ::core::option::Option<i32>,
11777    #[prost(int32, optional, tag="4")]
11778    pub sec_freed: ::core::option::Option<i32>,
11779    #[prost(int64, optional, tag="5")]
11780    pub dirty_nodes: ::core::option::Option<i64>,
11781    #[prost(int64, optional, tag="6")]
11782    pub dirty_dents: ::core::option::Option<i64>,
11783    #[prost(int64, optional, tag="7")]
11784    pub dirty_imeta: ::core::option::Option<i64>,
11785    #[prost(uint32, optional, tag="8")]
11786    pub free_sec: ::core::option::Option<u32>,
11787    #[prost(uint32, optional, tag="9")]
11788    pub free_seg: ::core::option::Option<u32>,
11789    #[prost(int32, optional, tag="10")]
11790    pub reserved_seg: ::core::option::Option<i32>,
11791    #[prost(uint32, optional, tag="11")]
11792    pub prefree_seg: ::core::option::Option<u32>,
11793}
11794// End of protos/perfetto/trace/ftrace/f2fs.proto
11795
11796// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
11797
11798#[derive(Clone, PartialEq, ::prost::Message)]
11799pub struct FastrpcDmaStatFtraceEvent {
11800    #[prost(int32, optional, tag="1")]
11801    pub cid: ::core::option::Option<i32>,
11802    #[prost(int64, optional, tag="2")]
11803    pub len: ::core::option::Option<i64>,
11804    #[prost(uint64, optional, tag="3")]
11805    pub total_allocated: ::core::option::Option<u64>,
11806}
11807#[derive(Clone, PartialEq, ::prost::Message)]
11808pub struct FastrpcDmaFreeFtraceEvent {
11809    #[prost(int32, optional, tag="1")]
11810    pub cid: ::core::option::Option<i32>,
11811    #[prost(uint64, optional, tag="2")]
11812    pub phys: ::core::option::Option<u64>,
11813    #[prost(uint64, optional, tag="3")]
11814    pub size: ::core::option::Option<u64>,
11815}
11816#[derive(Clone, PartialEq, ::prost::Message)]
11817pub struct FastrpcDmaAllocFtraceEvent {
11818    #[prost(int32, optional, tag="1")]
11819    pub cid: ::core::option::Option<i32>,
11820    #[prost(uint64, optional, tag="2")]
11821    pub phys: ::core::option::Option<u64>,
11822    #[prost(uint64, optional, tag="3")]
11823    pub size: ::core::option::Option<u64>,
11824    #[prost(uint64, optional, tag="4")]
11825    pub attr: ::core::option::Option<u64>,
11826    #[prost(int32, optional, tag="5")]
11827    pub mflags: ::core::option::Option<i32>,
11828}
11829#[derive(Clone, PartialEq, ::prost::Message)]
11830pub struct FastrpcDmaUnmapFtraceEvent {
11831    #[prost(int32, optional, tag="1")]
11832    pub cid: ::core::option::Option<i32>,
11833    #[prost(uint64, optional, tag="2")]
11834    pub phys: ::core::option::Option<u64>,
11835    #[prost(uint64, optional, tag="3")]
11836    pub size: ::core::option::Option<u64>,
11837}
11838#[derive(Clone, PartialEq, ::prost::Message)]
11839pub struct FastrpcDmaMapFtraceEvent {
11840    #[prost(int32, optional, tag="1")]
11841    pub cid: ::core::option::Option<i32>,
11842    #[prost(int32, optional, tag="2")]
11843    pub fd: ::core::option::Option<i32>,
11844    #[prost(uint64, optional, tag="3")]
11845    pub phys: ::core::option::Option<u64>,
11846    #[prost(uint64, optional, tag="4")]
11847    pub size: ::core::option::Option<u64>,
11848    #[prost(uint64, optional, tag="5")]
11849    pub len: ::core::option::Option<u64>,
11850    #[prost(uint32, optional, tag="6")]
11851    pub attr: ::core::option::Option<u32>,
11852    #[prost(int32, optional, tag="7")]
11853    pub mflags: ::core::option::Option<i32>,
11854}
11855// End of protos/perfetto/trace/ftrace/fastrpc.proto
11856
11857// Begin of protos/perfetto/trace/ftrace/fence.proto
11858
11859#[derive(Clone, PartialEq, ::prost::Message)]
11860pub struct FenceInitFtraceEvent {
11861    #[prost(uint32, optional, tag="1")]
11862    pub context: ::core::option::Option<u32>,
11863    #[prost(string, optional, tag="2")]
11864    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11865    #[prost(uint32, optional, tag="3")]
11866    pub seqno: ::core::option::Option<u32>,
11867    #[prost(string, optional, tag="4")]
11868    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11869}
11870#[derive(Clone, PartialEq, ::prost::Message)]
11871pub struct FenceDestroyFtraceEvent {
11872    #[prost(uint32, optional, tag="1")]
11873    pub context: ::core::option::Option<u32>,
11874    #[prost(string, optional, tag="2")]
11875    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11876    #[prost(uint32, optional, tag="3")]
11877    pub seqno: ::core::option::Option<u32>,
11878    #[prost(string, optional, tag="4")]
11879    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11880}
11881#[derive(Clone, PartialEq, ::prost::Message)]
11882pub struct FenceEnableSignalFtraceEvent {
11883    #[prost(uint32, optional, tag="1")]
11884    pub context: ::core::option::Option<u32>,
11885    #[prost(string, optional, tag="2")]
11886    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11887    #[prost(uint32, optional, tag="3")]
11888    pub seqno: ::core::option::Option<u32>,
11889    #[prost(string, optional, tag="4")]
11890    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11891}
11892#[derive(Clone, PartialEq, ::prost::Message)]
11893pub struct FenceSignaledFtraceEvent {
11894    #[prost(uint32, optional, tag="1")]
11895    pub context: ::core::option::Option<u32>,
11896    #[prost(string, optional, tag="2")]
11897    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11898    #[prost(uint32, optional, tag="3")]
11899    pub seqno: ::core::option::Option<u32>,
11900    #[prost(string, optional, tag="4")]
11901    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11902}
11903// End of protos/perfetto/trace/ftrace/fence.proto
11904
11905// Begin of protos/perfetto/trace/ftrace/filemap.proto
11906
11907#[derive(Clone, PartialEq, ::prost::Message)]
11908pub struct MmFilemapAddToPageCacheFtraceEvent {
11909    #[prost(uint64, optional, tag="1")]
11910    pub pfn: ::core::option::Option<u64>,
11911    #[prost(uint64, optional, tag="2")]
11912    pub i_ino: ::core::option::Option<u64>,
11913    #[prost(uint64, optional, tag="3")]
11914    pub index: ::core::option::Option<u64>,
11915    #[prost(uint64, optional, tag="4")]
11916    pub s_dev: ::core::option::Option<u64>,
11917    #[prost(uint64, optional, tag="5")]
11918    pub page: ::core::option::Option<u64>,
11919}
11920#[derive(Clone, PartialEq, ::prost::Message)]
11921pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
11922    #[prost(uint64, optional, tag="1")]
11923    pub pfn: ::core::option::Option<u64>,
11924    #[prost(uint64, optional, tag="2")]
11925    pub i_ino: ::core::option::Option<u64>,
11926    #[prost(uint64, optional, tag="3")]
11927    pub index: ::core::option::Option<u64>,
11928    #[prost(uint64, optional, tag="4")]
11929    pub s_dev: ::core::option::Option<u64>,
11930    #[prost(uint64, optional, tag="5")]
11931    pub page: ::core::option::Option<u64>,
11932}
11933// End of protos/perfetto/trace/ftrace/filemap.proto
11934
11935// Begin of protos/perfetto/trace/ftrace/fs.proto
11936
11937#[derive(Clone, PartialEq, ::prost::Message)]
11938pub struct DoSysOpenFtraceEvent {
11939    #[prost(string, optional, tag="1")]
11940    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11941    #[prost(int32, optional, tag="2")]
11942    pub flags: ::core::option::Option<i32>,
11943    #[prost(int32, optional, tag="3")]
11944    pub mode: ::core::option::Option<i32>,
11945}
11946#[derive(Clone, PartialEq, ::prost::Message)]
11947pub struct OpenExecFtraceEvent {
11948    #[prost(string, optional, tag="1")]
11949    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11950}
11951// End of protos/perfetto/trace/ftrace/fs.proto
11952
11953// Begin of protos/perfetto/trace/ftrace/ftrace.proto
11954
11955#[derive(Clone, PartialEq, ::prost::Message)]
11956pub struct PrintFtraceEvent {
11957    #[prost(uint64, optional, tag="1")]
11958    pub ip: ::core::option::Option<u64>,
11959    #[prost(string, optional, tag="2")]
11960    pub buf: ::core::option::Option<::prost::alloc::string::String>,
11961}
11962#[derive(Clone, PartialEq, ::prost::Message)]
11963pub struct FuncgraphEntryFtraceEvent {
11964    #[prost(int32, optional, tag="1")]
11965    pub depth: ::core::option::Option<i32>,
11966    #[prost(uint64, optional, tag="2")]
11967    pub func: ::core::option::Option<u64>,
11968}
11969#[derive(Clone, PartialEq, ::prost::Message)]
11970pub struct FuncgraphExitFtraceEvent {
11971    #[prost(uint64, optional, tag="1")]
11972    pub calltime: ::core::option::Option<u64>,
11973    #[prost(int32, optional, tag="2")]
11974    pub depth: ::core::option::Option<i32>,
11975    #[prost(uint64, optional, tag="3")]
11976    pub func: ::core::option::Option<u64>,
11977    #[prost(uint64, optional, tag="4")]
11978    pub overrun: ::core::option::Option<u64>,
11979    #[prost(uint64, optional, tag="5")]
11980    pub rettime: ::core::option::Option<u64>,
11981}
11982// End of protos/perfetto/trace/ftrace/ftrace.proto
11983
11984// Begin of protos/perfetto/trace/ftrace/g2d.proto
11985
11986#[derive(Clone, PartialEq, ::prost::Message)]
11987pub struct G2dTracingMarkWriteFtraceEvent {
11988    #[prost(int32, optional, tag="1")]
11989    pub pid: ::core::option::Option<i32>,
11990    #[prost(string, optional, tag="4")]
11991    pub name: ::core::option::Option<::prost::alloc::string::String>,
11992    #[prost(uint32, optional, tag="5")]
11993    pub r#type: ::core::option::Option<u32>,
11994    #[prost(int32, optional, tag="6")]
11995    pub value: ::core::option::Option<i32>,
11996}
11997// End of protos/perfetto/trace/ftrace/g2d.proto
11998
11999// Begin of protos/perfetto/trace/ftrace/generic.proto
12000
12001/// This generic proto is used to output events in the trace
12002/// when a specific proto for that event does not exist.
12003#[derive(Clone, PartialEq, ::prost::Message)]
12004pub struct GenericFtraceEvent {
12005    #[prost(string, optional, tag="1")]
12006    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12007    #[prost(message, repeated, tag="2")]
12008    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12009}
12010/// Nested message and enum types in `GenericFtraceEvent`.
12011pub mod generic_ftrace_event {
12012    #[derive(Clone, PartialEq, ::prost::Message)]
12013    pub struct Field {
12014        #[prost(string, optional, tag="1")]
12015        pub name: ::core::option::Option<::prost::alloc::string::String>,
12016        #[prost(oneof="field::Value", tags="3, 4, 5")]
12017        pub value: ::core::option::Option<field::Value>,
12018    }
12019    /// Nested message and enum types in `Field`.
12020    pub mod field {
12021        #[derive(Clone, PartialEq, ::prost::Oneof)]
12022        pub enum Value {
12023            #[prost(string, tag="3")]
12024            StrValue(::prost::alloc::string::String),
12025            #[prost(int64, tag="4")]
12026            IntValue(i64),
12027            #[prost(uint64, tag="5")]
12028            UintValue(u64),
12029        }
12030    }
12031}
12032#[derive(Clone, PartialEq, ::prost::Message)]
12033pub struct KprobeEvent {
12034    #[prost(string, optional, tag="1")]
12035    pub name: ::core::option::Option<::prost::alloc::string::String>,
12036    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
12037    pub r#type: ::core::option::Option<i32>,
12038}
12039/// Nested message and enum types in `KprobeEvent`.
12040pub mod kprobe_event {
12041    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12042    #[repr(i32)]
12043    pub enum KprobeType {
12044        Unknown = 0,
12045        Begin = 1,
12046        End = 2,
12047        Instant = 3,
12048    }
12049    impl KprobeType {
12050        /// String value of the enum field names used in the ProtoBuf definition.
12051        ///
12052        /// The values are not transformed in any way and thus are considered stable
12053        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12054        pub fn as_str_name(&self) -> &'static str {
12055            match self {
12056                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
12057                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
12058                KprobeType::End => "KPROBE_TYPE_END",
12059                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
12060            }
12061        }
12062    }
12063}
12064// End of protos/perfetto/trace/ftrace/generic.proto
12065
12066// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
12067
12068#[derive(Clone, PartialEq, ::prost::Message)]
12069pub struct GoogleIccEventFtraceEvent {
12070    #[prost(string, optional, tag="1")]
12071    pub event: ::core::option::Option<::prost::alloc::string::String>,
12072    #[prost(uint64, optional, tag="2")]
12073    pub timestamp: ::core::option::Option<u64>,
12074}
12075// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
12076
12077// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
12078
12079#[derive(Clone, PartialEq, ::prost::Message)]
12080pub struct GoogleIrmEventFtraceEvent {
12081    #[prost(string, optional, tag="1")]
12082    pub event: ::core::option::Option<::prost::alloc::string::String>,
12083    #[prost(uint64, optional, tag="2")]
12084    pub timestamp: ::core::option::Option<u64>,
12085}
12086// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
12087
12088// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
12089
12090#[derive(Clone, PartialEq, ::prost::Message)]
12091pub struct GpuMemTotalFtraceEvent {
12092    #[prost(uint32, optional, tag="1")]
12093    pub gpu_id: ::core::option::Option<u32>,
12094    #[prost(uint32, optional, tag="2")]
12095    pub pid: ::core::option::Option<u32>,
12096    #[prost(uint64, optional, tag="3")]
12097    pub size: ::core::option::Option<u64>,
12098}
12099// End of protos/perfetto/trace/ftrace/gpu_mem.proto
12100
12101// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12102
12103#[derive(Clone, PartialEq, ::prost::Message)]
12104pub struct DrmSchedJobFtraceEvent {
12105    #[prost(uint64, optional, tag="1")]
12106    pub entity: ::core::option::Option<u64>,
12107    #[prost(uint64, optional, tag="2")]
12108    pub fence: ::core::option::Option<u64>,
12109    #[prost(int32, optional, tag="3")]
12110    pub hw_job_count: ::core::option::Option<i32>,
12111    #[prost(uint64, optional, tag="4")]
12112    pub id: ::core::option::Option<u64>,
12113    #[prost(uint32, optional, tag="5")]
12114    pub job_count: ::core::option::Option<u32>,
12115    #[prost(string, optional, tag="6")]
12116    pub name: ::core::option::Option<::prost::alloc::string::String>,
12117}
12118#[derive(Clone, PartialEq, ::prost::Message)]
12119pub struct DrmRunJobFtraceEvent {
12120    #[prost(uint64, optional, tag="1")]
12121    pub entity: ::core::option::Option<u64>,
12122    #[prost(uint64, optional, tag="2")]
12123    pub fence: ::core::option::Option<u64>,
12124    #[prost(int32, optional, tag="3")]
12125    pub hw_job_count: ::core::option::Option<i32>,
12126    #[prost(uint64, optional, tag="4")]
12127    pub id: ::core::option::Option<u64>,
12128    #[prost(uint32, optional, tag="5")]
12129    pub job_count: ::core::option::Option<u32>,
12130    #[prost(string, optional, tag="6")]
12131    pub name: ::core::option::Option<::prost::alloc::string::String>,
12132}
12133#[derive(Clone, PartialEq, ::prost::Message)]
12134pub struct DrmSchedProcessJobFtraceEvent {
12135    #[prost(uint64, optional, tag="1")]
12136    pub fence: ::core::option::Option<u64>,
12137}
12138// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12139
12140// Begin of protos/perfetto/trace/ftrace/hyp.proto
12141
12142#[derive(Clone, PartialEq, ::prost::Message)]
12143pub struct HypEnterFtraceEvent {
12144}
12145#[derive(Clone, PartialEq, ::prost::Message)]
12146pub struct HypExitFtraceEvent {
12147}
12148#[derive(Clone, PartialEq, ::prost::Message)]
12149pub struct HostHcallFtraceEvent {
12150    #[prost(uint32, optional, tag="1")]
12151    pub id: ::core::option::Option<u32>,
12152    #[prost(uint32, optional, tag="2")]
12153    pub invalid: ::core::option::Option<u32>,
12154}
12155#[derive(Clone, PartialEq, ::prost::Message)]
12156pub struct HostSmcFtraceEvent {
12157    #[prost(uint64, optional, tag="1")]
12158    pub id: ::core::option::Option<u64>,
12159    #[prost(uint32, optional, tag="2")]
12160    pub forwarded: ::core::option::Option<u32>,
12161}
12162#[derive(Clone, PartialEq, ::prost::Message)]
12163pub struct HostMemAbortFtraceEvent {
12164    #[prost(uint64, optional, tag="1")]
12165    pub esr: ::core::option::Option<u64>,
12166    #[prost(uint64, optional, tag="2")]
12167    pub addr: ::core::option::Option<u64>,
12168}
12169#[derive(Clone, PartialEq, ::prost::Message)]
12170pub struct HostFfaCallFtraceEvent {
12171    #[prost(uint64, optional, tag="1")]
12172    pub func_id: ::core::option::Option<u64>,
12173    #[prost(uint64, optional, tag="2")]
12174    pub res_a1: ::core::option::Option<u64>,
12175    #[prost(uint64, optional, tag="3")]
12176    pub res_a2: ::core::option::Option<u64>,
12177    #[prost(uint64, optional, tag="4")]
12178    pub res_a3: ::core::option::Option<u64>,
12179    #[prost(uint64, optional, tag="5")]
12180    pub res_a4: ::core::option::Option<u64>,
12181    #[prost(int32, optional, tag="6")]
12182    pub handled: ::core::option::Option<i32>,
12183    #[prost(int32, optional, tag="7")]
12184    pub err: ::core::option::Option<i32>,
12185}
12186#[derive(Clone, PartialEq, ::prost::Message)]
12187pub struct IommuIdmapFtraceEvent {
12188    #[prost(uint64, optional, tag="1")]
12189    pub from: ::core::option::Option<u64>,
12190    #[prost(uint64, optional, tag="2")]
12191    pub to: ::core::option::Option<u64>,
12192    #[prost(int32, optional, tag="3")]
12193    pub prot: ::core::option::Option<i32>,
12194}
12195#[derive(Clone, PartialEq, ::prost::Message)]
12196pub struct PsciMemProtectFtraceEvent {
12197    #[prost(uint64, optional, tag="1")]
12198    pub count: ::core::option::Option<u64>,
12199    #[prost(uint64, optional, tag="2")]
12200    pub was: ::core::option::Option<u64>,
12201}
12202// End of protos/perfetto/trace/ftrace/hyp.proto
12203
12204// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
12205
12206#[derive(Clone, PartialEq, ::prost::Message)]
12207pub struct HypervisorHostHcallFtraceEvent {
12208    #[prost(uint32, optional, tag="1")]
12209    pub id: ::core::option::Option<u32>,
12210    #[prost(uint32, optional, tag="2")]
12211    pub invalid: ::core::option::Option<u32>,
12212}
12213#[derive(Clone, PartialEq, ::prost::Message)]
12214pub struct HypervisorHostSmcFtraceEvent {
12215    #[prost(uint64, optional, tag="1")]
12216    pub id: ::core::option::Option<u64>,
12217    #[prost(uint32, optional, tag="2")]
12218    pub forwarded: ::core::option::Option<u32>,
12219}
12220#[derive(Clone, PartialEq, ::prost::Message)]
12221pub struct HypervisorHypExitFtraceEvent {
12222}
12223#[derive(Clone, PartialEq, ::prost::Message)]
12224pub struct HypervisorIommuIdmapFtraceEvent {
12225    #[prost(uint64, optional, tag="1")]
12226    pub from: ::core::option::Option<u64>,
12227    #[prost(uint64, optional, tag="2")]
12228    pub to: ::core::option::Option<u64>,
12229    #[prost(int32, optional, tag="3")]
12230    pub prot: ::core::option::Option<i32>,
12231}
12232#[derive(Clone, PartialEq, ::prost::Message)]
12233pub struct HypervisorPsciMemProtectFtraceEvent {
12234    #[prost(uint64, optional, tag="1")]
12235    pub count: ::core::option::Option<u64>,
12236    #[prost(uint64, optional, tag="2")]
12237    pub was: ::core::option::Option<u64>,
12238}
12239#[derive(Clone, PartialEq, ::prost::Message)]
12240pub struct HypervisorHostMemAbortFtraceEvent {
12241    #[prost(uint64, optional, tag="1")]
12242    pub esr: ::core::option::Option<u64>,
12243    #[prost(uint64, optional, tag="2")]
12244    pub addr: ::core::option::Option<u64>,
12245}
12246#[derive(Clone, PartialEq, ::prost::Message)]
12247pub struct HypervisorHypEnterFtraceEvent {
12248}
12249#[derive(Clone, PartialEq, ::prost::Message)]
12250pub struct HypervisorIommuIdmapCompleteFtraceEvent {
12251    #[prost(uint32, optional, tag="1")]
12252    pub map: ::core::option::Option<u32>,
12253}
12254#[derive(Clone, PartialEq, ::prost::Message)]
12255pub struct HypervisorVcpuIllegalTrapFtraceEvent {
12256    #[prost(uint64, optional, tag="1")]
12257    pub esr: ::core::option::Option<u64>,
12258}
12259// End of protos/perfetto/trace/ftrace/hypervisor.proto
12260
12261// Begin of protos/perfetto/trace/ftrace/i2c.proto
12262
12263#[derive(Clone, PartialEq, ::prost::Message)]
12264pub struct I2cReadFtraceEvent {
12265    #[prost(int32, optional, tag="1")]
12266    pub adapter_nr: ::core::option::Option<i32>,
12267    #[prost(uint32, optional, tag="2")]
12268    pub msg_nr: ::core::option::Option<u32>,
12269    #[prost(uint32, optional, tag="3")]
12270    pub addr: ::core::option::Option<u32>,
12271    #[prost(uint32, optional, tag="4")]
12272    pub flags: ::core::option::Option<u32>,
12273    #[prost(uint32, optional, tag="5")]
12274    pub len: ::core::option::Option<u32>,
12275}
12276#[derive(Clone, PartialEq, ::prost::Message)]
12277pub struct I2cWriteFtraceEvent {
12278    #[prost(int32, optional, tag="1")]
12279    pub adapter_nr: ::core::option::Option<i32>,
12280    #[prost(uint32, optional, tag="2")]
12281    pub msg_nr: ::core::option::Option<u32>,
12282    #[prost(uint32, optional, tag="3")]
12283    pub addr: ::core::option::Option<u32>,
12284    #[prost(uint32, optional, tag="4")]
12285    pub flags: ::core::option::Option<u32>,
12286    #[prost(uint32, optional, tag="5")]
12287    pub len: ::core::option::Option<u32>,
12288    #[prost(uint32, optional, tag="6")]
12289    pub buf: ::core::option::Option<u32>,
12290}
12291#[derive(Clone, PartialEq, ::prost::Message)]
12292pub struct I2cResultFtraceEvent {
12293    #[prost(int32, optional, tag="1")]
12294    pub adapter_nr: ::core::option::Option<i32>,
12295    #[prost(uint32, optional, tag="2")]
12296    pub nr_msgs: ::core::option::Option<u32>,
12297    #[prost(int32, optional, tag="3")]
12298    pub ret: ::core::option::Option<i32>,
12299}
12300#[derive(Clone, PartialEq, ::prost::Message)]
12301pub struct I2cReplyFtraceEvent {
12302    #[prost(int32, optional, tag="1")]
12303    pub adapter_nr: ::core::option::Option<i32>,
12304    #[prost(uint32, optional, tag="2")]
12305    pub msg_nr: ::core::option::Option<u32>,
12306    #[prost(uint32, optional, tag="3")]
12307    pub addr: ::core::option::Option<u32>,
12308    #[prost(uint32, optional, tag="4")]
12309    pub flags: ::core::option::Option<u32>,
12310    #[prost(uint32, optional, tag="5")]
12311    pub len: ::core::option::Option<u32>,
12312    #[prost(uint32, optional, tag="6")]
12313    pub buf: ::core::option::Option<u32>,
12314}
12315#[derive(Clone, PartialEq, ::prost::Message)]
12316pub struct SmbusReadFtraceEvent {
12317    #[prost(int32, optional, tag="1")]
12318    pub adapter_nr: ::core::option::Option<i32>,
12319    #[prost(uint32, optional, tag="2")]
12320    pub flags: ::core::option::Option<u32>,
12321    #[prost(uint32, optional, tag="3")]
12322    pub addr: ::core::option::Option<u32>,
12323    #[prost(uint32, optional, tag="4")]
12324    pub command: ::core::option::Option<u32>,
12325    #[prost(uint32, optional, tag="5")]
12326    pub protocol: ::core::option::Option<u32>,
12327}
12328#[derive(Clone, PartialEq, ::prost::Message)]
12329pub struct SmbusWriteFtraceEvent {
12330    #[prost(int32, optional, tag="1")]
12331    pub adapter_nr: ::core::option::Option<i32>,
12332    #[prost(uint32, optional, tag="2")]
12333    pub addr: ::core::option::Option<u32>,
12334    #[prost(uint32, optional, tag="3")]
12335    pub flags: ::core::option::Option<u32>,
12336    #[prost(uint32, optional, tag="4")]
12337    pub command: ::core::option::Option<u32>,
12338    #[prost(uint32, optional, tag="5")]
12339    pub len: ::core::option::Option<u32>,
12340    #[prost(uint32, optional, tag="6")]
12341    pub protocol: ::core::option::Option<u32>,
12342}
12343#[derive(Clone, PartialEq, ::prost::Message)]
12344pub struct SmbusResultFtraceEvent {
12345    #[prost(int32, optional, tag="1")]
12346    pub adapter_nr: ::core::option::Option<i32>,
12347    #[prost(uint32, optional, tag="2")]
12348    pub addr: ::core::option::Option<u32>,
12349    #[prost(uint32, optional, tag="3")]
12350    pub flags: ::core::option::Option<u32>,
12351    #[prost(uint32, optional, tag="4")]
12352    pub read_write: ::core::option::Option<u32>,
12353    #[prost(uint32, optional, tag="5")]
12354    pub command: ::core::option::Option<u32>,
12355    #[prost(int32, optional, tag="6")]
12356    pub res: ::core::option::Option<i32>,
12357    #[prost(uint32, optional, tag="7")]
12358    pub protocol: ::core::option::Option<u32>,
12359}
12360#[derive(Clone, PartialEq, ::prost::Message)]
12361pub struct SmbusReplyFtraceEvent {
12362    #[prost(int32, optional, tag="1")]
12363    pub adapter_nr: ::core::option::Option<i32>,
12364    #[prost(uint32, optional, tag="2")]
12365    pub addr: ::core::option::Option<u32>,
12366    #[prost(uint32, optional, tag="3")]
12367    pub flags: ::core::option::Option<u32>,
12368    #[prost(uint32, optional, tag="4")]
12369    pub command: ::core::option::Option<u32>,
12370    #[prost(uint32, optional, tag="5")]
12371    pub len: ::core::option::Option<u32>,
12372    #[prost(uint32, optional, tag="6")]
12373    pub protocol: ::core::option::Option<u32>,
12374}
12375// End of protos/perfetto/trace/ftrace/i2c.proto
12376
12377// Begin of protos/perfetto/trace/ftrace/ion.proto
12378
12379#[derive(Clone, PartialEq, ::prost::Message)]
12380pub struct IonStatFtraceEvent {
12381    #[prost(uint32, optional, tag="1")]
12382    pub buffer_id: ::core::option::Option<u32>,
12383    #[prost(int64, optional, tag="2")]
12384    pub len: ::core::option::Option<i64>,
12385    #[prost(uint64, optional, tag="3")]
12386    pub total_allocated: ::core::option::Option<u64>,
12387}
12388// End of protos/perfetto/trace/ftrace/ion.proto
12389
12390// Begin of protos/perfetto/trace/ftrace/ipi.proto
12391
12392#[derive(Clone, PartialEq, ::prost::Message)]
12393pub struct IpiEntryFtraceEvent {
12394    #[prost(string, optional, tag="1")]
12395    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12396}
12397#[derive(Clone, PartialEq, ::prost::Message)]
12398pub struct IpiExitFtraceEvent {
12399    #[prost(string, optional, tag="1")]
12400    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12401}
12402#[derive(Clone, PartialEq, ::prost::Message)]
12403pub struct IpiRaiseFtraceEvent {
12404    #[prost(uint32, optional, tag="1")]
12405    pub target_cpus: ::core::option::Option<u32>,
12406    #[prost(string, optional, tag="2")]
12407    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12408}
12409// End of protos/perfetto/trace/ftrace/ipi.proto
12410
12411// Begin of protos/perfetto/trace/ftrace/irq.proto
12412
12413#[derive(Clone, PartialEq, ::prost::Message)]
12414pub struct SoftirqEntryFtraceEvent {
12415    #[prost(uint32, optional, tag="1")]
12416    pub vec: ::core::option::Option<u32>,
12417}
12418#[derive(Clone, PartialEq, ::prost::Message)]
12419pub struct SoftirqExitFtraceEvent {
12420    #[prost(uint32, optional, tag="1")]
12421    pub vec: ::core::option::Option<u32>,
12422}
12423#[derive(Clone, PartialEq, ::prost::Message)]
12424pub struct SoftirqRaiseFtraceEvent {
12425    #[prost(uint32, optional, tag="1")]
12426    pub vec: ::core::option::Option<u32>,
12427}
12428#[derive(Clone, PartialEq, ::prost::Message)]
12429pub struct IrqHandlerEntryFtraceEvent {
12430    #[prost(int32, optional, tag="1")]
12431    pub irq: ::core::option::Option<i32>,
12432    #[prost(string, optional, tag="2")]
12433    pub name: ::core::option::Option<::prost::alloc::string::String>,
12434    #[prost(uint32, optional, tag="3")]
12435    pub handler: ::core::option::Option<u32>,
12436}
12437#[derive(Clone, PartialEq, ::prost::Message)]
12438pub struct IrqHandlerExitFtraceEvent {
12439    #[prost(int32, optional, tag="1")]
12440    pub irq: ::core::option::Option<i32>,
12441    #[prost(int32, optional, tag="2")]
12442    pub ret: ::core::option::Option<i32>,
12443}
12444// End of protos/perfetto/trace/ftrace/irq.proto
12445
12446// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
12447
12448#[derive(Clone, PartialEq, ::prost::Message)]
12449pub struct LocalTimerEntryFtraceEvent {
12450    #[prost(int32, optional, tag="1")]
12451    pub vector: ::core::option::Option<i32>,
12452}
12453#[derive(Clone, PartialEq, ::prost::Message)]
12454pub struct LocalTimerExitFtraceEvent {
12455    #[prost(int32, optional, tag="1")]
12456    pub vector: ::core::option::Option<i32>,
12457}
12458// End of protos/perfetto/trace/ftrace/irq_vectors.proto
12459
12460// Begin of protos/perfetto/trace/ftrace/kgsl.proto
12461
12462#[derive(Clone, PartialEq, ::prost::Message)]
12463pub struct KgslGpuFrequencyFtraceEvent {
12464    #[prost(uint32, optional, tag="1")]
12465    pub gpu_freq: ::core::option::Option<u32>,
12466    #[prost(uint32, optional, tag="2")]
12467    pub gpu_id: ::core::option::Option<u32>,
12468}
12469#[derive(Clone, PartialEq, ::prost::Message)]
12470pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
12471    #[prost(uint32, optional, tag="1")]
12472    pub id: ::core::option::Option<u32>,
12473    #[prost(uint32, optional, tag="2")]
12474    pub timestamp: ::core::option::Option<u32>,
12475    #[prost(uint32, optional, tag="3")]
12476    pub queued: ::core::option::Option<u32>,
12477    #[prost(uint32, optional, tag="4")]
12478    pub flags: ::core::option::Option<u32>,
12479    #[prost(uint32, optional, tag="5")]
12480    pub prio: ::core::option::Option<u32>,
12481}
12482#[derive(Clone, PartialEq, ::prost::Message)]
12483pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
12484    #[prost(uint32, optional, tag="1")]
12485    pub id: ::core::option::Option<u32>,
12486    #[prost(uint32, optional, tag="2")]
12487    pub timestamp: ::core::option::Option<u32>,
12488    #[prost(int64, optional, tag="3")]
12489    pub inflight: ::core::option::Option<i64>,
12490    #[prost(uint32, optional, tag="4")]
12491    pub flags: ::core::option::Option<u32>,
12492    #[prost(uint64, optional, tag="5")]
12493    pub ticks: ::core::option::Option<u64>,
12494    #[prost(uint64, optional, tag="6")]
12495    pub secs: ::core::option::Option<u64>,
12496    #[prost(uint64, optional, tag="7")]
12497    pub usecs: ::core::option::Option<u64>,
12498    #[prost(int32, optional, tag="8")]
12499    pub prio: ::core::option::Option<i32>,
12500    #[prost(int32, optional, tag="9")]
12501    pub rb_id: ::core::option::Option<i32>,
12502    #[prost(uint32, optional, tag="10")]
12503    pub rptr: ::core::option::Option<u32>,
12504    #[prost(uint32, optional, tag="11")]
12505    pub wptr: ::core::option::Option<u32>,
12506    #[prost(int32, optional, tag="12")]
12507    pub q_inflight: ::core::option::Option<i32>,
12508    #[prost(int32, optional, tag="13")]
12509    pub dispatch_queue: ::core::option::Option<i32>,
12510}
12511#[derive(Clone, PartialEq, ::prost::Message)]
12512pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
12513    #[prost(uint32, optional, tag="1")]
12514    pub id: ::core::option::Option<u32>,
12515    #[prost(uint32, optional, tag="2")]
12516    pub timestamp: ::core::option::Option<u32>,
12517    #[prost(uint64, optional, tag="3")]
12518    pub ticks: ::core::option::Option<u64>,
12519    #[prost(int32, optional, tag="4")]
12520    pub prio: ::core::option::Option<i32>,
12521}
12522#[derive(Clone, PartialEq, ::prost::Message)]
12523pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
12524    #[prost(uint32, optional, tag="1")]
12525    pub id: ::core::option::Option<u32>,
12526    #[prost(uint32, optional, tag="2")]
12527    pub timestamp: ::core::option::Option<u32>,
12528    #[prost(int64, optional, tag="3")]
12529    pub inflight: ::core::option::Option<i64>,
12530    #[prost(uint32, optional, tag="4")]
12531    pub recovery: ::core::option::Option<u32>,
12532    #[prost(uint32, optional, tag="5")]
12533    pub flags: ::core::option::Option<u32>,
12534    #[prost(uint64, optional, tag="6")]
12535    pub start: ::core::option::Option<u64>,
12536    #[prost(uint64, optional, tag="7")]
12537    pub retire: ::core::option::Option<u64>,
12538    #[prost(int32, optional, tag="8")]
12539    pub prio: ::core::option::Option<i32>,
12540    #[prost(int32, optional, tag="9")]
12541    pub rb_id: ::core::option::Option<i32>,
12542    #[prost(uint32, optional, tag="10")]
12543    pub rptr: ::core::option::Option<u32>,
12544    #[prost(uint32, optional, tag="11")]
12545    pub wptr: ::core::option::Option<u32>,
12546    #[prost(int32, optional, tag="12")]
12547    pub q_inflight: ::core::option::Option<i32>,
12548    #[prost(uint64, optional, tag="13")]
12549    pub fault_recovery: ::core::option::Option<u64>,
12550    #[prost(uint32, optional, tag="14")]
12551    pub dispatch_queue: ::core::option::Option<u32>,
12552    #[prost(uint64, optional, tag="15")]
12553    pub submitted_to_rb: ::core::option::Option<u64>,
12554    #[prost(uint64, optional, tag="16")]
12555    pub retired_on_gmu: ::core::option::Option<u64>,
12556    #[prost(uint64, optional, tag="17")]
12557    pub active: ::core::option::Option<u64>,
12558}
12559// End of protos/perfetto/trace/ftrace/kgsl.proto
12560
12561// Begin of protos/perfetto/trace/ftrace/kmem.proto
12562
12563#[derive(Clone, PartialEq, ::prost::Message)]
12564pub struct AllocPagesIommuEndFtraceEvent {
12565    #[prost(uint32, optional, tag="1")]
12566    pub gfp_flags: ::core::option::Option<u32>,
12567    #[prost(uint32, optional, tag="2")]
12568    pub order: ::core::option::Option<u32>,
12569}
12570#[derive(Clone, PartialEq, ::prost::Message)]
12571pub struct AllocPagesIommuFailFtraceEvent {
12572    #[prost(uint32, optional, tag="1")]
12573    pub gfp_flags: ::core::option::Option<u32>,
12574    #[prost(uint32, optional, tag="2")]
12575    pub order: ::core::option::Option<u32>,
12576}
12577#[derive(Clone, PartialEq, ::prost::Message)]
12578pub struct AllocPagesIommuStartFtraceEvent {
12579    #[prost(uint32, optional, tag="1")]
12580    pub gfp_flags: ::core::option::Option<u32>,
12581    #[prost(uint32, optional, tag="2")]
12582    pub order: ::core::option::Option<u32>,
12583}
12584#[derive(Clone, PartialEq, ::prost::Message)]
12585pub struct AllocPagesSysEndFtraceEvent {
12586    #[prost(uint32, optional, tag="1")]
12587    pub gfp_flags: ::core::option::Option<u32>,
12588    #[prost(uint32, optional, tag="2")]
12589    pub order: ::core::option::Option<u32>,
12590}
12591#[derive(Clone, PartialEq, ::prost::Message)]
12592pub struct AllocPagesSysFailFtraceEvent {
12593    #[prost(uint32, optional, tag="1")]
12594    pub gfp_flags: ::core::option::Option<u32>,
12595    #[prost(uint32, optional, tag="2")]
12596    pub order: ::core::option::Option<u32>,
12597}
12598#[derive(Clone, PartialEq, ::prost::Message)]
12599pub struct AllocPagesSysStartFtraceEvent {
12600    #[prost(uint32, optional, tag="1")]
12601    pub gfp_flags: ::core::option::Option<u32>,
12602    #[prost(uint32, optional, tag="2")]
12603    pub order: ::core::option::Option<u32>,
12604}
12605#[derive(Clone, PartialEq, ::prost::Message)]
12606pub struct DmaAllocContiguousRetryFtraceEvent {
12607    #[prost(int32, optional, tag="1")]
12608    pub tries: ::core::option::Option<i32>,
12609}
12610#[derive(Clone, PartialEq, ::prost::Message)]
12611pub struct IommuMapRangeFtraceEvent {
12612    #[prost(uint64, optional, tag="1")]
12613    pub chunk_size: ::core::option::Option<u64>,
12614    #[prost(uint64, optional, tag="2")]
12615    pub len: ::core::option::Option<u64>,
12616    #[prost(uint64, optional, tag="3")]
12617    pub pa: ::core::option::Option<u64>,
12618    #[prost(uint64, optional, tag="4")]
12619    pub va: ::core::option::Option<u64>,
12620}
12621#[derive(Clone, PartialEq, ::prost::Message)]
12622pub struct IommuSecPtblMapRangeEndFtraceEvent {
12623    #[prost(uint64, optional, tag="1")]
12624    pub len: ::core::option::Option<u64>,
12625    #[prost(int32, optional, tag="2")]
12626    pub num: ::core::option::Option<i32>,
12627    #[prost(uint32, optional, tag="3")]
12628    pub pa: ::core::option::Option<u32>,
12629    #[prost(int32, optional, tag="4")]
12630    pub sec_id: ::core::option::Option<i32>,
12631    #[prost(uint64, optional, tag="5")]
12632    pub va: ::core::option::Option<u64>,
12633}
12634#[derive(Clone, PartialEq, ::prost::Message)]
12635pub struct IommuSecPtblMapRangeStartFtraceEvent {
12636    #[prost(uint64, optional, tag="1")]
12637    pub len: ::core::option::Option<u64>,
12638    #[prost(int32, optional, tag="2")]
12639    pub num: ::core::option::Option<i32>,
12640    #[prost(uint32, optional, tag="3")]
12641    pub pa: ::core::option::Option<u32>,
12642    #[prost(int32, optional, tag="4")]
12643    pub sec_id: ::core::option::Option<i32>,
12644    #[prost(uint64, optional, tag="5")]
12645    pub va: ::core::option::Option<u64>,
12646}
12647#[derive(Clone, PartialEq, ::prost::Message)]
12648pub struct IonAllocBufferEndFtraceEvent {
12649    #[prost(string, optional, tag="1")]
12650    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12651    #[prost(uint32, optional, tag="2")]
12652    pub flags: ::core::option::Option<u32>,
12653    #[prost(string, optional, tag="3")]
12654    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12655    #[prost(uint64, optional, tag="4")]
12656    pub len: ::core::option::Option<u64>,
12657    #[prost(uint32, optional, tag="5")]
12658    pub mask: ::core::option::Option<u32>,
12659}
12660#[derive(Clone, PartialEq, ::prost::Message)]
12661pub struct IonAllocBufferFailFtraceEvent {
12662    #[prost(string, optional, tag="1")]
12663    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12664    #[prost(int64, optional, tag="2")]
12665    pub error: ::core::option::Option<i64>,
12666    #[prost(uint32, optional, tag="3")]
12667    pub flags: ::core::option::Option<u32>,
12668    #[prost(string, optional, tag="4")]
12669    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12670    #[prost(uint64, optional, tag="5")]
12671    pub len: ::core::option::Option<u64>,
12672    #[prost(uint32, optional, tag="6")]
12673    pub mask: ::core::option::Option<u32>,
12674}
12675#[derive(Clone, PartialEq, ::prost::Message)]
12676pub struct IonAllocBufferFallbackFtraceEvent {
12677    #[prost(string, optional, tag="1")]
12678    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12679    #[prost(int64, optional, tag="2")]
12680    pub error: ::core::option::Option<i64>,
12681    #[prost(uint32, optional, tag="3")]
12682    pub flags: ::core::option::Option<u32>,
12683    #[prost(string, optional, tag="4")]
12684    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12685    #[prost(uint64, optional, tag="5")]
12686    pub len: ::core::option::Option<u64>,
12687    #[prost(uint32, optional, tag="6")]
12688    pub mask: ::core::option::Option<u32>,
12689}
12690#[derive(Clone, PartialEq, ::prost::Message)]
12691pub struct IonAllocBufferStartFtraceEvent {
12692    #[prost(string, optional, tag="1")]
12693    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12694    #[prost(uint32, optional, tag="2")]
12695    pub flags: ::core::option::Option<u32>,
12696    #[prost(string, optional, tag="3")]
12697    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12698    #[prost(uint64, optional, tag="4")]
12699    pub len: ::core::option::Option<u64>,
12700    #[prost(uint32, optional, tag="5")]
12701    pub mask: ::core::option::Option<u32>,
12702}
12703#[derive(Clone, PartialEq, ::prost::Message)]
12704pub struct IonCpAllocRetryFtraceEvent {
12705    #[prost(int32, optional, tag="1")]
12706    pub tries: ::core::option::Option<i32>,
12707}
12708#[derive(Clone, PartialEq, ::prost::Message)]
12709pub struct IonCpSecureBufferEndFtraceEvent {
12710    #[prost(uint64, optional, tag="1")]
12711    pub align: ::core::option::Option<u64>,
12712    #[prost(uint64, optional, tag="2")]
12713    pub flags: ::core::option::Option<u64>,
12714    #[prost(string, optional, tag="3")]
12715    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12716    #[prost(uint64, optional, tag="4")]
12717    pub len: ::core::option::Option<u64>,
12718}
12719#[derive(Clone, PartialEq, ::prost::Message)]
12720pub struct IonCpSecureBufferStartFtraceEvent {
12721    #[prost(uint64, optional, tag="1")]
12722    pub align: ::core::option::Option<u64>,
12723    #[prost(uint64, optional, tag="2")]
12724    pub flags: ::core::option::Option<u64>,
12725    #[prost(string, optional, tag="3")]
12726    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12727    #[prost(uint64, optional, tag="4")]
12728    pub len: ::core::option::Option<u64>,
12729}
12730#[derive(Clone, PartialEq, ::prost::Message)]
12731pub struct IonPrefetchingFtraceEvent {
12732    #[prost(uint64, optional, tag="1")]
12733    pub len: ::core::option::Option<u64>,
12734}
12735#[derive(Clone, PartialEq, ::prost::Message)]
12736pub struct IonSecureCmaAddToPoolEndFtraceEvent {
12737    #[prost(uint32, optional, tag="1")]
12738    pub is_prefetch: ::core::option::Option<u32>,
12739    #[prost(uint64, optional, tag="2")]
12740    pub len: ::core::option::Option<u64>,
12741    #[prost(int32, optional, tag="3")]
12742    pub pool_total: ::core::option::Option<i32>,
12743}
12744#[derive(Clone, PartialEq, ::prost::Message)]
12745pub struct IonSecureCmaAddToPoolStartFtraceEvent {
12746    #[prost(uint32, optional, tag="1")]
12747    pub is_prefetch: ::core::option::Option<u32>,
12748    #[prost(uint64, optional, tag="2")]
12749    pub len: ::core::option::Option<u64>,
12750    #[prost(int32, optional, tag="3")]
12751    pub pool_total: ::core::option::Option<i32>,
12752}
12753#[derive(Clone, PartialEq, ::prost::Message)]
12754pub struct IonSecureCmaAllocateEndFtraceEvent {
12755    #[prost(uint64, optional, tag="1")]
12756    pub align: ::core::option::Option<u64>,
12757    #[prost(uint64, optional, tag="2")]
12758    pub flags: ::core::option::Option<u64>,
12759    #[prost(string, optional, tag="3")]
12760    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12761    #[prost(uint64, optional, tag="4")]
12762    pub len: ::core::option::Option<u64>,
12763}
12764#[derive(Clone, PartialEq, ::prost::Message)]
12765pub struct IonSecureCmaAllocateStartFtraceEvent {
12766    #[prost(uint64, optional, tag="1")]
12767    pub align: ::core::option::Option<u64>,
12768    #[prost(uint64, optional, tag="2")]
12769    pub flags: ::core::option::Option<u64>,
12770    #[prost(string, optional, tag="3")]
12771    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12772    #[prost(uint64, optional, tag="4")]
12773    pub len: ::core::option::Option<u64>,
12774}
12775#[derive(Clone, PartialEq, ::prost::Message)]
12776pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
12777    #[prost(uint64, optional, tag="1")]
12778    pub drained_size: ::core::option::Option<u64>,
12779    #[prost(uint64, optional, tag="2")]
12780    pub skipped_size: ::core::option::Option<u64>,
12781}
12782#[derive(Clone, PartialEq, ::prost::Message)]
12783pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
12784    #[prost(uint64, optional, tag="1")]
12785    pub drained_size: ::core::option::Option<u64>,
12786    #[prost(uint64, optional, tag="2")]
12787    pub skipped_size: ::core::option::Option<u64>,
12788}
12789#[derive(Clone, PartialEq, ::prost::Message)]
12790pub struct KfreeFtraceEvent {
12791    #[prost(uint64, optional, tag="1")]
12792    pub call_site: ::core::option::Option<u64>,
12793    #[prost(uint64, optional, tag="2")]
12794    pub ptr: ::core::option::Option<u64>,
12795}
12796#[derive(Clone, PartialEq, ::prost::Message)]
12797pub struct KmallocFtraceEvent {
12798    #[prost(uint64, optional, tag="1")]
12799    pub bytes_alloc: ::core::option::Option<u64>,
12800    #[prost(uint64, optional, tag="2")]
12801    pub bytes_req: ::core::option::Option<u64>,
12802    #[prost(uint64, optional, tag="3")]
12803    pub call_site: ::core::option::Option<u64>,
12804    #[prost(uint32, optional, tag="4")]
12805    pub gfp_flags: ::core::option::Option<u32>,
12806    #[prost(uint64, optional, tag="5")]
12807    pub ptr: ::core::option::Option<u64>,
12808}
12809#[derive(Clone, PartialEq, ::prost::Message)]
12810pub struct KmallocNodeFtraceEvent {
12811    #[prost(uint64, optional, tag="1")]
12812    pub bytes_alloc: ::core::option::Option<u64>,
12813    #[prost(uint64, optional, tag="2")]
12814    pub bytes_req: ::core::option::Option<u64>,
12815    #[prost(uint64, optional, tag="3")]
12816    pub call_site: ::core::option::Option<u64>,
12817    #[prost(uint32, optional, tag="4")]
12818    pub gfp_flags: ::core::option::Option<u32>,
12819    #[prost(int32, optional, tag="5")]
12820    pub node: ::core::option::Option<i32>,
12821    #[prost(uint64, optional, tag="6")]
12822    pub ptr: ::core::option::Option<u64>,
12823}
12824#[derive(Clone, PartialEq, ::prost::Message)]
12825pub struct KmemCacheAllocFtraceEvent {
12826    #[prost(uint64, optional, tag="1")]
12827    pub bytes_alloc: ::core::option::Option<u64>,
12828    #[prost(uint64, optional, tag="2")]
12829    pub bytes_req: ::core::option::Option<u64>,
12830    #[prost(uint64, optional, tag="3")]
12831    pub call_site: ::core::option::Option<u64>,
12832    #[prost(uint32, optional, tag="4")]
12833    pub gfp_flags: ::core::option::Option<u32>,
12834    #[prost(uint64, optional, tag="5")]
12835    pub ptr: ::core::option::Option<u64>,
12836}
12837#[derive(Clone, PartialEq, ::prost::Message)]
12838pub struct KmemCacheAllocNodeFtraceEvent {
12839    #[prost(uint64, optional, tag="1")]
12840    pub bytes_alloc: ::core::option::Option<u64>,
12841    #[prost(uint64, optional, tag="2")]
12842    pub bytes_req: ::core::option::Option<u64>,
12843    #[prost(uint64, optional, tag="3")]
12844    pub call_site: ::core::option::Option<u64>,
12845    #[prost(uint32, optional, tag="4")]
12846    pub gfp_flags: ::core::option::Option<u32>,
12847    #[prost(int32, optional, tag="5")]
12848    pub node: ::core::option::Option<i32>,
12849    #[prost(uint64, optional, tag="6")]
12850    pub ptr: ::core::option::Option<u64>,
12851}
12852#[derive(Clone, PartialEq, ::prost::Message)]
12853pub struct KmemCacheFreeFtraceEvent {
12854    #[prost(uint64, optional, tag="1")]
12855    pub call_site: ::core::option::Option<u64>,
12856    #[prost(uint64, optional, tag="2")]
12857    pub ptr: ::core::option::Option<u64>,
12858}
12859#[derive(Clone, PartialEq, ::prost::Message)]
12860pub struct MigratePagesEndFtraceEvent {
12861    #[prost(int32, optional, tag="1")]
12862    pub mode: ::core::option::Option<i32>,
12863}
12864#[derive(Clone, PartialEq, ::prost::Message)]
12865pub struct MigratePagesStartFtraceEvent {
12866    #[prost(int32, optional, tag="1")]
12867    pub mode: ::core::option::Option<i32>,
12868}
12869#[derive(Clone, PartialEq, ::prost::Message)]
12870pub struct MigrateRetryFtraceEvent {
12871    #[prost(int32, optional, tag="1")]
12872    pub tries: ::core::option::Option<i32>,
12873}
12874#[derive(Clone, PartialEq, ::prost::Message)]
12875pub struct MmPageAllocFtraceEvent {
12876    #[prost(uint32, optional, tag="1")]
12877    pub gfp_flags: ::core::option::Option<u32>,
12878    #[prost(int32, optional, tag="2")]
12879    pub migratetype: ::core::option::Option<i32>,
12880    #[prost(uint32, optional, tag="3")]
12881    pub order: ::core::option::Option<u32>,
12882    #[prost(uint64, optional, tag="4")]
12883    pub page: ::core::option::Option<u64>,
12884    #[prost(uint64, optional, tag="5")]
12885    pub pfn: ::core::option::Option<u64>,
12886}
12887#[derive(Clone, PartialEq, ::prost::Message)]
12888pub struct MmPageAllocExtfragFtraceEvent {
12889    #[prost(int32, optional, tag="1")]
12890    pub alloc_migratetype: ::core::option::Option<i32>,
12891    #[prost(int32, optional, tag="2")]
12892    pub alloc_order: ::core::option::Option<i32>,
12893    #[prost(int32, optional, tag="3")]
12894    pub fallback_migratetype: ::core::option::Option<i32>,
12895    #[prost(int32, optional, tag="4")]
12896    pub fallback_order: ::core::option::Option<i32>,
12897    #[prost(uint64, optional, tag="5")]
12898    pub page: ::core::option::Option<u64>,
12899    #[prost(int32, optional, tag="6")]
12900    pub change_ownership: ::core::option::Option<i32>,
12901    #[prost(uint64, optional, tag="7")]
12902    pub pfn: ::core::option::Option<u64>,
12903}
12904#[derive(Clone, PartialEq, ::prost::Message)]
12905pub struct MmPageAllocZoneLockedFtraceEvent {
12906    #[prost(int32, optional, tag="1")]
12907    pub migratetype: ::core::option::Option<i32>,
12908    #[prost(uint32, optional, tag="2")]
12909    pub order: ::core::option::Option<u32>,
12910    #[prost(uint64, optional, tag="3")]
12911    pub page: ::core::option::Option<u64>,
12912    #[prost(uint64, optional, tag="4")]
12913    pub pfn: ::core::option::Option<u64>,
12914}
12915#[derive(Clone, PartialEq, ::prost::Message)]
12916pub struct MmPageFreeFtraceEvent {
12917    #[prost(uint32, optional, tag="1")]
12918    pub order: ::core::option::Option<u32>,
12919    #[prost(uint64, optional, tag="2")]
12920    pub page: ::core::option::Option<u64>,
12921    #[prost(uint64, optional, tag="3")]
12922    pub pfn: ::core::option::Option<u64>,
12923}
12924#[derive(Clone, PartialEq, ::prost::Message)]
12925pub struct MmPageFreeBatchedFtraceEvent {
12926    #[prost(int32, optional, tag="1")]
12927    pub cold: ::core::option::Option<i32>,
12928    #[prost(uint64, optional, tag="2")]
12929    pub page: ::core::option::Option<u64>,
12930    #[prost(uint64, optional, tag="3")]
12931    pub pfn: ::core::option::Option<u64>,
12932}
12933#[derive(Clone, PartialEq, ::prost::Message)]
12934pub struct MmPagePcpuDrainFtraceEvent {
12935    #[prost(int32, optional, tag="1")]
12936    pub migratetype: ::core::option::Option<i32>,
12937    #[prost(uint32, optional, tag="2")]
12938    pub order: ::core::option::Option<u32>,
12939    #[prost(uint64, optional, tag="3")]
12940    pub page: ::core::option::Option<u64>,
12941    #[prost(uint64, optional, tag="4")]
12942    pub pfn: ::core::option::Option<u64>,
12943}
12944#[derive(Clone, PartialEq, ::prost::Message)]
12945pub struct RssStatFtraceEvent {
12946    #[prost(int32, optional, tag="1")]
12947    pub member: ::core::option::Option<i32>,
12948    #[prost(int64, optional, tag="2")]
12949    pub size: ::core::option::Option<i64>,
12950    #[prost(uint32, optional, tag="3")]
12951    pub curr: ::core::option::Option<u32>,
12952    #[prost(uint32, optional, tag="4")]
12953    pub mm_id: ::core::option::Option<u32>,
12954}
12955#[derive(Clone, PartialEq, ::prost::Message)]
12956pub struct IonHeapShrinkFtraceEvent {
12957    #[prost(string, optional, tag="1")]
12958    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12959    #[prost(uint64, optional, tag="2")]
12960    pub len: ::core::option::Option<u64>,
12961    #[prost(int64, optional, tag="3")]
12962    pub total_allocated: ::core::option::Option<i64>,
12963}
12964#[derive(Clone, PartialEq, ::prost::Message)]
12965pub struct IonHeapGrowFtraceEvent {
12966    #[prost(string, optional, tag="1")]
12967    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12968    #[prost(uint64, optional, tag="2")]
12969    pub len: ::core::option::Option<u64>,
12970    #[prost(int64, optional, tag="3")]
12971    pub total_allocated: ::core::option::Option<i64>,
12972}
12973#[derive(Clone, PartialEq, ::prost::Message)]
12974pub struct IonBufferCreateFtraceEvent {
12975    #[prost(uint64, optional, tag="1")]
12976    pub addr: ::core::option::Option<u64>,
12977    #[prost(uint64, optional, tag="2")]
12978    pub len: ::core::option::Option<u64>,
12979}
12980#[derive(Clone, PartialEq, ::prost::Message)]
12981pub struct IonBufferDestroyFtraceEvent {
12982    #[prost(uint64, optional, tag="1")]
12983    pub addr: ::core::option::Option<u64>,
12984    #[prost(uint64, optional, tag="2")]
12985    pub len: ::core::option::Option<u64>,
12986}
12987#[derive(Clone, PartialEq, ::prost::Message)]
12988pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
12989    #[prost(uint64, optional, tag="1")]
12990    pub start: ::core::option::Option<u64>,
12991    #[prost(uint64, optional, tag="2")]
12992    pub end: ::core::option::Option<u64>,
12993    #[prost(uint64, optional, tag="3")]
12994    pub nr_migrated: ::core::option::Option<u64>,
12995    #[prost(uint64, optional, tag="4")]
12996    pub nr_reclaimed: ::core::option::Option<u64>,
12997    #[prost(uint64, optional, tag="5")]
12998    pub nr_mapped: ::core::option::Option<u64>,
12999    #[prost(int32, optional, tag="6")]
13000    pub migratetype: ::core::option::Option<i32>,
13001}
13002#[derive(Clone, PartialEq, ::prost::Message)]
13003pub struct DmabufRssStatFtraceEvent {
13004    #[prost(uint64, optional, tag="1")]
13005    pub rss: ::core::option::Option<u64>,
13006    #[prost(int64, optional, tag="2")]
13007    pub rss_delta: ::core::option::Option<i64>,
13008    #[prost(uint64, optional, tag="3")]
13009    pub i_ino: ::core::option::Option<u64>,
13010}
13011// End of protos/perfetto/trace/ftrace/kmem.proto
13012
13013// Begin of protos/perfetto/trace/ftrace/kvm.proto
13014
13015#[derive(Clone, PartialEq, ::prost::Message)]
13016pub struct KvmAccessFaultFtraceEvent {
13017    #[prost(uint64, optional, tag="1")]
13018    pub ipa: ::core::option::Option<u64>,
13019}
13020#[derive(Clone, PartialEq, ::prost::Message)]
13021pub struct KvmAckIrqFtraceEvent {
13022    #[prost(uint32, optional, tag="1")]
13023    pub irqchip: ::core::option::Option<u32>,
13024    #[prost(uint32, optional, tag="2")]
13025    pub pin: ::core::option::Option<u32>,
13026}
13027#[derive(Clone, PartialEq, ::prost::Message)]
13028pub struct KvmAgeHvaFtraceEvent {
13029    #[prost(uint64, optional, tag="1")]
13030    pub end: ::core::option::Option<u64>,
13031    #[prost(uint64, optional, tag="2")]
13032    pub start: ::core::option::Option<u64>,
13033}
13034#[derive(Clone, PartialEq, ::prost::Message)]
13035pub struct KvmAgePageFtraceEvent {
13036    #[prost(uint64, optional, tag="1")]
13037    pub gfn: ::core::option::Option<u64>,
13038    #[prost(uint64, optional, tag="2")]
13039    pub hva: ::core::option::Option<u64>,
13040    #[prost(uint32, optional, tag="3")]
13041    pub level: ::core::option::Option<u32>,
13042    #[prost(uint32, optional, tag="4")]
13043    pub referenced: ::core::option::Option<u32>,
13044}
13045#[derive(Clone, PartialEq, ::prost::Message)]
13046pub struct KvmArmClearDebugFtraceEvent {
13047    #[prost(uint32, optional, tag="1")]
13048    pub guest_debug: ::core::option::Option<u32>,
13049}
13050#[derive(Clone, PartialEq, ::prost::Message)]
13051pub struct KvmArmSetDreg32FtraceEvent {
13052    #[prost(string, optional, tag="1")]
13053    pub name: ::core::option::Option<::prost::alloc::string::String>,
13054    #[prost(uint32, optional, tag="2")]
13055    pub value: ::core::option::Option<u32>,
13056}
13057#[derive(Clone, PartialEq, ::prost::Message)]
13058pub struct KvmArmSetRegsetFtraceEvent {
13059    #[prost(int32, optional, tag="1")]
13060    pub len: ::core::option::Option<i32>,
13061    #[prost(string, optional, tag="2")]
13062    pub name: ::core::option::Option<::prost::alloc::string::String>,
13063}
13064#[derive(Clone, PartialEq, ::prost::Message)]
13065pub struct KvmArmSetupDebugFtraceEvent {
13066    #[prost(uint32, optional, tag="1")]
13067    pub guest_debug: ::core::option::Option<u32>,
13068    #[prost(uint64, optional, tag="2")]
13069    pub vcpu: ::core::option::Option<u64>,
13070}
13071#[derive(Clone, PartialEq, ::prost::Message)]
13072pub struct KvmEntryFtraceEvent {
13073    #[prost(uint64, optional, tag="1")]
13074    pub vcpu_pc: ::core::option::Option<u64>,
13075}
13076#[derive(Clone, PartialEq, ::prost::Message)]
13077pub struct KvmExitFtraceEvent {
13078    #[prost(uint32, optional, tag="1")]
13079    pub esr_ec: ::core::option::Option<u32>,
13080    #[prost(int32, optional, tag="2")]
13081    pub ret: ::core::option::Option<i32>,
13082    #[prost(uint64, optional, tag="3")]
13083    pub vcpu_pc: ::core::option::Option<u64>,
13084}
13085#[derive(Clone, PartialEq, ::prost::Message)]
13086pub struct KvmFpuFtraceEvent {
13087    #[prost(uint32, optional, tag="1")]
13088    pub load: ::core::option::Option<u32>,
13089}
13090#[derive(Clone, PartialEq, ::prost::Message)]
13091pub struct KvmGetTimerMapFtraceEvent {
13092    #[prost(int32, optional, tag="1")]
13093    pub direct_ptimer: ::core::option::Option<i32>,
13094    #[prost(int32, optional, tag="2")]
13095    pub direct_vtimer: ::core::option::Option<i32>,
13096    #[prost(int32, optional, tag="3")]
13097    pub emul_ptimer: ::core::option::Option<i32>,
13098    #[prost(uint64, optional, tag="4")]
13099    pub vcpu_id: ::core::option::Option<u64>,
13100}
13101#[derive(Clone, PartialEq, ::prost::Message)]
13102pub struct KvmGuestFaultFtraceEvent {
13103    #[prost(uint64, optional, tag="1")]
13104    pub hsr: ::core::option::Option<u64>,
13105    #[prost(uint64, optional, tag="2")]
13106    pub hxfar: ::core::option::Option<u64>,
13107    #[prost(uint64, optional, tag="3")]
13108    pub ipa: ::core::option::Option<u64>,
13109    #[prost(uint64, optional, tag="4")]
13110    pub vcpu_pc: ::core::option::Option<u64>,
13111}
13112#[derive(Clone, PartialEq, ::prost::Message)]
13113pub struct KvmHandleSysRegFtraceEvent {
13114    #[prost(uint64, optional, tag="1")]
13115    pub hsr: ::core::option::Option<u64>,
13116}
13117#[derive(Clone, PartialEq, ::prost::Message)]
13118pub struct KvmHvcArm64FtraceEvent {
13119    #[prost(uint64, optional, tag="1")]
13120    pub imm: ::core::option::Option<u64>,
13121    #[prost(uint64, optional, tag="2")]
13122    pub r0: ::core::option::Option<u64>,
13123    #[prost(uint64, optional, tag="3")]
13124    pub vcpu_pc: ::core::option::Option<u64>,
13125}
13126#[derive(Clone, PartialEq, ::prost::Message)]
13127pub struct KvmIrqLineFtraceEvent {
13128    #[prost(int32, optional, tag="1")]
13129    pub irq_num: ::core::option::Option<i32>,
13130    #[prost(int32, optional, tag="2")]
13131    pub level: ::core::option::Option<i32>,
13132    #[prost(uint32, optional, tag="3")]
13133    pub r#type: ::core::option::Option<u32>,
13134    #[prost(int32, optional, tag="4")]
13135    pub vcpu_idx: ::core::option::Option<i32>,
13136}
13137#[derive(Clone, PartialEq, ::prost::Message)]
13138pub struct KvmMmioFtraceEvent {
13139    #[prost(uint64, optional, tag="1")]
13140    pub gpa: ::core::option::Option<u64>,
13141    #[prost(uint32, optional, tag="2")]
13142    pub len: ::core::option::Option<u32>,
13143    #[prost(uint32, optional, tag="3")]
13144    pub r#type: ::core::option::Option<u32>,
13145    #[prost(uint64, optional, tag="4")]
13146    pub val: ::core::option::Option<u64>,
13147}
13148#[derive(Clone, PartialEq, ::prost::Message)]
13149pub struct KvmMmioEmulateFtraceEvent {
13150    #[prost(uint64, optional, tag="1")]
13151    pub cpsr: ::core::option::Option<u64>,
13152    #[prost(uint64, optional, tag="2")]
13153    pub instr: ::core::option::Option<u64>,
13154    #[prost(uint64, optional, tag="3")]
13155    pub vcpu_pc: ::core::option::Option<u64>,
13156}
13157#[derive(Clone, PartialEq, ::prost::Message)]
13158pub struct KvmSetGuestDebugFtraceEvent {
13159    #[prost(uint32, optional, tag="1")]
13160    pub guest_debug: ::core::option::Option<u32>,
13161    #[prost(uint64, optional, tag="2")]
13162    pub vcpu: ::core::option::Option<u64>,
13163}
13164#[derive(Clone, PartialEq, ::prost::Message)]
13165pub struct KvmSetIrqFtraceEvent {
13166    #[prost(uint32, optional, tag="1")]
13167    pub gsi: ::core::option::Option<u32>,
13168    #[prost(int32, optional, tag="2")]
13169    pub irq_source_id: ::core::option::Option<i32>,
13170    #[prost(int32, optional, tag="3")]
13171    pub level: ::core::option::Option<i32>,
13172}
13173#[derive(Clone, PartialEq, ::prost::Message)]
13174pub struct KvmSetSpteHvaFtraceEvent {
13175    #[prost(uint64, optional, tag="1")]
13176    pub hva: ::core::option::Option<u64>,
13177}
13178#[derive(Clone, PartialEq, ::prost::Message)]
13179pub struct KvmSetWayFlushFtraceEvent {
13180    #[prost(uint32, optional, tag="1")]
13181    pub cache: ::core::option::Option<u32>,
13182    #[prost(uint64, optional, tag="2")]
13183    pub vcpu_pc: ::core::option::Option<u64>,
13184}
13185#[derive(Clone, PartialEq, ::prost::Message)]
13186pub struct KvmSysAccessFtraceEvent {
13187    #[prost(uint32, optional, tag="1")]
13188    pub c_rm: ::core::option::Option<u32>,
13189    #[prost(uint32, optional, tag="2")]
13190    pub c_rn: ::core::option::Option<u32>,
13191    #[prost(uint32, optional, tag="3")]
13192    pub op0: ::core::option::Option<u32>,
13193    #[prost(uint32, optional, tag="4")]
13194    pub op1: ::core::option::Option<u32>,
13195    #[prost(uint32, optional, tag="5")]
13196    pub op2: ::core::option::Option<u32>,
13197    #[prost(uint32, optional, tag="6")]
13198    pub is_write: ::core::option::Option<u32>,
13199    #[prost(string, optional, tag="7")]
13200    pub name: ::core::option::Option<::prost::alloc::string::String>,
13201    #[prost(uint64, optional, tag="8")]
13202    pub vcpu_pc: ::core::option::Option<u64>,
13203}
13204#[derive(Clone, PartialEq, ::prost::Message)]
13205pub struct KvmTestAgeHvaFtraceEvent {
13206    #[prost(uint64, optional, tag="1")]
13207    pub hva: ::core::option::Option<u64>,
13208}
13209#[derive(Clone, PartialEq, ::prost::Message)]
13210pub struct KvmTimerEmulateFtraceEvent {
13211    #[prost(uint32, optional, tag="1")]
13212    pub should_fire: ::core::option::Option<u32>,
13213    #[prost(int32, optional, tag="2")]
13214    pub timer_idx: ::core::option::Option<i32>,
13215}
13216#[derive(Clone, PartialEq, ::prost::Message)]
13217pub struct KvmTimerHrtimerExpireFtraceEvent {
13218    #[prost(int32, optional, tag="1")]
13219    pub timer_idx: ::core::option::Option<i32>,
13220}
13221#[derive(Clone, PartialEq, ::prost::Message)]
13222pub struct KvmTimerRestoreStateFtraceEvent {
13223    #[prost(uint64, optional, tag="1")]
13224    pub ctl: ::core::option::Option<u64>,
13225    #[prost(uint64, optional, tag="2")]
13226    pub cval: ::core::option::Option<u64>,
13227    #[prost(int32, optional, tag="3")]
13228    pub timer_idx: ::core::option::Option<i32>,
13229}
13230#[derive(Clone, PartialEq, ::prost::Message)]
13231pub struct KvmTimerSaveStateFtraceEvent {
13232    #[prost(uint64, optional, tag="1")]
13233    pub ctl: ::core::option::Option<u64>,
13234    #[prost(uint64, optional, tag="2")]
13235    pub cval: ::core::option::Option<u64>,
13236    #[prost(int32, optional, tag="3")]
13237    pub timer_idx: ::core::option::Option<i32>,
13238}
13239#[derive(Clone, PartialEq, ::prost::Message)]
13240pub struct KvmTimerUpdateIrqFtraceEvent {
13241    #[prost(uint32, optional, tag="1")]
13242    pub irq: ::core::option::Option<u32>,
13243    #[prost(int32, optional, tag="2")]
13244    pub level: ::core::option::Option<i32>,
13245    #[prost(uint64, optional, tag="3")]
13246    pub vcpu_id: ::core::option::Option<u64>,
13247}
13248#[derive(Clone, PartialEq, ::prost::Message)]
13249pub struct KvmToggleCacheFtraceEvent {
13250    #[prost(uint32, optional, tag="1")]
13251    pub now: ::core::option::Option<u32>,
13252    #[prost(uint64, optional, tag="2")]
13253    pub vcpu_pc: ::core::option::Option<u64>,
13254    #[prost(uint32, optional, tag="3")]
13255    pub was: ::core::option::Option<u32>,
13256}
13257#[derive(Clone, PartialEq, ::prost::Message)]
13258pub struct KvmUnmapHvaRangeFtraceEvent {
13259    #[prost(uint64, optional, tag="1")]
13260    pub end: ::core::option::Option<u64>,
13261    #[prost(uint64, optional, tag="2")]
13262    pub start: ::core::option::Option<u64>,
13263}
13264#[derive(Clone, PartialEq, ::prost::Message)]
13265pub struct KvmUserspaceExitFtraceEvent {
13266    #[prost(uint32, optional, tag="1")]
13267    pub reason: ::core::option::Option<u32>,
13268}
13269#[derive(Clone, PartialEq, ::prost::Message)]
13270pub struct KvmVcpuWakeupFtraceEvent {
13271    #[prost(uint64, optional, tag="1")]
13272    pub ns: ::core::option::Option<u64>,
13273    #[prost(uint32, optional, tag="2")]
13274    pub valid: ::core::option::Option<u32>,
13275    #[prost(uint32, optional, tag="3")]
13276    pub waited: ::core::option::Option<u32>,
13277}
13278#[derive(Clone, PartialEq, ::prost::Message)]
13279pub struct KvmWfxArm64FtraceEvent {
13280    #[prost(uint32, optional, tag="1")]
13281    pub is_wfe: ::core::option::Option<u32>,
13282    #[prost(uint64, optional, tag="2")]
13283    pub vcpu_pc: ::core::option::Option<u64>,
13284}
13285#[derive(Clone, PartialEq, ::prost::Message)]
13286pub struct TrapRegFtraceEvent {
13287    #[prost(string, optional, tag="1")]
13288    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
13289    #[prost(uint32, optional, tag="2")]
13290    pub is_write: ::core::option::Option<u32>,
13291    #[prost(int32, optional, tag="3")]
13292    pub reg: ::core::option::Option<i32>,
13293    #[prost(uint64, optional, tag="4")]
13294    pub write_value: ::core::option::Option<u64>,
13295}
13296#[derive(Clone, PartialEq, ::prost::Message)]
13297pub struct VgicUpdateIrqPendingFtraceEvent {
13298    #[prost(uint32, optional, tag="1")]
13299    pub irq: ::core::option::Option<u32>,
13300    #[prost(uint32, optional, tag="2")]
13301    pub level: ::core::option::Option<u32>,
13302    #[prost(uint64, optional, tag="3")]
13303    pub vcpu_id: ::core::option::Option<u64>,
13304}
13305// End of protos/perfetto/trace/ftrace/kvm.proto
13306
13307// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13308
13309#[derive(Clone, PartialEq, ::prost::Message)]
13310pub struct LowmemoryKillFtraceEvent {
13311    #[prost(string, optional, tag="1")]
13312    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13313    #[prost(int32, optional, tag="2")]
13314    pub pid: ::core::option::Option<i32>,
13315    #[prost(int64, optional, tag="3")]
13316    pub pagecache_size: ::core::option::Option<i64>,
13317    #[prost(int64, optional, tag="4")]
13318    pub pagecache_limit: ::core::option::Option<i64>,
13319    #[prost(int64, optional, tag="5")]
13320    pub free: ::core::option::Option<i64>,
13321}
13322// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13323
13324// Begin of protos/perfetto/trace/ftrace/lwis.proto
13325
13326#[derive(Clone, PartialEq, ::prost::Message)]
13327pub struct LwisTracingMarkWriteFtraceEvent {
13328    #[prost(string, optional, tag="1")]
13329    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
13330    #[prost(uint32, optional, tag="2")]
13331    pub r#type: ::core::option::Option<u32>,
13332    #[prost(int32, optional, tag="3")]
13333    pub pid: ::core::option::Option<i32>,
13334    #[prost(string, optional, tag="4")]
13335    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
13336    #[prost(int64, optional, tag="5")]
13337    pub value: ::core::option::Option<i64>,
13338}
13339// End of protos/perfetto/trace/ftrace/lwis.proto
13340
13341// Begin of protos/perfetto/trace/ftrace/mali.proto
13342
13343#[derive(Clone, PartialEq, ::prost::Message)]
13344pub struct MaliTracingMarkWriteFtraceEvent {
13345    #[prost(string, optional, tag="1")]
13346    pub name: ::core::option::Option<::prost::alloc::string::String>,
13347    #[prost(int32, optional, tag="2")]
13348    pub pid: ::core::option::Option<i32>,
13349    #[prost(uint32, optional, tag="3")]
13350    pub r#type: ::core::option::Option<u32>,
13351    #[prost(int32, optional, tag="4")]
13352    pub value: ::core::option::Option<i32>,
13353}
13354#[derive(Clone, PartialEq, ::prost::Message)]
13355pub struct MaliMaliKcpucqssetFtraceEvent {
13356    #[prost(uint32, optional, tag="1")]
13357    pub id: ::core::option::Option<u32>,
13358    #[prost(uint64, optional, tag="2")]
13359    pub info_val1: ::core::option::Option<u64>,
13360    #[prost(uint64, optional, tag="3")]
13361    pub info_val2: ::core::option::Option<u64>,
13362    #[prost(uint32, optional, tag="4")]
13363    pub kctx_id: ::core::option::Option<u32>,
13364    #[prost(int32, optional, tag="5")]
13365    pub kctx_tgid: ::core::option::Option<i32>,
13366}
13367#[derive(Clone, PartialEq, ::prost::Message)]
13368pub struct MaliMaliKcpucqswaitstartFtraceEvent {
13369    #[prost(uint32, optional, tag="1")]
13370    pub id: ::core::option::Option<u32>,
13371    #[prost(uint64, optional, tag="2")]
13372    pub info_val1: ::core::option::Option<u64>,
13373    #[prost(uint64, optional, tag="3")]
13374    pub info_val2: ::core::option::Option<u64>,
13375    #[prost(uint32, optional, tag="4")]
13376    pub kctx_id: ::core::option::Option<u32>,
13377    #[prost(int32, optional, tag="5")]
13378    pub kctx_tgid: ::core::option::Option<i32>,
13379}
13380#[derive(Clone, PartialEq, ::prost::Message)]
13381pub struct MaliMaliKcpucqswaitendFtraceEvent {
13382    #[prost(uint32, optional, tag="1")]
13383    pub id: ::core::option::Option<u32>,
13384    #[prost(uint64, optional, tag="2")]
13385    pub info_val1: ::core::option::Option<u64>,
13386    #[prost(uint64, optional, tag="3")]
13387    pub info_val2: ::core::option::Option<u64>,
13388    #[prost(uint32, optional, tag="4")]
13389    pub kctx_id: ::core::option::Option<u32>,
13390    #[prost(int32, optional, tag="5")]
13391    pub kctx_tgid: ::core::option::Option<i32>,
13392}
13393#[derive(Clone, PartialEq, ::prost::Message)]
13394pub struct MaliMaliKcpufencesignalFtraceEvent {
13395    #[prost(uint64, optional, tag="1")]
13396    pub info_val1: ::core::option::Option<u64>,
13397    #[prost(uint64, optional, tag="2")]
13398    pub info_val2: ::core::option::Option<u64>,
13399    #[prost(int32, optional, tag="3")]
13400    pub kctx_tgid: ::core::option::Option<i32>,
13401    #[prost(uint32, optional, tag="4")]
13402    pub kctx_id: ::core::option::Option<u32>,
13403    #[prost(uint32, optional, tag="5")]
13404    pub id: ::core::option::Option<u32>,
13405}
13406#[derive(Clone, PartialEq, ::prost::Message)]
13407pub struct MaliMaliKcpufencewaitstartFtraceEvent {
13408    #[prost(uint64, optional, tag="1")]
13409    pub info_val1: ::core::option::Option<u64>,
13410    #[prost(uint64, optional, tag="2")]
13411    pub info_val2: ::core::option::Option<u64>,
13412    #[prost(int32, optional, tag="3")]
13413    pub kctx_tgid: ::core::option::Option<i32>,
13414    #[prost(uint32, optional, tag="4")]
13415    pub kctx_id: ::core::option::Option<u32>,
13416    #[prost(uint32, optional, tag="5")]
13417    pub id: ::core::option::Option<u32>,
13418}
13419#[derive(Clone, PartialEq, ::prost::Message)]
13420pub struct MaliMaliKcpufencewaitendFtraceEvent {
13421    #[prost(uint64, optional, tag="1")]
13422    pub info_val1: ::core::option::Option<u64>,
13423    #[prost(uint64, optional, tag="2")]
13424    pub info_val2: ::core::option::Option<u64>,
13425    #[prost(int32, optional, tag="3")]
13426    pub kctx_tgid: ::core::option::Option<i32>,
13427    #[prost(uint32, optional, tag="4")]
13428    pub kctx_id: ::core::option::Option<u32>,
13429    #[prost(uint32, optional, tag="5")]
13430    pub id: ::core::option::Option<u32>,
13431}
13432#[derive(Clone, PartialEq, ::prost::Message)]
13433pub struct MaliMaliCsfinterruptstartFtraceEvent {
13434    #[prost(int32, optional, tag="1")]
13435    pub kctx_tgid: ::core::option::Option<i32>,
13436    #[prost(uint32, optional, tag="2")]
13437    pub kctx_id: ::core::option::Option<u32>,
13438    #[prost(uint64, optional, tag="3")]
13439    pub info_val: ::core::option::Option<u64>,
13440}
13441#[derive(Clone, PartialEq, ::prost::Message)]
13442pub struct MaliMaliCsfinterruptendFtraceEvent {
13443    #[prost(int32, optional, tag="1")]
13444    pub kctx_tgid: ::core::option::Option<i32>,
13445    #[prost(uint32, optional, tag="2")]
13446    pub kctx_id: ::core::option::Option<u32>,
13447    #[prost(uint64, optional, tag="3")]
13448    pub info_val: ::core::option::Option<u64>,
13449}
13450#[derive(Clone, PartialEq, ::prost::Message)]
13451pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
13452    #[prost(int32, optional, tag="1")]
13453    pub kctx_tgid: ::core::option::Option<i32>,
13454    #[prost(uint32, optional, tag="2")]
13455    pub kctx_id: ::core::option::Option<u32>,
13456    #[prost(uint64, optional, tag="3")]
13457    pub info_val: ::core::option::Option<u64>,
13458}
13459#[derive(Clone, PartialEq, ::prost::Message)]
13460pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
13461    #[prost(int32, optional, tag="1")]
13462    pub kctx_tgid: ::core::option::Option<i32>,
13463    #[prost(uint32, optional, tag="2")]
13464    pub kctx_id: ::core::option::Option<u32>,
13465    #[prost(uint64, optional, tag="3")]
13466    pub info_val: ::core::option::Option<u64>,
13467}
13468#[derive(Clone, PartialEq, ::prost::Message)]
13469pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
13470    #[prost(int32, optional, tag="1")]
13471    pub kctx_tgid: ::core::option::Option<i32>,
13472    #[prost(uint32, optional, tag="2")]
13473    pub kctx_id: ::core::option::Option<u32>,
13474    #[prost(uint64, optional, tag="3")]
13475    pub info_val: ::core::option::Option<u64>,
13476}
13477#[derive(Clone, PartialEq, ::prost::Message)]
13478pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
13479    #[prost(int32, optional, tag="1")]
13480    pub kctx_tgid: ::core::option::Option<i32>,
13481    #[prost(uint32, optional, tag="2")]
13482    pub kctx_id: ::core::option::Option<u32>,
13483    #[prost(uint64, optional, tag="3")]
13484    pub info_val: ::core::option::Option<u64>,
13485}
13486#[derive(Clone, PartialEq, ::prost::Message)]
13487pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
13488    #[prost(int32, optional, tag="1")]
13489    pub kctx_tgid: ::core::option::Option<i32>,
13490    #[prost(uint32, optional, tag="2")]
13491    pub kctx_id: ::core::option::Option<u32>,
13492    #[prost(uint64, optional, tag="3")]
13493    pub info_val: ::core::option::Option<u64>,
13494}
13495#[derive(Clone, PartialEq, ::prost::Message)]
13496pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
13497    #[prost(int32, optional, tag="1")]
13498    pub kctx_tgid: ::core::option::Option<i32>,
13499    #[prost(uint32, optional, tag="2")]
13500    pub kctx_id: ::core::option::Option<u32>,
13501    #[prost(uint64, optional, tag="3")]
13502    pub info_val: ::core::option::Option<u64>,
13503}
13504#[derive(Clone, PartialEq, ::prost::Message)]
13505pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
13506    #[prost(int32, optional, tag="1")]
13507    pub kctx_tgid: ::core::option::Option<i32>,
13508    #[prost(uint32, optional, tag="2")]
13509    pub kctx_id: ::core::option::Option<u32>,
13510    #[prost(uint64, optional, tag="3")]
13511    pub info_val: ::core::option::Option<u64>,
13512}
13513#[derive(Clone, PartialEq, ::prost::Message)]
13514pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
13515    #[prost(int32, optional, tag="1")]
13516    pub kctx_tgid: ::core::option::Option<i32>,
13517    #[prost(uint32, optional, tag="2")]
13518    pub kctx_id: ::core::option::Option<u32>,
13519    #[prost(uint64, optional, tag="3")]
13520    pub info_val: ::core::option::Option<u64>,
13521}
13522#[derive(Clone, PartialEq, ::prost::Message)]
13523pub struct MaliMaliPmmcuinsleepFtraceEvent {
13524    #[prost(int32, optional, tag="1")]
13525    pub kctx_tgid: ::core::option::Option<i32>,
13526    #[prost(uint32, optional, tag="2")]
13527    pub kctx_id: ::core::option::Option<u32>,
13528    #[prost(uint64, optional, tag="3")]
13529    pub info_val: ::core::option::Option<u64>,
13530}
13531#[derive(Clone, PartialEq, ::prost::Message)]
13532pub struct MaliMaliPmmcuoffFtraceEvent {
13533    #[prost(int32, optional, tag="1")]
13534    pub kctx_tgid: ::core::option::Option<i32>,
13535    #[prost(uint32, optional, tag="2")]
13536    pub kctx_id: ::core::option::Option<u32>,
13537    #[prost(uint64, optional, tag="3")]
13538    pub info_val: ::core::option::Option<u64>,
13539}
13540#[derive(Clone, PartialEq, ::prost::Message)]
13541pub struct MaliMaliPmmcuonFtraceEvent {
13542    #[prost(int32, optional, tag="1")]
13543    pub kctx_tgid: ::core::option::Option<i32>,
13544    #[prost(uint32, optional, tag="2")]
13545    pub kctx_id: ::core::option::Option<u32>,
13546    #[prost(uint64, optional, tag="3")]
13547    pub info_val: ::core::option::Option<u64>,
13548}
13549#[derive(Clone, PartialEq, ::prost::Message)]
13550pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
13551    #[prost(int32, optional, tag="1")]
13552    pub kctx_tgid: ::core::option::Option<i32>,
13553    #[prost(uint32, optional, tag="2")]
13554    pub kctx_id: ::core::option::Option<u32>,
13555    #[prost(uint64, optional, tag="3")]
13556    pub info_val: ::core::option::Option<u64>,
13557}
13558#[derive(Clone, PartialEq, ::prost::Message)]
13559pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
13560    #[prost(int32, optional, tag="1")]
13561    pub kctx_tgid: ::core::option::Option<i32>,
13562    #[prost(uint32, optional, tag="2")]
13563    pub kctx_id: ::core::option::Option<u32>,
13564    #[prost(uint64, optional, tag="3")]
13565    pub info_val: ::core::option::Option<u64>,
13566}
13567#[derive(Clone, PartialEq, ::prost::Message)]
13568pub struct MaliMaliPmmcuonhaltFtraceEvent {
13569    #[prost(int32, optional, tag="1")]
13570    pub kctx_tgid: ::core::option::Option<i32>,
13571    #[prost(uint32, optional, tag="2")]
13572    pub kctx_id: ::core::option::Option<u32>,
13573    #[prost(uint64, optional, tag="3")]
13574    pub info_val: ::core::option::Option<u64>,
13575}
13576#[derive(Clone, PartialEq, ::prost::Message)]
13577pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
13578    #[prost(int32, optional, tag="1")]
13579    pub kctx_tgid: ::core::option::Option<i32>,
13580    #[prost(uint32, optional, tag="2")]
13581    pub kctx_id: ::core::option::Option<u32>,
13582    #[prost(uint64, optional, tag="3")]
13583    pub info_val: ::core::option::Option<u64>,
13584}
13585#[derive(Clone, PartialEq, ::prost::Message)]
13586pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
13587    #[prost(int32, optional, tag="1")]
13588    pub kctx_tgid: ::core::option::Option<i32>,
13589    #[prost(uint32, optional, tag="2")]
13590    pub kctx_id: ::core::option::Option<u32>,
13591    #[prost(uint64, optional, tag="3")]
13592    pub info_val: ::core::option::Option<u64>,
13593}
13594#[derive(Clone, PartialEq, ::prost::Message)]
13595pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
13596    #[prost(int32, optional, tag="1")]
13597    pub kctx_tgid: ::core::option::Option<i32>,
13598    #[prost(uint32, optional, tag="2")]
13599    pub kctx_id: ::core::option::Option<u32>,
13600    #[prost(uint64, optional, tag="3")]
13601    pub info_val: ::core::option::Option<u64>,
13602}
13603#[derive(Clone, PartialEq, ::prost::Message)]
13604pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
13605    #[prost(int32, optional, tag="1")]
13606    pub kctx_tgid: ::core::option::Option<i32>,
13607    #[prost(uint32, optional, tag="2")]
13608    pub kctx_id: ::core::option::Option<u32>,
13609    #[prost(uint64, optional, tag="3")]
13610    pub info_val: ::core::option::Option<u64>,
13611}
13612#[derive(Clone, PartialEq, ::prost::Message)]
13613pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
13614    #[prost(int32, optional, tag="1")]
13615    pub kctx_tgid: ::core::option::Option<i32>,
13616    #[prost(uint32, optional, tag="2")]
13617    pub kctx_id: ::core::option::Option<u32>,
13618    #[prost(uint64, optional, tag="3")]
13619    pub info_val: ::core::option::Option<u64>,
13620}
13621#[derive(Clone, PartialEq, ::prost::Message)]
13622pub struct MaliMaliPmmcupendoffFtraceEvent {
13623    #[prost(int32, optional, tag="1")]
13624    pub kctx_tgid: ::core::option::Option<i32>,
13625    #[prost(uint32, optional, tag="2")]
13626    pub kctx_id: ::core::option::Option<u32>,
13627    #[prost(uint64, optional, tag="3")]
13628    pub info_val: ::core::option::Option<u64>,
13629}
13630#[derive(Clone, PartialEq, ::prost::Message)]
13631pub struct MaliMaliPmmcupendonreloadFtraceEvent {
13632    #[prost(int32, optional, tag="1")]
13633    pub kctx_tgid: ::core::option::Option<i32>,
13634    #[prost(uint32, optional, tag="2")]
13635    pub kctx_id: ::core::option::Option<u32>,
13636    #[prost(uint64, optional, tag="3")]
13637    pub info_val: ::core::option::Option<u64>,
13638}
13639#[derive(Clone, PartialEq, ::prost::Message)]
13640pub struct MaliMaliPmmcupowerdownFtraceEvent {
13641    #[prost(int32, optional, tag="1")]
13642    pub kctx_tgid: ::core::option::Option<i32>,
13643    #[prost(uint32, optional, tag="2")]
13644    pub kctx_id: ::core::option::Option<u32>,
13645    #[prost(uint64, optional, tag="3")]
13646    pub info_val: ::core::option::Option<u64>,
13647}
13648#[derive(Clone, PartialEq, ::prost::Message)]
13649pub struct MaliMaliPmmcuresetwaitFtraceEvent {
13650    #[prost(int32, optional, tag="1")]
13651    pub kctx_tgid: ::core::option::Option<i32>,
13652    #[prost(uint32, optional, tag="2")]
13653    pub kctx_id: ::core::option::Option<u32>,
13654    #[prost(uint64, optional, tag="3")]
13655    pub info_val: ::core::option::Option<u64>,
13656}
13657#[derive(Clone, PartialEq, ::prost::Message)]
13658pub struct MaliGpuPowerStateFtraceEvent {
13659    #[prost(uint64, optional, tag="1")]
13660    pub change_ns: ::core::option::Option<u64>,
13661    #[prost(int32, optional, tag="2")]
13662    pub from_state: ::core::option::Option<i32>,
13663    #[prost(int32, optional, tag="3")]
13664    pub to_state: ::core::option::Option<i32>,
13665}
13666// End of protos/perfetto/trace/ftrace/mali.proto
13667
13668// Begin of protos/perfetto/trace/ftrace/mdss.proto
13669
13670#[derive(Clone, PartialEq, ::prost::Message)]
13671pub struct MdpCmdKickoffFtraceEvent {
13672    #[prost(uint32, optional, tag="1")]
13673    pub ctl_num: ::core::option::Option<u32>,
13674    #[prost(int32, optional, tag="2")]
13675    pub kickoff_cnt: ::core::option::Option<i32>,
13676}
13677#[derive(Clone, PartialEq, ::prost::Message)]
13678pub struct MdpCommitFtraceEvent {
13679    #[prost(uint32, optional, tag="1")]
13680    pub num: ::core::option::Option<u32>,
13681    #[prost(uint32, optional, tag="2")]
13682    pub play_cnt: ::core::option::Option<u32>,
13683    #[prost(uint32, optional, tag="3")]
13684    pub clk_rate: ::core::option::Option<u32>,
13685    #[prost(uint64, optional, tag="4")]
13686    pub bandwidth: ::core::option::Option<u64>,
13687}
13688#[derive(Clone, PartialEq, ::prost::Message)]
13689pub struct MdpPerfSetOtFtraceEvent {
13690    #[prost(uint32, optional, tag="1")]
13691    pub pnum: ::core::option::Option<u32>,
13692    #[prost(uint32, optional, tag="2")]
13693    pub xin_id: ::core::option::Option<u32>,
13694    #[prost(uint32, optional, tag="3")]
13695    pub rd_lim: ::core::option::Option<u32>,
13696    #[prost(uint32, optional, tag="4")]
13697    pub is_vbif_rt: ::core::option::Option<u32>,
13698}
13699#[derive(Clone, PartialEq, ::prost::Message)]
13700pub struct MdpSsppChangeFtraceEvent {
13701    #[prost(uint32, optional, tag="1")]
13702    pub num: ::core::option::Option<u32>,
13703    #[prost(uint32, optional, tag="2")]
13704    pub play_cnt: ::core::option::Option<u32>,
13705    #[prost(uint32, optional, tag="3")]
13706    pub mixer: ::core::option::Option<u32>,
13707    #[prost(uint32, optional, tag="4")]
13708    pub stage: ::core::option::Option<u32>,
13709    #[prost(uint32, optional, tag="5")]
13710    pub flags: ::core::option::Option<u32>,
13711    #[prost(uint32, optional, tag="6")]
13712    pub format: ::core::option::Option<u32>,
13713    #[prost(uint32, optional, tag="7")]
13714    pub img_w: ::core::option::Option<u32>,
13715    #[prost(uint32, optional, tag="8")]
13716    pub img_h: ::core::option::Option<u32>,
13717    #[prost(uint32, optional, tag="9")]
13718    pub src_x: ::core::option::Option<u32>,
13719    #[prost(uint32, optional, tag="10")]
13720    pub src_y: ::core::option::Option<u32>,
13721    #[prost(uint32, optional, tag="11")]
13722    pub src_w: ::core::option::Option<u32>,
13723    #[prost(uint32, optional, tag="12")]
13724    pub src_h: ::core::option::Option<u32>,
13725    #[prost(uint32, optional, tag="13")]
13726    pub dst_x: ::core::option::Option<u32>,
13727    #[prost(uint32, optional, tag="14")]
13728    pub dst_y: ::core::option::Option<u32>,
13729    #[prost(uint32, optional, tag="15")]
13730    pub dst_w: ::core::option::Option<u32>,
13731    #[prost(uint32, optional, tag="16")]
13732    pub dst_h: ::core::option::Option<u32>,
13733}
13734#[derive(Clone, PartialEq, ::prost::Message)]
13735pub struct TracingMarkWriteFtraceEvent {
13736    #[prost(int32, optional, tag="1")]
13737    pub pid: ::core::option::Option<i32>,
13738    #[prost(string, optional, tag="2")]
13739    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13740    #[prost(uint32, optional, tag="3")]
13741    pub trace_begin: ::core::option::Option<u32>,
13742}
13743#[derive(Clone, PartialEq, ::prost::Message)]
13744pub struct MdpCmdPingpongDoneFtraceEvent {
13745    #[prost(uint32, optional, tag="1")]
13746    pub ctl_num: ::core::option::Option<u32>,
13747    #[prost(uint32, optional, tag="2")]
13748    pub intf_num: ::core::option::Option<u32>,
13749    #[prost(uint32, optional, tag="3")]
13750    pub pp_num: ::core::option::Option<u32>,
13751    #[prost(int32, optional, tag="4")]
13752    pub koff_cnt: ::core::option::Option<i32>,
13753}
13754#[derive(Clone, PartialEq, ::prost::Message)]
13755pub struct MdpCompareBwFtraceEvent {
13756    #[prost(uint64, optional, tag="1")]
13757    pub new_ab: ::core::option::Option<u64>,
13758    #[prost(uint64, optional, tag="2")]
13759    pub new_ib: ::core::option::Option<u64>,
13760    #[prost(uint64, optional, tag="3")]
13761    pub new_wb: ::core::option::Option<u64>,
13762    #[prost(uint64, optional, tag="4")]
13763    pub old_ab: ::core::option::Option<u64>,
13764    #[prost(uint64, optional, tag="5")]
13765    pub old_ib: ::core::option::Option<u64>,
13766    #[prost(uint64, optional, tag="6")]
13767    pub old_wb: ::core::option::Option<u64>,
13768    #[prost(uint32, optional, tag="7")]
13769    pub params_changed: ::core::option::Option<u32>,
13770    #[prost(uint32, optional, tag="8")]
13771    pub update_bw: ::core::option::Option<u32>,
13772}
13773#[derive(Clone, PartialEq, ::prost::Message)]
13774pub struct MdpPerfSetPanicLutsFtraceEvent {
13775    #[prost(uint32, optional, tag="1")]
13776    pub pnum: ::core::option::Option<u32>,
13777    #[prost(uint32, optional, tag="2")]
13778    pub fmt: ::core::option::Option<u32>,
13779    #[prost(uint32, optional, tag="3")]
13780    pub mode: ::core::option::Option<u32>,
13781    #[prost(uint32, optional, tag="4")]
13782    pub panic_lut: ::core::option::Option<u32>,
13783    #[prost(uint32, optional, tag="5")]
13784    pub robust_lut: ::core::option::Option<u32>,
13785}
13786#[derive(Clone, PartialEq, ::prost::Message)]
13787pub struct MdpSsppSetFtraceEvent {
13788    #[prost(uint32, optional, tag="1")]
13789    pub num: ::core::option::Option<u32>,
13790    #[prost(uint32, optional, tag="2")]
13791    pub play_cnt: ::core::option::Option<u32>,
13792    #[prost(uint32, optional, tag="3")]
13793    pub mixer: ::core::option::Option<u32>,
13794    #[prost(uint32, optional, tag="4")]
13795    pub stage: ::core::option::Option<u32>,
13796    #[prost(uint32, optional, tag="5")]
13797    pub flags: ::core::option::Option<u32>,
13798    #[prost(uint32, optional, tag="6")]
13799    pub format: ::core::option::Option<u32>,
13800    #[prost(uint32, optional, tag="7")]
13801    pub img_w: ::core::option::Option<u32>,
13802    #[prost(uint32, optional, tag="8")]
13803    pub img_h: ::core::option::Option<u32>,
13804    #[prost(uint32, optional, tag="9")]
13805    pub src_x: ::core::option::Option<u32>,
13806    #[prost(uint32, optional, tag="10")]
13807    pub src_y: ::core::option::Option<u32>,
13808    #[prost(uint32, optional, tag="11")]
13809    pub src_w: ::core::option::Option<u32>,
13810    #[prost(uint32, optional, tag="12")]
13811    pub src_h: ::core::option::Option<u32>,
13812    #[prost(uint32, optional, tag="13")]
13813    pub dst_x: ::core::option::Option<u32>,
13814    #[prost(uint32, optional, tag="14")]
13815    pub dst_y: ::core::option::Option<u32>,
13816    #[prost(uint32, optional, tag="15")]
13817    pub dst_w: ::core::option::Option<u32>,
13818    #[prost(uint32, optional, tag="16")]
13819    pub dst_h: ::core::option::Option<u32>,
13820}
13821#[derive(Clone, PartialEq, ::prost::Message)]
13822pub struct MdpCmdReadptrDoneFtraceEvent {
13823    #[prost(uint32, optional, tag="1")]
13824    pub ctl_num: ::core::option::Option<u32>,
13825    #[prost(int32, optional, tag="2")]
13826    pub koff_cnt: ::core::option::Option<i32>,
13827}
13828#[derive(Clone, PartialEq, ::prost::Message)]
13829pub struct MdpMisrCrcFtraceEvent {
13830    #[prost(uint32, optional, tag="1")]
13831    pub block_id: ::core::option::Option<u32>,
13832    #[prost(uint32, optional, tag="2")]
13833    pub vsync_cnt: ::core::option::Option<u32>,
13834    #[prost(uint32, optional, tag="3")]
13835    pub crc: ::core::option::Option<u32>,
13836}
13837#[derive(Clone, PartialEq, ::prost::Message)]
13838pub struct MdpPerfSetQosLutsFtraceEvent {
13839    #[prost(uint32, optional, tag="1")]
13840    pub pnum: ::core::option::Option<u32>,
13841    #[prost(uint32, optional, tag="2")]
13842    pub fmt: ::core::option::Option<u32>,
13843    #[prost(uint32, optional, tag="3")]
13844    pub intf: ::core::option::Option<u32>,
13845    #[prost(uint32, optional, tag="4")]
13846    pub rot: ::core::option::Option<u32>,
13847    #[prost(uint32, optional, tag="5")]
13848    pub fl: ::core::option::Option<u32>,
13849    #[prost(uint32, optional, tag="6")]
13850    pub lut: ::core::option::Option<u32>,
13851    #[prost(uint32, optional, tag="7")]
13852    pub linear: ::core::option::Option<u32>,
13853}
13854#[derive(Clone, PartialEq, ::prost::Message)]
13855pub struct MdpTraceCounterFtraceEvent {
13856    #[prost(int32, optional, tag="1")]
13857    pub pid: ::core::option::Option<i32>,
13858    #[prost(string, optional, tag="2")]
13859    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
13860    #[prost(int32, optional, tag="3")]
13861    pub value: ::core::option::Option<i32>,
13862}
13863#[derive(Clone, PartialEq, ::prost::Message)]
13864pub struct MdpCmdReleaseBwFtraceEvent {
13865    #[prost(uint32, optional, tag="1")]
13866    pub ctl_num: ::core::option::Option<u32>,
13867}
13868#[derive(Clone, PartialEq, ::prost::Message)]
13869pub struct MdpMixerUpdateFtraceEvent {
13870    #[prost(uint32, optional, tag="1")]
13871    pub mixer_num: ::core::option::Option<u32>,
13872}
13873#[derive(Clone, PartialEq, ::prost::Message)]
13874pub struct MdpPerfSetWmLevelsFtraceEvent {
13875    #[prost(uint32, optional, tag="1")]
13876    pub pnum: ::core::option::Option<u32>,
13877    #[prost(uint32, optional, tag="2")]
13878    pub use_space: ::core::option::Option<u32>,
13879    #[prost(uint32, optional, tag="3")]
13880    pub priority_bytes: ::core::option::Option<u32>,
13881    #[prost(uint32, optional, tag="4")]
13882    pub wm0: ::core::option::Option<u32>,
13883    #[prost(uint32, optional, tag="5")]
13884    pub wm1: ::core::option::Option<u32>,
13885    #[prost(uint32, optional, tag="6")]
13886    pub wm2: ::core::option::Option<u32>,
13887    #[prost(uint32, optional, tag="7")]
13888    pub mb_cnt: ::core::option::Option<u32>,
13889    #[prost(uint32, optional, tag="8")]
13890    pub mb_size: ::core::option::Option<u32>,
13891}
13892#[derive(Clone, PartialEq, ::prost::Message)]
13893pub struct MdpVideoUnderrunDoneFtraceEvent {
13894    #[prost(uint32, optional, tag="1")]
13895    pub ctl_num: ::core::option::Option<u32>,
13896    #[prost(uint32, optional, tag="2")]
13897    pub underrun_cnt: ::core::option::Option<u32>,
13898}
13899#[derive(Clone, PartialEq, ::prost::Message)]
13900pub struct MdpCmdWaitPingpongFtraceEvent {
13901    #[prost(uint32, optional, tag="1")]
13902    pub ctl_num: ::core::option::Option<u32>,
13903    #[prost(int32, optional, tag="2")]
13904    pub kickoff_cnt: ::core::option::Option<i32>,
13905}
13906#[derive(Clone, PartialEq, ::prost::Message)]
13907pub struct MdpPerfPrefillCalcFtraceEvent {
13908    #[prost(uint32, optional, tag="1")]
13909    pub pnum: ::core::option::Option<u32>,
13910    #[prost(uint32, optional, tag="2")]
13911    pub latency_buf: ::core::option::Option<u32>,
13912    #[prost(uint32, optional, tag="3")]
13913    pub ot: ::core::option::Option<u32>,
13914    #[prost(uint32, optional, tag="4")]
13915    pub y_buf: ::core::option::Option<u32>,
13916    #[prost(uint32, optional, tag="5")]
13917    pub y_scaler: ::core::option::Option<u32>,
13918    #[prost(uint32, optional, tag="6")]
13919    pub pp_lines: ::core::option::Option<u32>,
13920    #[prost(uint32, optional, tag="7")]
13921    pub pp_bytes: ::core::option::Option<u32>,
13922    #[prost(uint32, optional, tag="8")]
13923    pub post_sc: ::core::option::Option<u32>,
13924    #[prost(uint32, optional, tag="9")]
13925    pub fbc_bytes: ::core::option::Option<u32>,
13926    #[prost(uint32, optional, tag="10")]
13927    pub prefill_bytes: ::core::option::Option<u32>,
13928}
13929#[derive(Clone, PartialEq, ::prost::Message)]
13930pub struct MdpPerfUpdateBusFtraceEvent {
13931    #[prost(int32, optional, tag="1")]
13932    pub client: ::core::option::Option<i32>,
13933    #[prost(uint64, optional, tag="2")]
13934    pub ab_quota: ::core::option::Option<u64>,
13935    #[prost(uint64, optional, tag="3")]
13936    pub ib_quota: ::core::option::Option<u64>,
13937}
13938#[derive(Clone, PartialEq, ::prost::Message)]
13939pub struct RotatorBwAoAsContextFtraceEvent {
13940    #[prost(uint32, optional, tag="1")]
13941    pub state: ::core::option::Option<u32>,
13942}
13943// End of protos/perfetto/trace/ftrace/mdss.proto
13944
13945// Begin of protos/perfetto/trace/ftrace/mm_event.proto
13946
13947#[derive(Clone, PartialEq, ::prost::Message)]
13948pub struct MmEventRecordFtraceEvent {
13949    #[prost(uint32, optional, tag="1")]
13950    pub avg_lat: ::core::option::Option<u32>,
13951    #[prost(uint32, optional, tag="2")]
13952    pub count: ::core::option::Option<u32>,
13953    #[prost(uint32, optional, tag="3")]
13954    pub max_lat: ::core::option::Option<u32>,
13955    #[prost(uint32, optional, tag="4")]
13956    pub r#type: ::core::option::Option<u32>,
13957}
13958// End of protos/perfetto/trace/ftrace/mm_event.proto
13959
13960// Begin of protos/perfetto/trace/ftrace/net.proto
13961
13962#[derive(Clone, PartialEq, ::prost::Message)]
13963pub struct NetifReceiveSkbFtraceEvent {
13964    #[prost(uint32, optional, tag="1")]
13965    pub len: ::core::option::Option<u32>,
13966    #[prost(string, optional, tag="2")]
13967    pub name: ::core::option::Option<::prost::alloc::string::String>,
13968    #[prost(uint64, optional, tag="3")]
13969    pub skbaddr: ::core::option::Option<u64>,
13970}
13971#[derive(Clone, PartialEq, ::prost::Message)]
13972pub struct NetDevXmitFtraceEvent {
13973    #[prost(uint32, optional, tag="1")]
13974    pub len: ::core::option::Option<u32>,
13975    #[prost(string, optional, tag="2")]
13976    pub name: ::core::option::Option<::prost::alloc::string::String>,
13977    #[prost(int32, optional, tag="3")]
13978    pub rc: ::core::option::Option<i32>,
13979    #[prost(uint64, optional, tag="4")]
13980    pub skbaddr: ::core::option::Option<u64>,
13981}
13982#[derive(Clone, PartialEq, ::prost::Message)]
13983pub struct NapiGroReceiveEntryFtraceEvent {
13984    #[prost(uint32, optional, tag="1")]
13985    pub data_len: ::core::option::Option<u32>,
13986    #[prost(uint32, optional, tag="2")]
13987    pub gso_size: ::core::option::Option<u32>,
13988    #[prost(uint32, optional, tag="3")]
13989    pub gso_type: ::core::option::Option<u32>,
13990    #[prost(uint32, optional, tag="4")]
13991    pub hash: ::core::option::Option<u32>,
13992    #[prost(uint32, optional, tag="5")]
13993    pub ip_summed: ::core::option::Option<u32>,
13994    #[prost(uint32, optional, tag="6")]
13995    pub l4_hash: ::core::option::Option<u32>,
13996    #[prost(uint32, optional, tag="7")]
13997    pub len: ::core::option::Option<u32>,
13998    #[prost(int32, optional, tag="8")]
13999    pub mac_header: ::core::option::Option<i32>,
14000    #[prost(uint32, optional, tag="9")]
14001    pub mac_header_valid: ::core::option::Option<u32>,
14002    #[prost(string, optional, tag="10")]
14003    pub name: ::core::option::Option<::prost::alloc::string::String>,
14004    #[prost(uint32, optional, tag="11")]
14005    pub napi_id: ::core::option::Option<u32>,
14006    #[prost(uint32, optional, tag="12")]
14007    pub nr_frags: ::core::option::Option<u32>,
14008    #[prost(uint32, optional, tag="13")]
14009    pub protocol: ::core::option::Option<u32>,
14010    #[prost(uint32, optional, tag="14")]
14011    pub queue_mapping: ::core::option::Option<u32>,
14012    #[prost(uint64, optional, tag="15")]
14013    pub skbaddr: ::core::option::Option<u64>,
14014    #[prost(uint32, optional, tag="16")]
14015    pub truesize: ::core::option::Option<u32>,
14016    #[prost(uint32, optional, tag="17")]
14017    pub vlan_proto: ::core::option::Option<u32>,
14018    #[prost(uint32, optional, tag="18")]
14019    pub vlan_tagged: ::core::option::Option<u32>,
14020    #[prost(uint32, optional, tag="19")]
14021    pub vlan_tci: ::core::option::Option<u32>,
14022}
14023#[derive(Clone, PartialEq, ::prost::Message)]
14024pub struct NapiGroReceiveExitFtraceEvent {
14025    #[prost(int32, optional, tag="1")]
14026    pub ret: ::core::option::Option<i32>,
14027}
14028// End of protos/perfetto/trace/ftrace/net.proto
14029
14030// Begin of protos/perfetto/trace/ftrace/oom.proto
14031
14032#[derive(Clone, PartialEq, ::prost::Message)]
14033pub struct OomScoreAdjUpdateFtraceEvent {
14034    #[prost(string, optional, tag="1")]
14035    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14036    #[prost(int32, optional, tag="2")]
14037    pub oom_score_adj: ::core::option::Option<i32>,
14038    #[prost(int32, optional, tag="3")]
14039    pub pid: ::core::option::Option<i32>,
14040}
14041#[derive(Clone, PartialEq, ::prost::Message)]
14042pub struct MarkVictimFtraceEvent {
14043    #[prost(int32, optional, tag="1")]
14044    pub pid: ::core::option::Option<i32>,
14045}
14046// End of protos/perfetto/trace/ftrace/oom.proto
14047
14048// Begin of protos/perfetto/trace/ftrace/panel.proto
14049
14050#[derive(Clone, PartialEq, ::prost::Message)]
14051pub struct DsiCmdFifoStatusFtraceEvent {
14052    #[prost(uint32, optional, tag="1")]
14053    pub header: ::core::option::Option<u32>,
14054    #[prost(uint32, optional, tag="2")]
14055    pub payload: ::core::option::Option<u32>,
14056}
14057#[derive(Clone, PartialEq, ::prost::Message)]
14058pub struct DsiRxFtraceEvent {
14059    #[prost(uint32, optional, tag="1")]
14060    pub cmd: ::core::option::Option<u32>,
14061    #[prost(uint32, optional, tag="2")]
14062    pub rx_buf: ::core::option::Option<u32>,
14063}
14064#[derive(Clone, PartialEq, ::prost::Message)]
14065pub struct DsiTxFtraceEvent {
14066    #[prost(uint32, optional, tag="1")]
14067    pub last: ::core::option::Option<u32>,
14068    #[prost(uint32, optional, tag="2")]
14069    pub tx_buf: ::core::option::Option<u32>,
14070    #[prost(uint32, optional, tag="3")]
14071    pub r#type: ::core::option::Option<u32>,
14072}
14073#[derive(Clone, PartialEq, ::prost::Message)]
14074pub struct PanelWriteGenericFtraceEvent {
14075    #[prost(int32, optional, tag="1")]
14076    pub pid: ::core::option::Option<i32>,
14077    #[prost(string, optional, tag="2")]
14078    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14079    #[prost(uint32, optional, tag="3")]
14080    pub trace_begin: ::core::option::Option<u32>,
14081    #[prost(string, optional, tag="4")]
14082    pub name: ::core::option::Option<::prost::alloc::string::String>,
14083    #[prost(uint32, optional, tag="5")]
14084    pub r#type: ::core::option::Option<u32>,
14085    #[prost(int32, optional, tag="6")]
14086    pub value: ::core::option::Option<i32>,
14087}
14088// End of protos/perfetto/trace/ftrace/panel.proto
14089
14090// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14091
14092#[derive(Clone, PartialEq, ::prost::Message)]
14093pub struct SchedSwitchWithCtrsFtraceEvent {
14094    #[prost(int32, optional, tag="1")]
14095    pub old_pid: ::core::option::Option<i32>,
14096    #[prost(int32, optional, tag="2")]
14097    pub new_pid: ::core::option::Option<i32>,
14098    #[prost(uint64, optional, tag="3")]
14099    pub cctr: ::core::option::Option<u64>,
14100    #[prost(uint64, optional, tag="4")]
14101    pub ctr0: ::core::option::Option<u64>,
14102    #[prost(uint64, optional, tag="5")]
14103    pub ctr1: ::core::option::Option<u64>,
14104    #[prost(uint64, optional, tag="6")]
14105    pub ctr2: ::core::option::Option<u64>,
14106    #[prost(uint64, optional, tag="7")]
14107    pub ctr3: ::core::option::Option<u64>,
14108    #[prost(uint32, optional, tag="8")]
14109    pub lctr0: ::core::option::Option<u32>,
14110    #[prost(uint32, optional, tag="9")]
14111    pub lctr1: ::core::option::Option<u32>,
14112    #[prost(uint64, optional, tag="10")]
14113    pub ctr4: ::core::option::Option<u64>,
14114    #[prost(uint64, optional, tag="11")]
14115    pub ctr5: ::core::option::Option<u64>,
14116    #[prost(string, optional, tag="12")]
14117    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14118    #[prost(int32, optional, tag="13")]
14119    pub prev_pid: ::core::option::Option<i32>,
14120    #[prost(uint32, optional, tag="14")]
14121    pub cyc: ::core::option::Option<u32>,
14122    #[prost(uint32, optional, tag="15")]
14123    pub inst: ::core::option::Option<u32>,
14124    #[prost(uint32, optional, tag="16")]
14125    pub stallbm: ::core::option::Option<u32>,
14126    #[prost(uint32, optional, tag="17")]
14127    pub l3dm: ::core::option::Option<u32>,
14128    #[prost(int32, optional, tag="18")]
14129    pub next_pid: ::core::option::Option<i32>,
14130    #[prost(string, optional, tag="19")]
14131    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14132    #[prost(int64, optional, tag="20")]
14133    pub prev_state: ::core::option::Option<i64>,
14134    #[prost(uint64, optional, tag="21")]
14135    pub amu0: ::core::option::Option<u64>,
14136    #[prost(uint64, optional, tag="22")]
14137    pub amu1: ::core::option::Option<u64>,
14138    #[prost(uint64, optional, tag="23")]
14139    pub amu2: ::core::option::Option<u64>,
14140}
14141// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14142
14143// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
14144
14145#[derive(Clone, PartialEq, ::prost::Message)]
14146pub struct PixelMmKswapdWakeFtraceEvent {
14147    #[prost(int32, optional, tag="1")]
14148    pub whatever: ::core::option::Option<i32>,
14149}
14150#[derive(Clone, PartialEq, ::prost::Message)]
14151pub struct PixelMmKswapdDoneFtraceEvent {
14152    #[prost(uint64, optional, tag="1")]
14153    pub delta_nr_scanned: ::core::option::Option<u64>,
14154    #[prost(uint64, optional, tag="2")]
14155    pub delta_nr_reclaimed: ::core::option::Option<u64>,
14156}
14157// End of protos/perfetto/trace/ftrace/pixel_mm.proto
14158
14159// Begin of protos/perfetto/trace/ftrace/power.proto
14160
14161#[derive(Clone, PartialEq, ::prost::Message)]
14162pub struct CpuFrequencyFtraceEvent {
14163    #[prost(uint32, optional, tag="1")]
14164    pub state: ::core::option::Option<u32>,
14165    #[prost(uint32, optional, tag="2")]
14166    pub cpu_id: ::core::option::Option<u32>,
14167}
14168#[derive(Clone, PartialEq, ::prost::Message)]
14169pub struct CpuFrequencyLimitsFtraceEvent {
14170    #[prost(uint32, optional, tag="1")]
14171    pub min_freq: ::core::option::Option<u32>,
14172    #[prost(uint32, optional, tag="2")]
14173    pub max_freq: ::core::option::Option<u32>,
14174    #[prost(uint32, optional, tag="3")]
14175    pub cpu_id: ::core::option::Option<u32>,
14176}
14177#[derive(Clone, PartialEq, ::prost::Message)]
14178pub struct CpuIdleFtraceEvent {
14179    #[prost(uint32, optional, tag="1")]
14180    pub state: ::core::option::Option<u32>,
14181    #[prost(uint32, optional, tag="2")]
14182    pub cpu_id: ::core::option::Option<u32>,
14183}
14184#[derive(Clone, PartialEq, ::prost::Message)]
14185pub struct ClockEnableFtraceEvent {
14186    #[prost(string, optional, tag="1")]
14187    pub name: ::core::option::Option<::prost::alloc::string::String>,
14188    #[prost(uint64, optional, tag="2")]
14189    pub state: ::core::option::Option<u64>,
14190    #[prost(uint64, optional, tag="3")]
14191    pub cpu_id: ::core::option::Option<u64>,
14192}
14193#[derive(Clone, PartialEq, ::prost::Message)]
14194pub struct ClockDisableFtraceEvent {
14195    #[prost(string, optional, tag="1")]
14196    pub name: ::core::option::Option<::prost::alloc::string::String>,
14197    #[prost(uint64, optional, tag="2")]
14198    pub state: ::core::option::Option<u64>,
14199    #[prost(uint64, optional, tag="3")]
14200    pub cpu_id: ::core::option::Option<u64>,
14201}
14202#[derive(Clone, PartialEq, ::prost::Message)]
14203pub struct ClockSetRateFtraceEvent {
14204    #[prost(string, optional, tag="1")]
14205    pub name: ::core::option::Option<::prost::alloc::string::String>,
14206    #[prost(uint64, optional, tag="2")]
14207    pub state: ::core::option::Option<u64>,
14208    #[prost(uint64, optional, tag="3")]
14209    pub cpu_id: ::core::option::Option<u64>,
14210}
14211#[derive(Clone, PartialEq, ::prost::Message)]
14212pub struct SuspendResumeFtraceEvent {
14213    #[prost(string, optional, tag="1")]
14214    pub action: ::core::option::Option<::prost::alloc::string::String>,
14215    #[prost(int32, optional, tag="2")]
14216    pub val: ::core::option::Option<i32>,
14217    #[prost(uint32, optional, tag="3")]
14218    pub start: ::core::option::Option<u32>,
14219}
14220#[derive(Clone, PartialEq, ::prost::Message)]
14221pub struct GpuFrequencyFtraceEvent {
14222    #[prost(uint32, optional, tag="1")]
14223    pub gpu_id: ::core::option::Option<u32>,
14224    #[prost(uint32, optional, tag="2")]
14225    pub state: ::core::option::Option<u32>,
14226}
14227#[derive(Clone, PartialEq, ::prost::Message)]
14228pub struct WakeupSourceActivateFtraceEvent {
14229    #[prost(string, optional, tag="1")]
14230    pub name: ::core::option::Option<::prost::alloc::string::String>,
14231    #[prost(uint64, optional, tag="2")]
14232    pub state: ::core::option::Option<u64>,
14233}
14234#[derive(Clone, PartialEq, ::prost::Message)]
14235pub struct WakeupSourceDeactivateFtraceEvent {
14236    #[prost(string, optional, tag="1")]
14237    pub name: ::core::option::Option<::prost::alloc::string::String>,
14238    #[prost(uint64, optional, tag="2")]
14239    pub state: ::core::option::Option<u64>,
14240}
14241#[derive(Clone, PartialEq, ::prost::Message)]
14242pub struct GpuWorkPeriodFtraceEvent {
14243    #[prost(uint32, optional, tag="1")]
14244    pub gpu_id: ::core::option::Option<u32>,
14245    #[prost(uint32, optional, tag="2")]
14246    pub uid: ::core::option::Option<u32>,
14247    #[prost(uint64, optional, tag="3")]
14248    pub start_time_ns: ::core::option::Option<u64>,
14249    #[prost(uint64, optional, tag="4")]
14250    pub end_time_ns: ::core::option::Option<u64>,
14251    #[prost(uint64, optional, tag="5")]
14252    pub total_active_duration_ns: ::core::option::Option<u64>,
14253}
14254#[derive(Clone, PartialEq, ::prost::Message)]
14255pub struct DevicePmCallbackStartFtraceEvent {
14256    #[prost(string, optional, tag="1")]
14257    pub device: ::core::option::Option<::prost::alloc::string::String>,
14258    #[prost(string, optional, tag="2")]
14259    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14260    #[prost(string, optional, tag="3")]
14261    pub parent: ::core::option::Option<::prost::alloc::string::String>,
14262    #[prost(string, optional, tag="4")]
14263    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
14264    #[prost(int32, optional, tag="5")]
14265    pub event: ::core::option::Option<i32>,
14266}
14267#[derive(Clone, PartialEq, ::prost::Message)]
14268pub struct DevicePmCallbackEndFtraceEvent {
14269    #[prost(string, optional, tag="1")]
14270    pub device: ::core::option::Option<::prost::alloc::string::String>,
14271    #[prost(string, optional, tag="2")]
14272    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14273    #[prost(int32, optional, tag="3")]
14274    pub error: ::core::option::Option<i32>,
14275}
14276// End of protos/perfetto/trace/ftrace/power.proto
14277
14278// Begin of protos/perfetto/trace/ftrace/printk.proto
14279
14280#[derive(Clone, PartialEq, ::prost::Message)]
14281pub struct ConsoleFtraceEvent {
14282    #[prost(string, optional, tag="1")]
14283    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14284}
14285// End of protos/perfetto/trace/ftrace/printk.proto
14286
14287// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
14288
14289#[derive(Clone, PartialEq, ::prost::Message)]
14290pub struct SysEnterFtraceEvent {
14291    #[prost(int64, optional, tag="1")]
14292    pub id: ::core::option::Option<i64>,
14293    #[prost(uint64, repeated, packed="false", tag="2")]
14294    pub args: ::prost::alloc::vec::Vec<u64>,
14295}
14296#[derive(Clone, PartialEq, ::prost::Message)]
14297pub struct SysExitFtraceEvent {
14298    #[prost(int64, optional, tag="1")]
14299    pub id: ::core::option::Option<i64>,
14300    #[prost(int64, optional, tag="2")]
14301    pub ret: ::core::option::Option<i64>,
14302}
14303// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
14304
14305// Begin of protos/perfetto/trace/ftrace/regulator.proto
14306
14307#[derive(Clone, PartialEq, ::prost::Message)]
14308pub struct RegulatorDisableFtraceEvent {
14309    #[prost(string, optional, tag="1")]
14310    pub name: ::core::option::Option<::prost::alloc::string::String>,
14311}
14312#[derive(Clone, PartialEq, ::prost::Message)]
14313pub struct RegulatorDisableCompleteFtraceEvent {
14314    #[prost(string, optional, tag="1")]
14315    pub name: ::core::option::Option<::prost::alloc::string::String>,
14316}
14317#[derive(Clone, PartialEq, ::prost::Message)]
14318pub struct RegulatorEnableFtraceEvent {
14319    #[prost(string, optional, tag="1")]
14320    pub name: ::core::option::Option<::prost::alloc::string::String>,
14321}
14322#[derive(Clone, PartialEq, ::prost::Message)]
14323pub struct RegulatorEnableCompleteFtraceEvent {
14324    #[prost(string, optional, tag="1")]
14325    pub name: ::core::option::Option<::prost::alloc::string::String>,
14326}
14327#[derive(Clone, PartialEq, ::prost::Message)]
14328pub struct RegulatorEnableDelayFtraceEvent {
14329    #[prost(string, optional, tag="1")]
14330    pub name: ::core::option::Option<::prost::alloc::string::String>,
14331}
14332#[derive(Clone, PartialEq, ::prost::Message)]
14333pub struct RegulatorSetVoltageFtraceEvent {
14334    #[prost(string, optional, tag="1")]
14335    pub name: ::core::option::Option<::prost::alloc::string::String>,
14336    #[prost(int32, optional, tag="2")]
14337    pub min: ::core::option::Option<i32>,
14338    #[prost(int32, optional, tag="3")]
14339    pub max: ::core::option::Option<i32>,
14340}
14341#[derive(Clone, PartialEq, ::prost::Message)]
14342pub struct RegulatorSetVoltageCompleteFtraceEvent {
14343    #[prost(string, optional, tag="1")]
14344    pub name: ::core::option::Option<::prost::alloc::string::String>,
14345    #[prost(uint32, optional, tag="2")]
14346    pub val: ::core::option::Option<u32>,
14347}
14348// End of protos/perfetto/trace/ftrace/regulator.proto
14349
14350// Begin of protos/perfetto/trace/ftrace/rpm.proto
14351
14352#[derive(Clone, PartialEq, ::prost::Message)]
14353pub struct RpmStatusFtraceEvent {
14354    #[prost(string, optional, tag="1")]
14355    pub name: ::core::option::Option<::prost::alloc::string::String>,
14356    #[prost(int32, optional, tag="2")]
14357    pub status: ::core::option::Option<i32>,
14358}
14359// End of protos/perfetto/trace/ftrace/rpm.proto
14360
14361// Begin of protos/perfetto/trace/ftrace/samsung.proto
14362
14363#[derive(Clone, PartialEq, ::prost::Message)]
14364pub struct SamsungTracingMarkWriteFtraceEvent {
14365    #[prost(int32, optional, tag="1")]
14366    pub pid: ::core::option::Option<i32>,
14367    #[prost(string, optional, tag="2")]
14368    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14369    #[prost(uint32, optional, tag="3")]
14370    pub trace_begin: ::core::option::Option<u32>,
14371    #[prost(uint32, optional, tag="4")]
14372    pub trace_type: ::core::option::Option<u32>,
14373    #[prost(int32, optional, tag="5")]
14374    pub value: ::core::option::Option<i32>,
14375}
14376// End of protos/perfetto/trace/ftrace/samsung.proto
14377
14378// Begin of protos/perfetto/trace/ftrace/sched.proto
14379
14380#[derive(Clone, PartialEq, ::prost::Message)]
14381pub struct SchedSwitchFtraceEvent {
14382    #[prost(string, optional, tag="1")]
14383    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14384    #[prost(int32, optional, tag="2")]
14385    pub prev_pid: ::core::option::Option<i32>,
14386    #[prost(int32, optional, tag="3")]
14387    pub prev_prio: ::core::option::Option<i32>,
14388    #[prost(int64, optional, tag="4")]
14389    pub prev_state: ::core::option::Option<i64>,
14390    #[prost(string, optional, tag="5")]
14391    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14392    #[prost(int32, optional, tag="6")]
14393    pub next_pid: ::core::option::Option<i32>,
14394    #[prost(int32, optional, tag="7")]
14395    pub next_prio: ::core::option::Option<i32>,
14396}
14397#[derive(Clone, PartialEq, ::prost::Message)]
14398pub struct SchedWakeupFtraceEvent {
14399    #[prost(string, optional, tag="1")]
14400    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14401    #[prost(int32, optional, tag="2")]
14402    pub pid: ::core::option::Option<i32>,
14403    #[prost(int32, optional, tag="3")]
14404    pub prio: ::core::option::Option<i32>,
14405    #[prost(int32, optional, tag="4")]
14406    pub success: ::core::option::Option<i32>,
14407    #[prost(int32, optional, tag="5")]
14408    pub target_cpu: ::core::option::Option<i32>,
14409}
14410#[derive(Clone, PartialEq, ::prost::Message)]
14411pub struct SchedBlockedReasonFtraceEvent {
14412    #[prost(int32, optional, tag="1")]
14413    pub pid: ::core::option::Option<i32>,
14414    #[prost(uint64, optional, tag="2")]
14415    pub caller: ::core::option::Option<u64>,
14416    #[prost(uint32, optional, tag="3")]
14417    pub io_wait: ::core::option::Option<u32>,
14418}
14419#[derive(Clone, PartialEq, ::prost::Message)]
14420pub struct SchedCpuHotplugFtraceEvent {
14421    #[prost(int32, optional, tag="1")]
14422    pub affected_cpu: ::core::option::Option<i32>,
14423    #[prost(int32, optional, tag="2")]
14424    pub error: ::core::option::Option<i32>,
14425    #[prost(int32, optional, tag="3")]
14426    pub status: ::core::option::Option<i32>,
14427}
14428#[derive(Clone, PartialEq, ::prost::Message)]
14429pub struct SchedWakingFtraceEvent {
14430    #[prost(string, optional, tag="1")]
14431    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14432    #[prost(int32, optional, tag="2")]
14433    pub pid: ::core::option::Option<i32>,
14434    #[prost(int32, optional, tag="3")]
14435    pub prio: ::core::option::Option<i32>,
14436    #[prost(int32, optional, tag="4")]
14437    pub success: ::core::option::Option<i32>,
14438    #[prost(int32, optional, tag="5")]
14439    pub target_cpu: ::core::option::Option<i32>,
14440}
14441#[derive(Clone, PartialEq, ::prost::Message)]
14442pub struct SchedWakeupNewFtraceEvent {
14443    #[prost(string, optional, tag="1")]
14444    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14445    #[prost(int32, optional, tag="2")]
14446    pub pid: ::core::option::Option<i32>,
14447    #[prost(int32, optional, tag="3")]
14448    pub prio: ::core::option::Option<i32>,
14449    #[prost(int32, optional, tag="4")]
14450    pub success: ::core::option::Option<i32>,
14451    #[prost(int32, optional, tag="5")]
14452    pub target_cpu: ::core::option::Option<i32>,
14453}
14454#[derive(Clone, PartialEq, ::prost::Message)]
14455pub struct SchedProcessExecFtraceEvent {
14456    #[prost(string, optional, tag="1")]
14457    pub filename: ::core::option::Option<::prost::alloc::string::String>,
14458    #[prost(int32, optional, tag="2")]
14459    pub pid: ::core::option::Option<i32>,
14460    #[prost(int32, optional, tag="3")]
14461    pub old_pid: ::core::option::Option<i32>,
14462}
14463#[derive(Clone, PartialEq, ::prost::Message)]
14464pub struct SchedProcessExitFtraceEvent {
14465    #[prost(string, optional, tag="1")]
14466    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14467    #[prost(int32, optional, tag="2")]
14468    pub pid: ::core::option::Option<i32>,
14469    #[prost(int32, optional, tag="3")]
14470    pub tgid: ::core::option::Option<i32>,
14471    #[prost(int32, optional, tag="4")]
14472    pub prio: ::core::option::Option<i32>,
14473}
14474#[derive(Clone, PartialEq, ::prost::Message)]
14475pub struct SchedProcessForkFtraceEvent {
14476    #[prost(string, optional, tag="1")]
14477    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
14478    #[prost(int32, optional, tag="2")]
14479    pub parent_pid: ::core::option::Option<i32>,
14480    #[prost(string, optional, tag="3")]
14481    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
14482    #[prost(int32, optional, tag="4")]
14483    pub child_pid: ::core::option::Option<i32>,
14484}
14485#[derive(Clone, PartialEq, ::prost::Message)]
14486pub struct SchedProcessFreeFtraceEvent {
14487    #[prost(string, optional, tag="1")]
14488    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14489    #[prost(int32, optional, tag="2")]
14490    pub pid: ::core::option::Option<i32>,
14491    #[prost(int32, optional, tag="3")]
14492    pub prio: ::core::option::Option<i32>,
14493}
14494#[derive(Clone, PartialEq, ::prost::Message)]
14495pub struct SchedProcessHangFtraceEvent {
14496    #[prost(string, optional, tag="1")]
14497    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14498    #[prost(int32, optional, tag="2")]
14499    pub pid: ::core::option::Option<i32>,
14500}
14501#[derive(Clone, PartialEq, ::prost::Message)]
14502pub struct SchedProcessWaitFtraceEvent {
14503    #[prost(string, optional, tag="1")]
14504    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14505    #[prost(int32, optional, tag="2")]
14506    pub pid: ::core::option::Option<i32>,
14507    #[prost(int32, optional, tag="3")]
14508    pub prio: ::core::option::Option<i32>,
14509}
14510#[derive(Clone, PartialEq, ::prost::Message)]
14511pub struct SchedPiSetprioFtraceEvent {
14512    #[prost(string, optional, tag="1")]
14513    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14514    #[prost(int32, optional, tag="2")]
14515    pub newprio: ::core::option::Option<i32>,
14516    #[prost(int32, optional, tag="3")]
14517    pub oldprio: ::core::option::Option<i32>,
14518    #[prost(int32, optional, tag="4")]
14519    pub pid: ::core::option::Option<i32>,
14520}
14521#[derive(Clone, PartialEq, ::prost::Message)]
14522pub struct SchedCpuUtilCfsFtraceEvent {
14523    #[prost(int32, optional, tag="1")]
14524    pub active: ::core::option::Option<i32>,
14525    #[prost(uint64, optional, tag="2")]
14526    pub capacity: ::core::option::Option<u64>,
14527    #[prost(uint64, optional, tag="3")]
14528    pub capacity_orig: ::core::option::Option<u64>,
14529    #[prost(uint32, optional, tag="4")]
14530    pub cpu: ::core::option::Option<u32>,
14531    #[prost(uint64, optional, tag="5")]
14532    pub cpu_importance: ::core::option::Option<u64>,
14533    #[prost(uint64, optional, tag="6")]
14534    pub cpu_util: ::core::option::Option<u64>,
14535    #[prost(uint32, optional, tag="7")]
14536    pub exit_lat: ::core::option::Option<u32>,
14537    #[prost(uint64, optional, tag="8")]
14538    pub group_capacity: ::core::option::Option<u64>,
14539    #[prost(uint32, optional, tag="9")]
14540    pub grp_overutilized: ::core::option::Option<u32>,
14541    #[prost(uint32, optional, tag="10")]
14542    pub idle_cpu: ::core::option::Option<u32>,
14543    #[prost(uint32, optional, tag="11")]
14544    pub nr_running: ::core::option::Option<u32>,
14545    #[prost(int64, optional, tag="12")]
14546    pub spare_cap: ::core::option::Option<i64>,
14547    #[prost(uint32, optional, tag="13")]
14548    pub task_fits: ::core::option::Option<u32>,
14549    #[prost(uint64, optional, tag="14")]
14550    pub wake_group_util: ::core::option::Option<u64>,
14551    #[prost(uint64, optional, tag="15")]
14552    pub wake_util: ::core::option::Option<u64>,
14553}
14554#[derive(Clone, PartialEq, ::prost::Message)]
14555pub struct SchedMigrateTaskFtraceEvent {
14556    #[prost(string, optional, tag="1")]
14557    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14558    #[prost(int32, optional, tag="2")]
14559    pub pid: ::core::option::Option<i32>,
14560    #[prost(int32, optional, tag="3")]
14561    pub prio: ::core::option::Option<i32>,
14562    #[prost(int32, optional, tag="4")]
14563    pub orig_cpu: ::core::option::Option<i32>,
14564    #[prost(int32, optional, tag="5")]
14565    pub dest_cpu: ::core::option::Option<i32>,
14566    #[prost(int32, optional, tag="6")]
14567    pub running: ::core::option::Option<i32>,
14568    #[prost(uint32, optional, tag="7")]
14569    pub load: ::core::option::Option<u32>,
14570}
14571#[derive(Clone, PartialEq, ::prost::Message)]
14572pub struct SchedWakeupTaskAttrFtraceEvent {
14573    #[prost(int32, optional, tag="1")]
14574    pub pid: ::core::option::Option<i32>,
14575    #[prost(uint64, optional, tag="2")]
14576    pub cpu_affinity: ::core::option::Option<u64>,
14577    #[prost(uint64, optional, tag="3")]
14578    pub task_util: ::core::option::Option<u64>,
14579    #[prost(uint64, optional, tag="4")]
14580    pub uclamp_min: ::core::option::Option<u64>,
14581    #[prost(uint64, optional, tag="5")]
14582    pub vruntime: ::core::option::Option<u64>,
14583}
14584// End of protos/perfetto/trace/ftrace/sched.proto
14585
14586// Begin of protos/perfetto/trace/ftrace/scm.proto
14587
14588#[derive(Clone, PartialEq, ::prost::Message)]
14589pub struct ScmCallStartFtraceEvent {
14590    #[prost(uint32, optional, tag="1")]
14591    pub arginfo: ::core::option::Option<u32>,
14592    #[prost(uint64, optional, tag="2")]
14593    pub x0: ::core::option::Option<u64>,
14594    #[prost(uint64, optional, tag="3")]
14595    pub x5: ::core::option::Option<u64>,
14596}
14597#[derive(Clone, PartialEq, ::prost::Message)]
14598pub struct ScmCallEndFtraceEvent {
14599}
14600// End of protos/perfetto/trace/ftrace/scm.proto
14601
14602// Begin of protos/perfetto/trace/ftrace/sde.proto
14603
14604#[derive(Clone, PartialEq, ::prost::Message)]
14605pub struct SdeTracingMarkWriteFtraceEvent {
14606    #[prost(int32, optional, tag="1")]
14607    pub pid: ::core::option::Option<i32>,
14608    #[prost(string, optional, tag="2")]
14609    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14610    #[prost(uint32, optional, tag="3")]
14611    pub trace_type: ::core::option::Option<u32>,
14612    #[prost(int32, optional, tag="4")]
14613    pub value: ::core::option::Option<i32>,
14614    #[prost(uint32, optional, tag="5")]
14615    pub trace_begin: ::core::option::Option<u32>,
14616}
14617#[derive(Clone, PartialEq, ::prost::Message)]
14618pub struct SdeSdeEvtlogFtraceEvent {
14619    #[prost(string, optional, tag="1")]
14620    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
14621    #[prost(int32, optional, tag="2")]
14622    pub pid: ::core::option::Option<i32>,
14623    #[prost(uint32, optional, tag="3")]
14624    pub tag_id: ::core::option::Option<u32>,
14625}
14626#[derive(Clone, PartialEq, ::prost::Message)]
14627pub struct SdeSdePerfCalcCrtcFtraceEvent {
14628    #[prost(uint64, optional, tag="1")]
14629    pub bw_ctl_ebi: ::core::option::Option<u64>,
14630    #[prost(uint64, optional, tag="2")]
14631    pub bw_ctl_llcc: ::core::option::Option<u64>,
14632    #[prost(uint64, optional, tag="3")]
14633    pub bw_ctl_mnoc: ::core::option::Option<u64>,
14634    #[prost(uint32, optional, tag="4")]
14635    pub core_clk_rate: ::core::option::Option<u32>,
14636    #[prost(uint32, optional, tag="5")]
14637    pub crtc: ::core::option::Option<u32>,
14638    #[prost(uint64, optional, tag="6")]
14639    pub ib_ebi: ::core::option::Option<u64>,
14640    #[prost(uint64, optional, tag="7")]
14641    pub ib_llcc: ::core::option::Option<u64>,
14642    #[prost(uint64, optional, tag="8")]
14643    pub ib_mnoc: ::core::option::Option<u64>,
14644}
14645#[derive(Clone, PartialEq, ::prost::Message)]
14646pub struct SdeSdePerfCrtcUpdateFtraceEvent {
14647    #[prost(uint64, optional, tag="1")]
14648    pub bw_ctl_ebi: ::core::option::Option<u64>,
14649    #[prost(uint64, optional, tag="2")]
14650    pub bw_ctl_llcc: ::core::option::Option<u64>,
14651    #[prost(uint64, optional, tag="3")]
14652    pub bw_ctl_mnoc: ::core::option::Option<u64>,
14653    #[prost(uint32, optional, tag="4")]
14654    pub core_clk_rate: ::core::option::Option<u32>,
14655    #[prost(uint32, optional, tag="5")]
14656    pub crtc: ::core::option::Option<u32>,
14657    #[prost(int32, optional, tag="6")]
14658    pub params: ::core::option::Option<i32>,
14659    #[prost(uint64, optional, tag="7")]
14660    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
14661    #[prost(uint64, optional, tag="8")]
14662    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
14663    #[prost(uint64, optional, tag="9")]
14664    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
14665    #[prost(uint32, optional, tag="10")]
14666    pub stop_req: ::core::option::Option<u32>,
14667    #[prost(uint32, optional, tag="11")]
14668    pub update_bus: ::core::option::Option<u32>,
14669    #[prost(uint32, optional, tag="12")]
14670    pub update_clk: ::core::option::Option<u32>,
14671}
14672#[derive(Clone, PartialEq, ::prost::Message)]
14673pub struct SdeSdePerfSetQosLutsFtraceEvent {
14674    #[prost(uint32, optional, tag="1")]
14675    pub fl: ::core::option::Option<u32>,
14676    #[prost(uint32, optional, tag="2")]
14677    pub fmt: ::core::option::Option<u32>,
14678    #[prost(uint64, optional, tag="3")]
14679    pub lut: ::core::option::Option<u64>,
14680    #[prost(uint32, optional, tag="4")]
14681    pub lut_usage: ::core::option::Option<u32>,
14682    #[prost(uint32, optional, tag="5")]
14683    pub pnum: ::core::option::Option<u32>,
14684    #[prost(uint32, optional, tag="6")]
14685    pub rt: ::core::option::Option<u32>,
14686}
14687#[derive(Clone, PartialEq, ::prost::Message)]
14688pub struct SdeSdePerfUpdateBusFtraceEvent {
14689    #[prost(uint64, optional, tag="1")]
14690    pub ab_quota: ::core::option::Option<u64>,
14691    #[prost(uint32, optional, tag="2")]
14692    pub bus_id: ::core::option::Option<u32>,
14693    #[prost(int32, optional, tag="3")]
14694    pub client: ::core::option::Option<i32>,
14695    #[prost(uint64, optional, tag="4")]
14696    pub ib_quota: ::core::option::Option<u64>,
14697}
14698// End of protos/perfetto/trace/ftrace/sde.proto
14699
14700// Begin of protos/perfetto/trace/ftrace/signal.proto
14701
14702#[derive(Clone, PartialEq, ::prost::Message)]
14703pub struct SignalDeliverFtraceEvent {
14704    #[prost(int32, optional, tag="1")]
14705    pub code: ::core::option::Option<i32>,
14706    #[prost(uint64, optional, tag="2")]
14707    pub sa_flags: ::core::option::Option<u64>,
14708    #[prost(int32, optional, tag="3")]
14709    pub sig: ::core::option::Option<i32>,
14710}
14711#[derive(Clone, PartialEq, ::prost::Message)]
14712pub struct SignalGenerateFtraceEvent {
14713    #[prost(int32, optional, tag="1")]
14714    pub code: ::core::option::Option<i32>,
14715    #[prost(string, optional, tag="2")]
14716    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14717    #[prost(int32, optional, tag="3")]
14718    pub group: ::core::option::Option<i32>,
14719    #[prost(int32, optional, tag="4")]
14720    pub pid: ::core::option::Option<i32>,
14721    #[prost(int32, optional, tag="5")]
14722    pub result: ::core::option::Option<i32>,
14723    #[prost(int32, optional, tag="6")]
14724    pub sig: ::core::option::Option<i32>,
14725}
14726// End of protos/perfetto/trace/ftrace/signal.proto
14727
14728// Begin of protos/perfetto/trace/ftrace/skb.proto
14729
14730#[derive(Clone, PartialEq, ::prost::Message)]
14731pub struct KfreeSkbFtraceEvent {
14732    #[prost(uint64, optional, tag="1")]
14733    pub location: ::core::option::Option<u64>,
14734    #[prost(uint32, optional, tag="2")]
14735    pub protocol: ::core::option::Option<u32>,
14736    #[prost(uint64, optional, tag="3")]
14737    pub skbaddr: ::core::option::Option<u64>,
14738}
14739// End of protos/perfetto/trace/ftrace/skb.proto
14740
14741// Begin of protos/perfetto/trace/ftrace/sock.proto
14742
14743#[derive(Clone, PartialEq, ::prost::Message)]
14744pub struct InetSockSetStateFtraceEvent {
14745    #[prost(uint32, optional, tag="1")]
14746    pub daddr: ::core::option::Option<u32>,
14747    #[prost(uint32, optional, tag="2")]
14748    pub dport: ::core::option::Option<u32>,
14749    #[prost(uint32, optional, tag="3")]
14750    pub family: ::core::option::Option<u32>,
14751    #[prost(int32, optional, tag="4")]
14752    pub newstate: ::core::option::Option<i32>,
14753    #[prost(int32, optional, tag="5")]
14754    pub oldstate: ::core::option::Option<i32>,
14755    #[prost(uint32, optional, tag="6")]
14756    pub protocol: ::core::option::Option<u32>,
14757    #[prost(uint32, optional, tag="7")]
14758    pub saddr: ::core::option::Option<u32>,
14759    #[prost(uint64, optional, tag="8")]
14760    pub skaddr: ::core::option::Option<u64>,
14761    #[prost(uint32, optional, tag="9")]
14762    pub sport: ::core::option::Option<u32>,
14763}
14764// End of protos/perfetto/trace/ftrace/sock.proto
14765
14766// Begin of protos/perfetto/trace/ftrace/sync.proto
14767
14768#[derive(Clone, PartialEq, ::prost::Message)]
14769pub struct SyncPtFtraceEvent {
14770    #[prost(string, optional, tag="1")]
14771    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
14772    #[prost(string, optional, tag="2")]
14773    pub value: ::core::option::Option<::prost::alloc::string::String>,
14774}
14775#[derive(Clone, PartialEq, ::prost::Message)]
14776pub struct SyncTimelineFtraceEvent {
14777    #[prost(string, optional, tag="1")]
14778    pub name: ::core::option::Option<::prost::alloc::string::String>,
14779    #[prost(string, optional, tag="2")]
14780    pub value: ::core::option::Option<::prost::alloc::string::String>,
14781}
14782#[derive(Clone, PartialEq, ::prost::Message)]
14783pub struct SyncWaitFtraceEvent {
14784    #[prost(string, optional, tag="1")]
14785    pub name: ::core::option::Option<::prost::alloc::string::String>,
14786    #[prost(int32, optional, tag="2")]
14787    pub status: ::core::option::Option<i32>,
14788    #[prost(uint32, optional, tag="3")]
14789    pub begin: ::core::option::Option<u32>,
14790}
14791// End of protos/perfetto/trace/ftrace/sync.proto
14792
14793// Begin of protos/perfetto/trace/ftrace/synthetic.proto
14794
14795#[derive(Clone, PartialEq, ::prost::Message)]
14796pub struct RssStatThrottledFtraceEvent {
14797    #[prost(uint32, optional, tag="1")]
14798    pub curr: ::core::option::Option<u32>,
14799    #[prost(int32, optional, tag="2")]
14800    pub member: ::core::option::Option<i32>,
14801    #[prost(uint32, optional, tag="3")]
14802    pub mm_id: ::core::option::Option<u32>,
14803    #[prost(int64, optional, tag="4")]
14804    pub size: ::core::option::Option<i64>,
14805}
14806#[derive(Clone, PartialEq, ::prost::Message)]
14807pub struct SuspendResumeMinimalFtraceEvent {
14808    #[prost(uint32, optional, tag="1")]
14809    pub start: ::core::option::Option<u32>,
14810}
14811// End of protos/perfetto/trace/ftrace/synthetic.proto
14812
14813// Begin of protos/perfetto/trace/ftrace/systrace.proto
14814
14815#[derive(Clone, PartialEq, ::prost::Message)]
14816pub struct ZeroFtraceEvent {
14817    #[prost(int32, optional, tag="1")]
14818    pub flag: ::core::option::Option<i32>,
14819    #[prost(string, optional, tag="2")]
14820    pub name: ::core::option::Option<::prost::alloc::string::String>,
14821    #[prost(int32, optional, tag="3")]
14822    pub pid: ::core::option::Option<i32>,
14823    #[prost(int64, optional, tag="4")]
14824    pub value: ::core::option::Option<i64>,
14825}
14826// End of protos/perfetto/trace/ftrace/systrace.proto
14827
14828// Begin of protos/perfetto/trace/ftrace/task.proto
14829
14830#[derive(Clone, PartialEq, ::prost::Message)]
14831pub struct TaskNewtaskFtraceEvent {
14832    #[prost(int32, optional, tag="1")]
14833    pub pid: ::core::option::Option<i32>,
14834    #[prost(string, optional, tag="2")]
14835    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14836    #[prost(uint64, optional, tag="3")]
14837    pub clone_flags: ::core::option::Option<u64>,
14838    #[prost(int32, optional, tag="4")]
14839    pub oom_score_adj: ::core::option::Option<i32>,
14840}
14841#[derive(Clone, PartialEq, ::prost::Message)]
14842pub struct TaskRenameFtraceEvent {
14843    #[prost(int32, optional, tag="1")]
14844    pub pid: ::core::option::Option<i32>,
14845    #[prost(string, optional, tag="2")]
14846    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
14847    #[prost(string, optional, tag="3")]
14848    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
14849    #[prost(int32, optional, tag="4")]
14850    pub oom_score_adj: ::core::option::Option<i32>,
14851}
14852// End of protos/perfetto/trace/ftrace/task.proto
14853
14854// Begin of protos/perfetto/trace/ftrace/tcp.proto
14855
14856#[derive(Clone, PartialEq, ::prost::Message)]
14857pub struct TcpRetransmitSkbFtraceEvent {
14858    #[prost(uint32, optional, tag="1")]
14859    pub daddr: ::core::option::Option<u32>,
14860    #[prost(uint32, optional, tag="2")]
14861    pub dport: ::core::option::Option<u32>,
14862    #[prost(uint32, optional, tag="3")]
14863    pub saddr: ::core::option::Option<u32>,
14864    #[prost(uint64, optional, tag="4")]
14865    pub skaddr: ::core::option::Option<u64>,
14866    #[prost(uint64, optional, tag="5")]
14867    pub skbaddr: ::core::option::Option<u64>,
14868    #[prost(uint32, optional, tag="6")]
14869    pub sport: ::core::option::Option<u32>,
14870    #[prost(int32, optional, tag="7")]
14871    pub state: ::core::option::Option<i32>,
14872}
14873// End of protos/perfetto/trace/ftrace/tcp.proto
14874
14875// Begin of protos/perfetto/trace/ftrace/thermal.proto
14876
14877#[derive(Clone, PartialEq, ::prost::Message)]
14878pub struct ThermalTemperatureFtraceEvent {
14879    #[prost(int32, optional, tag="1")]
14880    pub id: ::core::option::Option<i32>,
14881    #[prost(int32, optional, tag="2")]
14882    pub temp: ::core::option::Option<i32>,
14883    #[prost(int32, optional, tag="3")]
14884    pub temp_prev: ::core::option::Option<i32>,
14885    #[prost(string, optional, tag="4")]
14886    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
14887}
14888#[derive(Clone, PartialEq, ::prost::Message)]
14889pub struct CdevUpdateFtraceEvent {
14890    #[prost(uint64, optional, tag="1")]
14891    pub target: ::core::option::Option<u64>,
14892    #[prost(string, optional, tag="2")]
14893    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
14894}
14895// End of protos/perfetto/trace/ftrace/thermal.proto
14896
14897// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
14898
14899#[derive(Clone, PartialEq, ::prost::Message)]
14900pub struct ThermalExynosAcpmBulkFtraceEvent {
14901    #[prost(uint32, optional, tag="1")]
14902    pub tz_id: ::core::option::Option<u32>,
14903    #[prost(uint32, optional, tag="2")]
14904    pub current_temp: ::core::option::Option<u32>,
14905    #[prost(uint32, optional, tag="3")]
14906    pub ctrl_temp: ::core::option::Option<u32>,
14907    #[prost(uint32, optional, tag="4")]
14908    pub cdev_state: ::core::option::Option<u32>,
14909    #[prost(int32, optional, tag="5")]
14910    pub pid_et_p: ::core::option::Option<i32>,
14911    #[prost(int32, optional, tag="6")]
14912    pub pid_power_range: ::core::option::Option<i32>,
14913    #[prost(int32, optional, tag="7")]
14914    pub pid_p: ::core::option::Option<i32>,
14915    #[prost(int32, optional, tag="8")]
14916    pub pid_i: ::core::option::Option<i32>,
14917    #[prost(int32, optional, tag="9")]
14918    pub k_p: ::core::option::Option<i32>,
14919    #[prost(int32, optional, tag="10")]
14920    pub k_i: ::core::option::Option<i32>,
14921    #[prost(uint64, optional, tag="11")]
14922    pub timestamp: ::core::option::Option<u64>,
14923}
14924#[derive(Clone, PartialEq, ::prost::Message)]
14925pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
14926    #[prost(int32, optional, tag="1")]
14927    pub tz_id: ::core::option::Option<i32>,
14928    #[prost(uint32, optional, tag="2")]
14929    pub current_temp: ::core::option::Option<u32>,
14930    #[prost(uint32, optional, tag="3")]
14931    pub ctrl_temp: ::core::option::Option<u32>,
14932    #[prost(uint32, optional, tag="4")]
14933    pub cdev_state: ::core::option::Option<u32>,
14934    #[prost(int32, optional, tag="5")]
14935    pub pid_et_p: ::core::option::Option<i32>,
14936    #[prost(int32, optional, tag="6")]
14937    pub k_p: ::core::option::Option<i32>,
14938    #[prost(int32, optional, tag="7")]
14939    pub k_i: ::core::option::Option<i32>,
14940}
14941// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
14942
14943// Begin of protos/perfetto/trace/ftrace/timer.proto
14944
14945#[derive(Clone, PartialEq, ::prost::Message)]
14946pub struct HrtimerStartFtraceEvent {
14947    #[prost(uint64, optional, tag="1")]
14948    pub hrtimer: ::core::option::Option<u64>,
14949    #[prost(uint64, optional, tag="2")]
14950    pub function: ::core::option::Option<u64>,
14951    #[prost(int64, optional, tag="3")]
14952    pub expires: ::core::option::Option<i64>,
14953    #[prost(int64, optional, tag="4")]
14954    pub softexpires: ::core::option::Option<i64>,
14955    #[prost(uint32, optional, tag="5")]
14956    pub mode: ::core::option::Option<u32>,
14957}
14958#[derive(Clone, PartialEq, ::prost::Message)]
14959pub struct HrtimerCancelFtraceEvent {
14960    #[prost(uint64, optional, tag="1")]
14961    pub hrtimer: ::core::option::Option<u64>,
14962}
14963#[derive(Clone, PartialEq, ::prost::Message)]
14964pub struct HrtimerExpireEntryFtraceEvent {
14965    #[prost(uint64, optional, tag="1")]
14966    pub hrtimer: ::core::option::Option<u64>,
14967    #[prost(int64, optional, tag="2")]
14968    pub now: ::core::option::Option<i64>,
14969    #[prost(uint64, optional, tag="3")]
14970    pub function: ::core::option::Option<u64>,
14971}
14972#[derive(Clone, PartialEq, ::prost::Message)]
14973pub struct HrtimerExpireExitFtraceEvent {
14974    #[prost(uint64, optional, tag="1")]
14975    pub hrtimer: ::core::option::Option<u64>,
14976}
14977#[derive(Clone, PartialEq, ::prost::Message)]
14978pub struct TimerStartFtraceEvent {
14979    #[prost(uint64, optional, tag="1")]
14980    pub timer: ::core::option::Option<u64>,
14981    #[prost(uint64, optional, tag="2")]
14982    pub function: ::core::option::Option<u64>,
14983    #[prost(uint64, optional, tag="3")]
14984    pub expires: ::core::option::Option<u64>,
14985    #[prost(uint64, optional, tag="4")]
14986    pub now: ::core::option::Option<u64>,
14987    #[prost(uint32, optional, tag="5")]
14988    pub deferrable: ::core::option::Option<u32>,
14989    #[prost(uint32, optional, tag="6")]
14990    pub flags: ::core::option::Option<u32>,
14991    #[prost(uint64, optional, tag="7")]
14992    pub bucket_expiry: ::core::option::Option<u64>,
14993}
14994#[derive(Clone, PartialEq, ::prost::Message)]
14995pub struct TimerCancelFtraceEvent {
14996    #[prost(uint64, optional, tag="1")]
14997    pub timer: ::core::option::Option<u64>,
14998}
14999#[derive(Clone, PartialEq, ::prost::Message)]
15000pub struct TimerExpireEntryFtraceEvent {
15001    #[prost(uint64, optional, tag="1")]
15002    pub timer: ::core::option::Option<u64>,
15003    #[prost(uint64, optional, tag="2")]
15004    pub now: ::core::option::Option<u64>,
15005    #[prost(uint64, optional, tag="3")]
15006    pub function: ::core::option::Option<u64>,
15007    #[prost(uint64, optional, tag="4")]
15008    pub baseclk: ::core::option::Option<u64>,
15009}
15010#[derive(Clone, PartialEq, ::prost::Message)]
15011pub struct TimerExpireExitFtraceEvent {
15012    #[prost(uint64, optional, tag="1")]
15013    pub timer: ::core::option::Option<u64>,
15014}
15015// End of protos/perfetto/trace/ftrace/timer.proto
15016
15017// Begin of protos/perfetto/trace/ftrace/trusty.proto
15018
15019#[derive(Clone, PartialEq, ::prost::Message)]
15020pub struct TrustySmcFtraceEvent {
15021    #[prost(uint64, optional, tag="1")]
15022    pub r0: ::core::option::Option<u64>,
15023    #[prost(uint64, optional, tag="2")]
15024    pub r1: ::core::option::Option<u64>,
15025    #[prost(uint64, optional, tag="3")]
15026    pub r2: ::core::option::Option<u64>,
15027    #[prost(uint64, optional, tag="4")]
15028    pub r3: ::core::option::Option<u64>,
15029}
15030#[derive(Clone, PartialEq, ::prost::Message)]
15031pub struct TrustySmcDoneFtraceEvent {
15032    #[prost(uint64, optional, tag="1")]
15033    pub ret: ::core::option::Option<u64>,
15034}
15035#[derive(Clone, PartialEq, ::prost::Message)]
15036pub struct TrustyStdCall32FtraceEvent {
15037    #[prost(uint64, optional, tag="1")]
15038    pub r0: ::core::option::Option<u64>,
15039    #[prost(uint64, optional, tag="2")]
15040    pub r1: ::core::option::Option<u64>,
15041    #[prost(uint64, optional, tag="3")]
15042    pub r2: ::core::option::Option<u64>,
15043    #[prost(uint64, optional, tag="4")]
15044    pub r3: ::core::option::Option<u64>,
15045}
15046#[derive(Clone, PartialEq, ::prost::Message)]
15047pub struct TrustyStdCall32DoneFtraceEvent {
15048    #[prost(int64, optional, tag="1")]
15049    pub ret: ::core::option::Option<i64>,
15050}
15051#[derive(Clone, PartialEq, ::prost::Message)]
15052pub struct TrustyShareMemoryFtraceEvent {
15053    #[prost(uint64, optional, tag="1")]
15054    pub len: ::core::option::Option<u64>,
15055    #[prost(uint32, optional, tag="2")]
15056    pub lend: ::core::option::Option<u32>,
15057    #[prost(uint32, optional, tag="3")]
15058    pub nents: ::core::option::Option<u32>,
15059}
15060#[derive(Clone, PartialEq, ::prost::Message)]
15061pub struct TrustyShareMemoryDoneFtraceEvent {
15062    #[prost(uint64, optional, tag="1")]
15063    pub handle: ::core::option::Option<u64>,
15064    #[prost(uint64, optional, tag="2")]
15065    pub len: ::core::option::Option<u64>,
15066    #[prost(uint32, optional, tag="3")]
15067    pub lend: ::core::option::Option<u32>,
15068    #[prost(uint32, optional, tag="4")]
15069    pub nents: ::core::option::Option<u32>,
15070    #[prost(int32, optional, tag="5")]
15071    pub ret: ::core::option::Option<i32>,
15072}
15073#[derive(Clone, PartialEq, ::prost::Message)]
15074pub struct TrustyReclaimMemoryFtraceEvent {
15075    #[prost(uint64, optional, tag="1")]
15076    pub id: ::core::option::Option<u64>,
15077}
15078#[derive(Clone, PartialEq, ::prost::Message)]
15079pub struct TrustyReclaimMemoryDoneFtraceEvent {
15080    #[prost(uint64, optional, tag="1")]
15081    pub id: ::core::option::Option<u64>,
15082    #[prost(int32, optional, tag="2")]
15083    pub ret: ::core::option::Option<i32>,
15084}
15085#[derive(Clone, PartialEq, ::prost::Message)]
15086pub struct TrustyIrqFtraceEvent {
15087    #[prost(int32, optional, tag="1")]
15088    pub irq: ::core::option::Option<i32>,
15089}
15090#[derive(Clone, PartialEq, ::prost::Message)]
15091pub struct TrustyIpcHandleEventFtraceEvent {
15092    #[prost(uint32, optional, tag="1")]
15093    pub chan: ::core::option::Option<u32>,
15094    #[prost(uint32, optional, tag="2")]
15095    pub event_id: ::core::option::Option<u32>,
15096    #[prost(string, optional, tag="3")]
15097    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15098}
15099#[derive(Clone, PartialEq, ::prost::Message)]
15100pub struct TrustyIpcConnectFtraceEvent {
15101    #[prost(uint32, optional, tag="1")]
15102    pub chan: ::core::option::Option<u32>,
15103    #[prost(string, optional, tag="2")]
15104    pub port: ::core::option::Option<::prost::alloc::string::String>,
15105    #[prost(int32, optional, tag="3")]
15106    pub state: ::core::option::Option<i32>,
15107}
15108#[derive(Clone, PartialEq, ::prost::Message)]
15109pub struct TrustyIpcConnectEndFtraceEvent {
15110    #[prost(uint32, optional, tag="1")]
15111    pub chan: ::core::option::Option<u32>,
15112    #[prost(int32, optional, tag="2")]
15113    pub err: ::core::option::Option<i32>,
15114    #[prost(int32, optional, tag="3")]
15115    pub state: ::core::option::Option<i32>,
15116}
15117#[derive(Clone, PartialEq, ::prost::Message)]
15118pub struct TrustyIpcWriteFtraceEvent {
15119    #[prost(uint64, optional, tag="1")]
15120    pub buf_id: ::core::option::Option<u64>,
15121    #[prost(uint32, optional, tag="2")]
15122    pub chan: ::core::option::Option<u32>,
15123    #[prost(int32, optional, tag="3")]
15124    pub kind_shm: ::core::option::Option<i32>,
15125    #[prost(int32, optional, tag="4")]
15126    pub len_or_err: ::core::option::Option<i32>,
15127    #[prost(uint64, optional, tag="5")]
15128    pub shm_cnt: ::core::option::Option<u64>,
15129    #[prost(string, optional, tag="6")]
15130    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15131}
15132#[derive(Clone, PartialEq, ::prost::Message)]
15133pub struct TrustyIpcPollFtraceEvent {
15134    #[prost(uint32, optional, tag="1")]
15135    pub chan: ::core::option::Option<u32>,
15136    #[prost(uint32, optional, tag="2")]
15137    pub poll_mask: ::core::option::Option<u32>,
15138    #[prost(string, optional, tag="3")]
15139    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15140}
15141#[derive(Clone, PartialEq, ::prost::Message)]
15142pub struct TrustyIpcReadFtraceEvent {
15143    #[prost(uint32, optional, tag="1")]
15144    pub chan: ::core::option::Option<u32>,
15145    #[prost(string, optional, tag="2")]
15146    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15147}
15148#[derive(Clone, PartialEq, ::prost::Message)]
15149pub struct TrustyIpcReadEndFtraceEvent {
15150    #[prost(uint64, optional, tag="1")]
15151    pub buf_id: ::core::option::Option<u64>,
15152    #[prost(uint32, optional, tag="2")]
15153    pub chan: ::core::option::Option<u32>,
15154    #[prost(int32, optional, tag="3")]
15155    pub len_or_err: ::core::option::Option<i32>,
15156    #[prost(uint64, optional, tag="4")]
15157    pub shm_cnt: ::core::option::Option<u64>,
15158    #[prost(string, optional, tag="5")]
15159    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15160}
15161#[derive(Clone, PartialEq, ::prost::Message)]
15162pub struct TrustyIpcRxFtraceEvent {
15163    #[prost(uint64, optional, tag="1")]
15164    pub buf_id: ::core::option::Option<u64>,
15165    #[prost(uint32, optional, tag="2")]
15166    pub chan: ::core::option::Option<u32>,
15167    #[prost(string, optional, tag="3")]
15168    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15169}
15170#[derive(Clone, PartialEq, ::prost::Message)]
15171pub struct TrustyEnqueueNopFtraceEvent {
15172    #[prost(uint32, optional, tag="1")]
15173    pub arg1: ::core::option::Option<u32>,
15174    #[prost(uint32, optional, tag="2")]
15175    pub arg2: ::core::option::Option<u32>,
15176    #[prost(uint32, optional, tag="3")]
15177    pub arg3: ::core::option::Option<u32>,
15178}
15179// End of protos/perfetto/trace/ftrace/trusty.proto
15180
15181// Begin of protos/perfetto/trace/ftrace/ufs.proto
15182
15183#[derive(Clone, PartialEq, ::prost::Message)]
15184pub struct UfshcdCommandFtraceEvent {
15185    #[prost(string, optional, tag="1")]
15186    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15187    #[prost(uint32, optional, tag="2")]
15188    pub doorbell: ::core::option::Option<u32>,
15189    #[prost(uint32, optional, tag="3")]
15190    pub intr: ::core::option::Option<u32>,
15191    #[prost(uint64, optional, tag="4")]
15192    pub lba: ::core::option::Option<u64>,
15193    #[prost(uint32, optional, tag="5")]
15194    pub opcode: ::core::option::Option<u32>,
15195    #[prost(string, optional, tag="6")]
15196    pub str: ::core::option::Option<::prost::alloc::string::String>,
15197    #[prost(uint32, optional, tag="7")]
15198    pub tag: ::core::option::Option<u32>,
15199    #[prost(int32, optional, tag="8")]
15200    pub transfer_len: ::core::option::Option<i32>,
15201    #[prost(uint32, optional, tag="9")]
15202    pub group_id: ::core::option::Option<u32>,
15203    #[prost(uint32, optional, tag="10")]
15204    pub str_t: ::core::option::Option<u32>,
15205}
15206#[derive(Clone, PartialEq, ::prost::Message)]
15207pub struct UfshcdClkGatingFtraceEvent {
15208    #[prost(string, optional, tag="1")]
15209    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15210    #[prost(int32, optional, tag="2")]
15211    pub state: ::core::option::Option<i32>,
15212}
15213// End of protos/perfetto/trace/ftrace/ufs.proto
15214
15215// Begin of protos/perfetto/trace/ftrace/v4l2.proto
15216
15217#[derive(Clone, PartialEq, ::prost::Message)]
15218pub struct V4l2QbufFtraceEvent {
15219    #[prost(uint32, optional, tag="1")]
15220    pub bytesused: ::core::option::Option<u32>,
15221    #[prost(uint32, optional, tag="2")]
15222    pub field: ::core::option::Option<u32>,
15223    #[prost(uint32, optional, tag="3")]
15224    pub flags: ::core::option::Option<u32>,
15225    #[prost(uint32, optional, tag="4")]
15226    pub index: ::core::option::Option<u32>,
15227    #[prost(int32, optional, tag="5")]
15228    pub minor: ::core::option::Option<i32>,
15229    #[prost(uint32, optional, tag="6")]
15230    pub sequence: ::core::option::Option<u32>,
15231    #[prost(uint32, optional, tag="7")]
15232    pub timecode_flags: ::core::option::Option<u32>,
15233    #[prost(uint32, optional, tag="8")]
15234    pub timecode_frames: ::core::option::Option<u32>,
15235    #[prost(uint32, optional, tag="9")]
15236    pub timecode_hours: ::core::option::Option<u32>,
15237    #[prost(uint32, optional, tag="10")]
15238    pub timecode_minutes: ::core::option::Option<u32>,
15239    #[prost(uint32, optional, tag="11")]
15240    pub timecode_seconds: ::core::option::Option<u32>,
15241    #[prost(uint32, optional, tag="12")]
15242    pub timecode_type: ::core::option::Option<u32>,
15243    #[prost(uint32, optional, tag="13")]
15244    pub timecode_userbits0: ::core::option::Option<u32>,
15245    #[prost(uint32, optional, tag="14")]
15246    pub timecode_userbits1: ::core::option::Option<u32>,
15247    #[prost(uint32, optional, tag="15")]
15248    pub timecode_userbits2: ::core::option::Option<u32>,
15249    #[prost(uint32, optional, tag="16")]
15250    pub timecode_userbits3: ::core::option::Option<u32>,
15251    #[prost(int64, optional, tag="17")]
15252    pub timestamp: ::core::option::Option<i64>,
15253    #[prost(uint32, optional, tag="18")]
15254    pub r#type: ::core::option::Option<u32>,
15255}
15256#[derive(Clone, PartialEq, ::prost::Message)]
15257pub struct V4l2DqbufFtraceEvent {
15258    #[prost(uint32, optional, tag="1")]
15259    pub bytesused: ::core::option::Option<u32>,
15260    #[prost(uint32, optional, tag="2")]
15261    pub field: ::core::option::Option<u32>,
15262    #[prost(uint32, optional, tag="3")]
15263    pub flags: ::core::option::Option<u32>,
15264    #[prost(uint32, optional, tag="4")]
15265    pub index: ::core::option::Option<u32>,
15266    #[prost(int32, optional, tag="5")]
15267    pub minor: ::core::option::Option<i32>,
15268    #[prost(uint32, optional, tag="6")]
15269    pub sequence: ::core::option::Option<u32>,
15270    #[prost(uint32, optional, tag="7")]
15271    pub timecode_flags: ::core::option::Option<u32>,
15272    #[prost(uint32, optional, tag="8")]
15273    pub timecode_frames: ::core::option::Option<u32>,
15274    #[prost(uint32, optional, tag="9")]
15275    pub timecode_hours: ::core::option::Option<u32>,
15276    #[prost(uint32, optional, tag="10")]
15277    pub timecode_minutes: ::core::option::Option<u32>,
15278    #[prost(uint32, optional, tag="11")]
15279    pub timecode_seconds: ::core::option::Option<u32>,
15280    #[prost(uint32, optional, tag="12")]
15281    pub timecode_type: ::core::option::Option<u32>,
15282    #[prost(uint32, optional, tag="13")]
15283    pub timecode_userbits0: ::core::option::Option<u32>,
15284    #[prost(uint32, optional, tag="14")]
15285    pub timecode_userbits1: ::core::option::Option<u32>,
15286    #[prost(uint32, optional, tag="15")]
15287    pub timecode_userbits2: ::core::option::Option<u32>,
15288    #[prost(uint32, optional, tag="16")]
15289    pub timecode_userbits3: ::core::option::Option<u32>,
15290    #[prost(int64, optional, tag="17")]
15291    pub timestamp: ::core::option::Option<i64>,
15292    #[prost(uint32, optional, tag="18")]
15293    pub r#type: ::core::option::Option<u32>,
15294}
15295#[derive(Clone, PartialEq, ::prost::Message)]
15296pub struct Vb2V4l2BufQueueFtraceEvent {
15297    #[prost(uint32, optional, tag="1")]
15298    pub field: ::core::option::Option<u32>,
15299    #[prost(uint32, optional, tag="2")]
15300    pub flags: ::core::option::Option<u32>,
15301    #[prost(int32, optional, tag="3")]
15302    pub minor: ::core::option::Option<i32>,
15303    #[prost(uint32, optional, tag="4")]
15304    pub sequence: ::core::option::Option<u32>,
15305    #[prost(uint32, optional, tag="5")]
15306    pub timecode_flags: ::core::option::Option<u32>,
15307    #[prost(uint32, optional, tag="6")]
15308    pub timecode_frames: ::core::option::Option<u32>,
15309    #[prost(uint32, optional, tag="7")]
15310    pub timecode_hours: ::core::option::Option<u32>,
15311    #[prost(uint32, optional, tag="8")]
15312    pub timecode_minutes: ::core::option::Option<u32>,
15313    #[prost(uint32, optional, tag="9")]
15314    pub timecode_seconds: ::core::option::Option<u32>,
15315    #[prost(uint32, optional, tag="10")]
15316    pub timecode_type: ::core::option::Option<u32>,
15317    #[prost(uint32, optional, tag="11")]
15318    pub timecode_userbits0: ::core::option::Option<u32>,
15319    #[prost(uint32, optional, tag="12")]
15320    pub timecode_userbits1: ::core::option::Option<u32>,
15321    #[prost(uint32, optional, tag="13")]
15322    pub timecode_userbits2: ::core::option::Option<u32>,
15323    #[prost(uint32, optional, tag="14")]
15324    pub timecode_userbits3: ::core::option::Option<u32>,
15325    #[prost(int64, optional, tag="15")]
15326    pub timestamp: ::core::option::Option<i64>,
15327}
15328#[derive(Clone, PartialEq, ::prost::Message)]
15329pub struct Vb2V4l2BufDoneFtraceEvent {
15330    #[prost(uint32, optional, tag="1")]
15331    pub field: ::core::option::Option<u32>,
15332    #[prost(uint32, optional, tag="2")]
15333    pub flags: ::core::option::Option<u32>,
15334    #[prost(int32, optional, tag="3")]
15335    pub minor: ::core::option::Option<i32>,
15336    #[prost(uint32, optional, tag="4")]
15337    pub sequence: ::core::option::Option<u32>,
15338    #[prost(uint32, optional, tag="5")]
15339    pub timecode_flags: ::core::option::Option<u32>,
15340    #[prost(uint32, optional, tag="6")]
15341    pub timecode_frames: ::core::option::Option<u32>,
15342    #[prost(uint32, optional, tag="7")]
15343    pub timecode_hours: ::core::option::Option<u32>,
15344    #[prost(uint32, optional, tag="8")]
15345    pub timecode_minutes: ::core::option::Option<u32>,
15346    #[prost(uint32, optional, tag="9")]
15347    pub timecode_seconds: ::core::option::Option<u32>,
15348    #[prost(uint32, optional, tag="10")]
15349    pub timecode_type: ::core::option::Option<u32>,
15350    #[prost(uint32, optional, tag="11")]
15351    pub timecode_userbits0: ::core::option::Option<u32>,
15352    #[prost(uint32, optional, tag="12")]
15353    pub timecode_userbits1: ::core::option::Option<u32>,
15354    #[prost(uint32, optional, tag="13")]
15355    pub timecode_userbits2: ::core::option::Option<u32>,
15356    #[prost(uint32, optional, tag="14")]
15357    pub timecode_userbits3: ::core::option::Option<u32>,
15358    #[prost(int64, optional, tag="15")]
15359    pub timestamp: ::core::option::Option<i64>,
15360}
15361#[derive(Clone, PartialEq, ::prost::Message)]
15362pub struct Vb2V4l2QbufFtraceEvent {
15363    #[prost(uint32, optional, tag="1")]
15364    pub field: ::core::option::Option<u32>,
15365    #[prost(uint32, optional, tag="2")]
15366    pub flags: ::core::option::Option<u32>,
15367    #[prost(int32, optional, tag="3")]
15368    pub minor: ::core::option::Option<i32>,
15369    #[prost(uint32, optional, tag="4")]
15370    pub sequence: ::core::option::Option<u32>,
15371    #[prost(uint32, optional, tag="5")]
15372    pub timecode_flags: ::core::option::Option<u32>,
15373    #[prost(uint32, optional, tag="6")]
15374    pub timecode_frames: ::core::option::Option<u32>,
15375    #[prost(uint32, optional, tag="7")]
15376    pub timecode_hours: ::core::option::Option<u32>,
15377    #[prost(uint32, optional, tag="8")]
15378    pub timecode_minutes: ::core::option::Option<u32>,
15379    #[prost(uint32, optional, tag="9")]
15380    pub timecode_seconds: ::core::option::Option<u32>,
15381    #[prost(uint32, optional, tag="10")]
15382    pub timecode_type: ::core::option::Option<u32>,
15383    #[prost(uint32, optional, tag="11")]
15384    pub timecode_userbits0: ::core::option::Option<u32>,
15385    #[prost(uint32, optional, tag="12")]
15386    pub timecode_userbits1: ::core::option::Option<u32>,
15387    #[prost(uint32, optional, tag="13")]
15388    pub timecode_userbits2: ::core::option::Option<u32>,
15389    #[prost(uint32, optional, tag="14")]
15390    pub timecode_userbits3: ::core::option::Option<u32>,
15391    #[prost(int64, optional, tag="15")]
15392    pub timestamp: ::core::option::Option<i64>,
15393}
15394#[derive(Clone, PartialEq, ::prost::Message)]
15395pub struct Vb2V4l2DqbufFtraceEvent {
15396    #[prost(uint32, optional, tag="1")]
15397    pub field: ::core::option::Option<u32>,
15398    #[prost(uint32, optional, tag="2")]
15399    pub flags: ::core::option::Option<u32>,
15400    #[prost(int32, optional, tag="3")]
15401    pub minor: ::core::option::Option<i32>,
15402    #[prost(uint32, optional, tag="4")]
15403    pub sequence: ::core::option::Option<u32>,
15404    #[prost(uint32, optional, tag="5")]
15405    pub timecode_flags: ::core::option::Option<u32>,
15406    #[prost(uint32, optional, tag="6")]
15407    pub timecode_frames: ::core::option::Option<u32>,
15408    #[prost(uint32, optional, tag="7")]
15409    pub timecode_hours: ::core::option::Option<u32>,
15410    #[prost(uint32, optional, tag="8")]
15411    pub timecode_minutes: ::core::option::Option<u32>,
15412    #[prost(uint32, optional, tag="9")]
15413    pub timecode_seconds: ::core::option::Option<u32>,
15414    #[prost(uint32, optional, tag="10")]
15415    pub timecode_type: ::core::option::Option<u32>,
15416    #[prost(uint32, optional, tag="11")]
15417    pub timecode_userbits0: ::core::option::Option<u32>,
15418    #[prost(uint32, optional, tag="12")]
15419    pub timecode_userbits1: ::core::option::Option<u32>,
15420    #[prost(uint32, optional, tag="13")]
15421    pub timecode_userbits2: ::core::option::Option<u32>,
15422    #[prost(uint32, optional, tag="14")]
15423    pub timecode_userbits3: ::core::option::Option<u32>,
15424    #[prost(int64, optional, tag="15")]
15425    pub timestamp: ::core::option::Option<i64>,
15426}
15427// End of protos/perfetto/trace/ftrace/v4l2.proto
15428
15429// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
15430
15431#[derive(Clone, PartialEq, ::prost::Message)]
15432pub struct VirtioGpuCmdQueueFtraceEvent {
15433    #[prost(uint32, optional, tag="1")]
15434    pub ctx_id: ::core::option::Option<u32>,
15435    #[prost(int32, optional, tag="2")]
15436    pub dev: ::core::option::Option<i32>,
15437    #[prost(uint64, optional, tag="3")]
15438    pub fence_id: ::core::option::Option<u64>,
15439    #[prost(uint32, optional, tag="4")]
15440    pub flags: ::core::option::Option<u32>,
15441    #[prost(string, optional, tag="5")]
15442    pub name: ::core::option::Option<::prost::alloc::string::String>,
15443    #[prost(uint32, optional, tag="6")]
15444    pub num_free: ::core::option::Option<u32>,
15445    #[prost(uint32, optional, tag="7")]
15446    pub seqno: ::core::option::Option<u32>,
15447    #[prost(uint32, optional, tag="8")]
15448    pub r#type: ::core::option::Option<u32>,
15449    #[prost(uint32, optional, tag="9")]
15450    pub vq: ::core::option::Option<u32>,
15451}
15452#[derive(Clone, PartialEq, ::prost::Message)]
15453pub struct VirtioGpuCmdResponseFtraceEvent {
15454    #[prost(uint32, optional, tag="1")]
15455    pub ctx_id: ::core::option::Option<u32>,
15456    #[prost(int32, optional, tag="2")]
15457    pub dev: ::core::option::Option<i32>,
15458    #[prost(uint64, optional, tag="3")]
15459    pub fence_id: ::core::option::Option<u64>,
15460    #[prost(uint32, optional, tag="4")]
15461    pub flags: ::core::option::Option<u32>,
15462    #[prost(string, optional, tag="5")]
15463    pub name: ::core::option::Option<::prost::alloc::string::String>,
15464    #[prost(uint32, optional, tag="6")]
15465    pub num_free: ::core::option::Option<u32>,
15466    #[prost(uint32, optional, tag="7")]
15467    pub seqno: ::core::option::Option<u32>,
15468    #[prost(uint32, optional, tag="8")]
15469    pub r#type: ::core::option::Option<u32>,
15470    #[prost(uint32, optional, tag="9")]
15471    pub vq: ::core::option::Option<u32>,
15472}
15473// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
15474
15475// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
15476
15477#[derive(Clone, PartialEq, ::prost::Message)]
15478pub struct VirtioVideoCmdFtraceEvent {
15479    #[prost(uint32, optional, tag="1")]
15480    pub stream_id: ::core::option::Option<u32>,
15481    #[prost(uint32, optional, tag="2")]
15482    pub r#type: ::core::option::Option<u32>,
15483}
15484#[derive(Clone, PartialEq, ::prost::Message)]
15485pub struct VirtioVideoCmdDoneFtraceEvent {
15486    #[prost(uint32, optional, tag="1")]
15487    pub stream_id: ::core::option::Option<u32>,
15488    #[prost(uint32, optional, tag="2")]
15489    pub r#type: ::core::option::Option<u32>,
15490}
15491#[derive(Clone, PartialEq, ::prost::Message)]
15492pub struct VirtioVideoResourceQueueFtraceEvent {
15493    #[prost(uint32, optional, tag="1")]
15494    pub data_size0: ::core::option::Option<u32>,
15495    #[prost(uint32, optional, tag="2")]
15496    pub data_size1: ::core::option::Option<u32>,
15497    #[prost(uint32, optional, tag="3")]
15498    pub data_size2: ::core::option::Option<u32>,
15499    #[prost(uint32, optional, tag="4")]
15500    pub data_size3: ::core::option::Option<u32>,
15501    #[prost(uint32, optional, tag="5")]
15502    pub queue_type: ::core::option::Option<u32>,
15503    #[prost(int32, optional, tag="6")]
15504    pub resource_id: ::core::option::Option<i32>,
15505    #[prost(int32, optional, tag="7")]
15506    pub stream_id: ::core::option::Option<i32>,
15507    #[prost(uint64, optional, tag="8")]
15508    pub timestamp: ::core::option::Option<u64>,
15509}
15510#[derive(Clone, PartialEq, ::prost::Message)]
15511pub struct VirtioVideoResourceQueueDoneFtraceEvent {
15512    #[prost(uint32, optional, tag="1")]
15513    pub data_size0: ::core::option::Option<u32>,
15514    #[prost(uint32, optional, tag="2")]
15515    pub data_size1: ::core::option::Option<u32>,
15516    #[prost(uint32, optional, tag="3")]
15517    pub data_size2: ::core::option::Option<u32>,
15518    #[prost(uint32, optional, tag="4")]
15519    pub data_size3: ::core::option::Option<u32>,
15520    #[prost(uint32, optional, tag="5")]
15521    pub queue_type: ::core::option::Option<u32>,
15522    #[prost(int32, optional, tag="6")]
15523    pub resource_id: ::core::option::Option<i32>,
15524    #[prost(int32, optional, tag="7")]
15525    pub stream_id: ::core::option::Option<i32>,
15526    #[prost(uint64, optional, tag="8")]
15527    pub timestamp: ::core::option::Option<u64>,
15528}
15529// End of protos/perfetto/trace/ftrace/virtio_video.proto
15530
15531// Begin of protos/perfetto/trace/ftrace/vmscan.proto
15532
15533#[derive(Clone, PartialEq, ::prost::Message)]
15534pub struct MmVmscanDirectReclaimBeginFtraceEvent {
15535    #[prost(int32, optional, tag="1")]
15536    pub order: ::core::option::Option<i32>,
15537    #[prost(int32, optional, tag="2")]
15538    pub may_writepage: ::core::option::Option<i32>,
15539    #[prost(uint32, optional, tag="3")]
15540    pub gfp_flags: ::core::option::Option<u32>,
15541}
15542#[derive(Clone, PartialEq, ::prost::Message)]
15543pub struct MmVmscanDirectReclaimEndFtraceEvent {
15544    #[prost(uint64, optional, tag="1")]
15545    pub nr_reclaimed: ::core::option::Option<u64>,
15546}
15547#[derive(Clone, PartialEq, ::prost::Message)]
15548pub struct MmVmscanKswapdWakeFtraceEvent {
15549    #[prost(int32, optional, tag="1")]
15550    pub nid: ::core::option::Option<i32>,
15551    #[prost(int32, optional, tag="2")]
15552    pub order: ::core::option::Option<i32>,
15553    #[prost(int32, optional, tag="3")]
15554    pub zid: ::core::option::Option<i32>,
15555}
15556#[derive(Clone, PartialEq, ::prost::Message)]
15557pub struct MmVmscanKswapdSleepFtraceEvent {
15558    #[prost(int32, optional, tag="1")]
15559    pub nid: ::core::option::Option<i32>,
15560}
15561#[derive(Clone, PartialEq, ::prost::Message)]
15562pub struct MmShrinkSlabStartFtraceEvent {
15563    #[prost(uint64, optional, tag="1")]
15564    pub cache_items: ::core::option::Option<u64>,
15565    #[prost(uint64, optional, tag="2")]
15566    pub delta: ::core::option::Option<u64>,
15567    #[prost(uint32, optional, tag="3")]
15568    pub gfp_flags: ::core::option::Option<u32>,
15569    #[prost(uint64, optional, tag="4")]
15570    pub lru_pgs: ::core::option::Option<u64>,
15571    #[prost(int64, optional, tag="5")]
15572    pub nr_objects_to_shrink: ::core::option::Option<i64>,
15573    #[prost(uint64, optional, tag="6")]
15574    pub pgs_scanned: ::core::option::Option<u64>,
15575    #[prost(uint64, optional, tag="7")]
15576    pub shr: ::core::option::Option<u64>,
15577    #[prost(uint64, optional, tag="8")]
15578    pub shrink: ::core::option::Option<u64>,
15579    #[prost(uint64, optional, tag="9")]
15580    pub total_scan: ::core::option::Option<u64>,
15581    #[prost(int32, optional, tag="10")]
15582    pub nid: ::core::option::Option<i32>,
15583    #[prost(int32, optional, tag="11")]
15584    pub priority: ::core::option::Option<i32>,
15585}
15586#[derive(Clone, PartialEq, ::prost::Message)]
15587pub struct MmShrinkSlabEndFtraceEvent {
15588    #[prost(int64, optional, tag="1")]
15589    pub new_scan: ::core::option::Option<i64>,
15590    #[prost(int32, optional, tag="2")]
15591    pub retval: ::core::option::Option<i32>,
15592    #[prost(uint64, optional, tag="3")]
15593    pub shr: ::core::option::Option<u64>,
15594    #[prost(uint64, optional, tag="4")]
15595    pub shrink: ::core::option::Option<u64>,
15596    #[prost(int64, optional, tag="5")]
15597    pub total_scan: ::core::option::Option<i64>,
15598    #[prost(int64, optional, tag="6")]
15599    pub unused_scan: ::core::option::Option<i64>,
15600    #[prost(int32, optional, tag="7")]
15601    pub nid: ::core::option::Option<i32>,
15602}
15603// End of protos/perfetto/trace/ftrace/vmscan.proto
15604
15605// Begin of protos/perfetto/trace/ftrace/workqueue.proto
15606
15607#[derive(Clone, PartialEq, ::prost::Message)]
15608pub struct WorkqueueActivateWorkFtraceEvent {
15609    #[prost(uint64, optional, tag="1")]
15610    pub work: ::core::option::Option<u64>,
15611}
15612#[derive(Clone, PartialEq, ::prost::Message)]
15613pub struct WorkqueueExecuteEndFtraceEvent {
15614    #[prost(uint64, optional, tag="1")]
15615    pub work: ::core::option::Option<u64>,
15616    #[prost(uint64, optional, tag="2")]
15617    pub function: ::core::option::Option<u64>,
15618}
15619#[derive(Clone, PartialEq, ::prost::Message)]
15620pub struct WorkqueueExecuteStartFtraceEvent {
15621    #[prost(uint64, optional, tag="1")]
15622    pub work: ::core::option::Option<u64>,
15623    #[prost(uint64, optional, tag="2")]
15624    pub function: ::core::option::Option<u64>,
15625}
15626#[derive(Clone, PartialEq, ::prost::Message)]
15627pub struct WorkqueueQueueWorkFtraceEvent {
15628    #[prost(uint64, optional, tag="1")]
15629    pub work: ::core::option::Option<u64>,
15630    #[prost(uint64, optional, tag="2")]
15631    pub function: ::core::option::Option<u64>,
15632    #[prost(uint64, optional, tag="3")]
15633    pub workqueue: ::core::option::Option<u64>,
15634    #[prost(uint32, optional, tag="4")]
15635    pub req_cpu: ::core::option::Option<u32>,
15636    #[prost(uint32, optional, tag="5")]
15637    pub cpu: ::core::option::Option<u32>,
15638}
15639// End of protos/perfetto/trace/ftrace/workqueue.proto
15640
15641// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
15642
15643#[derive(Clone, PartialEq, ::prost::Message)]
15644pub struct FtraceEvent {
15645    /// Timestamp in nanoseconds using .../tracing/trace_clock.
15646    #[prost(uint64, optional, tag="1")]
15647    pub timestamp: ::core::option::Option<u64>,
15648    /// Kernel pid (do not confuse with userspace pid aka tgid).
15649    #[prost(uint32, optional, tag="2")]
15650    pub pid: ::core::option::Option<u32>,
15651    /// Not populated in actual traces. Wire format might change.
15652    /// Placeholder declaration so that the ftrace parsing code accepts the
15653    /// existence of this common field. If this becomes needed for all events:
15654    /// consider merging with common_preempt_count to avoid extra proto tags.
15655    #[prost(uint32, optional, tag="5")]
15656    pub common_flags: ::core::option::Option<u32>,
15657    #[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")]
15658    pub event: ::core::option::Option<ftrace_event::Event>,
15659}
15660/// Nested message and enum types in `FtraceEvent`.
15661pub mod ftrace_event {
15662    #[derive(Clone, PartialEq, ::prost::Oneof)]
15663    pub enum Event {
15664        #[prost(message, tag="3")]
15665        Print(super::PrintFtraceEvent),
15666        #[prost(message, tag="4")]
15667        SchedSwitch(super::SchedSwitchFtraceEvent),
15668        /// removed field with id 5;
15669        /// removed field with id 6;
15670        /// removed field with id 7;
15671        /// removed field with id 8;
15672        /// removed field with id 9;
15673        /// removed field with id 10;
15674        #[prost(message, tag="11")]
15675        CpuFrequency(super::CpuFrequencyFtraceEvent),
15676        #[prost(message, tag="12")]
15677        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
15678        #[prost(message, tag="13")]
15679        CpuIdle(super::CpuIdleFtraceEvent),
15680        #[prost(message, tag="14")]
15681        ClockEnable(super::ClockEnableFtraceEvent),
15682        #[prost(message, tag="15")]
15683        ClockDisable(super::ClockDisableFtraceEvent),
15684        #[prost(message, tag="16")]
15685        ClockSetRate(super::ClockSetRateFtraceEvent),
15686        #[prost(message, tag="17")]
15687        SchedWakeup(super::SchedWakeupFtraceEvent),
15688        #[prost(message, tag="18")]
15689        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
15690        #[prost(message, tag="19")]
15691        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
15692        #[prost(message, tag="20")]
15693        SchedWaking(super::SchedWakingFtraceEvent),
15694        #[prost(message, tag="21")]
15695        IpiEntry(super::IpiEntryFtraceEvent),
15696        #[prost(message, tag="22")]
15697        IpiExit(super::IpiExitFtraceEvent),
15698        #[prost(message, tag="23")]
15699        IpiRaise(super::IpiRaiseFtraceEvent),
15700        #[prost(message, tag="24")]
15701        SoftirqEntry(super::SoftirqEntryFtraceEvent),
15702        #[prost(message, tag="25")]
15703        SoftirqExit(super::SoftirqExitFtraceEvent),
15704        #[prost(message, tag="26")]
15705        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
15706        #[prost(message, tag="27")]
15707        I2cRead(super::I2cReadFtraceEvent),
15708        #[prost(message, tag="28")]
15709        I2cWrite(super::I2cWriteFtraceEvent),
15710        #[prost(message, tag="29")]
15711        I2cResult(super::I2cResultFtraceEvent),
15712        #[prost(message, tag="30")]
15713        I2cReply(super::I2cReplyFtraceEvent),
15714        #[prost(message, tag="31")]
15715        SmbusRead(super::SmbusReadFtraceEvent),
15716        #[prost(message, tag="32")]
15717        SmbusWrite(super::SmbusWriteFtraceEvent),
15718        #[prost(message, tag="33")]
15719        SmbusResult(super::SmbusResultFtraceEvent),
15720        #[prost(message, tag="34")]
15721        SmbusReply(super::SmbusReplyFtraceEvent),
15722        #[prost(message, tag="35")]
15723        LowmemoryKill(super::LowmemoryKillFtraceEvent),
15724        #[prost(message, tag="36")]
15725        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
15726        #[prost(message, tag="37")]
15727        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
15728        #[prost(message, tag="38")]
15729        SyncPt(super::SyncPtFtraceEvent),
15730        #[prost(message, tag="39")]
15731        SyncTimeline(super::SyncTimelineFtraceEvent),
15732        #[prost(message, tag="40")]
15733        SyncWait(super::SyncWaitFtraceEvent),
15734        #[prost(message, tag="41")]
15735        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
15736        #[prost(message, tag="42")]
15737        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
15738        #[prost(message, tag="43")]
15739        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
15740        #[prost(message, tag="44")]
15741        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
15742        #[prost(message, tag="45")]
15743        BlockRqIssue(super::BlockRqIssueFtraceEvent),
15744        #[prost(message, tag="46")]
15745        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
15746        #[prost(message, tag="47")]
15747        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
15748        #[prost(message, tag="48")]
15749        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
15750        #[prost(message, tag="49")]
15751        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
15752        #[prost(message, tag="50")]
15753        BinderTransaction(super::BinderTransactionFtraceEvent),
15754        #[prost(message, tag="51")]
15755        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
15756        #[prost(message, tag="52")]
15757        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
15758        #[prost(message, tag="53")]
15759        BinderLock(super::BinderLockFtraceEvent),
15760        #[prost(message, tag="54")]
15761        BinderLocked(super::BinderLockedFtraceEvent),
15762        #[prost(message, tag="55")]
15763        BinderUnlock(super::BinderUnlockFtraceEvent),
15764        #[prost(message, tag="56")]
15765        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
15766        #[prost(message, tag="57")]
15767        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
15768        #[prost(message, tag="58")]
15769        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
15770        #[prost(message, tag="59")]
15771        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
15772        #[prost(message, tag="60")]
15773        RegulatorDisable(super::RegulatorDisableFtraceEvent),
15774        #[prost(message, tag="61")]
15775        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
15776        #[prost(message, tag="62")]
15777        RegulatorEnable(super::RegulatorEnableFtraceEvent),
15778        #[prost(message, tag="63")]
15779        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
15780        #[prost(message, tag="64")]
15781        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
15782        #[prost(message, tag="65")]
15783        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
15784        #[prost(message, tag="66")]
15785        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
15786        #[prost(message, tag="67")]
15787        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
15788        #[prost(message, tag="68")]
15789        CgroupMkdir(super::CgroupMkdirFtraceEvent),
15790        #[prost(message, tag="69")]
15791        CgroupRemount(super::CgroupRemountFtraceEvent),
15792        #[prost(message, tag="70")]
15793        CgroupRmdir(super::CgroupRmdirFtraceEvent),
15794        #[prost(message, tag="71")]
15795        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
15796        #[prost(message, tag="72")]
15797        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
15798        #[prost(message, tag="73")]
15799        CgroupRelease(super::CgroupReleaseFtraceEvent),
15800        #[prost(message, tag="74")]
15801        CgroupRename(super::CgroupRenameFtraceEvent),
15802        #[prost(message, tag="75")]
15803        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
15804        #[prost(message, tag="76")]
15805        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
15806        #[prost(message, tag="77")]
15807        MdpCommit(super::MdpCommitFtraceEvent),
15808        #[prost(message, tag="78")]
15809        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
15810        #[prost(message, tag="79")]
15811        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
15812        #[prost(message, tag="80")]
15813        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
15814        #[prost(message, tag="81")]
15815        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
15816        #[prost(message, tag="82")]
15817        MdpCompareBw(super::MdpCompareBwFtraceEvent),
15818        #[prost(message, tag="83")]
15819        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
15820        #[prost(message, tag="84")]
15821        MdpSsppSet(super::MdpSsppSetFtraceEvent),
15822        #[prost(message, tag="85")]
15823        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
15824        #[prost(message, tag="86")]
15825        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
15826        #[prost(message, tag="87")]
15827        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
15828        #[prost(message, tag="88")]
15829        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
15830        #[prost(message, tag="89")]
15831        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
15832        #[prost(message, tag="90")]
15833        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
15834        #[prost(message, tag="91")]
15835        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
15836        #[prost(message, tag="92")]
15837        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
15838        #[prost(message, tag="93")]
15839        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
15840        #[prost(message, tag="94")]
15841        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
15842        #[prost(message, tag="95")]
15843        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
15844        #[prost(message, tag="96")]
15845        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
15846        #[prost(message, tag="97")]
15847        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
15848        #[prost(message, tag="98")]
15849        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
15850        #[prost(message, tag="99")]
15851        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
15852        #[prost(message, tag="100")]
15853        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
15854        #[prost(message, tag="101")]
15855        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
15856        #[prost(message, tag="102")]
15857        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
15858        #[prost(message, tag="103")]
15859        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
15860        #[prost(message, tag="104")]
15861        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
15862        #[prost(message, tag="105")]
15863        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
15864        #[prost(message, tag="106")]
15865        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
15866        #[prost(message, tag="107")]
15867        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
15868        #[prost(message, tag="108")]
15869        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
15870        #[prost(message, tag="109")]
15871        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
15872        #[prost(message, tag="110")]
15873        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
15874        #[prost(message, tag="111")]
15875        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
15876        #[prost(message, tag="112")]
15877        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
15878        #[prost(message, tag="113")]
15879        SuspendResume(super::SuspendResumeFtraceEvent),
15880        #[prost(message, tag="114")]
15881        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
15882        #[prost(message, tag="115")]
15883        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
15884        #[prost(message, tag="116")]
15885        BlockBioBounce(super::BlockBioBounceFtraceEvent),
15886        #[prost(message, tag="117")]
15887        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
15888        #[prost(message, tag="118")]
15889        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
15890        #[prost(message, tag="119")]
15891        BlockBioQueue(super::BlockBioQueueFtraceEvent),
15892        #[prost(message, tag="120")]
15893        BlockBioRemap(super::BlockBioRemapFtraceEvent),
15894        #[prost(message, tag="121")]
15895        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
15896        #[prost(message, tag="122")]
15897        BlockGetrq(super::BlockGetrqFtraceEvent),
15898        #[prost(message, tag="123")]
15899        BlockPlug(super::BlockPlugFtraceEvent),
15900        #[prost(message, tag="124")]
15901        BlockRqAbort(super::BlockRqAbortFtraceEvent),
15902        #[prost(message, tag="125")]
15903        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
15904        #[prost(message, tag="126")]
15905        BlockRqInsert(super::BlockRqInsertFtraceEvent),
15906        /// removed field with id 127;
15907        #[prost(message, tag="128")]
15908        BlockRqRemap(super::BlockRqRemapFtraceEvent),
15909        #[prost(message, tag="129")]
15910        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
15911        #[prost(message, tag="130")]
15912        BlockSleeprq(super::BlockSleeprqFtraceEvent),
15913        #[prost(message, tag="131")]
15914        BlockSplit(super::BlockSplitFtraceEvent),
15915        #[prost(message, tag="132")]
15916        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
15917        #[prost(message, tag="133")]
15918        BlockUnplug(super::BlockUnplugFtraceEvent),
15919        #[prost(message, tag="134")]
15920        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
15921        #[prost(message, tag="135")]
15922        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
15923        #[prost(message, tag="136")]
15924        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
15925        #[prost(message, tag="137")]
15926        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
15927        #[prost(message, tag="138")]
15928        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
15929        #[prost(message, tag="139")]
15930        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
15931        #[prost(message, tag="140")]
15932        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
15933        #[prost(message, tag="141")]
15934        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
15935        #[prost(message, tag="142")]
15936        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
15937        #[prost(message, tag="143")]
15938        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
15939        #[prost(message, tag="144")]
15940        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
15941        #[prost(message, tag="145")]
15942        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
15943        #[prost(message, tag="146")]
15944        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
15945        #[prost(message, tag="147")]
15946        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
15947        #[prost(message, tag="148")]
15948        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
15949        #[prost(message, tag="149")]
15950        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
15951        #[prost(message, tag="150")]
15952        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
15953        #[prost(message, tag="151")]
15954        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
15955        #[prost(message, tag="152")]
15956        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
15957        #[prost(message, tag="153")]
15958        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
15959        #[prost(message, tag="154")]
15960        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
15961        #[prost(message, tag="155")]
15962        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
15963        #[prost(message, tag="156")]
15964        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
15965        #[prost(message, tag="157")]
15966        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
15967        #[prost(message, tag="158")]
15968        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
15969        #[prost(message, tag="159")]
15970        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
15971        #[prost(message, tag="160")]
15972        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
15973        #[prost(message, tag="161")]
15974        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
15975        #[prost(message, tag="162")]
15976        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
15977        #[prost(message, tag="163")]
15978        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
15979        #[prost(message, tag="164")]
15980        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
15981        #[prost(message, tag="165")]
15982        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
15983        #[prost(message, tag="166")]
15984        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
15985        #[prost(message, tag="167")]
15986        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
15987        #[prost(message, tag="168")]
15988        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
15989        #[prost(message, tag="169")]
15990        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
15991        #[prost(message, tag="170")]
15992        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
15993        #[prost(message, tag="171")]
15994        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
15995        #[prost(message, tag="172")]
15996        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
15997        #[prost(message, tag="173")]
15998        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
15999        #[prost(message, tag="174")]
16000        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
16001        #[prost(message, tag="175")]
16002        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
16003        #[prost(message, tag="176")]
16004        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
16005        #[prost(message, tag="177")]
16006        Ext4Forget(super::Ext4ForgetFtraceEvent),
16007        #[prost(message, tag="178")]
16008        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
16009        #[prost(message, tag="179")]
16010        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
16011        #[prost(message, tag="180")]
16012        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
16013        #[prost(message, tag="181")]
16014        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
16015        #[prost(message, tag="182")]
16016        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
16017        #[prost(message, tag="183")]
16018        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
16019        #[prost(message, tag="184")]
16020        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
16021        #[prost(message, tag="185")]
16022        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
16023        #[prost(message, tag="186")]
16024        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
16025        #[prost(message, tag="187")]
16026        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
16027        #[prost(message, tag="188")]
16028        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
16029        #[prost(message, tag="189")]
16030        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
16031        #[prost(message, tag="190")]
16032        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
16033        #[prost(message, tag="191")]
16034        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
16035        #[prost(message, tag="192")]
16036        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
16037        #[prost(message, tag="193")]
16038        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
16039        #[prost(message, tag="194")]
16040        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
16041        #[prost(message, tag="195")]
16042        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
16043        #[prost(message, tag="196")]
16044        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
16045        #[prost(message, tag="197")]
16046        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
16047        #[prost(message, tag="198")]
16048        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
16049        #[prost(message, tag="199")]
16050        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
16051        #[prost(message, tag="200")]
16052        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
16053        #[prost(message, tag="201")]
16054        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
16055        #[prost(message, tag="202")]
16056        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
16057        #[prost(message, tag="203")]
16058        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
16059        #[prost(message, tag="204")]
16060        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
16061        #[prost(message, tag="205")]
16062        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
16063        #[prost(message, tag="206")]
16064        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
16065        #[prost(message, tag="207")]
16066        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
16067        #[prost(message, tag="208")]
16068        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
16069        #[prost(message, tag="209")]
16070        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
16071        #[prost(message, tag="210")]
16072        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
16073        #[prost(message, tag="211")]
16074        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
16075        #[prost(message, tag="212")]
16076        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
16077        #[prost(message, tag="213")]
16078        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
16079        #[prost(message, tag="214")]
16080        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
16081        #[prost(message, tag="215")]
16082        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
16083        #[prost(message, tag="216")]
16084        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
16085        #[prost(message, tag="217")]
16086        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
16087        #[prost(message, tag="218")]
16088        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
16089        #[prost(message, tag="219")]
16090        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
16091        /// removed field with id 220;
16092        /// removed field with id 221;
16093        /// removed field with id 222;
16094        /// removed field with id 223;
16095        /// removed field with id 224;
16096        /// removed field with id 225;
16097        /// removed field with id 226;
16098        /// removed field with id 227;
16099        /// removed field with id 228;
16100        /// removed field with id 229;
16101        #[prost(message, tag="230")]
16102        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
16103        #[prost(message, tag="231")]
16104        Ext4Writepage(super::Ext4WritepageFtraceEvent),
16105        #[prost(message, tag="232")]
16106        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
16107        #[prost(message, tag="233")]
16108        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
16109        #[prost(message, tag="234")]
16110        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
16111        #[prost(message, tag="235")]
16112        TaskNewtask(super::TaskNewtaskFtraceEvent),
16113        #[prost(message, tag="236")]
16114        TaskRename(super::TaskRenameFtraceEvent),
16115        #[prost(message, tag="237")]
16116        SchedProcessExec(super::SchedProcessExecFtraceEvent),
16117        #[prost(message, tag="238")]
16118        SchedProcessExit(super::SchedProcessExitFtraceEvent),
16119        #[prost(message, tag="239")]
16120        SchedProcessFork(super::SchedProcessForkFtraceEvent),
16121        #[prost(message, tag="240")]
16122        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
16123        #[prost(message, tag="241")]
16124        SchedProcessHang(super::SchedProcessHangFtraceEvent),
16125        #[prost(message, tag="242")]
16126        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
16127        #[prost(message, tag="243")]
16128        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
16129        #[prost(message, tag="244")]
16130        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
16131        #[prost(message, tag="245")]
16132        F2fsFallocate(super::F2fsFallocateFtraceEvent),
16133        #[prost(message, tag="246")]
16134        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
16135        #[prost(message, tag="247")]
16136        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
16137        #[prost(message, tag="248")]
16138        F2fsIget(super::F2fsIgetFtraceEvent),
16139        #[prost(message, tag="249")]
16140        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
16141        #[prost(message, tag="250")]
16142        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
16143        #[prost(message, tag="251")]
16144        F2fsReadpage(super::F2fsReadpageFtraceEvent),
16145        #[prost(message, tag="252")]
16146        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
16147        #[prost(message, tag="253")]
16148        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
16149        #[prost(message, tag="254")]
16150        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
16151        #[prost(message, tag="255")]
16152        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
16153        #[prost(message, tag="256")]
16154        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
16155        #[prost(message, tag="257")]
16156        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
16157        #[prost(message, tag="258")]
16158        F2fsTruncate(super::F2fsTruncateFtraceEvent),
16159        #[prost(message, tag="259")]
16160        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
16161        #[prost(message, tag="260")]
16162        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
16163        #[prost(message, tag="261")]
16164        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
16165        #[prost(message, tag="262")]
16166        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
16167        #[prost(message, tag="263")]
16168        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
16169        #[prost(message, tag="264")]
16170        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
16171        #[prost(message, tag="265")]
16172        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
16173        #[prost(message, tag="266")]
16174        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
16175        #[prost(message, tag="267")]
16176        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
16177        #[prost(message, tag="268")]
16178        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
16179        #[prost(message, tag="269")]
16180        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
16181        #[prost(message, tag="270")]
16182        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
16183        #[prost(message, tag="271")]
16184        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
16185        #[prost(message, tag="272")]
16186        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
16187        #[prost(message, tag="273")]
16188        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
16189        #[prost(message, tag="274")]
16190        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
16191        #[prost(message, tag="275")]
16192        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
16193        #[prost(message, tag="276")]
16194        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
16195        #[prost(message, tag="277")]
16196        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
16197        #[prost(message, tag="278")]
16198        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
16199        #[prost(message, tag="279")]
16200        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
16201        #[prost(message, tag="280")]
16202        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
16203        #[prost(message, tag="281")]
16204        IommuMapRange(super::IommuMapRangeFtraceEvent),
16205        #[prost(message, tag="282")]
16206        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
16207        #[prost(message, tag="283")]
16208        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
16209        #[prost(message, tag="284")]
16210        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
16211        #[prost(message, tag="285")]
16212        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
16213        #[prost(message, tag="286")]
16214        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
16215        #[prost(message, tag="287")]
16216        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
16217        #[prost(message, tag="288")]
16218        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
16219        #[prost(message, tag="289")]
16220        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
16221        #[prost(message, tag="290")]
16222        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
16223        #[prost(message, tag="291")]
16224        IonPrefetching(super::IonPrefetchingFtraceEvent),
16225        #[prost(message, tag="292")]
16226        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
16227        #[prost(message, tag="293")]
16228        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
16229        #[prost(message, tag="294")]
16230        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
16231        #[prost(message, tag="295")]
16232        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
16233        #[prost(message, tag="296")]
16234        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
16235        #[prost(message, tag="297")]
16236        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
16237        #[prost(message, tag="298")]
16238        Kfree(super::KfreeFtraceEvent),
16239        #[prost(message, tag="299")]
16240        Kmalloc(super::KmallocFtraceEvent),
16241        #[prost(message, tag="300")]
16242        KmallocNode(super::KmallocNodeFtraceEvent),
16243        #[prost(message, tag="301")]
16244        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
16245        #[prost(message, tag="302")]
16246        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
16247        #[prost(message, tag="303")]
16248        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
16249        #[prost(message, tag="304")]
16250        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
16251        #[prost(message, tag="305")]
16252        MigratePagesStart(super::MigratePagesStartFtraceEvent),
16253        #[prost(message, tag="306")]
16254        MigrateRetry(super::MigrateRetryFtraceEvent),
16255        #[prost(message, tag="307")]
16256        MmPageAlloc(super::MmPageAllocFtraceEvent),
16257        #[prost(message, tag="308")]
16258        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
16259        #[prost(message, tag="309")]
16260        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
16261        #[prost(message, tag="310")]
16262        MmPageFree(super::MmPageFreeFtraceEvent),
16263        #[prost(message, tag="311")]
16264        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
16265        #[prost(message, tag="312")]
16266        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
16267        #[prost(message, tag="313")]
16268        RssStat(super::RssStatFtraceEvent),
16269        #[prost(message, tag="314")]
16270        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
16271        #[prost(message, tag="315")]
16272        IonHeapGrow(super::IonHeapGrowFtraceEvent),
16273        #[prost(message, tag="316")]
16274        FenceInit(super::FenceInitFtraceEvent),
16275        #[prost(message, tag="317")]
16276        FenceDestroy(super::FenceDestroyFtraceEvent),
16277        #[prost(message, tag="318")]
16278        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
16279        #[prost(message, tag="319")]
16280        FenceSignaled(super::FenceSignaledFtraceEvent),
16281        #[prost(message, tag="320")]
16282        ClkEnable(super::ClkEnableFtraceEvent),
16283        #[prost(message, tag="321")]
16284        ClkDisable(super::ClkDisableFtraceEvent),
16285        #[prost(message, tag="322")]
16286        ClkSetRate(super::ClkSetRateFtraceEvent),
16287        #[prost(message, tag="323")]
16288        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
16289        #[prost(message, tag="324")]
16290        SignalDeliver(super::SignalDeliverFtraceEvent),
16291        #[prost(message, tag="325")]
16292        SignalGenerate(super::SignalGenerateFtraceEvent),
16293        #[prost(message, tag="326")]
16294        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
16295        #[prost(message, tag="327")]
16296        Generic(super::GenericFtraceEvent),
16297        #[prost(message, tag="328")]
16298        MmEventRecord(super::MmEventRecordFtraceEvent),
16299        #[prost(message, tag="329")]
16300        SysEnter(super::SysEnterFtraceEvent),
16301        #[prost(message, tag="330")]
16302        SysExit(super::SysExitFtraceEvent),
16303        #[prost(message, tag="331")]
16304        Zero(super::ZeroFtraceEvent),
16305        #[prost(message, tag="332")]
16306        GpuFrequency(super::GpuFrequencyFtraceEvent),
16307        #[prost(message, tag="333")]
16308        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
16309        #[prost(message, tag="334")]
16310        MarkVictim(super::MarkVictimFtraceEvent),
16311        #[prost(message, tag="335")]
16312        IonStat(super::IonStatFtraceEvent),
16313        #[prost(message, tag="336")]
16314        IonBufferCreate(super::IonBufferCreateFtraceEvent),
16315        #[prost(message, tag="337")]
16316        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
16317        #[prost(message, tag="338")]
16318        ScmCallStart(super::ScmCallStartFtraceEvent),
16319        #[prost(message, tag="339")]
16320        ScmCallEnd(super::ScmCallEndFtraceEvent),
16321        #[prost(message, tag="340")]
16322        GpuMemTotal(super::GpuMemTotalFtraceEvent),
16323        #[prost(message, tag="341")]
16324        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
16325        #[prost(message, tag="342")]
16326        CdevUpdate(super::CdevUpdateFtraceEvent),
16327        #[prost(message, tag="343")]
16328        CpuhpExit(super::CpuhpExitFtraceEvent),
16329        #[prost(message, tag="344")]
16330        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
16331        #[prost(message, tag="345")]
16332        CpuhpEnter(super::CpuhpEnterFtraceEvent),
16333        #[prost(message, tag="346")]
16334        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
16335        #[prost(message, tag="347")]
16336        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
16337        #[prost(message, tag="348")]
16338        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
16339        #[prost(message, tag="349")]
16340        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
16341        #[prost(message, tag="350")]
16342        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
16343        #[prost(message, tag="351")]
16344        DmaHeapStat(super::DmaHeapStatFtraceEvent),
16345        #[prost(message, tag="352")]
16346        CpuhpPause(super::CpuhpPauseFtraceEvent),
16347        #[prost(message, tag="353")]
16348        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
16349        #[prost(message, tag="354")]
16350        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
16351        #[prost(message, tag="355")]
16352        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
16353        #[prost(message, tag="356")]
16354        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
16355        #[prost(message, tag="357")]
16356        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
16357        #[prost(message, tag="358")]
16358        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
16359        #[prost(message, tag="359")]
16360        RssStatThrottled(super::RssStatThrottledFtraceEvent),
16361        #[prost(message, tag="360")]
16362        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
16363        #[prost(message, tag="361")]
16364        NetDevXmit(super::NetDevXmitFtraceEvent),
16365        #[prost(message, tag="362")]
16366        InetSockSetState(super::InetSockSetStateFtraceEvent),
16367        #[prost(message, tag="363")]
16368        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
16369        #[prost(message, tag="364")]
16370        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
16371        #[prost(message, tag="365")]
16372        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
16373        #[prost(message, tag="366")]
16374        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
16375        #[prost(message, tag="367")]
16376        KfreeSkb(super::KfreeSkbFtraceEvent),
16377        #[prost(message, tag="368")]
16378        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
16379        #[prost(message, tag="369")]
16380        KvmAckIrq(super::KvmAckIrqFtraceEvent),
16381        #[prost(message, tag="370")]
16382        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
16383        #[prost(message, tag="371")]
16384        KvmAgePage(super::KvmAgePageFtraceEvent),
16385        #[prost(message, tag="372")]
16386        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
16387        #[prost(message, tag="373")]
16388        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
16389        #[prost(message, tag="374")]
16390        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
16391        #[prost(message, tag="375")]
16392        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
16393        #[prost(message, tag="376")]
16394        KvmEntry(super::KvmEntryFtraceEvent),
16395        #[prost(message, tag="377")]
16396        KvmExit(super::KvmExitFtraceEvent),
16397        #[prost(message, tag="378")]
16398        KvmFpu(super::KvmFpuFtraceEvent),
16399        #[prost(message, tag="379")]
16400        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
16401        #[prost(message, tag="380")]
16402        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
16403        #[prost(message, tag="381")]
16404        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
16405        #[prost(message, tag="382")]
16406        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
16407        #[prost(message, tag="383")]
16408        KvmIrqLine(super::KvmIrqLineFtraceEvent),
16409        #[prost(message, tag="384")]
16410        KvmMmio(super::KvmMmioFtraceEvent),
16411        #[prost(message, tag="385")]
16412        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
16413        #[prost(message, tag="386")]
16414        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
16415        #[prost(message, tag="387")]
16416        KvmSetIrq(super::KvmSetIrqFtraceEvent),
16417        #[prost(message, tag="388")]
16418        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
16419        #[prost(message, tag="389")]
16420        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
16421        #[prost(message, tag="390")]
16422        KvmSysAccess(super::KvmSysAccessFtraceEvent),
16423        #[prost(message, tag="391")]
16424        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
16425        #[prost(message, tag="392")]
16426        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
16427        #[prost(message, tag="393")]
16428        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
16429        #[prost(message, tag="394")]
16430        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
16431        #[prost(message, tag="395")]
16432        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
16433        #[prost(message, tag="396")]
16434        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
16435        #[prost(message, tag="397")]
16436        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
16437        #[prost(message, tag="398")]
16438        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
16439        #[prost(message, tag="399")]
16440        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
16441        #[prost(message, tag="400")]
16442        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
16443        #[prost(message, tag="401")]
16444        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
16445        #[prost(message, tag="402")]
16446        TrapReg(super::TrapRegFtraceEvent),
16447        #[prost(message, tag="403")]
16448        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
16449        #[prost(message, tag="404")]
16450        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
16451        #[prost(message, tag="405")]
16452        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
16453        #[prost(message, tag="406")]
16454        UfshcdCommand(super::UfshcdCommandFtraceEvent),
16455        #[prost(message, tag="407")]
16456        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
16457        #[prost(message, tag="408")]
16458        Console(super::ConsoleFtraceEvent),
16459        #[prost(message, tag="409")]
16460        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
16461        #[prost(message, tag="410")]
16462        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
16463        #[prost(message, tag="411")]
16464        DrmSchedJob(super::DrmSchedJobFtraceEvent),
16465        #[prost(message, tag="412")]
16466        DrmRunJob(super::DrmRunJobFtraceEvent),
16467        #[prost(message, tag="413")]
16468        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
16469        #[prost(message, tag="414")]
16470        DmaFenceInit(super::DmaFenceInitFtraceEvent),
16471        #[prost(message, tag="415")]
16472        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
16473        #[prost(message, tag="416")]
16474        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
16475        #[prost(message, tag="417")]
16476        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
16477        #[prost(message, tag="418")]
16478        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
16479        #[prost(message, tag="419")]
16480        F2fsIostat(super::F2fsIostatFtraceEvent),
16481        #[prost(message, tag="420")]
16482        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
16483        #[prost(message, tag="421")]
16484        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
16485        #[prost(message, tag="422")]
16486        V4l2Qbuf(super::V4l2QbufFtraceEvent),
16487        #[prost(message, tag="423")]
16488        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
16489        #[prost(message, tag="424")]
16490        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
16491        #[prost(message, tag="425")]
16492        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
16493        #[prost(message, tag="426")]
16494        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
16495        #[prost(message, tag="427")]
16496        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
16497        #[prost(message, tag="428")]
16498        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
16499        #[prost(message, tag="429")]
16500        DsiRx(super::DsiRxFtraceEvent),
16501        #[prost(message, tag="430")]
16502        DsiTx(super::DsiTxFtraceEvent),
16503        #[prost(message, tag="431")]
16504        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
16505        #[prost(message, tag="432")]
16506        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
16507        #[prost(message, tag="433")]
16508        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
16509        #[prost(message, tag="434")]
16510        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
16511        #[prost(message, tag="435")]
16512        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
16513        #[prost(message, tag="436")]
16514        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
16515        #[prost(message, tag="437")]
16516        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
16517        #[prost(message, tag="438")]
16518        FuncgraphExit(super::FuncgraphExitFtraceEvent),
16519        #[prost(message, tag="439")]
16520        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
16521        #[prost(message, tag="440")]
16522        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
16523        #[prost(message, tag="441")]
16524        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
16525        #[prost(message, tag="442")]
16526        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
16527        #[prost(message, tag="443")]
16528        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
16529        #[prost(message, tag="444")]
16530        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
16531        #[prost(message, tag="445")]
16532        TrustySmc(super::TrustySmcFtraceEvent),
16533        #[prost(message, tag="446")]
16534        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
16535        #[prost(message, tag="447")]
16536        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
16537        #[prost(message, tag="448")]
16538        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
16539        #[prost(message, tag="449")]
16540        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
16541        #[prost(message, tag="450")]
16542        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
16543        #[prost(message, tag="451")]
16544        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
16545        #[prost(message, tag="452")]
16546        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
16547        #[prost(message, tag="453")]
16548        TrustyIrq(super::TrustyIrqFtraceEvent),
16549        #[prost(message, tag="454")]
16550        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
16551        #[prost(message, tag="455")]
16552        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
16553        #[prost(message, tag="456")]
16554        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
16555        #[prost(message, tag="457")]
16556        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
16557        #[prost(message, tag="458")]
16558        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
16559        /// removed field with id 459;
16560        #[prost(message, tag="460")]
16561        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
16562        #[prost(message, tag="461")]
16563        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
16564        #[prost(message, tag="462")]
16565        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
16566        /// removed field with id 463;
16567        #[prost(message, tag="464")]
16568        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
16569        #[prost(message, tag="465")]
16570        CmaAllocStart(super::CmaAllocStartFtraceEvent),
16571        #[prost(message, tag="466")]
16572        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
16573        #[prost(message, tag="467")]
16574        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
16575        #[prost(message, tag="468")]
16576        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
16577        #[prost(message, tag="469")]
16578        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
16579        #[prost(message, tag="470")]
16580        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
16581        #[prost(message, tag="471")]
16582        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
16583        #[prost(message, tag="472")]
16584        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
16585        #[prost(message, tag="473")]
16586        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
16587        #[prost(message, tag="474")]
16588        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
16589        #[prost(message, tag="475")]
16590        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
16591        #[prost(message, tag="476")]
16592        HypEnter(super::HypEnterFtraceEvent),
16593        #[prost(message, tag="477")]
16594        HypExit(super::HypExitFtraceEvent),
16595        #[prost(message, tag="478")]
16596        HostHcall(super::HostHcallFtraceEvent),
16597        #[prost(message, tag="479")]
16598        HostSmc(super::HostSmcFtraceEvent),
16599        #[prost(message, tag="480")]
16600        HostMemAbort(super::HostMemAbortFtraceEvent),
16601        #[prost(message, tag="481")]
16602        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
16603        #[prost(message, tag="482")]
16604        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
16605        #[prost(message, tag="483")]
16606        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
16607        #[prost(message, tag="484")]
16608        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
16609        #[prost(message, tag="485")]
16610        BinderCommand(super::BinderCommandFtraceEvent),
16611        #[prost(message, tag="486")]
16612        BinderReturn(super::BinderReturnFtraceEvent),
16613        #[prost(message, tag="487")]
16614        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
16615        #[prost(message, tag="488")]
16616        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
16617        #[prost(message, tag="489")]
16618        RpmStatus(super::RpmStatusFtraceEvent),
16619        #[prost(message, tag="490")]
16620        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
16621        #[prost(message, tag="491")]
16622        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
16623        #[prost(message, tag="492")]
16624        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
16625        #[prost(message, tag="493")]
16626        DpuDsiRx(super::DpuDsiRxFtraceEvent),
16627        #[prost(message, tag="494")]
16628        DpuDsiTx(super::DpuDsiTxFtraceEvent),
16629        #[prost(message, tag="495")]
16630        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
16631        #[prost(message, tag="496")]
16632        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
16633        #[prost(message, tag="497")]
16634        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
16635        #[prost(message, tag="498")]
16636        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
16637        #[prost(message, tag="499")]
16638        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
16639        #[prost(message, tag="500")]
16640        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
16641        #[prost(message, tag="501")]
16642        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
16643        #[prost(message, tag="502")]
16644        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
16645        #[prost(message, tag="503")]
16646        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
16647        #[prost(message, tag="504")]
16648        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
16649        #[prost(message, tag="505")]
16650        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
16651        #[prost(message, tag="506")]
16652        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
16653        #[prost(message, tag="507")]
16654        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
16655        #[prost(message, tag="508")]
16656        DcvshFreq(super::DcvshFreqFtraceEvent),
16657        #[prost(message, tag="509")]
16658        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
16659        #[prost(message, tag="510")]
16660        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
16661        #[prost(message, tag="511")]
16662        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
16663        #[prost(message, tag="512")]
16664        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
16665        #[prost(message, tag="513")]
16666        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
16667        #[prost(message, tag="514")]
16668        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
16669        #[prost(message, tag="515")]
16670        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
16671        #[prost(message, tag="516")]
16672        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
16673        #[prost(message, tag="517")]
16674        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
16675        #[prost(message, tag="518")]
16676        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
16677        #[prost(message, tag="519")]
16678        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
16679        #[prost(message, tag="520")]
16680        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
16681        #[prost(message, tag="521")]
16682        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
16683        #[prost(message, tag="522")]
16684        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
16685        #[prost(message, tag="523")]
16686        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
16687        #[prost(message, tag="524")]
16688        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
16689        #[prost(message, tag="525")]
16690        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
16691        #[prost(message, tag="526")]
16692        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
16693        #[prost(message, tag="527")]
16694        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
16695        #[prost(message, tag="528")]
16696        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
16697        #[prost(message, tag="529")]
16698        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
16699        #[prost(message, tag="530")]
16700        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
16701        #[prost(message, tag="531")]
16702        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
16703        #[prost(message, tag="532")]
16704        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
16705        #[prost(message, tag="533")]
16706        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
16707        #[prost(message, tag="534")]
16708        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
16709        #[prost(message, tag="535")]
16710        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
16711        #[prost(message, tag="536")]
16712        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
16713        #[prost(message, tag="537")]
16714        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
16715        #[prost(message, tag="538")]
16716        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
16717        #[prost(message, tag="539")]
16718        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
16719        #[prost(message, tag="540")]
16720        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
16721        #[prost(message, tag="541")]
16722        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
16723        #[prost(message, tag="542")]
16724        KprobeEvent(super::KprobeEvent),
16725        #[prost(message, tag="543")]
16726        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
16727        #[prost(message, tag="544")]
16728        DoSysOpen(super::DoSysOpenFtraceEvent),
16729        #[prost(message, tag="545")]
16730        OpenExec(super::OpenExecFtraceEvent),
16731        #[prost(message, tag="546")]
16732        BlockIoStart(super::BlockIoStartFtraceEvent),
16733        #[prost(message, tag="547")]
16734        BlockIoDone(super::BlockIoDoneFtraceEvent),
16735        #[prost(message, tag="548")]
16736        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
16737        #[prost(message, tag="549")]
16738        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
16739        #[prost(message, tag="550")]
16740        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
16741        #[prost(message, tag="551")]
16742        HrtimerStart(super::HrtimerStartFtraceEvent),
16743        #[prost(message, tag="552")]
16744        HrtimerCancel(super::HrtimerCancelFtraceEvent),
16745        #[prost(message, tag="553")]
16746        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
16747        #[prost(message, tag="554")]
16748        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
16749        #[prost(message, tag="555")]
16750        TimerStart(super::TimerStartFtraceEvent),
16751        #[prost(message, tag="556")]
16752        TimerCancel(super::TimerCancelFtraceEvent),
16753        #[prost(message, tag="557")]
16754        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
16755        #[prost(message, tag="558")]
16756        TimerExpireExit(super::TimerExpireExitFtraceEvent),
16757        #[prost(message, tag="559")]
16758        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
16759        #[prost(message, tag="560")]
16760        LocalTimerExit(super::LocalTimerExitFtraceEvent),
16761        #[prost(message, tag="561")]
16762        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
16763        #[prost(message, tag="562")]
16764        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
16765        #[prost(message, tag="563")]
16766        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
16767        #[prost(message, tag="564")]
16768        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
16769        #[prost(message, tag="565")]
16770        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
16771        #[prost(message, tag="566")]
16772        Dwc3Event(super::Dwc3EventFtraceEvent),
16773        #[prost(message, tag="567")]
16774        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
16775        #[prost(message, tag="568")]
16776        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
16777        #[prost(message, tag="569")]
16778        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
16779        #[prost(message, tag="570")]
16780        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
16781        #[prost(message, tag="571")]
16782        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
16783        #[prost(message, tag="572")]
16784        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
16785        #[prost(message, tag="573")]
16786        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
16787        #[prost(message, tag="574")]
16788        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
16789        #[prost(message, tag="575")]
16790        Dwc3Writel(super::Dwc3WritelFtraceEvent),
16791        #[prost(message, tag="576")]
16792        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
16793        #[prost(message, tag="577")]
16794        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
16795        #[prost(message, tag="578")]
16796        HostFfaCall(super::HostFfaCallFtraceEvent),
16797        #[prost(message, tag="579")]
16798        DmabufRssStat(super::DmabufRssStatFtraceEvent),
16799        #[prost(message, tag="580")]
16800        IommuIdmap(super::IommuIdmapFtraceEvent),
16801        #[prost(message, tag="581")]
16802        PsciMemProtect(super::PsciMemProtectFtraceEvent),
16803        #[prost(message, tag="582")]
16804        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
16805        #[prost(message, tag="583")]
16806        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
16807        #[prost(message, tag="584")]
16808        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
16809        #[prost(message, tag="585")]
16810        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
16811        #[prost(message, tag="586")]
16812        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
16813        #[prost(message, tag="587")]
16814        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
16815        #[prost(message, tag="588")]
16816        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
16817        #[prost(message, tag="589")]
16818        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
16819        #[prost(message, tag="590")]
16820        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
16821    }
16822}
16823// End of protos/perfetto/trace/ftrace/ftrace_event.proto
16824
16825// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
16826
16827/// Per-CPU kernel buffer stats for the ftrace data source gathered from
16828/// /sys/kernel/tracing/per_cpu/cpuX/stats.
16829#[derive(Clone, PartialEq, ::prost::Message)]
16830pub struct FtraceCpuStats {
16831    /// CPU index.
16832    #[prost(uint64, optional, tag="1")]
16833    pub cpu: ::core::option::Option<u64>,
16834    /// Number of entries currently in the kernel buffer.
16835    #[prost(uint64, optional, tag="2")]
16836    pub entries: ::core::option::Option<u64>,
16837    /// Number of events lost in kernel buffers due to overwriting of old events
16838    /// before userspace had a chance to drain them. Valid if the buffer is in
16839    /// "overwrite" mode, otherwise see |dropped_events|.
16840    #[prost(uint64, optional, tag="3")]
16841    pub overrun: ::core::option::Option<u64>,
16842    /// This should always be zero. If not the buffer size is way too small or
16843    /// something went wrong with the tracer. Quoting the kernel: "number of
16844    /// commits failing due to the buffer wrapping around while there are
16845    /// uncommitted events, such as during an interrupt storm".
16846    #[prost(uint64, optional, tag="4")]
16847    pub commit_overrun: ::core::option::Option<u64>,
16848    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
16849    /// The field should be named "bytes", but is misnamed for historical reasons.
16850    /// This value has known inaccuracies before Linux v6.6:
16851    /// <https://github.com/torvalds/linux/commit/45d99ea>
16852    #[prost(uint64, optional, tag="5")]
16853    pub bytes_read: ::core::option::Option<u64>,
16854    /// The timestamp for the oldest event still in the ring buffer.
16855    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
16856    #[prost(double, optional, tag="6")]
16857    pub oldest_event_ts: ::core::option::Option<f64>,
16858    /// The current timestamp.
16859    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
16860    #[prost(double, optional, tag="7")]
16861    pub now_ts: ::core::option::Option<f64>,
16862    /// If the kernel buffer has overwrite mode disabled, this will show the number
16863    /// of new events that were lost because the buffer was full. This is similar
16864    /// to |overrun| but only for the overwrite=false case.
16865    #[prost(uint64, optional, tag="8")]
16866    pub dropped_events: ::core::option::Option<u64>,
16867    /// The number of events read (consumed) from the buffer by userspace.
16868    #[prost(uint64, optional, tag="9")]
16869    pub read_events: ::core::option::Option<u64>,
16870}
16871/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
16872#[derive(Clone, PartialEq, ::prost::Message)]
16873pub struct FtraceKprobeStats {
16874    /// Cumulative number of kprobe events generated for this function
16875    #[prost(int64, optional, tag="1")]
16876    pub hits: ::core::option::Option<i64>,
16877    /// Cumulative number of kprobe events that could not be generated for this
16878    /// function and were missed.  This happens when too much nesting
16879    /// happens between a kprobe and its kretprobe, overflowing the
16880    /// maxactives buffer.
16881    #[prost(int64, optional, tag="2")]
16882    pub misses: ::core::option::Option<i64>,
16883}
16884/// Errors and kernel buffer stats for the ftrace data source.
16885#[derive(Clone, PartialEq, ::prost::Message)]
16886pub struct FtraceStats {
16887    /// A pair of FtraceStats is written on every trace flush:
16888    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
16889    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
16890    ///                   before this packet was written. For simple traces this
16891    ///                   will be once at the end of the trace.
16892    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
16893    pub phase: ::core::option::Option<i32>,
16894    /// Per-CPU stats (one entry for each CPU).
16895    #[prost(message, repeated, tag="2")]
16896    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
16897    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
16898    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
16899    /// trace or not. It can be used to debug kptr_restrict or security-related
16900    /// errors.
16901    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
16902    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
16903    #[prost(uint32, optional, tag="3")]
16904    pub kernel_symbols_parsed: ::core::option::Option<u32>,
16905    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
16906    #[prost(uint32, optional, tag="4")]
16907    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
16908    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
16909    /// one or more atrace categories not available on the device.
16910    #[prost(string, optional, tag="5")]
16911    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
16912    /// Ftrace events requested by the config but not present on device.
16913    #[prost(string, repeated, tag="6")]
16914    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16915    /// Ftrace events requested by the config and present on device, but which we
16916    /// failed to enable due to permissions, or due to a conflicting option
16917    /// (currently FtraceConfig.disable_generic_events).
16918    #[prost(string, repeated, tag="7")]
16919    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16920    /// The data source was configured to preserve existing events in the ftrace
16921    /// buffer before the start of the trace.
16922    #[prost(bool, optional, tag="8")]
16923    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
16924    /// Unique errors encountered during reading and parsing of the raw ftrace
16925    /// data. Ring buffer ABI related errors will also be recorded in the
16926    /// affected FtraceEventBundles with a timestamp.
16927    /// Any traces with entries in this field should be investigated, as they
16928    /// indicate a bug in perfetto or the kernel.
16929    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
16930    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
16931    /// Kprobe profile stats for functions hits and misses
16932    #[prost(message, optional, tag="10")]
16933    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
16934    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
16935    /// Added in: perfetto v52.
16936    #[prost(uint32, optional, tag="11")]
16937    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
16938    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
16939    /// on the value we're writing into the tracefs control file. Might not be
16940    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
16941    /// scratch pages (and/or other factors). Added in: perfetto v52.
16942    #[prost(uint32, optional, tag="12")]
16943    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
16944}
16945/// Nested message and enum types in `FtraceStats`.
16946pub mod ftrace_stats {
16947    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16948    #[repr(i32)]
16949    pub enum Phase {
16950        Unspecified = 0,
16951        StartOfTrace = 1,
16952        EndOfTrace = 2,
16953    }
16954    impl Phase {
16955        /// String value of the enum field names used in the ProtoBuf definition.
16956        ///
16957        /// The values are not transformed in any way and thus are considered stable
16958        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16959        pub fn as_str_name(&self) -> &'static str {
16960            match self {
16961                Phase::Unspecified => "UNSPECIFIED",
16962                Phase::StartOfTrace => "START_OF_TRACE",
16963                Phase::EndOfTrace => "END_OF_TRACE",
16964            }
16965        }
16966    }
16967}
16968// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
16969
16970// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
16971
16972/// The result of tracing one or more ftrace data pages from a single per-cpu
16973/// kernel ring buffer. If collating multiple pages' worth of events, all of
16974/// them come from contiguous pages, with no kernel data loss in between.
16975#[derive(Clone, PartialEq, ::prost::Message)]
16976pub struct FtraceEventBundle {
16977    #[prost(uint32, optional, tag="1")]
16978    pub cpu: ::core::option::Option<u32>,
16979    #[prost(message, repeated, tag="2")]
16980    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
16981    /// Set to true if there was data loss between the last time we've read from
16982    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
16983    /// in this bundle.
16984    #[prost(bool, optional, tag="3")]
16985    pub lost_events: ::core::option::Option<bool>,
16986    #[prost(message, optional, tag="4")]
16987    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
16988    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
16989    /// timestamps as that counts during suspend, is available to userspace, and
16990    /// is coherent across cpus.
16991    ///
16992    /// If this field is set, it means that a different clock was used during
16993    /// recording. Either because the boot clock is unavailable (e.g. old kernels
16994    /// before 3.x), or the trace config has set an incompatible option
16995    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
16996    /// trace_processor will do best-effort clock alignment using timestamp pairs
16997    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
16998    /// when the ftrace clock is "boot", as that is the default assumption.
16999    ///
17000    /// Some clocks (local/global) are technically per-cpu, but we make a
17001    /// simplifying assumption that they are global, as their inter-cpu skew
17002    /// should be reasonably bounded on modern systems.
17003    ///
17004    /// Added in: perfetto v19. Android T (13).
17005    #[prost(enumeration="FtraceClock", optional, tag="5")]
17006    pub ftrace_clock: ::core::option::Option<i32>,
17007    /// The timestamp according to the ftrace clock, taken at the same instant as
17008    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
17009    /// will be in the future relative to the data covered by this bundle.
17010    /// Implementation note: Populated by reading the 'now ts:' field in
17011    /// tracefs/per_cpu/cpu0/stat.
17012    ///
17013    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17014    #[prost(int64, optional, tag="6")]
17015    pub ftrace_timestamp: ::core::option::Option<i64>,
17016    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
17017    /// |ftrace_timestamp|.
17018    ///
17019    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17020    #[prost(int64, optional, tag="7")]
17021    pub boot_timestamp: ::core::option::Option<i64>,
17022    #[prost(message, repeated, tag="8")]
17023    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
17024    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
17025    /// primary difference is that this field tracked the last timestamp read from
17026    /// the per-cpu buffer, while the newer field tracks events that get
17027    /// serialised into the trace.
17028    /// Added in: perfetto v44.
17029    #[prost(uint64, optional, tag="9")]
17030    pub last_read_event_timestamp: ::core::option::Option<u64>,
17031    /// The timestamp (using ftrace clock) of the last event written into this
17032    /// data source on this cpu. In other words: the last event in the previous
17033    /// bundle.
17034    /// Lets the trace processing find an initial timestamp after which ftrace
17035    /// data is known to be valid across all cpus. Of particular importance when
17036    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
17037    /// oldest bundles can skew the first valid timestamp per cpu significantly.
17038    /// Added in: perfetto v47.
17039    #[prost(uint64, optional, tag="10")]
17040    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
17041    #[prost(message, repeated, tag="11")]
17042    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
17043    /// Written only on android builds if the config sets |debug_ftrace_abi|.
17044    /// Contains the raw ring buffer tracing page that the implementation could
17045    /// not parse.
17046    /// Addded in: perfetto v50.
17047    #[prost(bytes="vec", optional, tag="512")]
17048    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17049}
17050/// Nested message and enum types in `FtraceEventBundle`.
17051pub mod ftrace_event_bundle {
17052    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
17053    /// a subset of events & their fields is recorded.
17054    /// All fields (except comms) are stored in a structure-of-arrays form, one
17055    /// entry in each repeated field per event.
17056    #[derive(Clone, PartialEq, ::prost::Message)]
17057    pub struct CompactSched {
17058        /// Interned table of unique strings for this bundle.
17059        #[prost(string, repeated, tag="5")]
17060        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17061        /// Delta-encoded timestamps across all sched_switch events within this
17062        /// bundle. The first is absolute, each next one is relative to its
17063        /// predecessor.
17064        #[prost(uint64, repeated, tag="1")]
17065        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
17066        #[prost(int64, repeated, tag="2")]
17067        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
17068        #[prost(int32, repeated, tag="3")]
17069        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
17070        #[prost(int32, repeated, tag="4")]
17071        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
17072        /// One per event, index into |intern_table| corresponding to the
17073        /// next_comm field of the event.
17074        #[prost(uint32, repeated, tag="6")]
17075        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
17076        /// Delta-encoded timestamps across all sched_waking events within this
17077        /// bundle. The first is absolute, each next one is relative to its
17078        /// predecessor.
17079        #[prost(uint64, repeated, tag="7")]
17080        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
17081        #[prost(int32, repeated, tag="8")]
17082        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
17083        #[prost(int32, repeated, tag="9")]
17084        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
17085        #[prost(int32, repeated, tag="10")]
17086        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
17087        /// One per event, index into |intern_table| corresponding to the
17088        /// comm field of the event.
17089        #[prost(uint32, repeated, tag="11")]
17090        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
17091        #[prost(uint32, repeated, tag="12")]
17092        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
17093    }
17094    /// Errors encountered during parsing of the raw ftrace data. In case of ring
17095    /// buffer layout errors, the parser skips the rest of the offending kernel
17096    /// buffer page and continues from the next page.
17097    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
17098    /// seen within the duration of the trace (even if the affected bundles get
17099    /// overwritten in ring buffer mode).
17100    #[derive(Clone, PartialEq, ::prost::Message)]
17101    pub struct FtraceError {
17102        /// Timestamp of the data that we're unable to parse, in the ftrace clock
17103        /// domain. Currently, we use the base timestamp of the tracing page
17104        /// containing the bad record rather than the time of the record itself.
17105        #[prost(uint64, optional, tag="1")]
17106        pub timestamp: ::core::option::Option<u64>,
17107        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
17108        pub status: ::core::option::Option<i32>,
17109    }
17110    /// Describes the serialised |FtraceEvent| protos for events not known at
17111    /// compile time, when using the |denser_generic_event_encoding| option.
17112    /// Addded in: perfetto v50.
17113    #[derive(Clone, PartialEq, ::prost::Message)]
17114    pub struct GenericEventDescriptor {
17115        /// submessage id within FtraceEvent described by |event_descriptor|.
17116        #[prost(int32, optional, tag="1")]
17117        pub field_id: ::core::option::Option<i32>,
17118        /// serialised DescriptorProto
17119        #[prost(bytes="vec", optional, tag="2")]
17120        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17121    }
17122}
17123// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17124
17125// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
17126
17127/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
17128/// frequency change events in a generic kernel implementation.
17129#[derive(Clone, PartialEq, ::prost::Message)]
17130pub struct GenericKernelCpuFrequencyEvent {
17131    /// CPU in which the event occurred.
17132    #[prost(int32, optional, tag="1")]
17133    pub cpu: ::core::option::Option<i32>,
17134    /// Frequency (Hz) of the CPU.
17135    #[prost(int64, optional, tag="2")]
17136    pub freq_hz: ::core::option::Option<i64>,
17137}
17138// End of protos/perfetto/trace/generic_kernel/generic_power.proto
17139
17140// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
17141
17142/// GenericKernelTaskStateEvent is the standard proto to capture thread state
17143/// change events in a generic kernel implementation. This is mainly for the
17144/// case where scheduler events are not directly supported in the kernel's
17145/// tracing mechanism.
17146///
17147/// By capturing these task state events Perfetto is able to infer higher-level
17148/// events such as context switches and task waking events, providing as much
17149/// parity as possible with established tracing frameworks such as
17150/// Linux's ftrace.
17151#[derive(Clone, PartialEq, ::prost::Message)]
17152pub struct GenericKernelTaskStateEvent {
17153    /// CPU in which the event occurred.
17154    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
17155    /// no specific meaning to the cpu field in a non-running state event.
17156    #[prost(int32, optional, tag="1")]
17157    pub cpu: ::core::option::Option<i32>,
17158    /// Command name for the thread.
17159    #[prost(string, optional, tag="2")]
17160    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17161    /// Thread id.
17162    #[prost(int64, optional, tag="3")]
17163    pub tid: ::core::option::Option<i64>,
17164    /// New state of the thread.
17165    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
17166    pub state: ::core::option::Option<i32>,
17167    /// Priority of the thread.
17168    /// This value is OS agnostic and should only be interpreted based on the
17169    /// kernel who emitted the message.
17170    #[prost(int32, optional, tag="5")]
17171    pub prio: ::core::option::Option<i32>,
17172}
17173/// Nested message and enum types in `GenericKernelTaskStateEvent`.
17174pub mod generic_kernel_task_state_event {
17175    /// TaskStateEnum represents the valid states of a thread.
17176    /// These states are a generic representation of the actual thread state and
17177    /// don't necessarily map one-to-one to the states the actual OS kernel
17178    /// tracks internally.
17179    ///
17180    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
17181    /// an error resulting in potential data loss.
17182    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17183    #[repr(i32)]
17184    pub enum TaskStateEnum {
17185        TaskStateUnknown = 0,
17186        TaskStateCreated = 1,
17187        TaskStateRunnable = 2,
17188        TaskStateRunning = 3,
17189        TaskStateInterruptibleSleep = 4,
17190        TaskStateUninterruptibleSleep = 5,
17191        TaskStateStopped = 6,
17192        TaskStateDead = 7,
17193        TaskStateDestroyed = 8,
17194    }
17195    impl TaskStateEnum {
17196        /// String value of the enum field names used in the ProtoBuf definition.
17197        ///
17198        /// The values are not transformed in any way and thus are considered stable
17199        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17200        pub fn as_str_name(&self) -> &'static str {
17201            match self {
17202                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
17203                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
17204                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
17205                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
17206                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
17207                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
17208                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
17209                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
17210                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
17211            }
17212        }
17213    }
17214}
17215/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
17216/// of a thread.
17217#[derive(Clone, PartialEq, ::prost::Message)]
17218pub struct GenericKernelTaskRenameEvent {
17219    /// Thread id.
17220    #[prost(int64, optional, tag="1")]
17221    pub tid: ::core::option::Option<i64>,
17222    /// New command name for the thread.
17223    #[prost(string, optional, tag="2")]
17224    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17225}
17226/// Metadata about the processes and threads in the trace.
17227/// The main goal of this proto is to provide a generic kernel
17228/// implementation a mechanism to outline its process structure.
17229#[derive(Clone, PartialEq, ::prost::Message)]
17230pub struct GenericKernelProcessTree {
17231    /// List of processes and threads in the kernel. These lists are incremental
17232    /// and not exhaustive. A process and its threads might show up separately in
17233    /// different ProcessTree messages. A thread might not show up at all, if
17234    /// no sched switch activity was detected, for instance:
17235    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
17236    /// #1 { threads: [{tid: 12, pid: 10}] }
17237    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
17238    #[prost(message, repeated, tag="1")]
17239    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
17240    #[prost(message, repeated, tag="2")]
17241    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
17242}
17243/// Nested message and enum types in `GenericKernelProcessTree`.
17244pub mod generic_kernel_process_tree {
17245    /// Representation of a thread.
17246    #[derive(Clone, PartialEq, ::prost::Message)]
17247    pub struct Thread {
17248        /// Thread id.
17249        #[prost(int64, optional, tag="1")]
17250        pub tid: ::core::option::Option<i64>,
17251        /// Id of the parent process.
17252        #[prost(int64, optional, tag="2")]
17253        pub pid: ::core::option::Option<i64>,
17254        /// The command name of the thread.
17255        #[prost(string, optional, tag="3")]
17256        pub comm: ::core::option::Option<::prost::alloc::string::String>,
17257        /// True if thread is the main thread.
17258        #[prost(bool, optional, tag="4")]
17259        pub is_main_thread: ::core::option::Option<bool>,
17260    }
17261    /// Representation of a process.
17262    #[derive(Clone, PartialEq, ::prost::Message)]
17263    pub struct Process {
17264        /// Process id.
17265        #[prost(int64, optional, tag="1")]
17266        pub pid: ::core::option::Option<i64>,
17267        /// Parent process id.
17268        #[prost(int64, optional, tag="2")]
17269        pub ppid: ::core::option::Option<i64>,
17270        /// The command line of the process.
17271        /// If the cmdline has spaces in it, then we use the characters from
17272        /// position 0 to the first instance of the space char (' ') as the name
17273        /// of the process. If no spaces are present, then the entire cmdline is
17274        /// used as the name.
17275        #[prost(string, optional, tag="3")]
17276        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
17277    }
17278}
17279// End of protos/perfetto/trace/generic_kernel/generic_task.proto
17280
17281// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
17282
17283#[derive(Clone, PartialEq, ::prost::Message)]
17284pub struct GpuCounterEvent {
17285    /// The first trace packet of each session should include counter_spec.
17286    #[prost(message, optional, tag="1")]
17287    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
17288    #[prost(message, repeated, tag="2")]
17289    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
17290    /// optional. Identifier for GPU in a multi-gpu device.
17291    #[prost(int32, optional, tag="3")]
17292    pub gpu_id: ::core::option::Option<i32>,
17293}
17294/// Nested message and enum types in `GpuCounterEvent`.
17295pub mod gpu_counter_event {
17296    #[derive(Clone, PartialEq, ::prost::Message)]
17297    pub struct GpuCounter {
17298        /// required. Identifier for counter.
17299        #[prost(uint32, optional, tag="1")]
17300        pub counter_id: ::core::option::Option<u32>,
17301        /// required. Value of the counter.
17302        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
17303        pub value: ::core::option::Option<gpu_counter::Value>,
17304    }
17305    /// Nested message and enum types in `GpuCounter`.
17306    pub mod gpu_counter {
17307        /// required. Value of the counter.
17308        #[derive(Clone, PartialEq, ::prost::Oneof)]
17309        pub enum Value {
17310            #[prost(int64, tag="2")]
17311            IntValue(i64),
17312            #[prost(double, tag="3")]
17313            DoubleValue(f64),
17314        }
17315    }
17316}
17317// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
17318
17319// Begin of protos/perfetto/trace/gpu/gpu_log.proto
17320
17321/// Message for logging events GPU data producer.
17322#[derive(Clone, PartialEq, ::prost::Message)]
17323pub struct GpuLog {
17324    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
17325    pub severity: ::core::option::Option<i32>,
17326    #[prost(string, optional, tag="2")]
17327    pub tag: ::core::option::Option<::prost::alloc::string::String>,
17328    #[prost(string, optional, tag="3")]
17329    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
17330}
17331/// Nested message and enum types in `GpuLog`.
17332pub mod gpu_log {
17333    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17334    #[repr(i32)]
17335    pub enum Severity {
17336        LogSeverityUnspecified = 0,
17337        LogSeverityVerbose = 1,
17338        LogSeverityDebug = 2,
17339        LogSeverityInfo = 3,
17340        LogSeverityWarning = 4,
17341        LogSeverityError = 5,
17342    }
17343    impl Severity {
17344        /// String value of the enum field names used in the ProtoBuf definition.
17345        ///
17346        /// The values are not transformed in any way and thus are considered stable
17347        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17348        pub fn as_str_name(&self) -> &'static str {
17349            match self {
17350                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
17351                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
17352                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
17353                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
17354                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
17355                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
17356            }
17357        }
17358    }
17359}
17360// End of protos/perfetto/trace/gpu/gpu_log.proto
17361
17362// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
17363
17364/// next id: 15
17365#[derive(Clone, PartialEq, ::prost::Message)]
17366pub struct GpuRenderStageEvent {
17367    /// required. Unique ID for the event.
17368    #[prost(uint64, optional, tag="1")]
17369    pub event_id: ::core::option::Option<u64>,
17370    /// optional. Duration of the event in nanoseconds. If unset, this is a
17371    /// single time point event.
17372    #[prost(uint64, optional, tag="2")]
17373    pub duration: ::core::option::Option<u64>,
17374    /// required. ID to a hardware queue description in the specifications.
17375    /// InternedGpuRenderStageSpecification
17376    #[prost(uint64, optional, tag="13")]
17377    pub hw_queue_iid: ::core::option::Option<u64>,
17378    /// required. ID to a render stage description in the specifications.
17379    /// InternedGpuRenderStageSpecification
17380    #[prost(uint64, optional, tag="14")]
17381    pub stage_iid: ::core::option::Option<u64>,
17382    /// optional. Identifier for GPU in a multi-gpu device.
17383    #[prost(int32, optional, tag="11")]
17384    pub gpu_id: ::core::option::Option<i32>,
17385    /// required. Graphics context for the event.
17386    /// For OpenGL, this is the GL context.
17387    /// For Vulkan, this is the VkDevice.
17388    #[prost(uint64, optional, tag="5")]
17389    pub context: ::core::option::Option<u64>,
17390    /// optional. The render target for this event.
17391    /// For OpenGL, this is the GL frame buffer handle.
17392    /// For Vulkan, this is the VkFrameBuffer handle.
17393    #[prost(uint64, optional, tag="8")]
17394    pub render_target_handle: ::core::option::Option<u64>,
17395    /// optional. Submission ID generated by the UMD.
17396    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
17397    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
17398    /// to a single API submission should share the same ID.
17399    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
17400    #[prost(uint32, optional, tag="10")]
17401    pub submission_id: ::core::option::Option<u32>,
17402    #[prost(message, repeated, tag="6")]
17403    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
17404    // VULKAN SPECIFICS
17405
17406    /// optional. The Vulkan render pass handle.
17407    #[prost(uint64, optional, tag="9")]
17408    pub render_pass_handle: ::core::option::Option<u64>,
17409    /// optional. An ID for the render pass instance. This is used to correlate
17410    /// different events on different queues produced by the same Vulkan render
17411    /// pass instance.
17412    #[prost(uint64, optional, tag="16")]
17413    pub render_pass_instance_id: ::core::option::Option<u64>,
17414    /// optional. A bit mask representing which render subpasses contributed to
17415    /// this render stage event.  Subpass index 0 is represented by setting the
17416    /// LSB of the mask.  Additional mask can be added for subpass index greater
17417    /// than 63.
17418    #[prost(uint64, repeated, packed="false", tag="15")]
17419    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
17420    /// optional. The Vulkan command buffer handle.
17421    #[prost(uint64, optional, tag="12")]
17422    pub command_buffer_handle: ::core::option::Option<u64>,
17423    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
17424    /// InternedGpuRenderStageSpecification instead.
17425    #[deprecated]
17426    #[prost(message, optional, tag="7")]
17427    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
17428    /// Deprecated. Use hw_queue_iid instead;
17429    #[deprecated]
17430    #[prost(int32, optional, tag="3")]
17431    pub hw_queue_id: ::core::option::Option<i32>,
17432    /// Deprecated. Use stage_iid instead;
17433    #[deprecated]
17434    #[prost(int32, optional, tag="4")]
17435    pub stage_id: ::core::option::Option<i32>,
17436}
17437/// Nested message and enum types in `GpuRenderStageEvent`.
17438pub mod gpu_render_stage_event {
17439    /// optional. Additional data for the user. This may include attributes for
17440    /// the event like resource ids, shaders, etc.
17441    #[derive(Clone, PartialEq, ::prost::Message)]
17442    pub struct ExtraData {
17443        #[prost(string, optional, tag="1")]
17444        pub name: ::core::option::Option<::prost::alloc::string::String>,
17445        #[prost(string, optional, tag="2")]
17446        pub value: ::core::option::Option<::prost::alloc::string::String>,
17447    }
17448    // DEPRECATED
17449
17450    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
17451    /// The first trace packet of each session should include a Specifications
17452    /// to enumerate *all* IDs that will be used. The timestamp of this packet
17453    /// must be earlier than all other packets. Only one packet with Specifications
17454    /// is expected.
17455    #[derive(Clone, PartialEq, ::prost::Message)]
17456    pub struct Specifications {
17457        #[prost(message, optional, tag="1")]
17458        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
17459        /// Labels to categorize the hw Queue this event goes on.
17460        #[prost(message, repeated, tag="2")]
17461        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
17462        /// Labels to categorize render stage(binning, render, compute etc).
17463        #[prost(message, repeated, tag="3")]
17464        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
17465    }
17466    /// Nested message and enum types in `Specifications`.
17467    pub mod specifications {
17468        #[derive(Clone, PartialEq, ::prost::Message)]
17469        pub struct ContextSpec {
17470            #[prost(uint64, optional, tag="1")]
17471            pub context: ::core::option::Option<u64>,
17472            #[prost(int32, optional, tag="2")]
17473            pub pid: ::core::option::Option<i32>,
17474        }
17475        #[derive(Clone, PartialEq, ::prost::Message)]
17476        pub struct Description {
17477            #[prost(string, optional, tag="1")]
17478            pub name: ::core::option::Option<::prost::alloc::string::String>,
17479            #[prost(string, optional, tag="2")]
17480            pub description: ::core::option::Option<::prost::alloc::string::String>,
17481        }
17482    }
17483}
17484// Interned data.
17485
17486/// The iid is the numeric value of either the GL Context or the VkDevice
17487/// handle.
17488#[derive(Clone, PartialEq, ::prost::Message)]
17489pub struct InternedGraphicsContext {
17490    #[prost(uint64, optional, tag="1")]
17491    pub iid: ::core::option::Option<u64>,
17492    #[prost(int32, optional, tag="2")]
17493    pub pid: ::core::option::Option<i32>,
17494    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
17495    pub api: ::core::option::Option<i32>,
17496}
17497/// Nested message and enum types in `InternedGraphicsContext`.
17498pub mod interned_graphics_context {
17499    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17500    #[repr(i32)]
17501    pub enum Api {
17502        Undefined = 0,
17503        OpenGl = 1,
17504        Vulkan = 2,
17505        OpenCl = 3,
17506    }
17507    impl Api {
17508        /// String value of the enum field names used in the ProtoBuf definition.
17509        ///
17510        /// The values are not transformed in any way and thus are considered stable
17511        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17512        pub fn as_str_name(&self) -> &'static str {
17513            match self {
17514                Api::Undefined => "UNDEFINED",
17515                Api::OpenGl => "OPEN_GL",
17516                Api::Vulkan => "VULKAN",
17517                Api::OpenCl => "OPEN_CL",
17518            }
17519        }
17520    }
17521}
17522#[derive(Clone, PartialEq, ::prost::Message)]
17523pub struct InternedGpuRenderStageSpecification {
17524    #[prost(uint64, optional, tag="1")]
17525    pub iid: ::core::option::Option<u64>,
17526    #[prost(string, optional, tag="2")]
17527    pub name: ::core::option::Option<::prost::alloc::string::String>,
17528    #[prost(string, optional, tag="3")]
17529    pub description: ::core::option::Option<::prost::alloc::string::String>,
17530    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
17531    pub category: ::core::option::Option<i32>,
17532}
17533/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
17534pub mod interned_gpu_render_stage_specification {
17535    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17536    #[repr(i32)]
17537    pub enum RenderStageCategory {
17538        Other = 0,
17539        Graphics = 1,
17540        Compute = 2,
17541    }
17542    impl RenderStageCategory {
17543        /// String value of the enum field names used in the ProtoBuf definition.
17544        ///
17545        /// The values are not transformed in any way and thus are considered stable
17546        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17547        pub fn as_str_name(&self) -> &'static str {
17548            match self {
17549                RenderStageCategory::Other => "OTHER",
17550                RenderStageCategory::Graphics => "GRAPHICS",
17551                RenderStageCategory::Compute => "COMPUTE",
17552            }
17553        }
17554    }
17555}
17556// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
17557
17558// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
17559
17560/// Message for recording the Vulkan call.
17561#[derive(Clone, PartialEq, ::prost::Message)]
17562pub struct VulkanApiEvent {
17563    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
17564    pub event: ::core::option::Option<vulkan_api_event::Event>,
17565}
17566/// Nested message and enum types in `VulkanApiEvent`.
17567pub mod vulkan_api_event {
17568    /// For recording vkSetDebugUtilsObjectNameEXT and
17569    /// vkDebugMarkerSetObjectNameEXT
17570    #[derive(Clone, PartialEq, ::prost::Message)]
17571    pub struct VkDebugUtilsObjectName {
17572        #[prost(uint32, optional, tag="1")]
17573        pub pid: ::core::option::Option<u32>,
17574        #[prost(uint64, optional, tag="2")]
17575        pub vk_device: ::core::option::Option<u64>,
17576        /// VkObjectType.  Value must match
17577        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
17578        #[prost(int32, optional, tag="3")]
17579        pub object_type: ::core::option::Option<i32>,
17580        #[prost(uint64, optional, tag="4")]
17581        pub object: ::core::option::Option<u64>,
17582        #[prost(string, optional, tag="5")]
17583        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
17584    }
17585    /// For recording vkQueueSubmit call.
17586    #[derive(Clone, PartialEq, ::prost::Message)]
17587    pub struct VkQueueSubmit {
17588        #[prost(uint64, optional, tag="1")]
17589        pub duration_ns: ::core::option::Option<u64>,
17590        #[prost(uint32, optional, tag="2")]
17591        pub pid: ::core::option::Option<u32>,
17592        #[prost(uint32, optional, tag="3")]
17593        pub tid: ::core::option::Option<u32>,
17594        #[prost(uint64, optional, tag="4")]
17595        pub vk_queue: ::core::option::Option<u64>,
17596        #[prost(uint64, repeated, packed="false", tag="5")]
17597        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
17598        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
17599        /// submission_id must match GpuRenderStageEvent.submission_id if the
17600        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
17601        #[prost(uint32, optional, tag="6")]
17602        pub submission_id: ::core::option::Option<u32>,
17603    }
17604    #[derive(Clone, PartialEq, ::prost::Oneof)]
17605    pub enum Event {
17606        #[prost(message, tag="1")]
17607        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
17608        #[prost(message, tag="2")]
17609        VkQueueSubmit(VkQueueSubmit),
17610    }
17611}
17612// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
17613
17614// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
17615
17616/// All the information that cannot be sent within a VulkanMemoryEvent message,
17617/// are sent as annotations to the main memory event. One example is the
17618/// properties of the object that consumes the allocated memory, for example, a
17619/// buffer or an image.
17620/// key_iid and string_iid are both interned strings. Original string value is
17621/// stored in vulkan_memory_keys from
17622/// protos/perfetto/trace/interned_data/interned_data.proto.
17623#[derive(Clone, PartialEq, ::prost::Message)]
17624pub struct VulkanMemoryEventAnnotation {
17625    #[prost(uint64, optional, tag="1")]
17626    pub key_iid: ::core::option::Option<u64>,
17627    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
17628    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
17629}
17630/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
17631pub mod vulkan_memory_event_annotation {
17632    #[derive(Clone, PartialEq, ::prost::Oneof)]
17633    pub enum Value {
17634        #[prost(int64, tag="2")]
17635        IntValue(i64),
17636        #[prost(double, tag="3")]
17637        DoubleValue(f64),
17638        #[prost(uint64, tag="4")]
17639        StringIid(u64),
17640    }
17641}
17642/// Each VulkanMemoryEvent encompasses information regarding one single function
17643/// call that results in reserving, binding or freeing host or GPU memory. There
17644/// is a special message type, ANNOTATIONS, which is used to communicate
17645/// information that are not directly related to a memory event, nonetheless are
17646/// essential to understand the memory usage. An example is the size and memory
17647/// types of the memory heaps.
17648///
17649/// Next reserved id: 10 (up to 15).
17650/// Next id: 21.
17651#[derive(Clone, PartialEq, ::prost::Message)]
17652pub struct VulkanMemoryEvent {
17653    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
17654    pub source: ::core::option::Option<i32>,
17655    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
17656    pub operation: ::core::option::Option<i32>,
17657    #[prost(int64, optional, tag="3")]
17658    pub timestamp: ::core::option::Option<i64>,
17659    #[prost(uint32, optional, tag="4")]
17660    pub pid: ::core::option::Option<u32>,
17661    #[prost(fixed64, optional, tag="5")]
17662    pub memory_address: ::core::option::Option<u64>,
17663    #[prost(uint64, optional, tag="6")]
17664    pub memory_size: ::core::option::Option<u64>,
17665    /// Interned string. Original string value is stored in function_names from
17666    /// protos/perfetto/trace/interned_data/interned_data.proto.
17667    #[prost(uint64, optional, tag="7")]
17668    pub caller_iid: ::core::option::Option<u64>,
17669    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
17670    pub allocation_scope: ::core::option::Option<i32>,
17671    /// Extra related information, e.g., create configs, etc.
17672    #[prost(message, repeated, tag="9")]
17673    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
17674    /// Field IDs used for device memory (low sampling rate)
17675    #[prost(fixed64, optional, tag="16")]
17676    pub device: ::core::option::Option<u64>,
17677    #[prost(fixed64, optional, tag="17")]
17678    pub device_memory: ::core::option::Option<u64>,
17679    #[prost(uint32, optional, tag="18")]
17680    pub memory_type: ::core::option::Option<u32>,
17681    #[prost(uint32, optional, tag="19")]
17682    pub heap: ::core::option::Option<u32>,
17683    #[prost(fixed64, optional, tag="20")]
17684    pub object_handle: ::core::option::Option<u64>,
17685}
17686/// Nested message and enum types in `VulkanMemoryEvent`.
17687pub mod vulkan_memory_event {
17688    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17689    #[repr(i32)]
17690    pub enum Source {
17691        Unspecified = 0,
17692        Driver = 1,
17693        Device = 2,
17694        DeviceMemory = 3,
17695        Buffer = 4,
17696        Image = 5,
17697    }
17698    impl Source {
17699        /// String value of the enum field names used in the ProtoBuf definition.
17700        ///
17701        /// The values are not transformed in any way and thus are considered stable
17702        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17703        pub fn as_str_name(&self) -> &'static str {
17704            match self {
17705                Source::Unspecified => "SOURCE_UNSPECIFIED",
17706                Source::Driver => "SOURCE_DRIVER",
17707                Source::Device => "SOURCE_DEVICE",
17708                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
17709                Source::Buffer => "SOURCE_BUFFER",
17710                Source::Image => "SOURCE_IMAGE",
17711            }
17712        }
17713    }
17714    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17715    #[repr(i32)]
17716    pub enum Operation {
17717        OpUnspecified = 0,
17718        /// alloc, create
17719        OpCreate = 1,
17720        /// free, destroy(non-bound)
17721        OpDestroy = 2,
17722        /// bind buffer and image
17723        OpBind = 3,
17724        /// destroy (bound)
17725        OpDestroyBound = 4,
17726        /// only annotations
17727        OpAnnotations = 5,
17728    }
17729    impl Operation {
17730        /// String value of the enum field names used in the ProtoBuf definition.
17731        ///
17732        /// The values are not transformed in any way and thus are considered stable
17733        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17734        pub fn as_str_name(&self) -> &'static str {
17735            match self {
17736                Operation::OpUnspecified => "OP_UNSPECIFIED",
17737                Operation::OpCreate => "OP_CREATE",
17738                Operation::OpDestroy => "OP_DESTROY",
17739                Operation::OpBind => "OP_BIND",
17740                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
17741                Operation::OpAnnotations => "OP_ANNOTATIONS",
17742            }
17743        }
17744    }
17745    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17746    #[repr(i32)]
17747    pub enum AllocationScope {
17748        ScopeUnspecified = 0,
17749        ScopeCommand = 1,
17750        ScopeObject = 2,
17751        ScopeCache = 3,
17752        ScopeDevice = 4,
17753        ScopeInstance = 5,
17754    }
17755    impl AllocationScope {
17756        /// String value of the enum field names used in the ProtoBuf definition.
17757        ///
17758        /// The values are not transformed in any way and thus are considered stable
17759        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17760        pub fn as_str_name(&self) -> &'static str {
17761            match self {
17762                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
17763                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
17764                AllocationScope::ScopeObject => "SCOPE_OBJECT",
17765                AllocationScope::ScopeCache => "SCOPE_CACHE",
17766                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
17767                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
17768            }
17769        }
17770    }
17771}
17772// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
17773
17774// Begin of protos/perfetto/trace/profiling/profile_common.proto
17775
17776/// The interning fields in this file can refer to 2 different intern tables,
17777/// depending on the message they are used in. If the interned fields are present
17778/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
17779/// should be used. If the intered fields are present in the
17780/// StreamingProfilePacket proto, then the intern tables included in all of the
17781/// previous InternedData message with same sequence ID should be used.
17782/// TODO(fmayer): Move to the intern tables to a common location.
17783#[derive(Clone, PartialEq, ::prost::Message)]
17784pub struct InternedString {
17785    #[prost(uint64, optional, tag="1")]
17786    pub iid: ::core::option::Option<u64>,
17787    #[prost(bytes="vec", optional, tag="2")]
17788    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17789}
17790/// Source line info.
17791#[derive(Clone, PartialEq, ::prost::Message)]
17792pub struct Line {
17793    #[prost(string, optional, tag="1")]
17794    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
17795    #[prost(string, optional, tag="2")]
17796    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
17797    #[prost(uint32, optional, tag="3")]
17798    pub line_number: ::core::option::Option<u32>,
17799}
17800/// Symbols for a given address in a module.
17801#[derive(Clone, PartialEq, ::prost::Message)]
17802pub struct AddressSymbols {
17803    #[prost(uint64, optional, tag="1")]
17804    pub address: ::core::option::Option<u64>,
17805    /// Source lines that correspond to this address.
17806    ///
17807    /// These are repeated because when inlining happens, multiple functions'
17808    /// frames can be at a single address. Imagine function Foo calling the
17809    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
17810    /// both Foo and the std::vector<int> constructor when we symbolize the
17811    /// address.
17812    #[prost(message, repeated, tag="2")]
17813    pub lines: ::prost::alloc::vec::Vec<Line>,
17814}
17815/// Symbols for addresses seen in a module.
17816/// Used in re-symbolisation of complete traces.
17817#[derive(Clone, PartialEq, ::prost::Message)]
17818pub struct ModuleSymbols {
17819    /// Fully qualified path to the mapping.
17820    /// E.g. /system/lib64/libc.so.
17821    #[prost(string, optional, tag="1")]
17822    pub path: ::core::option::Option<::prost::alloc::string::String>,
17823    /// .note.gnu.build-id on Linux (not hex encoded).
17824    /// uuid on MacOS.
17825    /// Module GUID on Windows.
17826    #[prost(string, optional, tag="2")]
17827    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
17828    #[prost(message, repeated, tag="3")]
17829    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
17830}
17831#[derive(Clone, PartialEq, ::prost::Message)]
17832pub struct Mapping {
17833    /// Interning key.
17834    #[prost(uint64, optional, tag="1")]
17835    pub iid: ::core::option::Option<u64>,
17836    /// Interning key.
17837    #[prost(uint64, optional, tag="2")]
17838    pub build_id: ::core::option::Option<u64>,
17839    // The linker may create multiple memory mappings for the same shared
17840    // library.
17841    // This is so that the ELF header is mapped as read only, while the
17842    // executable memory is mapped as executable only.
17843    // The details of this depend on the linker, a possible mapping of an ELF
17844    // file is this:
17845    //          +----------------------+
17846    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
17847    //          +---------+------------+
17848    //          |         |
17849    //          | read    | executable
17850    //          v mapping v mapping
17851    //          +----------------------+
17852    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
17853    //          +------------------+---+
17854    //          ^         ^        ^
17855    //          +         +        +
17856    //        start     exact    relpc
17857    //        offset   offset    0x1800
17858    //        0x0000   0x1000
17859    //
17860    // exact_offset is the offset into the library file of this mapping.
17861    // start_offset is the offset into the library file of the first mapping
17862    // for that library. For native libraries (.so files) this should be 0.
17863
17864    /// This is not set on Android 10.
17865    #[prost(uint64, optional, tag="8")]
17866    pub exact_offset: ::core::option::Option<u64>,
17867    #[prost(uint64, optional, tag="3")]
17868    pub start_offset: ::core::option::Option<u64>,
17869    #[prost(uint64, optional, tag="4")]
17870    pub start: ::core::option::Option<u64>,
17871    #[prost(uint64, optional, tag="5")]
17872    pub end: ::core::option::Option<u64>,
17873    /// Libunwindstack-specific concept, not to be confused with bionic linker's
17874    /// notion of load_bias. Needed to correct relative pc addresses (as produced
17875    /// by libunwindstack) when doing offline resymbolisation.
17876    ///
17877    /// For an executable ELF PT_LOAD segment, this is:
17878    ///    p_vaddr - p_offset
17879    ///
17880    /// Where p_offset means that the code is at that offset into the ELF file on
17881    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
17882    /// to where the linker loads the ELF into the address space. For most ELFs,
17883    /// the two values are identical and therefore load_bias is zero.
17884    #[prost(uint64, optional, tag="6")]
17885    pub load_bias: ::core::option::Option<u64>,
17886    /// E.g. ["system", "lib64", "libc.so"]
17887    /// id of string.
17888    #[prost(uint64, repeated, packed="false", tag="7")]
17889    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
17890}
17891#[derive(Clone, PartialEq, ::prost::Message)]
17892pub struct Frame {
17893    /// Interning key
17894    #[prost(uint64, optional, tag="1")]
17895    pub iid: ::core::option::Option<u64>,
17896    /// E.g. "fopen"
17897    /// id of string.
17898    #[prost(uint64, optional, tag="2")]
17899    pub function_name_id: ::core::option::Option<u64>,
17900    #[prost(uint64, optional, tag="3")]
17901    pub mapping_id: ::core::option::Option<u64>,
17902    #[prost(uint64, optional, tag="4")]
17903    pub rel_pc: ::core::option::Option<u64>,
17904}
17905#[derive(Clone, PartialEq, ::prost::Message)]
17906pub struct Callstack {
17907    #[prost(uint64, optional, tag="1")]
17908    pub iid: ::core::option::Option<u64>,
17909    /// Frames of this callstack. Bottom frame first.
17910    #[prost(uint64, repeated, packed="false", tag="2")]
17911    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
17912}
17913// End of protos/perfetto/trace/profiling/profile_common.proto
17914
17915// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
17916
17917#[derive(Clone, PartialEq, ::prost::Message)]
17918pub struct HistogramName {
17919    #[prost(uint64, optional, tag="1")]
17920    pub iid: ::core::option::Option<u64>,
17921    #[prost(string, optional, tag="2")]
17922    pub name: ::core::option::Option<::prost::alloc::string::String>,
17923}
17924/// An individual histogram sample logged via Chrome's UMA metrics system.
17925#[derive(Clone, PartialEq, ::prost::Message)]
17926pub struct ChromeHistogramSample {
17927    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
17928    /// both must be present.
17929    #[prost(uint64, optional, tag="1")]
17930    pub name_hash: ::core::option::Option<u64>,
17931    #[prost(string, optional, tag="2")]
17932    pub name: ::core::option::Option<::prost::alloc::string::String>,
17933    #[prost(int64, optional, tag="3")]
17934    pub sample: ::core::option::Option<i64>,
17935    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
17936    #[prost(uint64, optional, tag="4")]
17937    pub name_iid: ::core::option::Option<u64>,
17938}
17939// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
17940
17941// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
17942
17943/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
17944/// macros. Users of the Perfetto SDK should prefer to use the
17945/// perfetto::TracedValue API to fill these protos, rather than filling them
17946/// manually.
17947///
17948/// Debug annotations are intended for debug use and are not considered a stable
17949/// API of the trace contents. Trace-based metrics that use debug annotation
17950/// values are prone to breakage, so please rely on typed TrackEvent fields for
17951/// these instead.
17952///
17953/// DebugAnnotations support nested arrays and dictionaries. Each entry is
17954/// encoded as a single DebugAnnotation message. Only dictionary entries
17955/// set the "name" field. The TrackEvent message forms an implicit root
17956/// dictionary.
17957///
17958/// Example TrackEvent with nested annotations:
17959///    track_event {
17960///      debug_annotations {
17961///        name: "foo"
17962///        dict_entries {
17963///          name: "a"
17964///          bool_value: true
17965///        }
17966///        dict_entries {
17967///          name: "b"
17968///          int_value: 123
17969///        }
17970///      }
17971///      debug_annotations {
17972///        name: "bar"
17973///        array_values {
17974///          string_value: "hello"
17975///        }
17976///        array_values {
17977///          string_value: "world"
17978///        }
17979///      }
17980///    }
17981///
17982/// Next ID: 18.
17983/// Reserved ID: 15
17984#[derive(Clone, PartialEq, ::prost::Message)]
17985pub struct DebugAnnotation {
17986    #[prost(bytes="vec", optional, tag="14")]
17987    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17988    #[prost(message, repeated, tag="11")]
17989    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
17990    #[prost(message, repeated, tag="12")]
17991    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
17992    /// Name fields are set only for dictionary entries.
17993    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
17994    pub name_field: ::core::option::Option<debug_annotation::NameField>,
17995    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
17996    pub value: ::core::option::Option<debug_annotation::Value>,
17997    /// Used to embed arbitrary proto messages (which are also typically used to
17998    /// represent typed TrackEvent arguments). |proto_type_name| or
17999    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18000    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18001    /// proto messages. See |TracedValue::WriteProto| for more details.
18002    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
18003    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
18004}
18005/// Nested message and enum types in `DebugAnnotation`.
18006pub mod debug_annotation {
18007    /// Deprecated legacy way to use nested values. Only kept for
18008    /// backwards-compatibility in TraceProcessor. May be removed in the future -
18009    /// code filling protos should use |dict_entries| and |array_values| instead.
18010    #[derive(Clone, PartialEq, ::prost::Message)]
18011    pub struct NestedValue {
18012        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
18013        pub nested_type: ::core::option::Option<i32>,
18014        #[prost(string, repeated, tag="2")]
18015        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18016        #[prost(message, repeated, tag="3")]
18017        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
18018        #[prost(message, repeated, tag="4")]
18019        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
18020        #[prost(int64, optional, tag="5")]
18021        pub int_value: ::core::option::Option<i64>,
18022        #[prost(double, optional, tag="6")]
18023        pub double_value: ::core::option::Option<f64>,
18024        #[prost(bool, optional, tag="7")]
18025        pub bool_value: ::core::option::Option<bool>,
18026        #[prost(string, optional, tag="8")]
18027        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
18028    }
18029    /// Nested message and enum types in `NestedValue`.
18030    pub mod nested_value {
18031        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18032        #[repr(i32)]
18033        pub enum NestedType {
18034            /// leaf value.
18035            Unspecified = 0,
18036            Dict = 1,
18037            Array = 2,
18038        }
18039        impl NestedType {
18040            /// String value of the enum field names used in the ProtoBuf definition.
18041            ///
18042            /// The values are not transformed in any way and thus are considered stable
18043            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18044            pub fn as_str_name(&self) -> &'static str {
18045                match self {
18046                    NestedType::Unspecified => "UNSPECIFIED",
18047                    NestedType::Dict => "DICT",
18048                    NestedType::Array => "ARRAY",
18049                }
18050            }
18051        }
18052    }
18053    /// Name fields are set only for dictionary entries.
18054    #[derive(Clone, PartialEq, ::prost::Oneof)]
18055    pub enum NameField {
18056        /// interned DebugAnnotationName.
18057        #[prost(uint64, tag="1")]
18058        NameIid(u64),
18059        /// non-interned variant.
18060        #[prost(string, tag="10")]
18061        Name(::prost::alloc::string::String),
18062    }
18063    #[derive(Clone, PartialEq, ::prost::Oneof)]
18064    pub enum Value {
18065        #[prost(bool, tag="2")]
18066        BoolValue(bool),
18067        #[prost(uint64, tag="3")]
18068        UintValue(u64),
18069        #[prost(int64, tag="4")]
18070        IntValue(i64),
18071        #[prost(double, tag="5")]
18072        DoubleValue(f64),
18073        /// Pointers are stored in a separate type as the JSON output treats them
18074        /// differently from other uint64 values.
18075        #[prost(uint64, tag="7")]
18076        PointerValue(u64),
18077        /// Deprecated. Use dict_entries / array_values instead.
18078        #[prost(message, tag="8")]
18079        NestedValue(NestedValue),
18080        /// Legacy instrumentation may not support conversion of nested data to
18081        /// NestedValue yet.
18082        #[prost(string, tag="9")]
18083        LegacyJsonValue(::prost::alloc::string::String),
18084        /// interned and non-interned variants of strings.
18085        #[prost(string, tag="6")]
18086        StringValue(::prost::alloc::string::String),
18087        /// Corresponds to |debug_annotation_string_values| field in InternedData.
18088        #[prost(uint64, tag="17")]
18089        StringValueIid(u64),
18090    }
18091    /// Used to embed arbitrary proto messages (which are also typically used to
18092    /// represent typed TrackEvent arguments). |proto_type_name| or
18093    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18094    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18095    /// proto messages. See |TracedValue::WriteProto| for more details.
18096    #[derive(Clone, PartialEq, ::prost::Oneof)]
18097    pub enum ProtoTypeDescriptor {
18098        #[prost(string, tag="16")]
18099        ProtoTypeName(::prost::alloc::string::String),
18100        /// interned DebugAnnotationValueTypeName.
18101        #[prost(uint64, tag="13")]
18102        ProtoTypeNameIid(u64),
18103    }
18104}
18105// --------------------
18106// Interned data types:
18107// --------------------
18108
18109#[derive(Clone, PartialEq, ::prost::Message)]
18110pub struct DebugAnnotationName {
18111    #[prost(uint64, optional, tag="1")]
18112    pub iid: ::core::option::Option<u64>,
18113    #[prost(string, optional, tag="2")]
18114    pub name: ::core::option::Option<::prost::alloc::string::String>,
18115}
18116/// See the |proto_type_descriptor| comment.
18117#[derive(Clone, PartialEq, ::prost::Message)]
18118pub struct DebugAnnotationValueTypeName {
18119    #[prost(uint64, optional, tag="1")]
18120    pub iid: ::core::option::Option<u64>,
18121    #[prost(string, optional, tag="2")]
18122    pub name: ::core::option::Option<::prost::alloc::string::String>,
18123}
18124// End of protos/perfetto/trace/track_event/debug_annotation.proto
18125
18126// Begin of protos/perfetto/trace/track_event/log_message.proto
18127
18128#[derive(Clone, PartialEq, ::prost::Message)]
18129pub struct LogMessage {
18130    /// interned SourceLocation.
18131    #[prost(uint64, optional, tag="1")]
18132    pub source_location_iid: ::core::option::Option<u64>,
18133    /// interned LogMessageBody.
18134    #[prost(uint64, optional, tag="2")]
18135    pub body_iid: ::core::option::Option<u64>,
18136    #[prost(enumeration="log_message::Priority", optional, tag="3")]
18137    pub prio: ::core::option::Option<i32>,
18138}
18139/// Nested message and enum types in `LogMessage`.
18140pub mod log_message {
18141    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18142    #[repr(i32)]
18143    pub enum Priority {
18144        PrioUnspecified = 0,
18145        PrioUnused = 1,
18146        PrioVerbose = 2,
18147        PrioDebug = 3,
18148        PrioInfo = 4,
18149        PrioWarn = 5,
18150        PrioError = 6,
18151        PrioFatal = 7,
18152    }
18153    impl Priority {
18154        /// String value of the enum field names used in the ProtoBuf definition.
18155        ///
18156        /// The values are not transformed in any way and thus are considered stable
18157        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18158        pub fn as_str_name(&self) -> &'static str {
18159            match self {
18160                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
18161                Priority::PrioUnused => "PRIO_UNUSED",
18162                Priority::PrioVerbose => "PRIO_VERBOSE",
18163                Priority::PrioDebug => "PRIO_DEBUG",
18164                Priority::PrioInfo => "PRIO_INFO",
18165                Priority::PrioWarn => "PRIO_WARN",
18166                Priority::PrioError => "PRIO_ERROR",
18167                Priority::PrioFatal => "PRIO_FATAL",
18168            }
18169        }
18170    }
18171}
18172// --------------------
18173// Interned data types:
18174// --------------------
18175
18176#[derive(Clone, PartialEq, ::prost::Message)]
18177pub struct LogMessageBody {
18178    #[prost(uint64, optional, tag="1")]
18179    pub iid: ::core::option::Option<u64>,
18180    #[prost(string, optional, tag="2")]
18181    pub body: ::core::option::Option<::prost::alloc::string::String>,
18182}
18183// End of protos/perfetto/trace/track_event/log_message.proto
18184
18185// Begin of protos/perfetto/trace/track_event/source_location.proto
18186
18187// --------------------
18188// Interned data types:
18189// --------------------
18190
18191/// A source location, represented as a native symbol.
18192/// This is similar to `message Frame` from
18193/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
18194/// source code locations (for example in track event args), not stack frames.
18195#[derive(Clone, PartialEq, ::prost::Message)]
18196pub struct UnsymbolizedSourceLocation {
18197    #[prost(uint64, optional, tag="1")]
18198    pub iid: ::core::option::Option<u64>,
18199    #[prost(uint64, optional, tag="2")]
18200    pub mapping_id: ::core::option::Option<u64>,
18201    #[prost(uint64, optional, tag="3")]
18202    pub rel_pc: ::core::option::Option<u64>,
18203}
18204#[derive(Clone, PartialEq, ::prost::Message)]
18205pub struct SourceLocation {
18206    #[prost(uint64, optional, tag="1")]
18207    pub iid: ::core::option::Option<u64>,
18208    #[prost(string, optional, tag="2")]
18209    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
18210    #[prost(string, optional, tag="3")]
18211    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18212    #[prost(uint32, optional, tag="4")]
18213    pub line_number: ::core::option::Option<u32>,
18214}
18215// End of protos/perfetto/trace/track_event/source_location.proto
18216
18217// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
18218
18219/// A list of processes connected to the tracing service.
18220#[derive(Clone, PartialEq, ::prost::Message)]
18221pub struct ChromeActiveProcesses {
18222    #[prost(int32, repeated, packed="false", tag="1")]
18223    pub pid: ::prost::alloc::vec::Vec<i32>,
18224}
18225// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
18226
18227/// Trace event arguments for application state changes.
18228#[derive(Clone, PartialEq, ::prost::Message)]
18229pub struct ChromeApplicationStateInfo {
18230    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
18231    pub application_state: ::core::option::Option<i32>,
18232}
18233/// Nested message and enum types in `ChromeApplicationStateInfo`.
18234pub mod chrome_application_state_info {
18235    /// Enum definition taken from:
18236    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
18237    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18238    #[repr(i32)]
18239    pub enum ChromeApplicationState {
18240        ApplicationStateUnknown = 0,
18241        ApplicationStateHasRunningActivities = 1,
18242        ApplicationStateHasPausedActivities = 2,
18243        ApplicationStateHasStoppedActivities = 3,
18244        ApplicationStateHasDestroyedActivities = 4,
18245    }
18246    impl ChromeApplicationState {
18247        /// String value of the enum field names used in the ProtoBuf definition.
18248        ///
18249        /// The values are not transformed in any way and thus are considered stable
18250        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18251        pub fn as_str_name(&self) -> &'static str {
18252            match self {
18253                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
18254                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
18255                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
18256                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
18257                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
18258            }
18259        }
18260    }
18261}
18262/// Next id: 18
18263#[derive(Clone, PartialEq, ::prost::Message)]
18264pub struct ChromeCompositorSchedulerState {
18265    #[prost(message, optional, tag="1")]
18266    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
18267    #[prost(bool, optional, tag="2")]
18268    pub observing_begin_frame_source: ::core::option::Option<bool>,
18269    #[prost(bool, optional, tag="3")]
18270    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
18271    #[prost(bool, optional, tag="4")]
18272    pub pending_begin_frame_task: ::core::option::Option<bool>,
18273    #[prost(bool, optional, tag="5")]
18274    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
18275    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
18276    pub inside_action: ::core::option::Option<i32>,
18277    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
18278    pub deadline_mode: ::core::option::Option<i32>,
18279    #[prost(int64, optional, tag="9")]
18280    pub deadline_us: ::core::option::Option<i64>,
18281    #[prost(int64, optional, tag="10")]
18282    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
18283    #[prost(int64, optional, tag="11")]
18284    pub now_us: ::core::option::Option<i64>,
18285    #[prost(int64, optional, tag="12")]
18286    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
18287    #[prost(int64, optional, tag="13")]
18288    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
18289    #[prost(message, optional, tag="14")]
18290    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
18291    #[prost(message, optional, tag="15")]
18292    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
18293    #[prost(message, optional, tag="16")]
18294    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
18295    #[prost(message, optional, tag="17")]
18296    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
18297}
18298/// Nested message and enum types in `ChromeCompositorSchedulerState`.
18299pub mod chrome_compositor_scheduler_state {
18300    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18301    #[repr(i32)]
18302    pub enum BeginImplFrameDeadlineMode {
18303        DeadlineModeUnspecified = 0,
18304        DeadlineModeNone = 1,
18305        DeadlineModeImmediate = 2,
18306        DeadlineModeRegular = 3,
18307        DeadlineModeLate = 4,
18308        DeadlineModeBlocked = 5,
18309    }
18310    impl BeginImplFrameDeadlineMode {
18311        /// String value of the enum field names used in the ProtoBuf definition.
18312        ///
18313        /// The values are not transformed in any way and thus are considered stable
18314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18315        pub fn as_str_name(&self) -> &'static str {
18316            match self {
18317                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
18318                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
18319                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
18320                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
18321                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
18322                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
18323            }
18324        }
18325    }
18326}
18327/// Describes the current values stored in the Chrome Compositor state machine.
18328/// Next id: 3
18329#[derive(Clone, PartialEq, ::prost::Message)]
18330pub struct ChromeCompositorStateMachine {
18331    #[prost(message, optional, tag="1")]
18332    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
18333    #[prost(message, optional, tag="2")]
18334    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
18335}
18336/// Nested message and enum types in `ChromeCompositorStateMachine`.
18337pub mod chrome_compositor_state_machine {
18338    /// Next id: 6
18339    #[derive(Clone, PartialEq, ::prost::Message)]
18340    pub struct MajorState {
18341        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
18342        pub next_action: ::core::option::Option<i32>,
18343        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
18344        pub begin_impl_frame_state: ::core::option::Option<i32>,
18345        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
18346        pub begin_main_frame_state: ::core::option::Option<i32>,
18347        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
18348        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
18349        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
18350        pub forced_redraw_state: ::core::option::Option<i32>,
18351    }
18352    /// Nested message and enum types in `MajorState`.
18353    pub mod major_state {
18354        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18355        #[repr(i32)]
18356        pub enum BeginImplFrameState {
18357            BeginImplFrameUnspecified = 0,
18358            BeginImplFrameIdle = 1,
18359            BeginImplFrameInsideBeginFrame = 2,
18360            BeginImplFrameInsideDeadline = 3,
18361        }
18362        impl BeginImplFrameState {
18363            /// String value of the enum field names used in the ProtoBuf definition.
18364            ///
18365            /// The values are not transformed in any way and thus are considered stable
18366            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18367            pub fn as_str_name(&self) -> &'static str {
18368                match self {
18369                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
18370                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
18371                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
18372                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
18373                }
18374            }
18375        }
18376        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18377        #[repr(i32)]
18378        pub enum BeginMainFrameState {
18379            BeginMainFrameUnspecified = 0,
18380            BeginMainFrameIdle = 1,
18381            BeginMainFrameSent = 2,
18382            BeginMainFrameReadyToCommit = 3,
18383        }
18384        impl BeginMainFrameState {
18385            /// String value of the enum field names used in the ProtoBuf definition.
18386            ///
18387            /// The values are not transformed in any way and thus are considered stable
18388            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18389            pub fn as_str_name(&self) -> &'static str {
18390                match self {
18391                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
18392                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
18393                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
18394                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
18395                }
18396            }
18397        }
18398        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18399        #[repr(i32)]
18400        pub enum LayerTreeFrameSinkState {
18401            LayerTreeFrameUnspecified = 0,
18402            LayerTreeFrameNone = 1,
18403            LayerTreeFrameActive = 2,
18404            LayerTreeFrameCreating = 3,
18405            LayerTreeFrameWaitingForFirstCommit = 4,
18406            LayerTreeFrameWaitingForFirstActivation = 5,
18407        }
18408        impl LayerTreeFrameSinkState {
18409            /// String value of the enum field names used in the ProtoBuf definition.
18410            ///
18411            /// The values are not transformed in any way and thus are considered stable
18412            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18413            pub fn as_str_name(&self) -> &'static str {
18414                match self {
18415                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
18416                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
18417                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
18418                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
18419                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
18420                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
18421                }
18422            }
18423        }
18424        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18425        #[repr(i32)]
18426        pub enum ForcedRedrawOnTimeoutState {
18427            ForcedRedrawUnspecified = 0,
18428            ForcedRedrawIdle = 1,
18429            ForcedRedrawWaitingForCommit = 2,
18430            ForcedRedrawWaitingForActivation = 3,
18431            ForcedRedrawWaitingForDraw = 4,
18432        }
18433        impl ForcedRedrawOnTimeoutState {
18434            /// String value of the enum field names used in the ProtoBuf definition.
18435            ///
18436            /// The values are not transformed in any way and thus are considered stable
18437            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18438            pub fn as_str_name(&self) -> &'static str {
18439                match self {
18440                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
18441                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
18442                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
18443                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
18444                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
18445                }
18446            }
18447        }
18448    }
18449    /// Next id: 47
18450    #[derive(Clone, PartialEq, ::prost::Message)]
18451    pub struct MinorState {
18452        #[prost(int32, optional, tag="1")]
18453        pub commit_count: ::core::option::Option<i32>,
18454        #[prost(int32, optional, tag="2")]
18455        pub current_frame_number: ::core::option::Option<i32>,
18456        #[prost(int32, optional, tag="3")]
18457        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
18458        #[prost(int32, optional, tag="4")]
18459        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
18460        #[prost(int32, optional, tag="5")]
18461        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
18462        #[prost(bool, optional, tag="6")]
18463        pub did_draw: ::core::option::Option<bool>,
18464        #[prost(bool, optional, tag="7")]
18465        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
18466        #[prost(bool, optional, tag="8")]
18467        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
18468        #[prost(bool, optional, tag="9")]
18469        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
18470        #[prost(bool, optional, tag="10")]
18471        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
18472        #[prost(bool, optional, tag="11")]
18473        pub did_commit_during_frame: ::core::option::Option<bool>,
18474        #[prost(bool, optional, tag="12")]
18475        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
18476        #[prost(bool, optional, tag="13")]
18477        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
18478        #[prost(bool, optional, tag="14")]
18479        pub did_prepare_tiles: ::core::option::Option<bool>,
18480        #[prost(int32, optional, tag="15")]
18481        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
18482        #[prost(int32, optional, tag="16")]
18483        pub pending_submit_frames: ::core::option::Option<i32>,
18484        #[prost(int32, optional, tag="17")]
18485        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
18486        #[prost(bool, optional, tag="18")]
18487        pub needs_redraw: ::core::option::Option<bool>,
18488        #[prost(bool, optional, tag="19")]
18489        pub needs_prepare_tiles: ::core::option::Option<bool>,
18490        #[prost(bool, optional, tag="20")]
18491        pub needs_begin_main_frame: ::core::option::Option<bool>,
18492        #[prost(bool, optional, tag="21")]
18493        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
18494        #[prost(bool, optional, tag="22")]
18495        pub visible: ::core::option::Option<bool>,
18496        #[prost(bool, optional, tag="23")]
18497        pub begin_frame_source_paused: ::core::option::Option<bool>,
18498        #[prost(bool, optional, tag="24")]
18499        pub can_draw: ::core::option::Option<bool>,
18500        #[prost(bool, optional, tag="25")]
18501        pub resourceless_draw: ::core::option::Option<bool>,
18502        #[prost(bool, optional, tag="26")]
18503        pub has_pending_tree: ::core::option::Option<bool>,
18504        #[prost(bool, optional, tag="27")]
18505        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
18506        #[prost(bool, optional, tag="28")]
18507        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
18508        #[prost(bool, optional, tag="29")]
18509        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
18510        #[prost(bool, optional, tag="30")]
18511        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
18512        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
18513        pub tree_priority: ::core::option::Option<i32>,
18514        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
18515        pub scroll_handler_state: ::core::option::Option<i32>,
18516        #[prost(bool, optional, tag="33")]
18517        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
18518        #[prost(bool, optional, tag="34")]
18519        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
18520        #[prost(bool, optional, tag="36")]
18521        pub video_needs_begin_frames: ::core::option::Option<bool>,
18522        #[prost(bool, optional, tag="37")]
18523        pub defer_begin_main_frame: ::core::option::Option<bool>,
18524        #[prost(bool, optional, tag="38")]
18525        pub last_commit_had_no_updates: ::core::option::Option<bool>,
18526        #[prost(bool, optional, tag="39")]
18527        pub did_draw_in_last_frame: ::core::option::Option<bool>,
18528        #[prost(bool, optional, tag="40")]
18529        pub did_submit_in_last_frame: ::core::option::Option<bool>,
18530        #[prost(bool, optional, tag="41")]
18531        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
18532        #[prost(bool, optional, tag="42")]
18533        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
18534        #[prost(bool, optional, tag="43")]
18535        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
18536        #[prost(bool, optional, tag="44")]
18537        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
18538        #[prost(bool, optional, tag="45")]
18539        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
18540        #[prost(bool, optional, tag="46")]
18541        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
18542    }
18543    /// Nested message and enum types in `MinorState`.
18544    pub mod minor_state {
18545        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18546        #[repr(i32)]
18547        pub enum TreePriority {
18548            Unspecified = 0,
18549            SamePriorityForBothTrees = 1,
18550            SmoothnessTakesPriority = 2,
18551            NewContentTakesPriority = 3,
18552        }
18553        impl TreePriority {
18554            /// String value of the enum field names used in the ProtoBuf definition.
18555            ///
18556            /// The values are not transformed in any way and thus are considered stable
18557            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18558            pub fn as_str_name(&self) -> &'static str {
18559                match self {
18560                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
18561                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
18562                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
18563                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
18564                }
18565            }
18566        }
18567        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18568        #[repr(i32)]
18569        pub enum ScrollHandlerState {
18570            ScrollHandlerUnspecified = 0,
18571            ScrollAffectsScrollHandler = 1,
18572            ScrollDoesNotAffectScrollHandler = 2,
18573        }
18574        impl ScrollHandlerState {
18575            /// String value of the enum field names used in the ProtoBuf definition.
18576            ///
18577            /// The values are not transformed in any way and thus are considered stable
18578            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18579            pub fn as_str_name(&self) -> &'static str {
18580                match self {
18581                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
18582                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
18583                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
18584                }
18585            }
18586        }
18587    }
18588}
18589/// Next id: 13
18590#[derive(Clone, PartialEq, ::prost::Message)]
18591pub struct BeginFrameArgs {
18592    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
18593    pub r#type: ::core::option::Option<i32>,
18594    #[prost(uint64, optional, tag="2")]
18595    pub source_id: ::core::option::Option<u64>,
18596    #[prost(uint64, optional, tag="3")]
18597    pub sequence_number: ::core::option::Option<u64>,
18598    #[prost(int64, optional, tag="4")]
18599    pub frame_time_us: ::core::option::Option<i64>,
18600    #[prost(int64, optional, tag="5")]
18601    pub deadline_us: ::core::option::Option<i64>,
18602    #[prost(int64, optional, tag="6")]
18603    pub interval_delta_us: ::core::option::Option<i64>,
18604    #[prost(bool, optional, tag="7")]
18605    pub on_critical_path: ::core::option::Option<bool>,
18606    #[prost(bool, optional, tag="8")]
18607    pub animate_only: ::core::option::Option<bool>,
18608    #[prost(int64, optional, tag="12")]
18609    pub frames_throttled_since_last: ::core::option::Option<i64>,
18610    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
18611    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
18612}
18613/// Nested message and enum types in `BeginFrameArgs`.
18614pub mod begin_frame_args {
18615    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
18616    /// drop this in the proto representation, and instead make the JSON format
18617    /// "subtype" field become the type field.
18618    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18619    #[repr(i32)]
18620    pub enum BeginFrameArgsType {
18621        Unspecified = 0,
18622        Invalid = 1,
18623        Normal = 2,
18624        Missed = 3,
18625    }
18626    impl BeginFrameArgsType {
18627        /// String value of the enum field names used in the ProtoBuf definition.
18628        ///
18629        /// The values are not transformed in any way and thus are considered stable
18630        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18631        pub fn as_str_name(&self) -> &'static str {
18632            match self {
18633                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
18634                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
18635                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
18636                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
18637            }
18638        }
18639    }
18640    #[derive(Clone, PartialEq, ::prost::Oneof)]
18641    pub enum CreatedFrom {
18642        /// The interned SourceLocation.
18643        #[prost(uint64, tag="9")]
18644        SourceLocationIid(u64),
18645        /// The SourceLocation that this args was created from.
18646        /// TODO(nuskos): Eventually we will support interning inside of
18647        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
18648        /// since we can emit it as part of the InternedData message. When we can
18649        /// remove this |source_location|.
18650        #[prost(message, tag="10")]
18651        SourceLocation(super::SourceLocation),
18652    }
18653}
18654/// Next id: 7
18655#[derive(Clone, PartialEq, ::prost::Message)]
18656pub struct BeginImplFrameArgs {
18657    #[prost(int64, optional, tag="1")]
18658    pub updated_at_us: ::core::option::Option<i64>,
18659    #[prost(int64, optional, tag="2")]
18660    pub finished_at_us: ::core::option::Option<i64>,
18661    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
18662    pub state: ::core::option::Option<i32>,
18663    #[prost(message, optional, tag="6")]
18664    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
18665    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
18666    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
18667}
18668/// Nested message and enum types in `BeginImplFrameArgs`.
18669pub mod begin_impl_frame_args {
18670    #[derive(Clone, PartialEq, ::prost::Message)]
18671    pub struct TimestampsInUs {
18672        #[prost(int64, optional, tag="1")]
18673        pub interval_delta: ::core::option::Option<i64>,
18674        #[prost(int64, optional, tag="2")]
18675        pub now_to_deadline_delta: ::core::option::Option<i64>,
18676        #[prost(int64, optional, tag="3")]
18677        pub frame_time_to_now_delta: ::core::option::Option<i64>,
18678        #[prost(int64, optional, tag="4")]
18679        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
18680        #[prost(int64, optional, tag="5")]
18681        pub now: ::core::option::Option<i64>,
18682        #[prost(int64, optional, tag="6")]
18683        pub frame_time: ::core::option::Option<i64>,
18684        #[prost(int64, optional, tag="7")]
18685        pub deadline: ::core::option::Option<i64>,
18686    }
18687    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18688    #[repr(i32)]
18689    pub enum State {
18690        BeginFrameFinished = 0,
18691        BeginFrameUsing = 1,
18692    }
18693    impl State {
18694        /// String value of the enum field names used in the ProtoBuf definition.
18695        ///
18696        /// The values are not transformed in any way and thus are considered stable
18697        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18698        pub fn as_str_name(&self) -> &'static str {
18699            match self {
18700                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
18701                State::BeginFrameUsing => "BEGIN_FRAME_USING",
18702            }
18703        }
18704    }
18705    #[derive(Clone, PartialEq, ::prost::Oneof)]
18706    pub enum Args {
18707        /// Only set if |state| is BEGIN_FRAME_FINISHED.
18708        #[prost(message, tag="4")]
18709        CurrentArgs(super::BeginFrameArgs),
18710        /// Only set if |state| is BEGIN_FRAME_USING.
18711        #[prost(message, tag="5")]
18712        LastArgs(super::BeginFrameArgs),
18713    }
18714}
18715#[derive(Clone, PartialEq, ::prost::Message)]
18716pub struct BeginFrameObserverState {
18717    #[prost(int64, optional, tag="1")]
18718    pub dropped_begin_frame_args: ::core::option::Option<i64>,
18719    #[prost(message, optional, tag="2")]
18720    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
18721}
18722#[derive(Clone, PartialEq, ::prost::Message)]
18723pub struct BeginFrameSourceState {
18724    #[prost(uint32, optional, tag="1")]
18725    pub source_id: ::core::option::Option<u32>,
18726    #[prost(bool, optional, tag="2")]
18727    pub paused: ::core::option::Option<bool>,
18728    #[prost(uint32, optional, tag="3")]
18729    pub num_observers: ::core::option::Option<u32>,
18730    #[prost(message, optional, tag="4")]
18731    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
18732}
18733#[derive(Clone, PartialEq, ::prost::Message)]
18734pub struct CompositorTimingHistory {
18735    #[prost(int64, optional, tag="1")]
18736    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
18737    #[prost(int64, optional, tag="2")]
18738    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
18739    #[prost(int64, optional, tag="3")]
18740    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
18741    #[prost(int64, optional, tag="4")]
18742    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
18743    #[prost(int64, optional, tag="5")]
18744    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
18745    #[prost(int64, optional, tag="6")]
18746    pub activate_estimate_delta_us: ::core::option::Option<i64>,
18747    #[prost(int64, optional, tag="7")]
18748    pub draw_estimate_delta_us: ::core::option::Option<i64>,
18749}
18750// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
18751
18752// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
18753
18754/// Details about ContentSettings trace events.
18755#[derive(Clone, PartialEq, ::prost::Message)]
18756pub struct ChromeContentSettingsEventInfo {
18757    /// The number of user defined hostname patterns for content settings at
18758    /// browser start. Similar to UMA histogram
18759    /// 'ContentSettings.NumberOfExceptions'.
18760    #[prost(uint32, optional, tag="1")]
18761    pub number_of_exceptions: ::core::option::Option<u32>,
18762}
18763// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
18764
18765/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
18766/// in
18767/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
18768/// instead.
18769#[derive(Clone, PartialEq, ::prost::Message)]
18770pub struct ChromeFrameReporter {
18771    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
18772    pub state: ::core::option::Option<i32>,
18773    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
18774    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
18775    pub reason: ::core::option::Option<i32>,
18776    #[prost(uint64, optional, tag="3")]
18777    pub frame_source: ::core::option::Option<u64>,
18778    #[prost(uint64, optional, tag="4")]
18779    pub frame_sequence: ::core::option::Option<u64>,
18780    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
18781    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
18782    /// smoothness.
18783    #[prost(bool, optional, tag="5")]
18784    pub affects_smoothness: ::core::option::Option<bool>,
18785    /// The type of active scroll.
18786    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
18787    pub scroll_state: ::core::option::Option<i32>,
18788    /// If any main thread animation is active during this frame.
18789    #[prost(bool, optional, tag="7")]
18790    pub has_main_animation: ::core::option::Option<bool>,
18791    /// If any compositor thread animation is active during this frame.
18792    #[prost(bool, optional, tag="8")]
18793    pub has_compositor_animation: ::core::option::Option<bool>,
18794    /// If any touch-driven UX (not scroll) is active during this frame.
18795    #[prost(bool, optional, tag="9")]
18796    pub has_smooth_input_main: ::core::option::Option<bool>,
18797    /// Whether the frame contained any missing content (i.e. whether there was
18798    /// checkerboarding in the frame).  If has_missing_content,
18799    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
18800    /// values, has_missing_content should equal checkerboarded_needs_raster ||
18801    /// checkerboarded_needs_record.
18802    #[prost(bool, optional, tag="10")]
18803    pub has_missing_content: ::core::option::Option<bool>,
18804    /// The id of layer_tree_host that the frame has been produced for.
18805    #[prost(uint64, optional, tag="11")]
18806    pub layer_tree_host_id: ::core::option::Option<u64>,
18807    /// If total latency of PipelineReporter exceeds a certain limit.
18808    #[prost(bool, optional, tag="12")]
18809    pub has_high_latency: ::core::option::Option<bool>,
18810    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
18811    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
18812    /// (i.e. dropped frames when there are no partial compositor updates).
18813    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
18814    pub frame_type: ::core::option::Option<i32>,
18815    /// The breakdown stage of PipelineReporter that is most likely accountable for
18816    /// high latency.
18817    #[prost(string, repeated, tag="14")]
18818    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18819    /// Whether the frame contained any content that is not fully rastered.
18820    #[prost(bool, optional, tag="15")]
18821    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
18822    /// Whether the frame contained any content that is not fully recorded.
18823    #[prost(bool, optional, tag="16")]
18824    pub checkerboarded_needs_record: ::core::option::Option<bool>,
18825    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
18826    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
18827    #[prost(int64, optional, tag="17")]
18828    pub surface_frame_trace_id: ::core::option::Option<i64>,
18829    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
18830    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
18831    #[prost(int64, optional, tag="18")]
18832    pub display_trace_id: ::core::option::Option<i64>,
18833}
18834/// Nested message and enum types in `ChromeFrameReporter`.
18835pub mod chrome_frame_reporter {
18836    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18837    #[repr(i32)]
18838    pub enum State {
18839        /// The frame did not have any updates to present.
18840        NoUpdateDesired = 0,
18841        /// The frame presented all the desired updates (i.e. any updates requested
18842        /// from both the compositor thread and main-threads were handled).
18843        PresentedAll = 1,
18844        /// The frame was presented with some updates, but also missed some updates
18845        /// (e.g. missed updates from the main-thread, but included updates from the
18846        /// compositor thread).
18847        PresentedPartial = 2,
18848        /// The frame was dropped, i.e. some updates were desired for the frame, but
18849        /// was not presented.
18850        Dropped = 3,
18851    }
18852    impl State {
18853        /// String value of the enum field names used in the ProtoBuf definition.
18854        ///
18855        /// The values are not transformed in any way and thus are considered stable
18856        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18857        pub fn as_str_name(&self) -> &'static str {
18858            match self {
18859                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
18860                State::PresentedAll => "STATE_PRESENTED_ALL",
18861                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
18862                State::Dropped => "STATE_DROPPED",
18863            }
18864        }
18865    }
18866    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18867    #[repr(i32)]
18868    pub enum FrameDropReason {
18869        ReasonUnspecified = 0,
18870        /// Frame was dropped by the display-compositor.
18871        /// The display-compositor may drop a frame some times (e.g. the frame missed
18872        /// the deadline, or was blocked on surface-sync, etc.)
18873        ReasonDisplayCompositor = 1,
18874        /// Frame was dropped because of the main-thread.
18875        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
18876        /// is running expensive javascript, or doing a lot of layout updates, etc.
18877        ReasonMainThread = 2,
18878        /// Frame was dropped by the client compositor.
18879        /// The client compositor can drop some frames too (e.g. attempting to
18880        /// recover latency, missing the deadline, etc.).
18881        ReasonClientCompositor = 3,
18882    }
18883    impl FrameDropReason {
18884        /// String value of the enum field names used in the ProtoBuf definition.
18885        ///
18886        /// The values are not transformed in any way and thus are considered stable
18887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18888        pub fn as_str_name(&self) -> &'static str {
18889            match self {
18890                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
18891                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
18892                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
18893                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
18894            }
18895        }
18896    }
18897    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18898    #[repr(i32)]
18899    pub enum ScrollState {
18900        ScrollNone = 0,
18901        ScrollMainThread = 1,
18902        ScrollCompositorThread = 2,
18903        ScrollRaster = 3,
18904        /// Used when it can't be determined whether a scroll is in progress or not.
18905        ScrollUnknown = 4,
18906    }
18907    impl ScrollState {
18908        /// String value of the enum field names used in the ProtoBuf definition.
18909        ///
18910        /// The values are not transformed in any way and thus are considered stable
18911        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18912        pub fn as_str_name(&self) -> &'static str {
18913            match self {
18914                ScrollState::ScrollNone => "SCROLL_NONE",
18915                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
18916                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
18917                ScrollState::ScrollRaster => "SCROLL_RASTER",
18918                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
18919            }
18920        }
18921    }
18922    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18923    #[repr(i32)]
18924    pub enum FrameType {
18925        Forked = 0,
18926        Backfill = 1,
18927    }
18928    impl FrameType {
18929        /// String value of the enum field names used in the ProtoBuf definition.
18930        ///
18931        /// The values are not transformed in any way and thus are considered stable
18932        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18933        pub fn as_str_name(&self) -> &'static str {
18934            match self {
18935                FrameType::Forked => "FORKED",
18936                FrameType::Backfill => "BACKFILL",
18937            }
18938        }
18939    }
18940}
18941// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
18942
18943// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
18944
18945/// Details about one of Chrome's keyed services associated with the event.
18946#[derive(Clone, PartialEq, ::prost::Message)]
18947pub struct ChromeKeyedService {
18948    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
18949    /// Chrome, these are static strings known at compile time).
18950    #[prost(string, optional, tag="1")]
18951    pub name: ::core::option::Option<::prost::alloc::string::String>,
18952}
18953// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
18954
18955// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
18956
18957#[derive(Clone, PartialEq, ::prost::Message)]
18958pub struct ChromeLatencyInfo {
18959    #[prost(int64, optional, tag="1")]
18960    pub trace_id: ::core::option::Option<i64>,
18961    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
18962    pub step: ::core::option::Option<i32>,
18963    #[prost(int32, optional, tag="3")]
18964    pub frame_tree_node_id: ::core::option::Option<i32>,
18965    #[prost(message, repeated, tag="4")]
18966    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
18967    #[prost(bool, optional, tag="5")]
18968    pub is_coalesced: ::core::option::Option<bool>,
18969    #[prost(int64, optional, tag="6")]
18970    pub gesture_scroll_id: ::core::option::Option<i64>,
18971    #[prost(int64, optional, tag="7")]
18972    pub touch_id: ::core::option::Option<i64>,
18973    /// The type of input corresponding to this `ChromeLatencyInfo`.
18974    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
18975    pub input_type: ::core::option::Option<i32>,
18976}
18977/// Nested message and enum types in `ChromeLatencyInfo`.
18978pub mod chrome_latency_info {
18979    #[derive(Clone, PartialEq, ::prost::Message)]
18980    pub struct ComponentInfo {
18981        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
18982        pub component_type: ::core::option::Option<i32>,
18983        /// Microsecond timestamp in CLOCK_MONOTONIC domain
18984        #[prost(uint64, optional, tag="2")]
18985        pub time_us: ::core::option::Option<u64>,
18986    }
18987    /// NEXT ID: 12
18988    /// All step are optional but the enum is ordered (not by number) below in the
18989    /// order we expect them to appear if they are emitted in trace in a blocking
18990    /// fashion.
18991    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18992    #[repr(i32)]
18993    pub enum Step {
18994        Unspecified = 0,
18995        /// Emitted on the browser main thread.
18996        SendInputEventUi = 3,
18997        /// Happens on the renderer's compositor.
18998        HandleInputEventImpl = 5,
18999        DidHandleInputAndOverscroll = 8,
19000        /// Occurs on the Renderer's main thread.
19001        HandleInputEventMain = 4,
19002        MainThreadScrollUpdate = 2,
19003        HandleInputEventMainCommit = 1,
19004        /// Could be emitted on both the renderer's main OR compositor.
19005        HandledInputEventMainOrImpl = 9,
19006        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
19007        /// renderer's compositor and this will be emitted.
19008        HandledInputEventImpl = 10,
19009        /// Renderer's compositor.
19010        SwapBuffers = 6,
19011        /// Happens on the VizCompositor in the GPU process.
19012        DrawAndSwap = 7,
19013        /// Happens on the GPU main thread after the swap has completed.
19014        ///
19015        /// See above for NEXT ID, enum steps are not ordered by tag number.
19016        FinishedSwapBuffers = 11,
19017    }
19018    impl Step {
19019        /// String value of the enum field names used in the ProtoBuf definition.
19020        ///
19021        /// The values are not transformed in any way and thus are considered stable
19022        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19023        pub fn as_str_name(&self) -> &'static str {
19024            match self {
19025                Step::Unspecified => "STEP_UNSPECIFIED",
19026                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
19027                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
19028                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
19029                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
19030                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
19031                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
19032                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
19033                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
19034                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
19035                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
19036                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
19037            }
19038        }
19039    }
19040    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
19041    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
19042    /// practices.
19043    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19044    #[repr(i32)]
19045    pub enum LatencyComponentType {
19046        ComponentUnspecified = 0,
19047        ComponentInputEventLatencyBeginRwh = 1,
19048        ComponentInputEventLatencyScrollUpdateOriginal = 2,
19049        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
19050        ComponentInputEventLatencyOriginal = 4,
19051        ComponentInputEventLatencyUi = 5,
19052        ComponentInputEventLatencyRendererMain = 6,
19053        ComponentInputEventLatencyRenderingScheduledMain = 7,
19054        ComponentInputEventLatencyRenderingScheduledImpl = 8,
19055        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
19056        ComponentInputEventLatencyAckRwh = 10,
19057        ComponentInputEventLatencyRendererSwap = 11,
19058        ComponentDisplayCompositorReceivedFrame = 12,
19059        ComponentInputEventGpuSwapBuffer = 13,
19060        ComponentInputEventLatencyFrameSwap = 14,
19061    }
19062    impl LatencyComponentType {
19063        /// String value of the enum field names used in the ProtoBuf definition.
19064        ///
19065        /// The values are not transformed in any way and thus are considered stable
19066        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19067        pub fn as_str_name(&self) -> &'static str {
19068            match self {
19069                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
19070                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
19071                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
19072                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
19073                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
19074                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
19075                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
19076                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
19077                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
19078                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
19079                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
19080                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
19081                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
19082                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
19083                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
19084            }
19085        }
19086    }
19087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19088    #[repr(i32)]
19089    pub enum InputType {
19090        UnspecifiedOrOther = 0,
19091        TouchMoved = 1,
19092        GestureScrollBegin = 2,
19093        GestureScrollUpdate = 3,
19094        GestureScrollEnd = 4,
19095        GestureTap = 5,
19096        GestureTapCancel = 6,
19097    }
19098    impl InputType {
19099        /// String value of the enum field names used in the ProtoBuf definition.
19100        ///
19101        /// The values are not transformed in any way and thus are considered stable
19102        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19103        pub fn as_str_name(&self) -> &'static str {
19104            match self {
19105                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
19106                InputType::TouchMoved => "TOUCH_MOVED",
19107                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
19108                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
19109                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
19110                InputType::GestureTap => "GESTURE_TAP",
19111                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
19112            }
19113        }
19114    }
19115}
19116// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
19117
19118// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19119
19120/// Details about a legacy Chrome IPC message that is either sent by the event.
19121/// TODO(eseckler): Also use this message on the receiving side?
19122#[derive(Clone, PartialEq, ::prost::Message)]
19123pub struct ChromeLegacyIpc {
19124    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
19125    /// enum, e.g. FrameMsgStart,
19126    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
19127    pub message_class: ::core::option::Option<i32>,
19128    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
19129    /// IPC_MESSAGE_START macros.
19130    #[prost(uint32, optional, tag="2")]
19131    pub message_line: ::core::option::Option<u32>,
19132}
19133/// Nested message and enum types in `ChromeLegacyIpc`.
19134pub mod chrome_legacy_ipc {
19135    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19136    #[repr(i32)]
19137    pub enum MessageClass {
19138        ClassUnspecified = 0,
19139        ClassAutomation = 1,
19140        ClassFrame = 2,
19141        ClassPage = 3,
19142        ClassView = 4,
19143        ClassWidget = 5,
19144        ClassInput = 6,
19145        ClassTest = 7,
19146        ClassWorker = 8,
19147        ClassNacl = 9,
19148        ClassGpuChannel = 10,
19149        ClassMedia = 11,
19150        ClassPpapi = 12,
19151        ClassChrome = 13,
19152        ClassDrag = 14,
19153        ClassPrint = 15,
19154        ClassExtension = 16,
19155        ClassTextInputClient = 17,
19156        ClassBlinkTest = 18,
19157        ClassAccessibility = 19,
19158        ClassPrerender = 20,
19159        ClassChromoting = 21,
19160        ClassBrowserPlugin = 22,
19161        ClassAndroidWebView = 23,
19162        ClassNaclHost = 24,
19163        ClassEncryptedMedia = 25,
19164        ClassCast = 26,
19165        ClassGinJavaBridge = 27,
19166        ClassChromeUtilityPrinting = 28,
19167        ClassOzoneGpu = 29,
19168        ClassWebTest = 30,
19169        ClassNetworkHints = 31,
19170        ClassExtensionsGuestView = 32,
19171        ClassGuestView = 33,
19172        ClassMediaPlayerDelegate = 34,
19173        ClassExtensionWorker = 35,
19174        ClassSubresourceFilter = 36,
19175        ClassUnfreezableFrame = 37,
19176    }
19177    impl MessageClass {
19178        /// String value of the enum field names used in the ProtoBuf definition.
19179        ///
19180        /// The values are not transformed in any way and thus are considered stable
19181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19182        pub fn as_str_name(&self) -> &'static str {
19183            match self {
19184                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
19185                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
19186                MessageClass::ClassFrame => "CLASS_FRAME",
19187                MessageClass::ClassPage => "CLASS_PAGE",
19188                MessageClass::ClassView => "CLASS_VIEW",
19189                MessageClass::ClassWidget => "CLASS_WIDGET",
19190                MessageClass::ClassInput => "CLASS_INPUT",
19191                MessageClass::ClassTest => "CLASS_TEST",
19192                MessageClass::ClassWorker => "CLASS_WORKER",
19193                MessageClass::ClassNacl => "CLASS_NACL",
19194                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
19195                MessageClass::ClassMedia => "CLASS_MEDIA",
19196                MessageClass::ClassPpapi => "CLASS_PPAPI",
19197                MessageClass::ClassChrome => "CLASS_CHROME",
19198                MessageClass::ClassDrag => "CLASS_DRAG",
19199                MessageClass::ClassPrint => "CLASS_PRINT",
19200                MessageClass::ClassExtension => "CLASS_EXTENSION",
19201                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
19202                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
19203                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
19204                MessageClass::ClassPrerender => "CLASS_PRERENDER",
19205                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
19206                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
19207                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
19208                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
19209                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
19210                MessageClass::ClassCast => "CLASS_CAST",
19211                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
19212                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
19213                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
19214                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
19215                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
19216                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
19217                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
19218                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
19219                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
19220                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
19221                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
19222            }
19223        }
19224    }
19225}
19226// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19227
19228// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
19229
19230/// Details about Chrome message pump events
19231#[derive(Clone, PartialEq, ::prost::Message)]
19232pub struct ChromeMessagePump {
19233    /// True if there are sent messages in the queue.
19234    #[prost(bool, optional, tag="1")]
19235    pub sent_messages_in_queue: ::core::option::Option<bool>,
19236    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
19237    /// invoke.
19238    #[prost(uint64, optional, tag="2")]
19239    pub io_handler_location_iid: ::core::option::Option<u64>,
19240}
19241// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
19242
19243// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
19244
19245/// Contains information to identify mojo handling events. The trace events in
19246/// mojo are common for all mojo interfaces and this information is used to
19247/// identify who is the caller or callee.
19248#[derive(Clone, PartialEq, ::prost::Message)]
19249pub struct ChromeMojoEventInfo {
19250    /// Contains the interface name or the file name of the creator of a mojo
19251    /// handle watcher, recorded when an event if notified to the watcher. The code
19252    /// that runs within the track event belongs to the interface.
19253    #[prost(string, optional, tag="1")]
19254    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19255    /// The hash of the IPC message that is being handled.
19256    #[prost(uint32, optional, tag="2")]
19257    pub ipc_hash: ::core::option::Option<u32>,
19258    /// A static string representing the mojo interface name of the message that is
19259    /// being handled.
19260    #[prost(string, optional, tag="3")]
19261    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19262    /// Refers to an interned UnsymbolizedSourceLocation.
19263    /// The UnsymbolizedSourceLocation contains the interface method that's being
19264    /// handled, represented as a native symbol.
19265    /// The native symbol can be symbolized after the trace is recorded.
19266    /// Not using a symbolized source location for official Chromium builds to
19267    /// reduce binary size - emitting file/function names as strings into the
19268    /// trace requires storing them in the binary, which causes a significant
19269    /// binary size bloat for Chromium.
19270    #[prost(uint64, optional, tag="4")]
19271    pub mojo_interface_method_iid: ::core::option::Option<u64>,
19272    /// Indicate whether this is a message or reply.
19273    #[prost(bool, optional, tag="5")]
19274    pub is_reply: ::core::option::Option<bool>,
19275    /// The payload size of the message being sent through mojo messages.
19276    #[prost(uint64, optional, tag="6")]
19277    pub payload_size: ::core::option::Option<u64>,
19278    /// Represents the size of the message. Includes all headers and user payload.
19279    #[prost(uint64, optional, tag="7")]
19280    pub data_num_bytes: ::core::option::Option<u64>,
19281}
19282#[derive(Clone, PartialEq, ::prost::Message)]
19283pub struct ChromeRendererSchedulerState {
19284    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
19285    pub rail_mode: ::core::option::Option<i32>,
19286    #[prost(bool, optional, tag="2")]
19287    pub is_backgrounded: ::core::option::Option<bool>,
19288    #[prost(bool, optional, tag="3")]
19289    pub is_hidden: ::core::option::Option<bool>,
19290}
19291// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
19292
19293// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
19294
19295/// Details about a UI interaction initiated by the user, such as opening or
19296/// closing a tab or a context menu.
19297#[derive(Clone, PartialEq, ::prost::Message)]
19298pub struct ChromeUserEvent {
19299    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
19300    /// Chrome, these are usually static strings known at compile time, or
19301    /// concatenations of multiple such static strings).
19302    #[prost(string, optional, tag="1")]
19303    pub action: ::core::option::Option<::prost::alloc::string::String>,
19304    /// MD5 hash of the action string.
19305    #[prost(uint64, optional, tag="2")]
19306    pub action_hash: ::core::option::Option<u64>,
19307}
19308// End of protos/perfetto/trace/track_event/chrome_user_event.proto
19309
19310// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19311
19312/// Details about HWNDMessageHandler trace events.
19313#[derive(Clone, PartialEq, ::prost::Message)]
19314pub struct ChromeWindowHandleEventInfo {
19315    #[prost(uint32, optional, tag="1")]
19316    pub dpi: ::core::option::Option<u32>,
19317    #[prost(uint32, optional, tag="2")]
19318    pub message_id: ::core::option::Option<u32>,
19319    #[prost(fixed64, optional, tag="3")]
19320    pub hwnd_ptr: ::core::option::Option<u64>,
19321}
19322// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19323
19324// Begin of protos/perfetto/trace/track_event/screenshot.proto
19325
19326#[derive(Clone, PartialEq, ::prost::Message)]
19327pub struct Screenshot {
19328    #[prost(bytes="vec", optional, tag="1")]
19329    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19330}
19331// End of protos/perfetto/trace/track_event/screenshot.proto
19332
19333// Begin of protos/perfetto/trace/track_event/task_execution.proto
19334
19335/// TrackEvent arguments describing the execution of a task.
19336#[derive(Clone, PartialEq, ::prost::Message)]
19337pub struct TaskExecution {
19338    /// Source location that the task was posted from.
19339    /// interned SourceLocation.
19340    #[prost(uint64, optional, tag="1")]
19341    pub posted_from_iid: ::core::option::Option<u64>,
19342}
19343// Begin of protos/perfetto/trace/track_event/track_event.proto
19344
19345// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
19346// protos are still subject to change. Don't depend on them staying as they are.
19347
19348/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
19349/// which describe activity on a track, such as a thread or asynchronous event
19350/// track. The track is specified using separate TrackDescriptor messages and
19351/// referred to via the track's UUID.
19352///
19353/// A simple TrackEvent packet specifies a timestamp, category, name and type:
19354/// ```protobuf
19355///    trace_packet {
19356///      timestamp: 1000
19357///      track_event {
19358///        categories: \["my_cat"\]
19359///        name: "my_event"
19360///        type: TYPE_INSTANT
19361///       }
19362///     }
19363/// ```
19364///
19365/// To associate an event with a custom track (e.g. a thread), the track is
19366/// defined in a separate packet and referred to from the TrackEvent by its UUID:
19367/// ```protobuf
19368///    trace_packet {
19369///      track_descriptor {
19370///        track_uuid: 1234
19371///        name: "my_track"
19372///
19373///        // Optionally, associate the track with a thread.
19374///        thread_descriptor {
19375///          pid: 10
19376///          tid: 10
19377///          ..
19378///        }
19379///      }
19380///    }
19381/// ```
19382///
19383/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
19384///
19385/// ```protobuf
19386///    trace_packet {
19387///      timestamp: 1200
19388///      track_event {
19389///        track_uuid: 1234
19390///        categories: \["my_cat"\]
19391///        name: "my_slice"
19392///        type: TYPE_SLICE_BEGIN
19393///      }
19394///    }
19395///    trace_packet {
19396///      timestamp: 1400
19397///      track_event {
19398///        track_uuid: 1234
19399///        type: TYPE_SLICE_END
19400///      }
19401///    }
19402/// ```
19403/// TrackEvents also support optimizations to reduce data repetition and encoded
19404/// data size, e.g. through data interning (names, categories, ...) and delta
19405/// encoding of timestamps/counters. For details, see the InternedData message.
19406/// Further, default values for attributes of events on the same sequence (e.g.
19407/// their default track association) can be emitted as part of a
19408/// TrackEventDefaults message.
19409///
19410/// Next reserved id: 13 (up to 15). Next id: 55.
19411#[derive(Clone, PartialEq, ::prost::Message)]
19412pub struct TrackEvent {
19413    /// Names of categories of the event. In the client library, categories are a
19414    /// way to turn groups of individual events on or off.
19415    /// interned EventCategoryName.
19416    #[prost(uint64, repeated, packed="false", tag="3")]
19417    pub category_iids: ::prost::alloc::vec::Vec<u64>,
19418    /// non-interned variant.
19419    #[prost(string, repeated, tag="22")]
19420    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19421    #[prost(enumeration="track_event::Type", optional, tag="9")]
19422    pub r#type: ::core::option::Option<i32>,
19423    /// Identifies the track of the event. The default value may be overridden
19424    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
19425    /// sequence (in most cases sequence = one thread). If no value is specified
19426    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
19427    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
19428    #[prost(uint64, optional, tag="11")]
19429    pub track_uuid: ::core::option::Option<u64>,
19430    /// To encode counter values more efficiently, we support attaching additional
19431    /// counter values to a TrackEvent of any type. All values will share the same
19432    /// timestamp specified in the TracePacket. The value at
19433    /// extra_counter_values\[N\] is for the counter track referenced by
19434    /// extra_counter_track_uuids\[N\].
19435    ///
19436    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
19437    /// should always be equal or more uuids than values. It is valid to set more
19438    /// uuids (e.g. via defaults) than values. If uuids are specified in
19439    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
19440    /// default uuid list.
19441    ///
19442    /// For example, this allows snapshotting the thread time clock at each
19443    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
19444    #[prost(uint64, repeated, packed="false", tag="31")]
19445    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19446    #[prost(int64, repeated, packed="false", tag="12")]
19447    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
19448    /// Counter snapshots using floating point instead of integer values.
19449    #[prost(uint64, repeated, packed="false", tag="45")]
19450    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19451    #[prost(double, repeated, packed="false", tag="46")]
19452    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
19453    /// IDs of flows originating, passing through, or ending at this event.
19454    /// Flow IDs are global within a trace.
19455    ///
19456    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
19457    /// an input event may be handled on one thread but cause another event on
19458    /// a different thread - a flow between the two events can associate them.
19459    ///
19460    /// The direction of the flows between events is inferred from the events'
19461    /// timestamps. The earliest event with the same flow ID becomes the source
19462    /// of the flow. Any events thereafter are intermediate steps of the flow,
19463    /// until the flow terminates at the last event with the flow ID.
19464    ///
19465    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
19466    /// that the same ID can later be reused for another flow.
19467    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
19468    #[deprecated]
19469    #[prost(uint64, repeated, packed="false", tag="36")]
19470    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
19471    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
19472    /// consumption.
19473    #[prost(fixed64, repeated, packed="false", tag="47")]
19474    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
19475    /// List of flow ids which should terminate on this event, otherwise same as
19476    /// |flow_ids|.
19477    /// Any one flow ID should be either listed as part of |flow_ids| OR
19478    /// |terminating_flow_ids|, not both.
19479    /// DEPRECATED. Only kept for backwards compatibility.  Use
19480    /// |terminating_flow_ids|.
19481    #[deprecated]
19482    #[prost(uint64, repeated, packed="false", tag="42")]
19483    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
19484    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
19485    /// "terminating_flow_ids" to reduce memory consumption.
19486    #[prost(fixed64, repeated, packed="false", tag="48")]
19487    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
19488    // ---------------------------------------------------------------------------
19489    // TrackEvent arguments:
19490    // ---------------------------------------------------------------------------
19491
19492    /// Unstable key/value annotations shown in the trace viewer but not intended
19493    /// for metrics use.
19494    #[prost(message, repeated, tag="4")]
19495    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
19496    /// Typed event arguments:
19497    #[prost(message, optional, tag="5")]
19498    pub task_execution: ::core::option::Option<TaskExecution>,
19499    #[prost(message, optional, tag="21")]
19500    pub log_message: ::core::option::Option<LogMessage>,
19501    #[prost(message, optional, tag="24")]
19502    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
19503    #[prost(message, optional, tag="25")]
19504    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
19505    #[prost(message, optional, tag="26")]
19506    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
19507    #[prost(message, optional, tag="27")]
19508    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
19509    #[prost(message, optional, tag="28")]
19510    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
19511    #[prost(message, optional, tag="29")]
19512    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
19513    /// DEPRECATED. Only kept for backwards compatibility. Use the
19514    /// |ChromeTrackEvent.frame_reporter| extension in
19515    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19516    /// instead.
19517    #[deprecated]
19518    #[prost(message, optional, tag="32")]
19519    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
19520    #[prost(message, optional, tag="39")]
19521    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
19522    #[prost(message, optional, tag="40")]
19523    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
19524    #[prost(message, optional, tag="41")]
19525    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
19526    #[prost(message, optional, tag="43")]
19527    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
19528    #[prost(message, optional, tag="49")]
19529    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
19530    #[prost(message, optional, tag="50")]
19531    pub screenshot: ::core::option::Option<Screenshot>,
19532    #[prost(message, optional, tag="35")]
19533    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
19534    #[prost(message, optional, tag="38")]
19535    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
19536    #[prost(message, optional, tag="6")]
19537    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
19538    /// Optional name of the event for its display in trace viewer. May be left
19539    /// unspecified for events with typed arguments.
19540    ///
19541    /// Note that metrics should not rely on event names, as they are prone to
19542    /// changing. Instead, they should use typed arguments to identify the events
19543    /// they are interested in.
19544    #[prost(oneof="track_event::NameField", tags="10, 23")]
19545    pub name_field: ::core::option::Option<track_event::NameField>,
19546    /// A new value for a counter track. |track_uuid| should refer to a track with
19547    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
19548    /// efficient encoding of counter values that are sampled at the beginning/end
19549    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
19550    /// Counter values can optionally be encoded in as delta values (positive or
19551    /// negative) on each packet sequence (see CounterIncrementalBase).
19552    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
19553    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
19554    /// An opaque identifier to correlate this slice with other slices that are
19555    /// considered part of the same logical operation, even if they are not
19556    /// causally connected. Examples uses of a correlation id might be the number
19557    /// of frame going through various stages of rendering in a GPU, the id for an
19558    /// RPC request going through a distributed system, or the id of a network
19559    /// request going through various stages of processing by the kernel.
19560    ///
19561    /// NOTE: if the events *are* causually connected, you probably want to use
19562    /// flows instead of OR in addition to correlation ids.
19563    ///
19564    /// UIs can use this identifier to visually link these slices, for instance,
19565    /// by assigning them a consistent color or highlighting the entire correlated
19566    /// set when one slice is hovered.
19567    ///
19568    /// Only one field within this 'oneof' should be set to define the correlation.
19569    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
19570    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
19571    /// This field is used only if the source location represents the function that
19572    /// executes during this event.
19573    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
19574    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
19575    // ---------------------------------------------------------------------------
19576    // Deprecated / legacy event fields, which will be removed in the future:
19577    // ---------------------------------------------------------------------------
19578
19579    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
19580    /// TracePacket instead.
19581    ///
19582    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
19583    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
19584    pub timestamp: ::core::option::Option<track_event::Timestamp>,
19585    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19586    /// encode thread time instead.
19587    ///
19588    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
19589    /// microseconds.
19590    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
19591    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
19592    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19593    /// encode thread instruction count instead.
19594    ///
19595    /// Value of the instruction counter for the current thread.
19596    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
19597    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
19598}
19599/// Nested message and enum types in `TrackEvent`.
19600pub mod track_event {
19601    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
19602    /// event attributes are initially simply proxied for conversion to a JSON
19603    /// trace. We intend to gradually transition these attributes to similar native
19604    /// features in TrackEvent (e.g. async + flow events), or deprecate them
19605    /// without replacement where transition is unsuitable.
19606    ///
19607    /// Next reserved id: 16 (up to 16).
19608    /// Next id: 20.
19609    #[derive(Clone, PartialEq, ::prost::Message)]
19610    pub struct LegacyEvent {
19611        /// Deprecated, use TrackEvent::name(_iid) instead.
19612        /// interned EventName.
19613        #[prost(uint64, optional, tag="1")]
19614        pub name_iid: ::core::option::Option<u64>,
19615        #[prost(int32, optional, tag="2")]
19616        pub phase: ::core::option::Option<i32>,
19617        #[prost(int64, optional, tag="3")]
19618        pub duration_us: ::core::option::Option<i64>,
19619        #[prost(int64, optional, tag="4")]
19620        pub thread_duration_us: ::core::option::Option<i64>,
19621        /// Elapsed retired instruction count during the event.
19622        #[prost(int64, optional, tag="15")]
19623        pub thread_instruction_delta: ::core::option::Option<i64>,
19624        /// Additional optional scope for |id|.
19625        #[prost(string, optional, tag="7")]
19626        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
19627        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
19628        #[prost(bool, optional, tag="9")]
19629        pub use_async_tts: ::core::option::Option<bool>,
19630        /// Idenfifies a flow. Flow events with the same bind_id are connected.
19631        #[prost(uint64, optional, tag="8")]
19632        pub bind_id: ::core::option::Option<u64>,
19633        /// Use the enclosing slice as binding point for a flow end event instead of
19634        /// the next slice. Flow start/step events always bind to the enclosing
19635        /// slice.
19636        #[prost(bool, optional, tag="12")]
19637        pub bind_to_enclosing: ::core::option::Option<bool>,
19638        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
19639        pub flow_direction: ::core::option::Option<i32>,
19640        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
19641        pub instant_event_scope: ::core::option::Option<i32>,
19642        /// Override the pid/tid if the writer needs to emit events on behalf of
19643        /// another process/thread. This should be the exception. Normally, the
19644        /// pid+tid from ThreadDescriptor is used.
19645        #[prost(int32, optional, tag="18")]
19646        pub pid_override: ::core::option::Option<i32>,
19647        #[prost(int32, optional, tag="19")]
19648        pub tid_override: ::core::option::Option<i32>,
19649        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
19650        pub id: ::core::option::Option<legacy_event::Id>,
19651    }
19652    /// Nested message and enum types in `LegacyEvent`.
19653    pub mod legacy_event {
19654        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19655        #[repr(i32)]
19656        pub enum FlowDirection {
19657            FlowUnspecified = 0,
19658            FlowIn = 1,
19659            FlowOut = 2,
19660            FlowInout = 3,
19661        }
19662        impl FlowDirection {
19663            /// String value of the enum field names used in the ProtoBuf definition.
19664            ///
19665            /// The values are not transformed in any way and thus are considered stable
19666            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19667            pub fn as_str_name(&self) -> &'static str {
19668                match self {
19669                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
19670                    FlowDirection::FlowIn => "FLOW_IN",
19671                    FlowDirection::FlowOut => "FLOW_OUT",
19672                    FlowDirection::FlowInout => "FLOW_INOUT",
19673                }
19674            }
19675        }
19676        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19677        #[repr(i32)]
19678        pub enum InstantEventScope {
19679            ScopeUnspecified = 0,
19680            ScopeGlobal = 1,
19681            ScopeProcess = 2,
19682            ScopeThread = 3,
19683        }
19684        impl InstantEventScope {
19685            /// String value of the enum field names used in the ProtoBuf definition.
19686            ///
19687            /// The values are not transformed in any way and thus are considered stable
19688            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19689            pub fn as_str_name(&self) -> &'static str {
19690                match self {
19691                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19692                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
19693                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
19694                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
19695                }
19696            }
19697        }
19698        #[derive(Clone, PartialEq, ::prost::Oneof)]
19699        pub enum Id {
19700            #[prost(uint64, tag="6")]
19701            UnscopedId(u64),
19702            #[prost(uint64, tag="10")]
19703            LocalId(u64),
19704            #[prost(uint64, tag="11")]
19705            GlobalId(u64),
19706        }
19707    }
19708    // TODO(eseckler): Support using binary symbols for category/event names.
19709
19710    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
19711    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19712    #[repr(i32)]
19713    pub enum Type {
19714        Unspecified = 0,
19715        /// Slice events are events that have a begin and end timestamp, i.e. a
19716        /// duration. They can be nested similar to a callstack: If, on the same
19717        /// track, event B begins after event A, but before A ends, B is a child
19718        /// event of A and will be drawn as a nested event underneath A in the UI.
19719        /// Note that child events should always end before their parents (e.g. B
19720        /// before A).
19721        ///
19722        /// Each slice event is formed by a pair of BEGIN + END events. The END event
19723        /// does not need to repeat any TrackEvent fields it has in common with its
19724        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
19725        /// END pair will be merged during trace import.
19726        ///
19727        /// Note that we deliberately chose not to support COMPLETE events (which
19728        /// would specify a duration directly) since clients would need to delay
19729        /// writing them until the slice is completed, which can result in reordered
19730        /// events in the trace and loss of unfinished events at the end of a trace.
19731        SliceBegin = 1,
19732        SliceEnd = 2,
19733        /// Instant events are nestable events without duration. They can be children
19734        /// of slice events on the same track.
19735        Instant = 3,
19736        /// Event that provides a value for a counter track. |track_uuid| should
19737        /// refer to a counter track and |counter_value| set to the new value. Note
19738        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
19739        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
19740        Counter = 4,
19741    }
19742    impl Type {
19743        /// String value of the enum field names used in the ProtoBuf definition.
19744        ///
19745        /// The values are not transformed in any way and thus are considered stable
19746        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19747        pub fn as_str_name(&self) -> &'static str {
19748            match self {
19749                Type::Unspecified => "TYPE_UNSPECIFIED",
19750                Type::SliceBegin => "TYPE_SLICE_BEGIN",
19751                Type::SliceEnd => "TYPE_SLICE_END",
19752                Type::Instant => "TYPE_INSTANT",
19753                Type::Counter => "TYPE_COUNTER",
19754            }
19755        }
19756    }
19757    /// Optional name of the event for its display in trace viewer. May be left
19758    /// unspecified for events with typed arguments.
19759    ///
19760    /// Note that metrics should not rely on event names, as they are prone to
19761    /// changing. Instead, they should use typed arguments to identify the events
19762    /// they are interested in.
19763    #[derive(Clone, PartialEq, ::prost::Oneof)]
19764    pub enum NameField {
19765        /// interned EventName.
19766        #[prost(uint64, tag="10")]
19767        NameIid(u64),
19768        /// non-interned variant.
19769        #[prost(string, tag="23")]
19770        Name(::prost::alloc::string::String),
19771    }
19772    /// A new value for a counter track. |track_uuid| should refer to a track with
19773    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
19774    /// efficient encoding of counter values that are sampled at the beginning/end
19775    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
19776    /// Counter values can optionally be encoded in as delta values (positive or
19777    /// negative) on each packet sequence (see CounterIncrementalBase).
19778    #[derive(Clone, PartialEq, ::prost::Oneof)]
19779    pub enum CounterValueField {
19780        #[prost(int64, tag="30")]
19781        CounterValue(i64),
19782        #[prost(double, tag="44")]
19783        DoubleCounterValue(f64),
19784    }
19785    /// An opaque identifier to correlate this slice with other slices that are
19786    /// considered part of the same logical operation, even if they are not
19787    /// causally connected. Examples uses of a correlation id might be the number
19788    /// of frame going through various stages of rendering in a GPU, the id for an
19789    /// RPC request going through a distributed system, or the id of a network
19790    /// request going through various stages of processing by the kernel.
19791    ///
19792    /// NOTE: if the events *are* causually connected, you probably want to use
19793    /// flows instead of OR in addition to correlation ids.
19794    ///
19795    /// UIs can use this identifier to visually link these slices, for instance,
19796    /// by assigning them a consistent color or highlighting the entire correlated
19797    /// set when one slice is hovered.
19798    ///
19799    /// Only one field within this 'oneof' should be set to define the correlation.
19800    #[derive(Clone, PartialEq, ::prost::Oneof)]
19801    pub enum CorrelationIdField {
19802        /// A 64-bit unsigned integer used as the correlation ID.
19803        ///
19804        /// Best for performance and compact traces if the identifier is naturally
19805        /// numerical or can be easily mapped to one by the trace producer.
19806        #[prost(uint64, tag="52")]
19807        CorrelationId(u64),
19808        /// A string value used as the correlation ID.
19809        ///
19810        /// Offers maximum flexibility for human-readable or complex identifiers
19811        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
19812        /// size. For frequently repeated string identifiers, consider
19813        /// 'correlation_id_string_iid'.
19814        #[prost(string, tag="53")]
19815        CorrelationIdStr(::prost::alloc::string::String),
19816        /// An interned string identifier (an IID) for correlation.
19817        ///
19818        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
19819        /// field within the packet sequence's InternedData. This approach combines
19820        /// the descriptiveness and uniqueness of strings with the efficiency of
19821        /// integer IDs for storage and comparison, especially for identifiers that
19822        /// repeat across many events.
19823        #[prost(uint64, tag="54")]
19824        CorrelationIdStrIid(u64),
19825    }
19826    /// This field is used only if the source location represents the function that
19827    /// executes during this event.
19828    #[derive(Clone, PartialEq, ::prost::Oneof)]
19829    pub enum SourceLocationField {
19830        /// Non-interned field.
19831        #[prost(message, tag="33")]
19832        SourceLocation(super::SourceLocation),
19833        /// Interned field.
19834        #[prost(uint64, tag="34")]
19835        SourceLocationIid(u64),
19836    }
19837    // ---------------------------------------------------------------------------
19838    // Deprecated / legacy event fields, which will be removed in the future:
19839    // ---------------------------------------------------------------------------
19840
19841    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
19842    /// TracePacket instead.
19843    ///
19844    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
19845    #[derive(Clone, PartialEq, ::prost::Oneof)]
19846    pub enum Timestamp {
19847        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
19848        /// calculate the absolute timestamp value, sum up all delta values of the
19849        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
19850        /// the |reference_timestamp| in ThreadDescriptor. This value should always
19851        /// be positive.
19852        #[prost(int64, tag="1")]
19853        TimestampDeltaUs(i64),
19854        /// Absolute value (e.g. a manually specified timestamp in the macro).
19855        /// This is a one-off value that does not affect delta timestamp computation
19856        /// in subsequent TrackEvents.
19857        #[prost(int64, tag="16")]
19858        TimestampAbsoluteUs(i64),
19859    }
19860    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19861    /// encode thread time instead.
19862    ///
19863    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
19864    /// microseconds.
19865    #[derive(Clone, PartialEq, ::prost::Oneof)]
19866    pub enum ThreadTime {
19867        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
19868        /// calculate the absolute timestamp value, sum up all delta values of the
19869        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
19870        /// the |reference_timestamp| in ThreadDescriptor. This value should always
19871        /// be positive.
19872        #[prost(int64, tag="2")]
19873        ThreadTimeDeltaUs(i64),
19874        /// This is a one-off absolute value that does not affect delta timestamp
19875        /// computation in subsequent TrackEvents.
19876        #[prost(int64, tag="17")]
19877        ThreadTimeAbsoluteUs(i64),
19878    }
19879    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19880    /// encode thread instruction count instead.
19881    ///
19882    /// Value of the instruction counter for the current thread.
19883    #[derive(Clone, PartialEq, ::prost::Oneof)]
19884    pub enum ThreadInstructionCount {
19885        /// Same encoding as |thread_time| field above.
19886        #[prost(int64, tag="8")]
19887        ThreadInstructionCountDelta(i64),
19888        #[prost(int64, tag="20")]
19889        ThreadInstructionCountAbsolute(i64),
19890    }
19891}
19892/// Default values for fields of all TrackEvents on the same packet sequence.
19893/// Should be emitted as part of TracePacketDefaults whenever incremental state
19894/// is cleared. It's defined here because field IDs should match those of the
19895/// corresponding fields in TrackEvent.
19896#[derive(Clone, PartialEq, ::prost::Message)]
19897pub struct TrackEventDefaults {
19898    #[prost(uint64, optional, tag="11")]
19899    pub track_uuid: ::core::option::Option<u64>,
19900    #[prost(uint64, repeated, packed="false", tag="31")]
19901    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19902    #[prost(uint64, repeated, packed="false", tag="45")]
19903    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19904}
19905// --------------------
19906// Interned data types:
19907// --------------------
19908
19909#[derive(Clone, PartialEq, ::prost::Message)]
19910pub struct EventCategory {
19911    #[prost(uint64, optional, tag="1")]
19912    pub iid: ::core::option::Option<u64>,
19913    #[prost(string, optional, tag="2")]
19914    pub name: ::core::option::Option<::prost::alloc::string::String>,
19915}
19916#[derive(Clone, PartialEq, ::prost::Message)]
19917pub struct EventName {
19918    #[prost(uint64, optional, tag="1")]
19919    pub iid: ::core::option::Option<u64>,
19920    #[prost(string, optional, tag="2")]
19921    pub name: ::core::option::Option<::prost::alloc::string::String>,
19922}
19923// End of protos/perfetto/trace/track_event/track_event.proto
19924
19925// Begin of protos/perfetto/trace/interned_data/interned_data.proto
19926
19927// ------------------------------ DATA INTERNING: ------------------------------
19928// Interning indexes are built up gradually by adding the entries contained in
19929// each TracePacket of the same packet sequence (packets emitted by the same
19930// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
19931// can only refer to interned data from other packets in the same sequence.
19932//
19933// The writer will emit new entries when it encounters new internable values
19934// that aren't yet in the index. Data in current and subsequent TracePackets can
19935// then refer to the entry by its position (interning ID, abbreviated "iid") in
19936// its index. An interning ID with value 0 is considered invalid (not set).
19937//
19938// Because of the incremental build-up, the interning index will miss data when
19939// TracePackets are lost, e.g. because a chunk was overridden in the central
19940// ring buffer. To avoid invalidation of the whole trace in such a case, the
19941// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
19942// When packet loss occurs, the reader will only lose interning data up to the
19943// next reset.
19944// -----------------------------------------------------------------------------
19945
19946/// Message that contains new entries for the interning indices of a packet
19947/// sequence.
19948///
19949/// The writer will usually emit new entries in the same TracePacket that first
19950/// refers to them (since the last reset of interning state). They may also be
19951/// emitted proactively in advance of referring to them in later packets.
19952///
19953/// Next reserved id: 8 (up to 15).
19954/// Next id: 44.
19955///
19956/// TODO(eseckler): Replace iid fields inside interned messages with
19957/// map<iid, message> type fields in InternedData.
19958#[derive(Clone, PartialEq, ::prost::Message)]
19959pub struct InternedData {
19960    /// Each field's message type needs to specify an |iid| field, which is the ID
19961    /// of the entry in the field's interning index. Each field constructs its own
19962    /// index, thus interning IDs are scoped to the tracing session and field
19963    /// (usually as a counter for efficient var-int encoding), and optionally to
19964    /// the incremental state generation of the packet sequence.
19965    #[prost(message, repeated, tag="1")]
19966    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
19967    #[prost(message, repeated, tag="2")]
19968    pub event_names: ::prost::alloc::vec::Vec<EventName>,
19969    #[prost(message, repeated, tag="3")]
19970    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
19971    #[prost(message, repeated, tag="27")]
19972    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
19973    #[prost(message, repeated, tag="4")]
19974    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
19975    #[prost(message, repeated, tag="28")]
19976    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
19977    #[prost(message, repeated, tag="20")]
19978    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
19979    #[prost(message, repeated, tag="25")]
19980    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
19981    // Note: field IDs up to 15 should be used for frequent data only.
19982
19983    /// Build IDs of exectuable files.
19984    #[prost(message, repeated, tag="16")]
19985    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
19986    /// Paths to executable files.
19987    #[prost(message, repeated, tag="17")]
19988    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
19989    /// Paths to source files.
19990    #[prost(message, repeated, tag="18")]
19991    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
19992    /// Names of functions used in frames below.
19993    #[prost(message, repeated, tag="5")]
19994    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
19995    /// Executable files mapped into processes.
19996    #[prost(message, repeated, tag="19")]
19997    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
19998    /// Frames of callstacks of a program.
19999    #[prost(message, repeated, tag="6")]
20000    pub frames: ::prost::alloc::vec::Vec<Frame>,
20001    /// A callstack of a program.
20002    #[prost(message, repeated, tag="7")]
20003    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
20004    /// Additional Vulkan information sent in a VulkanMemoryEvent message
20005    #[prost(message, repeated, tag="22")]
20006    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
20007    /// Graphics context of a render stage event.  This represent the GL
20008    /// context for an OpenGl app or the VkDevice for a Vulkan app.
20009    #[prost(message, repeated, tag="23")]
20010    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
20011    /// Description of a GPU hardware queue or render stage.
20012    #[prost(message, repeated, tag="24")]
20013    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
20014    /// This is set when FtraceConfig.symbolize_ksyms = true.
20015    /// The id of each symbol the number that will be reported in ftrace events
20016    /// like sched_block_reason.caller and is obtained from a monotonic counter.
20017    /// The same symbol can have different indexes in different bundles.
20018    /// This is is NOT the real address. This is to avoid disclosing KASLR through
20019    /// traces.
20020    #[prost(message, repeated, tag="26")]
20021    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
20022    /// Interned string values in the DebugAnnotation proto.
20023    #[prost(message, repeated, tag="29")]
20024    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
20025    /// Interned packet context for android.network_packets.
20026    #[prost(message, repeated, tag="30")]
20027    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
20028    /// Interned name of a js function. We only intern js functions as there is a
20029    /// lot of duplication for them, but less so for other strings in the V8 data
20030    /// source.
20031    #[prost(message, repeated, tag="31")]
20032    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
20033    /// Js functions can be emitted multiple times for various compilation tiers,
20034    /// so it makes sense to deduplicate all this.
20035    #[prost(message, repeated, tag="32")]
20036    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
20037    /// Interned JS script (there is one associated with each JS function)
20038    #[prost(message, repeated, tag="33")]
20039    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
20040    /// Interned Wasm script (there is one associated with each Wasm function)
20041    #[prost(message, repeated, tag="34")]
20042    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
20043    /// Every V8 event is associated with an isolate, intern the isolate to remove
20044    /// duplication.
20045    #[prost(message, repeated, tag="35")]
20046    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
20047    /// Interned protolog strings args.
20048    #[prost(message, repeated, tag="36")]
20049    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
20050    /// Interned protolog stacktraces.
20051    #[prost(message, repeated, tag="37")]
20052    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
20053    /// viewcapture
20054    #[prost(message, repeated, tag="38")]
20055    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
20056    #[prost(message, repeated, tag="39")]
20057    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
20058    #[prost(message, repeated, tag="40")]
20059    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
20060    #[prost(message, repeated, tag="41")]
20061    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
20062    /// Interned context for android.app_wakelocks.
20063    #[prost(message, repeated, tag="42")]
20064    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
20065    /// Interned correlation ids in track_event.
20066    #[prost(message, repeated, tag="43")]
20067    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
20068}
20069// End of protos/perfetto/trace/interned_data/interned_data.proto
20070
20071// Begin of protos/perfetto/trace/memory_graph.proto
20072
20073// Message definitions for app-reported memory breakdowns. At the moment, this
20074// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
20075// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
20076// This is unrelated to the native or java heap profilers (those protos live
20077// in //protos/perfetto/trace/profiling/).
20078
20079#[derive(Clone, PartialEq, ::prost::Message)]
20080pub struct MemoryTrackerSnapshot {
20081    /// Unique ID that represents the global memory dump.
20082    #[prost(uint64, optional, tag="1")]
20083    pub global_dump_id: ::core::option::Option<u64>,
20084    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
20085    pub level_of_detail: ::core::option::Option<i32>,
20086    #[prost(message, repeated, tag="3")]
20087    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
20088}
20089/// Nested message and enum types in `MemoryTrackerSnapshot`.
20090pub mod memory_tracker_snapshot {
20091    /// Memory snapshot of a process. The snapshot contains memory data that is
20092    /// from 2 different sources, namely system stats and instrumentation stats.
20093    /// The system memory usage stats come from the OS based on standard API
20094    /// available in the platform to query memory usage. The instrumentation stats
20095    /// are added by instrumenting specific piece of code which tracks memory
20096    /// allocations and deallocations made by a small sub-system within the
20097    /// application.
20098    /// The system stats of the global memory snapshot are recorded as part of
20099    /// ProcessStats and SmapsPacket fields in trace packet with the same
20100    /// timestamp.
20101    #[derive(Clone, PartialEq, ::prost::Message)]
20102    pub struct ProcessSnapshot {
20103        /// Process ID of the process
20104        #[prost(int32, optional, tag="1")]
20105        pub pid: ::core::option::Option<i32>,
20106        #[prost(message, repeated, tag="2")]
20107        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
20108        #[prost(message, repeated, tag="3")]
20109        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
20110    }
20111    /// Nested message and enum types in `ProcessSnapshot`.
20112    pub mod process_snapshot {
20113        // Memory dumps are represented as a graph of memory nodes which contain
20114        // statistics. To avoid double counting the same memory across different
20115        // nodes, edges are used to mark nodes that account for the same memory. See
20116        // this doc for examples of the usage:
20117        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
20118
20119        /// A single node in the memory graph.
20120        #[derive(Clone, PartialEq, ::prost::Message)]
20121        pub struct MemoryNode {
20122            /// Unique ID of the node across all processes involved in the global
20123            /// memory dump. The ID is only unique within this particular global dump
20124            /// identified by GlobalMemoryDumpPacket.global_dump_id.
20125            #[prost(uint64, optional, tag="1")]
20126            pub id: ::core::option::Option<u64>,
20127            /// Absolute name is a unique name for the memory node within the process
20128            /// with ProcessMemoryDump.pid. The name can contain multiple parts
20129            /// separated by '/', which traces the edges of the node from the root
20130            /// node.
20131            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
20132            /// node "buffer1" in a graph structure of:
20133            ///    root -> partition_allocator -> array_buffers -> buffer1.
20134            #[prost(string, optional, tag="2")]
20135            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
20136            /// A weak node means that the instrumentation that added the current node
20137            /// is unsure about the existence of the actual memory. Unless a "strong"
20138            /// (non-weak is default) node that has an edge to the current node exists
20139            /// in the current global dump, the current node will be discarded.
20140            #[prost(bool, optional, tag="3")]
20141            pub weak: ::core::option::Option<bool>,
20142            /// Size of the node in bytes, used to compute the effective size of the
20143            /// nodes without double counting.
20144            #[prost(uint64, optional, tag="4")]
20145            pub size_bytes: ::core::option::Option<u64>,
20146            #[prost(message, repeated, tag="5")]
20147            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
20148        }
20149        /// Nested message and enum types in `MemoryNode`.
20150        pub mod memory_node {
20151            /// Entries in the memory node that contain statistics and additional
20152            /// debuggable information about the memory. The size of the node is
20153            /// tracked separately in the |size_bytes| field.
20154            #[derive(Clone, PartialEq, ::prost::Message)]
20155            pub struct MemoryNodeEntry {
20156                #[prost(string, optional, tag="1")]
20157                pub name: ::core::option::Option<::prost::alloc::string::String>,
20158                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
20159                pub units: ::core::option::Option<i32>,
20160                /// Contains either one of uint64 or string value.
20161                #[prost(uint64, optional, tag="3")]
20162                pub value_uint64: ::core::option::Option<u64>,
20163                #[prost(string, optional, tag="4")]
20164                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
20165            }
20166            /// Nested message and enum types in `MemoryNodeEntry`.
20167            pub mod memory_node_entry {
20168                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20169                #[repr(i32)]
20170                pub enum Units {
20171                    Unspecified = 0,
20172                    Bytes = 1,
20173                    Count = 2,
20174                }
20175                impl Units {
20176                    /// String value of the enum field names used in the ProtoBuf definition.
20177                    ///
20178                    /// The values are not transformed in any way and thus are considered stable
20179                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20180                    pub fn as_str_name(&self) -> &'static str {
20181                        match self {
20182                            Units::Unspecified => "UNSPECIFIED",
20183                            Units::Bytes => "BYTES",
20184                            Units::Count => "COUNT",
20185                        }
20186                    }
20187                }
20188            }
20189        }
20190        /// A directed edge that connects any 2 nodes in the graph above. These are
20191        /// in addition to the inherent edges added due to the tree structure of the
20192        /// node's absolute names.
20193        /// Node with id |source_id| owns the node with id |target_id|, and has the
20194        /// effect of attributing the memory usage of target to source. |importance|
20195        /// is optional and relevant only for the cases of co-ownership, where it
20196        /// acts as a z-index: the owner with the highest importance will be
20197        /// attributed target's memory.
20198        #[derive(Clone, PartialEq, ::prost::Message)]
20199        pub struct MemoryEdge {
20200            #[prost(uint64, optional, tag="1")]
20201            pub source_id: ::core::option::Option<u64>,
20202            #[prost(uint64, optional, tag="2")]
20203            pub target_id: ::core::option::Option<u64>,
20204            #[prost(uint32, optional, tag="3")]
20205            pub importance: ::core::option::Option<u32>,
20206            #[prost(bool, optional, tag="4")]
20207            pub overridable: ::core::option::Option<bool>,
20208        }
20209    }
20210    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20211    #[repr(i32)]
20212    pub enum LevelOfDetail {
20213        DetailFull = 0,
20214        DetailLight = 1,
20215        DetailBackground = 2,
20216    }
20217    impl LevelOfDetail {
20218        /// String value of the enum field names used in the ProtoBuf definition.
20219        ///
20220        /// The values are not transformed in any way and thus are considered stable
20221        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20222        pub fn as_str_name(&self) -> &'static str {
20223            match self {
20224                LevelOfDetail::DetailFull => "DETAIL_FULL",
20225                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
20226                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
20227            }
20228        }
20229    }
20230}
20231// End of protos/perfetto/trace/memory_graph.proto
20232
20233// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
20234
20235/// Used to trace the execution of perfetto itself.
20236#[derive(Clone, PartialEq, ::prost::Message)]
20237pub struct PerfettoMetatrace {
20238    /// Only when using |event_id|.
20239    #[prost(uint64, optional, tag="3")]
20240    pub event_duration_ns: ::core::option::Option<u64>,
20241    /// Only when using |counter_id|.
20242    #[prost(int32, optional, tag="4")]
20243    pub counter_value: ::core::option::Option<i32>,
20244    /// ID of the thread that emitted the event.
20245    #[prost(uint32, optional, tag="5")]
20246    pub thread_id: ::core::option::Option<u32>,
20247    /// If true the meta-tracing ring buffer had overruns and hence some data is
20248    /// missing from this point.
20249    #[prost(bool, optional, tag="6")]
20250    pub has_overruns: ::core::option::Option<bool>,
20251    /// Args for the event.
20252    #[prost(message, repeated, tag="7")]
20253    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
20254    #[prost(message, repeated, tag="10")]
20255    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
20256    /// See base/metatrace_events.h for definitions.
20257    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
20258    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
20259}
20260/// Nested message and enum types in `PerfettoMetatrace`.
20261pub mod perfetto_metatrace {
20262    #[derive(Clone, PartialEq, ::prost::Message)]
20263    pub struct Arg {
20264        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
20265        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
20266        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
20267        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
20268    }
20269    /// Nested message and enum types in `Arg`.
20270    pub mod arg {
20271        #[derive(Clone, PartialEq, ::prost::Oneof)]
20272        pub enum KeyOrInternedKey {
20273            #[prost(string, tag="1")]
20274            Key(::prost::alloc::string::String),
20275            #[prost(uint64, tag="3")]
20276            KeyIid(u64),
20277        }
20278        #[derive(Clone, PartialEq, ::prost::Oneof)]
20279        pub enum ValueOrInternedValue {
20280            #[prost(string, tag="2")]
20281            Value(::prost::alloc::string::String),
20282            #[prost(uint64, tag="4")]
20283            ValueIid(u64),
20284        }
20285    }
20286    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
20287    /// |value_iid| above.
20288    #[derive(Clone, PartialEq, ::prost::Message)]
20289    pub struct InternedString {
20290        #[prost(uint64, optional, tag="1")]
20291        pub iid: ::core::option::Option<u64>,
20292        #[prost(string, optional, tag="2")]
20293        pub value: ::core::option::Option<::prost::alloc::string::String>,
20294    }
20295    /// See base/metatrace_events.h for definitions.
20296    #[derive(Clone, PartialEq, ::prost::Oneof)]
20297    pub enum RecordType {
20298        #[prost(uint32, tag="1")]
20299        EventId(u32),
20300        #[prost(uint32, tag="2")]
20301        CounterId(u32),
20302        /// For trace processor metatracing.
20303        #[prost(string, tag="8")]
20304        EventName(::prost::alloc::string::String),
20305        #[prost(uint64, tag="11")]
20306        EventNameIid(u64),
20307        #[prost(string, tag="9")]
20308        CounterName(::prost::alloc::string::String),
20309    }
20310}
20311// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
20312
20313// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
20314
20315/// Events emitted by the tracing service.
20316/// Next id: 12.
20317#[derive(Clone, PartialEq, ::prost::Message)]
20318pub struct TracingServiceEvent {
20319    /// When each of the following booleans are set to true, they report the
20320    /// point in time (through TracePacket's timestamp) where the condition
20321    /// they describe happened.
20322    /// The order of the booleans below matches the timestamp ordering
20323    /// they would generally be expected to have.
20324    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
20325    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
20326}
20327/// Nested message and enum types in `TracingServiceEvent`.
20328pub mod tracing_service_event {
20329    #[derive(Clone, PartialEq, ::prost::Message)]
20330    pub struct DataSources {
20331        #[prost(message, repeated, tag="1")]
20332        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
20333    }
20334    /// Nested message and enum types in `DataSources`.
20335    pub mod data_sources {
20336        #[derive(Clone, PartialEq, ::prost::Message)]
20337        pub struct DataSource {
20338            #[prost(string, optional, tag="1")]
20339            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
20340            #[prost(string, optional, tag="2")]
20341            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
20342        }
20343    }
20344    /// When each of the following booleans are set to true, they report the
20345    /// point in time (through TracePacket's timestamp) where the condition
20346    /// they describe happened.
20347    /// The order of the booleans below matches the timestamp ordering
20348    /// they would generally be expected to have.
20349    #[derive(Clone, PartialEq, ::prost::Oneof)]
20350    pub enum EventType {
20351        /// Emitted when we start tracing and specifically, this will be before any
20352        /// producer is notified about the existence of this trace. This is always
20353        /// emitted before the all_data_sources_started event. This event is also
20354        /// guaranteed to be seen (byte-offset wise) before any data packets from
20355        /// producers.
20356        #[prost(bool, tag="2")]
20357        TracingStarted(bool),
20358        /// Emitted after all data sources saw the start event and ACKed it.
20359        /// This identifies the point in time when it's safe to assume that all data
20360        /// sources have been recording events.
20361        #[prost(bool, tag="1")]
20362        AllDataSourcesStarted(bool),
20363        /// Emitted when a flush is started.
20364        #[prost(bool, tag="9")]
20365        FlushStarted(bool),
20366        /// Emitted when all data sources have been flushed successfully or with an
20367        /// error (including timeouts). This can generally happen many times over the
20368        /// course of the trace.
20369        #[prost(bool, tag="3")]
20370        AllDataSourcesFlushed(bool),
20371        /// Emitted when reading back the central tracing buffers has been completed.
20372        /// If |write_into_file| is specified, this can happen many times over the
20373        /// course of the trace.
20374        #[prost(bool, tag="4")]
20375        ReadTracingBuffersCompleted(bool),
20376        /// Emitted after tracing has been disabled and specifically, this will be
20377        /// after all packets from producers have been included in the central
20378        /// tracing buffer.
20379        #[prost(bool, tag="5")]
20380        TracingDisabled(bool),
20381        /// Emitted if perfetto --save-for-bugreport was invoked while the current
20382        /// tracing session was running and it had the highest bugreport_score. In
20383        /// this case the original consumer will see a nearly empty trace, because
20384        /// the contents are routed onto the bugreport file. This event flags the
20385        /// situation explicitly. Traces that contain this marker should be discarded
20386        /// by test infrastructures / pipelines.
20387        /// Deprecated since Android U, where --save-for-bugreport uses
20388        /// non-destructive cloning.
20389        #[prost(bool, tag="6")]
20390        SeizedForBugreport(bool),
20391        /// Emitted when not all data sources in all producers reply to a start
20392        /// request after some time.
20393        #[prost(message, tag="7")]
20394        SlowStartingDataSources(DataSources),
20395        /// Emitted when the last flush request has failed. Lists data sources that
20396        /// did not reply on time.
20397        #[prost(message, tag="8")]
20398        LastFlushSlowDataSources(DataSources),
20399        /// If this was a cloned tracing session, emitted when the tracing serice
20400        /// started the clone operation.
20401        #[prost(bool, tag="10")]
20402        CloneStarted(bool),
20403        /// If this was a cloned tracing session, emitted when the tracing service
20404        /// finished the clone operation (for a specific buffer).
20405        #[prost(uint32, tag="11")]
20406        BufferCloned(u32),
20407    }
20408}
20409// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
20410
20411// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
20412
20413/// Energy consumer based on aidl class:
20414/// android.hardware.power.stats.EnergyConsumer.
20415#[derive(Clone, PartialEq, ::prost::Message)]
20416pub struct AndroidEnergyConsumer {
20417    /// Unique ID of this energy consumer.  Matches the ID in a
20418    /// AndroidEnergyEstimationBreakdown.
20419    #[prost(int32, optional, tag="1")]
20420    pub energy_consumer_id: ::core::option::Option<i32>,
20421    /// For a group of energy consumers of the same logical type, sorting by
20422    /// ordinal gives their physical order. Ordinals must be consecutive integers
20423    /// starting from 0.
20424    #[prost(int32, optional, tag="2")]
20425    pub ordinal: ::core::option::Option<i32>,
20426    /// Type of this energy consumer.
20427    #[prost(string, optional, tag="3")]
20428    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
20429    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
20430    /// framework.
20431    #[prost(string, optional, tag="4")]
20432    pub name: ::core::option::Option<::prost::alloc::string::String>,
20433}
20434#[derive(Clone, PartialEq, ::prost::Message)]
20435pub struct AndroidEnergyConsumerDescriptor {
20436    #[prost(message, repeated, tag="1")]
20437    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
20438}
20439// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
20440
20441// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
20442
20443/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
20444/// This proto represents the aidl class:
20445/// android.hardware.power.stats.EnergyConsumerResult.
20446#[derive(Clone, PartialEq, ::prost::Message)]
20447pub struct AndroidEnergyEstimationBreakdown {
20448    /// The first trace packet of each session should include a energy consumer
20449    /// descriptor.
20450    #[prost(message, optional, tag="1")]
20451    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
20452    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
20453    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
20454    /// should be sent at the beginning of a trace.
20455    #[prost(int32, optional, tag="2")]
20456    pub energy_consumer_id: ::core::option::Option<i32>,
20457    /// Total accumulated energy since boot in microwatt-seconds (uWs)
20458    #[prost(int64, optional, tag="3")]
20459    pub energy_uws: ::core::option::Option<i64>,
20460    /// Optional attributed energy per Android ID / Linux UID for this
20461    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
20462    /// to total accumulated energy.
20463    #[prost(message, repeated, tag="4")]
20464    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
20465}
20466/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
20467pub mod android_energy_estimation_breakdown {
20468    #[derive(Clone, PartialEq, ::prost::Message)]
20469    pub struct EnergyUidBreakdown {
20470        /// Android ID/Linux UID, the accumulated energy is attributed to.
20471        #[prost(int32, optional, tag="1")]
20472        pub uid: ::core::option::Option<i32>,
20473        /// Accumulated energy since boot in microwatt-seconds (uWs).
20474        #[prost(int64, optional, tag="2")]
20475        pub energy_uws: ::core::option::Option<i64>,
20476    }
20477}
20478// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
20479
20480// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
20481
20482#[derive(Clone, PartialEq, ::prost::Message)]
20483pub struct EntityStateResidency {
20484    /// This is only emitted at the beginning of the trace.
20485    #[prost(message, repeated, tag="1")]
20486    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
20487    #[prost(message, repeated, tag="2")]
20488    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
20489}
20490/// Nested message and enum types in `EntityStateResidency`.
20491pub mod entity_state_residency {
20492    #[derive(Clone, PartialEq, ::prost::Message)]
20493    pub struct PowerEntityState {
20494        /// Index corresponding to the entity
20495        #[prost(int32, optional, tag="1")]
20496        pub entity_index: ::core::option::Option<i32>,
20497        /// Index corresponding to the state
20498        #[prost(int32, optional, tag="2")]
20499        pub state_index: ::core::option::Option<i32>,
20500        /// Name of the entity. This is device-specific, determined by the PowerStats
20501        /// HAL, and cannot be configured by the user. An example would be
20502        /// "Bluetooth".
20503        #[prost(string, optional, tag="3")]
20504        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
20505        /// Name of the state. This is device-specific, determined by the PowerStats
20506        /// HAL, and cannot be configured by the user. An example would be
20507        /// "Active".
20508        #[prost(string, optional, tag="4")]
20509        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
20510    }
20511    #[derive(Clone, PartialEq, ::prost::Message)]
20512    pub struct StateResidency {
20513        /// Index corresponding to PowerEntityState.entity_index
20514        #[prost(int32, optional, tag="1")]
20515        pub entity_index: ::core::option::Option<i32>,
20516        /// Index corresponding to PowerEntityState.state_index
20517        #[prost(int32, optional, tag="2")]
20518        pub state_index: ::core::option::Option<i32>,
20519        /// Time since boot that this entity has been in this state
20520        #[prost(uint64, optional, tag="3")]
20521        pub total_time_in_state_ms: ::core::option::Option<u64>,
20522        /// Total number of times since boot that the entity has entered this state
20523        #[prost(uint64, optional, tag="4")]
20524        pub total_state_entry_count: ::core::option::Option<u64>,
20525        /// Timestamp of the last time the entity entered this state
20526        #[prost(uint64, optional, tag="5")]
20527        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
20528    }
20529}
20530// End of protos/perfetto/trace/power/android_entity_state_residency.proto
20531
20532// Begin of protos/perfetto/trace/power/battery_counters.proto
20533
20534#[derive(Clone, PartialEq, ::prost::Message)]
20535pub struct BatteryCounters {
20536    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
20537    #[prost(int64, optional, tag="1")]
20538    pub charge_counter_uah: ::core::option::Option<i64>,
20539    /// Remaining battery capacity percentage of total capacity
20540    #[prost(float, optional, tag="2")]
20541    pub capacity_percent: ::core::option::Option<f32>,
20542    /// Instantaneous battery current in microamperes(µA).
20543    /// Negative values indicate current being drained from the battery and
20544    /// positive values indicate current feeding the battery from a charge source
20545    /// (USB).
20546    ///
20547    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
20548    #[prost(int64, optional, tag="3")]
20549    pub current_ua: ::core::option::Option<i64>,
20550    /// Instantaneous battery current in microamperes(µA).
20551    #[prost(int64, optional, tag="4")]
20552    pub current_avg_ua: ::core::option::Option<i64>,
20553    /// Battery name, emitted only on multiple batteries.
20554    #[prost(string, optional, tag="5")]
20555    pub name: ::core::option::Option<::prost::alloc::string::String>,
20556    /// Battery capacity in microwatt-hours(µWh).
20557    #[prost(int64, optional, tag="6")]
20558    pub energy_counter_uwh: ::core::option::Option<i64>,
20559    /// Battery voltage in microvolts(µV).
20560    #[prost(int64, optional, tag="7")]
20561    pub voltage_uv: ::core::option::Option<i64>,
20562}
20563// End of protos/perfetto/trace/power/battery_counters.proto
20564
20565// Begin of protos/perfetto/trace/power/power_rails.proto
20566
20567#[derive(Clone, PartialEq, ::prost::Message)]
20568pub struct PowerRails {
20569    /// This is only emitted at the beginning of the trace.
20570    #[prost(message, repeated, tag="1")]
20571    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
20572    #[prost(message, repeated, tag="2")]
20573    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
20574    /// A unique session id that can be used to match energy data to sets of
20575    /// descriptors. The indices used by rail descriptors and energy data packets
20576    /// are meant to be unique to a given session uuid. When multiple data sources
20577    /// are running in parallel, each data source should use a unique id.
20578    #[prost(uint64, optional, tag="3")]
20579    pub session_uuid: ::core::option::Option<u64>,
20580}
20581/// Nested message and enum types in `PowerRails`.
20582pub mod power_rails {
20583    #[derive(Clone, PartialEq, ::prost::Message)]
20584    pub struct RailDescriptor {
20585        /// Index corresponding to the rail
20586        #[prost(uint32, optional, tag="1")]
20587        pub index: ::core::option::Option<u32>,
20588        /// Name of the rail
20589        #[prost(string, optional, tag="2")]
20590        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
20591        /// Name of the subsystem to which this rail belongs
20592        #[prost(string, optional, tag="3")]
20593        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
20594        /// Hardware sampling rate (Hz).
20595        #[prost(uint32, optional, tag="4")]
20596        pub sampling_rate: ::core::option::Option<u32>,
20597    }
20598    #[derive(Clone, PartialEq, ::prost::Message)]
20599    pub struct EnergyData {
20600        /// Index corresponding to RailDescriptor.index
20601        #[prost(uint32, optional, tag="1")]
20602        pub index: ::core::option::Option<u32>,
20603        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
20604        #[prost(uint64, optional, tag="2")]
20605        pub timestamp_ms: ::core::option::Option<u64>,
20606        /// Accumulated energy since device boot in microwatt-seconds (uWs).
20607        #[prost(uint64, optional, tag="3")]
20608        pub energy: ::core::option::Option<u64>,
20609    }
20610}
20611// End of protos/perfetto/trace/power/power_rails.proto
20612
20613// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
20614
20615#[derive(Clone, PartialEq, ::prost::Message)]
20616pub struct ObfuscatedMember {
20617    /// This is the obfuscated field name relative to the class containing the
20618    /// ObfuscatedMember.
20619    #[prost(string, optional, tag="1")]
20620    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20621    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
20622    /// field name including its class. Otherwise, this is this the unqualified
20623    /// deobfuscated field name relative to the class containing this
20624    /// ObfuscatedMember.
20625    #[prost(string, optional, tag="2")]
20626    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20627}
20628#[derive(Clone, PartialEq, ::prost::Message)]
20629pub struct ObfuscatedClass {
20630    #[prost(string, optional, tag="1")]
20631    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20632    #[prost(string, optional, tag="2")]
20633    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20634    /// fields.
20635    #[prost(message, repeated, tag="3")]
20636    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
20637    #[prost(message, repeated, tag="4")]
20638    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
20639}
20640#[derive(Clone, PartialEq, ::prost::Message)]
20641pub struct DeobfuscationMapping {
20642    #[prost(string, optional, tag="1")]
20643    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
20644    #[prost(int64, optional, tag="2")]
20645    pub version_code: ::core::option::Option<i64>,
20646    #[prost(message, repeated, tag="3")]
20647    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
20648}
20649// Begin of protos/perfetto/trace/profiling/heap_graph.proto
20650
20651#[derive(Clone, PartialEq, ::prost::Message)]
20652pub struct HeapGraphRoot {
20653    /// Objects retained by this root.
20654    #[prost(uint64, repeated, tag="1")]
20655    pub object_ids: ::prost::alloc::vec::Vec<u64>,
20656    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
20657    pub root_type: ::core::option::Option<i32>,
20658}
20659/// Nested message and enum types in `HeapGraphRoot`.
20660pub mod heap_graph_root {
20661    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20662    #[repr(i32)]
20663    pub enum Type {
20664        RootUnknown = 0,
20665        RootJniGlobal = 1,
20666        RootJniLocal = 2,
20667        RootJavaFrame = 3,
20668        RootNativeStack = 4,
20669        RootStickyClass = 5,
20670        RootThreadBlock = 6,
20671        RootMonitorUsed = 7,
20672        RootThreadObject = 8,
20673        RootInternedString = 9,
20674        RootFinalizing = 10,
20675        RootDebugger = 11,
20676        RootReferenceCleanup = 12,
20677        RootVmInternal = 13,
20678        RootJniMonitor = 14,
20679    }
20680    impl Type {
20681        /// String value of the enum field names used in the ProtoBuf definition.
20682        ///
20683        /// The values are not transformed in any way and thus are considered stable
20684        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20685        pub fn as_str_name(&self) -> &'static str {
20686            match self {
20687                Type::RootUnknown => "ROOT_UNKNOWN",
20688                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
20689                Type::RootJniLocal => "ROOT_JNI_LOCAL",
20690                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
20691                Type::RootNativeStack => "ROOT_NATIVE_STACK",
20692                Type::RootStickyClass => "ROOT_STICKY_CLASS",
20693                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
20694                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
20695                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
20696                Type::RootInternedString => "ROOT_INTERNED_STRING",
20697                Type::RootFinalizing => "ROOT_FINALIZING",
20698                Type::RootDebugger => "ROOT_DEBUGGER",
20699                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
20700                Type::RootVmInternal => "ROOT_VM_INTERNAL",
20701                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
20702            }
20703        }
20704    }
20705}
20706#[derive(Clone, PartialEq, ::prost::Message)]
20707pub struct HeapGraphType {
20708    /// TODO(fmayer): Consider removing this and using the index in the repeaed
20709    /// field to save space.
20710    #[prost(uint64, optional, tag="1")]
20711    pub id: ::core::option::Option<u64>,
20712    #[prost(uint64, optional, tag="2")]
20713    pub location_id: ::core::option::Option<u64>,
20714    #[prost(string, optional, tag="3")]
20715    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
20716    /// Size of objects of this type.
20717    #[prost(uint64, optional, tag="4")]
20718    pub object_size: ::core::option::Option<u64>,
20719    #[prost(uint64, optional, tag="5")]
20720    pub superclass_id: ::core::option::Option<u64>,
20721    /// Indices for InternedData.field_names for the names of the fields of
20722    /// instances of this class. This does NOT include the fields from
20723    /// superclasses. The consumer of this data needs to walk all super
20724    /// classes to get a full lists of fields. Objects always write the
20725    /// fields in order of most specific class to the furthest up superclass.
20726    #[prost(uint64, repeated, tag="6")]
20727    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
20728    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
20729    pub kind: ::core::option::Option<i32>,
20730    #[prost(uint64, optional, tag="8")]
20731    pub classloader_id: ::core::option::Option<u64>,
20732}
20733/// Nested message and enum types in `HeapGraphType`.
20734pub mod heap_graph_type {
20735    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20736    #[repr(i32)]
20737    pub enum Kind {
20738        Unknown = 0,
20739        Normal = 1,
20740        Noreferences = 2,
20741        String = 3,
20742        Array = 4,
20743        Class = 5,
20744        Classloader = 6,
20745        Dexcache = 7,
20746        SoftReference = 8,
20747        WeakReference = 9,
20748        FinalizerReference = 10,
20749        PhantomReference = 11,
20750    }
20751    impl Kind {
20752        /// String value of the enum field names used in the ProtoBuf definition.
20753        ///
20754        /// The values are not transformed in any way and thus are considered stable
20755        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20756        pub fn as_str_name(&self) -> &'static str {
20757            match self {
20758                Kind::Unknown => "KIND_UNKNOWN",
20759                Kind::Normal => "KIND_NORMAL",
20760                Kind::Noreferences => "KIND_NOREFERENCES",
20761                Kind::String => "KIND_STRING",
20762                Kind::Array => "KIND_ARRAY",
20763                Kind::Class => "KIND_CLASS",
20764                Kind::Classloader => "KIND_CLASSLOADER",
20765                Kind::Dexcache => "KIND_DEXCACHE",
20766                Kind::SoftReference => "KIND_SOFT_REFERENCE",
20767                Kind::WeakReference => "KIND_WEAK_REFERENCE",
20768                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
20769                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
20770            }
20771        }
20772    }
20773}
20774#[derive(Clone, PartialEq, ::prost::Message)]
20775pub struct HeapGraphObject {
20776    /// Index for InternedData.types for the name of the type of this object.
20777    #[prost(uint64, optional, tag="2")]
20778    pub type_id: ::core::option::Option<u64>,
20779    /// Bytes occupied by this objects.
20780    #[prost(uint64, optional, tag="3")]
20781    pub self_size: ::core::option::Option<u64>,
20782    /// Add this to all non-zero values in reference_object_id. This is used to
20783    /// get more compact varint encoding.
20784    ///
20785    /// The name is confusing, but this has always been used as a base for
20786    /// reference_object_id. The field should be named reference_object_id_base.
20787    #[prost(uint64, optional, tag="6")]
20788    pub reference_field_id_base: ::core::option::Option<u64>,
20789    /// Indices for InternedData.field_names for the name of the field referring
20790    /// to the object. For Android S+ and for instances of normal classes (e.g.
20791    /// not instances of java.lang.Class or arrays), this is instead set in the
20792    /// corresponding HeapGraphType, and this is left empty.
20793    #[prost(uint64, repeated, tag="4")]
20794    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
20795    /// Ids of the Object that is referred to.
20796    #[prost(uint64, repeated, tag="5")]
20797    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
20798    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
20799    /// the value of the `size` field.
20800    ///
20801    /// N.B. This is not the native size of this object.
20802    #[prost(int64, optional, tag="8")]
20803    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
20804    /// To reduce the space required we only emit the heap type if it has changed
20805    /// from the previous object we recorded.
20806    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
20807    pub heap_type_delta: ::core::option::Option<i32>,
20808    /// Ids of the Objects referred by this object, not via fields, but via
20809    /// internal runtime structures.
20810    #[prost(uint64, repeated, tag="10")]
20811    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
20812    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
20813    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
20814}
20815/// Nested message and enum types in `HeapGraphObject`.
20816pub mod heap_graph_object {
20817    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20818    #[repr(i32)]
20819    pub enum HeapType {
20820        Unknown = 0,
20821        App = 1,
20822        Zygote = 2,
20823        BootImage = 3,
20824    }
20825    impl HeapType {
20826        /// String value of the enum field names used in the ProtoBuf definition.
20827        ///
20828        /// The values are not transformed in any way and thus are considered stable
20829        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20830        pub fn as_str_name(&self) -> &'static str {
20831            match self {
20832                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
20833                HeapType::App => "HEAP_TYPE_APP",
20834                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
20835                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
20836            }
20837        }
20838    }
20839    #[derive(Clone, PartialEq, ::prost::Oneof)]
20840    pub enum Identifier {
20841        #[prost(uint64, tag="1")]
20842        Id(u64),
20843        #[prost(uint64, tag="7")]
20844        IdDelta(u64),
20845    }
20846}
20847#[derive(Clone, PartialEq, ::prost::Message)]
20848pub struct HeapGraph {
20849    #[prost(int32, optional, tag="1")]
20850    pub pid: ::core::option::Option<i32>,
20851    /// This contains all objects at the time this dump was taken. Some of these
20852    /// will be live, some of those unreachable (garbage). To find the live
20853    /// objects, the client needs to build the transitive closure of objects
20854    /// reachable from |roots|.
20855    /// All objects not contained within that transitive closure are garbage that
20856    /// has not yet been collected.
20857    #[prost(message, repeated, tag="2")]
20858    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
20859    /// Roots at the time this dump was taken.
20860    /// All live objects are reachable from the roots. All other objects are
20861    /// garbage.
20862    #[prost(message, repeated, tag="7")]
20863    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
20864    /// Types used in HeapGraphObjects.
20865    #[prost(message, repeated, tag="9")]
20866    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
20867    /// Field names for references in managed heap graph.
20868    #[prost(message, repeated, tag="4")]
20869    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
20870    /// Paths of files used in managed heap graph.
20871    #[prost(message, repeated, tag="8")]
20872    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
20873    #[prost(bool, optional, tag="5")]
20874    pub continued: ::core::option::Option<bool>,
20875    #[prost(uint64, optional, tag="6")]
20876    pub index: ::core::option::Option<u64>,
20877}
20878// End of protos/perfetto/trace/profiling/heap_graph.proto
20879
20880// Begin of protos/perfetto/trace/profiling/profile_packet.proto
20881
20882// This file contains a mixture of messages emitted by various sampling
20883// profilers:
20884//
20885// Memory allocator profiling
20886// ----------------
20887// ProfilePacket:
20888//    The packet emitted by heapprofd, which started off as a native heap
20889//    (malloc/free) profiler, but now supports custom allocators as well. Each
20890//    packet contains a preaggregated state of the heap at snapshot time, which
20891//    report the total allocated/free bytes per callstack (plus other info such
20892//    as the number of samples).
20893// StreamingAllocation/StreamingFree:
20894//    Emitted by heapprofd when configured in streaming mode (i.e. when
20895//    stream_allocations = true). This is only for local testing, and doesn't
20896//    report callstacks (only address time and size of each alloc/free). It can
20897//    lead to enormous traces, as it contains the stream of each alloc/free call.
20898//
20899// Callstack sampling
20900// ------------------
20901// StreamingProfilePacket:
20902//    The packet emitted by the chromium in-process sampling profiler, which is
20903//    based on periodically sending a signal to itself, and unwinding the stack
20904//    in the signal handler. Each packet contains a series of individual stack
20905//    samples for a Chromium thread.
20906//
20907// Callstack and performance counter sampling
20908// ---------------------
20909// PerfSample:
20910//    The packet emitted by traced_perf sampling performance profiler based on
20911//    the perf_event_open syscall. Each packet represents an individual sample
20912//    of a performance counter (which might be a timer), and optionally a
20913//    callstack of the process that was scheduled at the time of the sample.
20914//
20915
20916/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
20917/// involve more than one ProfilePacket if the snapshot is big (when |continued|
20918/// is true). The cardinality and grouping is as follows:
20919/// A ProfilePacket contains:
20920///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
20921///     one heap per process (the main malloc/free heap), but there can be more if
20922///     the process is using the heapprofd API to profile custom allocators.
20923///   - Globally interned strings, mappings and frames (to allow de-duplicating
20924///     frames/mapping in common between different processes).
20925/// A ProcessHeapSamples contains:
20926///   - The process and heap identifier.
20927///   - A number of HeapSample, one for each callsite that had some alloc/frees.
20928///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
20929/// A HeapSample contains statistics about callsites:
20930///   - Total number of bytes allocated and freed from that callsite.
20931///   - Total number of alloc/free calls sampled.
20932///   - Stats at the local maximum when dump_at_max = true.
20933/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
20934#[derive(Clone, PartialEq, ::prost::Message)]
20935pub struct ProfilePacket {
20936    /// The following interning tables are only used in Android version Q.
20937    /// In newer versions, these tables are in InternedData
20938    /// (see protos/perfetto/trace/interned_data) and are shared across
20939    /// multiple ProfilePackets.
20940    /// For backwards compatibility, consumers need to first look up interned
20941    /// data in the tables within the ProfilePacket, and then, if they are empty,
20942    /// look up in the InternedData instead.
20943    #[prost(message, repeated, tag="1")]
20944    pub strings: ::prost::alloc::vec::Vec<InternedString>,
20945    #[prost(message, repeated, tag="4")]
20946    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
20947    #[prost(message, repeated, tag="2")]
20948    pub frames: ::prost::alloc::vec::Vec<Frame>,
20949    #[prost(message, repeated, tag="3")]
20950    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
20951    #[prost(message, repeated, tag="5")]
20952    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
20953    /// If this is true, the next ProfilePacket in this package_sequence_id is a
20954    /// continuation of this one.
20955    /// To get all samples for a process, accummulate its
20956    /// ProcessHeapSamples.samples until you see continued=false.
20957    #[prost(bool, optional, tag="6")]
20958    pub continued: ::core::option::Option<bool>,
20959    /// Index of this ProfilePacket on its package_sequence_id. Can be used
20960    /// to detect dropped data.
20961    /// Verify these are consecutive.
20962    #[prost(uint64, optional, tag="7")]
20963    pub index: ::core::option::Option<u64>,
20964}
20965/// Nested message and enum types in `ProfilePacket`.
20966pub mod profile_packet {
20967    /// Next ID: 9
20968    #[derive(Clone, PartialEq, ::prost::Message)]
20969    pub struct HeapSample {
20970        #[prost(uint64, optional, tag="1")]
20971        pub callstack_id: ::core::option::Option<u64>,
20972        /// bytes allocated at this callstack.
20973        #[prost(uint64, optional, tag="2")]
20974        pub self_allocated: ::core::option::Option<u64>,
20975        /// bytes allocated at this callstack that have been freed.
20976        #[prost(uint64, optional, tag="3")]
20977        pub self_freed: ::core::option::Option<u64>,
20978        /// Bytes allocated by this callstack but not freed at the time the malloc
20979        /// heap usage of this process was maximal. This is only set if dump_at_max
20980        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
20981        /// self_idle will not be set.
20982        #[prost(uint64, optional, tag="8")]
20983        pub self_max: ::core::option::Option<u64>,
20984        /// Number of allocations that were sampled at this callstack but not freed
20985        /// at the time the malloc heap usage of this process was maximal. This is
20986        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
20987        /// self_allocated, self_freed and self_idle will not be set.
20988        #[prost(uint64, optional, tag="9")]
20989        pub self_max_count: ::core::option::Option<u64>,
20990        /// timestamp \[opt\]
20991        #[prost(uint64, optional, tag="4")]
20992        pub timestamp: ::core::option::Option<u64>,
20993        /// Number of allocations that were sampled at this callstack.
20994        #[prost(uint64, optional, tag="5")]
20995        pub alloc_count: ::core::option::Option<u64>,
20996        /// Number of allocations that were sampled at this callstack that have been
20997        /// freed.
20998        #[prost(uint64, optional, tag="6")]
20999        pub free_count: ::core::option::Option<u64>,
21000    }
21001    #[derive(Clone, PartialEq, ::prost::Message)]
21002    pub struct Histogram {
21003        #[prost(message, repeated, tag="1")]
21004        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
21005    }
21006    /// Nested message and enum types in `Histogram`.
21007    pub mod histogram {
21008        #[derive(Clone, PartialEq, ::prost::Message)]
21009        pub struct Bucket {
21010            /// This bucket counts values from the previous bucket's (or -infinity if
21011            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
21012            /// (exclusive).
21013            #[prost(uint64, optional, tag="1")]
21014            pub upper_limit: ::core::option::Option<u64>,
21015            /// This is the highest bucket. This is set instead of the upper_limit. Any
21016            /// values larger or equal to the previous bucket's upper_limit are counted
21017            /// in this bucket.
21018            #[prost(bool, optional, tag="2")]
21019            pub max_bucket: ::core::option::Option<bool>,
21020            /// Number of values that fall into this range.
21021            #[prost(uint64, optional, tag="3")]
21022            pub count: ::core::option::Option<u64>,
21023        }
21024    }
21025    #[derive(Clone, PartialEq, ::prost::Message)]
21026    pub struct ProcessStats {
21027        #[prost(uint64, optional, tag="1")]
21028        pub unwinding_errors: ::core::option::Option<u64>,
21029        #[prost(uint64, optional, tag="2")]
21030        pub heap_samples: ::core::option::Option<u64>,
21031        #[prost(uint64, optional, tag="3")]
21032        pub map_reparses: ::core::option::Option<u64>,
21033        #[prost(message, optional, tag="4")]
21034        pub unwinding_time_us: ::core::option::Option<Histogram>,
21035        #[prost(uint64, optional, tag="5")]
21036        pub total_unwinding_time_us: ::core::option::Option<u64>,
21037        #[prost(uint64, optional, tag="6")]
21038        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
21039    }
21040    #[derive(Clone, PartialEq, ::prost::Message)]
21041    pub struct ProcessHeapSamples {
21042        #[prost(uint64, optional, tag="1")]
21043        pub pid: ::core::option::Option<u64>,
21044        /// This process was profiled from startup.
21045        /// If false, this process was already running when profiling started.
21046        #[prost(bool, optional, tag="3")]
21047        pub from_startup: ::core::option::Option<bool>,
21048        /// This process was not profiled because a concurrent session was active.
21049        /// If this is true, samples will be empty.
21050        #[prost(bool, optional, tag="4")]
21051        pub rejected_concurrent: ::core::option::Option<bool>,
21052        /// This process disconnected while it was profiled.
21053        /// If false, the process outlived the profiling session.
21054        #[prost(bool, optional, tag="6")]
21055        pub disconnected: ::core::option::Option<bool>,
21056        /// If disconnected, this disconnect was caused by the client overrunning
21057        /// the buffer.
21058        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
21059        /// on new S builds.
21060        #[prost(bool, optional, tag="7")]
21061        pub buffer_overran: ::core::option::Option<bool>,
21062        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
21063        pub client_error: ::core::option::Option<i32>,
21064        /// If disconnected, this disconnected was caused by the shared memory
21065        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
21066        /// MEMORY CORRUPTION.
21067        #[prost(bool, optional, tag="8")]
21068        pub buffer_corrupted: ::core::option::Option<bool>,
21069        /// If disconnected, this disconnect was caused by heapprofd exceeding
21070        /// guardrails during this profiling session.
21071        #[prost(bool, optional, tag="10")]
21072        pub hit_guardrail: ::core::option::Option<bool>,
21073        #[prost(string, optional, tag="11")]
21074        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
21075        #[prost(uint64, optional, tag="12")]
21076        pub sampling_interval_bytes: ::core::option::Option<u64>,
21077        #[prost(uint64, optional, tag="13")]
21078        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
21079        /// Timestamp of the state of the target process that this dump represents.
21080        /// This can be different to the timestamp of the TracePackets for various
21081        /// reasons:
21082        /// * If disconnected is set above, this is the timestamp of last state
21083        ///    heapprofd had of the process before it disconnected.
21084        /// * Otherwise, if the rate of events produced by the process is high,
21085        ///    heapprofd might be behind.
21086        ///
21087        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
21088        ///                to have a type enum that we can reuse here.
21089        #[prost(uint64, optional, tag="9")]
21090        pub timestamp: ::core::option::Option<u64>,
21091        /// Metadata about heapprofd.
21092        #[prost(message, optional, tag="5")]
21093        pub stats: ::core::option::Option<ProcessStats>,
21094        #[prost(message, repeated, tag="2")]
21095        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
21096    }
21097    /// Nested message and enum types in `ProcessHeapSamples`.
21098    pub mod process_heap_samples {
21099        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21100        #[repr(i32)]
21101        pub enum ClientError {
21102            None = 0,
21103            HitTimeout = 1,
21104            InvalidStackBounds = 2,
21105        }
21106        impl ClientError {
21107            /// String value of the enum field names used in the ProtoBuf definition.
21108            ///
21109            /// The values are not transformed in any way and thus are considered stable
21110            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21111            pub fn as_str_name(&self) -> &'static str {
21112                match self {
21113                    ClientError::None => "CLIENT_ERROR_NONE",
21114                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
21115                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
21116                }
21117            }
21118        }
21119    }
21120}
21121/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21122/// testing. Doesn't report the callsite.
21123#[derive(Clone, PartialEq, ::prost::Message)]
21124pub struct StreamingAllocation {
21125    /// TODO(fmayer): Add callstack.
21126    #[prost(uint64, repeated, packed="false", tag="1")]
21127    pub address: ::prost::alloc::vec::Vec<u64>,
21128    #[prost(uint64, repeated, packed="false", tag="2")]
21129    pub size: ::prost::alloc::vec::Vec<u64>,
21130    #[prost(uint64, repeated, packed="false", tag="3")]
21131    pub sample_size: ::prost::alloc::vec::Vec<u64>,
21132    #[prost(uint64, repeated, packed="false", tag="4")]
21133    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
21134    #[prost(uint32, repeated, packed="false", tag="5")]
21135    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21136    #[prost(uint64, repeated, packed="false", tag="6")]
21137    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21138}
21139/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21140/// testing. Doesn't report the callsite.
21141#[derive(Clone, PartialEq, ::prost::Message)]
21142pub struct StreamingFree {
21143    /// TODO(fmayer): Add callstack.
21144    #[prost(uint64, repeated, packed="false", tag="1")]
21145    pub address: ::prost::alloc::vec::Vec<u64>,
21146    #[prost(uint32, repeated, packed="false", tag="2")]
21147    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21148    #[prost(uint64, repeated, packed="false", tag="3")]
21149    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21150}
21151/// Packet emitted by the chromium in-process signal-based callstack sampler.
21152/// Represents a series of individual stack samples (sampled at discrete points
21153/// in time), rather than aggregated over an interval.
21154#[derive(Clone, PartialEq, ::prost::Message)]
21155pub struct StreamingProfilePacket {
21156    /// Index into InternedData.callstacks
21157    #[prost(uint64, repeated, packed="false", tag="1")]
21158    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
21159    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
21160    /// this with ClockSnapshot-based delta encoding instead.
21161    #[prost(int64, repeated, packed="false", tag="2")]
21162    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
21163    #[prost(int32, optional, tag="3")]
21164    pub process_priority: ::core::option::Option<i32>,
21165}
21166/// Namespace for the contained enums.
21167#[derive(Clone, PartialEq, ::prost::Message)]
21168pub struct Profiling {
21169}
21170/// Nested message and enum types in `Profiling`.
21171pub mod profiling {
21172    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21173    #[repr(i32)]
21174    pub enum CpuMode {
21175        ModeUnknown = 0,
21176        ModeKernel = 1,
21177        ModeUser = 2,
21178        /// The following values aren't expected, but included for completeness:
21179        ModeHypervisor = 3,
21180        ModeGuestKernel = 4,
21181        ModeGuestUser = 5,
21182    }
21183    impl CpuMode {
21184        /// String value of the enum field names used in the ProtoBuf definition.
21185        ///
21186        /// The values are not transformed in any way and thus are considered stable
21187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21188        pub fn as_str_name(&self) -> &'static str {
21189            match self {
21190                CpuMode::ModeUnknown => "MODE_UNKNOWN",
21191                CpuMode::ModeKernel => "MODE_KERNEL",
21192                CpuMode::ModeUser => "MODE_USER",
21193                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
21194                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
21195                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
21196            }
21197        }
21198    }
21199    /// Enumeration of libunwindstack's error codes.
21200    /// NB: the integral representations of the two enums are different.
21201    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21202    #[repr(i32)]
21203    pub enum StackUnwindError {
21204        UnwindErrorUnknown = 0,
21205        UnwindErrorNone = 1,
21206        UnwindErrorMemoryInvalid = 2,
21207        UnwindErrorUnwindInfo = 3,
21208        UnwindErrorUnsupported = 4,
21209        UnwindErrorInvalidMap = 5,
21210        UnwindErrorMaxFramesExceeded = 6,
21211        UnwindErrorRepeatedFrame = 7,
21212        UnwindErrorInvalidElf = 8,
21213        UnwindErrorSystemCall = 9,
21214        UnwindErrorThreadTimeout = 10,
21215        UnwindErrorThreadDoesNotExist = 11,
21216        UnwindErrorBadArch = 12,
21217        UnwindErrorMapsParse = 13,
21218        UnwindErrorInvalidParameter = 14,
21219        UnwindErrorPtraceCall = 15,
21220    }
21221    impl StackUnwindError {
21222        /// String value of the enum field names used in the ProtoBuf definition.
21223        ///
21224        /// The values are not transformed in any way and thus are considered stable
21225        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21226        pub fn as_str_name(&self) -> &'static str {
21227            match self {
21228                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
21229                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
21230                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
21231                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
21232                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
21233                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
21234                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
21235                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
21236                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
21237                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
21238                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
21239                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
21240                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
21241                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
21242                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
21243                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
21244            }
21245        }
21246    }
21247}
21248/// Packet emitted by the traced_perf sampling performance profiler, which
21249/// gathers data via the perf_event_open syscall. Each packet contains an
21250/// individual sample with a counter value, and optionally a
21251/// callstack.
21252///
21253/// Timestamps are within the root packet. The config can specify the clock, or
21254/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
21255/// timeframe, the default was CLOCK_BOOTTIME.
21256///
21257/// There are several distinct views of this message:
21258/// * indication of kernel buffer data loss (kernel_records_lost set)
21259/// * indication of skipped samples (sample_skipped_reason set)
21260/// * notable event in the sampling implementation (producer_event set)
21261/// * normal sample (timebase_count set, typically also callstack_iid)
21262#[derive(Clone, PartialEq, ::prost::Message)]
21263pub struct PerfSample {
21264    #[prost(uint32, optional, tag="1")]
21265    pub cpu: ::core::option::Option<u32>,
21266    #[prost(uint32, optional, tag="2")]
21267    pub pid: ::core::option::Option<u32>,
21268    #[prost(uint32, optional, tag="3")]
21269    pub tid: ::core::option::Option<u32>,
21270    /// Execution state that the process was sampled at.
21271    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
21272    pub cpu_mode: ::core::option::Option<i32>,
21273    /// Value of the timebase counter (since the event was configured, no deltas).
21274    #[prost(uint64, optional, tag="6")]
21275    pub timebase_count: ::core::option::Option<u64>,
21276    /// Value of the followers counter (since the event was configured, no deltas).
21277    #[prost(uint64, repeated, packed="false", tag="7")]
21278    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
21279    /// Unwound callstack. Might be partial, in which case a synthetic "error"
21280    /// frame is appended, and |unwind_error| is set accordingly.
21281    #[prost(uint64, optional, tag="4")]
21282    pub callstack_iid: ::core::option::Option<u64>,
21283    /// If set, indicates that this message is not a sample, but rather an
21284    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
21285    /// loss occurs when the kernel has insufficient ring buffer capacity to write
21286    /// a record (which gets discarded). A record in this context is an individual
21287    /// ring buffer entry, and counts more than just sample records.
21288    ///
21289    /// The |timestamp| of the packet corresponds to the time that the producer
21290    /// wrote the packet for trace-sorting purposes alone, and should not be
21291    /// interpreted relative to the sample timestamps. This field is sufficient to
21292    /// detect that *some* kernel data loss happened within the trace, but not the
21293    /// specific time bounds of that loss (which would require tracking precedessor
21294    /// & successor timestamps, which is not deemed necessary at the moment).
21295    #[prost(uint64, optional, tag="17")]
21296    pub kernel_records_lost: ::core::option::Option<u64>,
21297    #[prost(message, optional, tag="19")]
21298    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
21299    /// If set, stack unwinding was incomplete due to an error.
21300    /// Unset values should be treated as UNWIND_ERROR_NONE.
21301    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
21302    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
21303    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
21304    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
21305}
21306/// Nested message and enum types in `PerfSample`.
21307pub mod perf_sample {
21308    /// A notable event within the sampling implementation.
21309    #[derive(Clone, PartialEq, ::prost::Message)]
21310    pub struct ProducerEvent {
21311        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
21312        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
21313    }
21314    /// Nested message and enum types in `ProducerEvent`.
21315    pub mod producer_event {
21316        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21317        #[repr(i32)]
21318        pub enum DataSourceStopReason {
21319            ProfilerStopUnknown = 0,
21320            ProfilerStopGuardrail = 1,
21321        }
21322        impl DataSourceStopReason {
21323            /// String value of the enum field names used in the ProtoBuf definition.
21324            ///
21325            /// The values are not transformed in any way and thus are considered stable
21326            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21327            pub fn as_str_name(&self) -> &'static str {
21328                match self {
21329                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
21330                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
21331                }
21332            }
21333        }
21334        #[derive(Clone, PartialEq, ::prost::Oneof)]
21335        pub enum OptionalSourceStopReason {
21336            #[prost(enumeration="DataSourceStopReason", tag="1")]
21337            SourceStopReason(i32),
21338        }
21339    }
21340    /// If set, indicates that the profiler encountered a sample that was relevant,
21341    /// but was skipped.
21342    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21343    #[repr(i32)]
21344    pub enum SampleSkipReason {
21345        ProfilerSkipUnknown = 0,
21346        ProfilerSkipReadStage = 1,
21347        ProfilerSkipUnwindStage = 2,
21348        ProfilerSkipUnwindEnqueue = 3,
21349        ProfilerSkipNotInScope = 4,
21350    }
21351    impl SampleSkipReason {
21352        /// String value of the enum field names used in the ProtoBuf definition.
21353        ///
21354        /// The values are not transformed in any way and thus are considered stable
21355        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21356        pub fn as_str_name(&self) -> &'static str {
21357            match self {
21358                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
21359                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
21360                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
21361                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
21362                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
21363            }
21364        }
21365    }
21366    /// If set, stack unwinding was incomplete due to an error.
21367    /// Unset values should be treated as UNWIND_ERROR_NONE.
21368    #[derive(Clone, PartialEq, ::prost::Oneof)]
21369    pub enum OptionalUnwindError {
21370        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
21371        UnwindError(i32),
21372    }
21373    #[derive(Clone, PartialEq, ::prost::Oneof)]
21374    pub enum OptionalSampleSkippedReason {
21375        #[prost(enumeration="SampleSkipReason", tag="18")]
21376        SampleSkippedReason(i32),
21377    }
21378}
21379/// Submessage for TracePacketDefaults.
21380#[derive(Clone, PartialEq, ::prost::Message)]
21381pub struct PerfSampleDefaults {
21382    /// The sampling timebase. Might not be identical to the data source config if
21383    /// the implementation decided to default/override some parameters.
21384    #[prost(message, optional, tag="1")]
21385    pub timebase: ::core::option::Option<perf_events::Timebase>,
21386    /// Description of followers event
21387    #[prost(message, repeated, tag="4")]
21388    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
21389    /// If the config requested process sharding, report back the count and which
21390    /// of those bins was selected. Never changes for the duration of a trace.
21391    #[prost(uint32, optional, tag="2")]
21392    pub process_shard_count: ::core::option::Option<u32>,
21393    #[prost(uint32, optional, tag="3")]
21394    pub chosen_process_shard: ::core::option::Option<u32>,
21395}
21396// End of protos/perfetto/trace/profiling/profile_packet.proto
21397
21398// Begin of protos/perfetto/trace/profiling/smaps.proto
21399
21400#[derive(Clone, PartialEq, ::prost::Message)]
21401pub struct SmapsEntry {
21402    #[prost(string, optional, tag="1")]
21403    pub path: ::core::option::Option<::prost::alloc::string::String>,
21404    #[prost(uint64, optional, tag="2")]
21405    pub size_kb: ::core::option::Option<u64>,
21406    #[prost(uint64, optional, tag="3")]
21407    pub private_dirty_kb: ::core::option::Option<u64>,
21408    #[prost(uint64, optional, tag="4")]
21409    pub swap_kb: ::core::option::Option<u64>,
21410    /// for field upload (instead of path).
21411    #[prost(string, optional, tag="5")]
21412    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
21413    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
21414    #[prost(uint64, optional, tag="6")]
21415    pub start_address: ::core::option::Option<u64>,
21416    #[prost(uint64, optional, tag="7")]
21417    pub module_timestamp: ::core::option::Option<u64>,
21418    #[prost(string, optional, tag="8")]
21419    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
21420    #[prost(string, optional, tag="9")]
21421    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
21422    #[prost(uint32, optional, tag="10")]
21423    pub protection_flags: ::core::option::Option<u32>,
21424    #[prost(uint64, optional, tag="11")]
21425    pub private_clean_resident_kb: ::core::option::Option<u64>,
21426    #[prost(uint64, optional, tag="12")]
21427    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
21428    #[prost(uint64, optional, tag="13")]
21429    pub shared_clean_resident_kb: ::core::option::Option<u64>,
21430    #[prost(uint64, optional, tag="14")]
21431    pub locked_kb: ::core::option::Option<u64>,
21432    #[prost(uint64, optional, tag="15")]
21433    pub proportional_resident_kb: ::core::option::Option<u64>,
21434}
21435#[derive(Clone, PartialEq, ::prost::Message)]
21436pub struct SmapsPacket {
21437    #[prost(uint32, optional, tag="1")]
21438    pub pid: ::core::option::Option<u32>,
21439    #[prost(message, repeated, tag="2")]
21440    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
21441}
21442// End of protos/perfetto/trace/profiling/smaps.proto
21443
21444// Begin of protos/perfetto/trace/ps/process_stats.proto
21445
21446/// Per-process periodically sampled stats. These samples are wrapped in a
21447/// dedicated message (as opposite to be fields in process_tree.proto) because
21448/// they are dumped at a different rate than cmdline and thread list.
21449/// Note: not all of these stats will be present in every ProcessStats message
21450/// and sometimes processes may be missing. This is because counters are
21451/// cached to reduce emission of counters which do not change.
21452#[derive(Clone, PartialEq, ::prost::Message)]
21453pub struct ProcessStats {
21454    #[prost(message, repeated, tag="1")]
21455    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
21456    /// The time at which we finish collecting this batch of samples;
21457    /// the top-level packet timestamp is the time at which
21458    /// we begin collection.
21459    #[prost(uint64, optional, tag="2")]
21460    pub collection_end_timestamp: ::core::option::Option<u64>,
21461}
21462/// Nested message and enum types in `ProcessStats`.
21463pub mod process_stats {
21464    /// Per-thread periodically sampled stats.
21465    /// Note: not all of these stats will be present in every message. See the note
21466    /// for ProcessStats.
21467    #[derive(Clone, PartialEq, ::prost::Message)]
21468    pub struct Thread {
21469        #[prost(int32, optional, tag="1")]
21470        pub tid: ::core::option::Option<i32>,
21471    }
21472    #[derive(Clone, PartialEq, ::prost::Message)]
21473    pub struct FdInfo {
21474        #[prost(uint64, optional, tag="1")]
21475        pub fd: ::core::option::Option<u64>,
21476        #[prost(string, optional, tag="2")]
21477        pub path: ::core::option::Option<::prost::alloc::string::String>,
21478    }
21479    #[derive(Clone, PartialEq, ::prost::Message)]
21480    pub struct Process {
21481        #[prost(int32, optional, tag="1")]
21482        pub pid: ::core::option::Option<i32>,
21483        #[prost(message, repeated, tag="11")]
21484        pub threads: ::prost::alloc::vec::Vec<Thread>,
21485        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
21486        #[prost(uint64, optional, tag="2")]
21487        pub vm_size_kb: ::core::option::Option<u64>,
21488        #[prost(uint64, optional, tag="3")]
21489        pub vm_rss_kb: ::core::option::Option<u64>,
21490        #[prost(uint64, optional, tag="4")]
21491        pub rss_anon_kb: ::core::option::Option<u64>,
21492        #[prost(uint64, optional, tag="5")]
21493        pub rss_file_kb: ::core::option::Option<u64>,
21494        #[prost(uint64, optional, tag="6")]
21495        pub rss_shmem_kb: ::core::option::Option<u64>,
21496        #[prost(uint64, optional, tag="7")]
21497        pub vm_swap_kb: ::core::option::Option<u64>,
21498        #[prost(uint64, optional, tag="8")]
21499        pub vm_locked_kb: ::core::option::Option<u64>,
21500        /// When adding a new field remember to update kProcMemCounterSize in
21501        /// the trace processor.
21502        #[prost(uint64, optional, tag="9")]
21503        pub vm_hwm_kb: ::core::option::Option<u64>,
21504        #[prost(int64, optional, tag="10")]
21505        pub oom_score_adj: ::core::option::Option<i64>,
21506        /// The peak resident set size is resettable in newer Posix kernels.
21507        /// This field specifies if reset is supported and if the writer had reset
21508        /// the peaks after each process stats recording.
21509        #[prost(bool, optional, tag="12")]
21510        pub is_peak_rss_resettable: ::core::option::Option<bool>,
21511        /// Private, shared and swap footprint of the process as measured by
21512        /// Chrome. To know more about these metrics refer to:
21513        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
21514        #[prost(uint32, optional, tag="13")]
21515        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
21516        #[prost(uint32, optional, tag="14")]
21517        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
21518        #[prost(message, repeated, tag="15")]
21519        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
21520        /// These fields are set only when scan_smaps_rollup=true
21521        #[prost(uint64, optional, tag="16")]
21522        pub smr_rss_kb: ::core::option::Option<u64>,
21523        #[prost(uint64, optional, tag="17")]
21524        pub smr_pss_kb: ::core::option::Option<u64>,
21525        #[prost(uint64, optional, tag="18")]
21526        pub smr_pss_anon_kb: ::core::option::Option<u64>,
21527        #[prost(uint64, optional, tag="19")]
21528        pub smr_pss_file_kb: ::core::option::Option<u64>,
21529        #[prost(uint64, optional, tag="20")]
21530        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
21531        #[prost(uint64, optional, tag="23")]
21532        pub smr_swap_pss_kb: ::core::option::Option<u64>,
21533        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
21534        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
21535        /// Resolution of "clock ticks", usually 10ms.
21536        #[prost(uint64, optional, tag="21")]
21537        pub runtime_user_mode: ::core::option::Option<u64>,
21538        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
21539        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
21540        /// Resolution of "clock ticks", usually 10ms.
21541        #[prost(uint64, optional, tag="22")]
21542        pub runtime_kernel_mode: ::core::option::Option<u64>,
21543        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
21544        #[prost(uint64, optional, tag="24")]
21545        pub dmabuf_rss_kb: ::core::option::Option<u64>,
21546    }
21547}
21548// End of protos/perfetto/trace/ps/process_stats.proto
21549
21550// Begin of protos/perfetto/trace/ps/process_tree.proto
21551
21552/// Metadata about the processes and threads in the trace.
21553/// Note: this proto was designed to be filled in by traced_probes and should
21554/// only be populated with accurate information coming from the system. Other
21555/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
21556/// in TrackDescriptor.
21557#[derive(Clone, PartialEq, ::prost::Message)]
21558pub struct ProcessTree {
21559    /// List of processes and threads in the client. These lists are incremental
21560    /// and not exhaustive. A process and its threads might show up separately in
21561    /// different ProcessTree messages. A thread might event not show up at all, if
21562    /// no sched_switch activity was detected, for instance:
21563    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
21564    /// #1 { threads: [{pid: 12, tgid: 10}] }
21565    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
21566    #[prost(message, repeated, tag="1")]
21567    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
21568    #[prost(message, repeated, tag="2")]
21569    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
21570    /// The time at which we finish collecting this process tree;
21571    /// the top-level packet timestamp is the time at which
21572    /// we begin collection.
21573    #[prost(uint64, optional, tag="3")]
21574    pub collection_end_timestamp: ::core::option::Option<u64>,
21575}
21576/// Nested message and enum types in `ProcessTree`.
21577pub mod process_tree {
21578    /// Representation of a thread.
21579    #[derive(Clone, PartialEq, ::prost::Message)]
21580    pub struct Thread {
21581        /// The thread ID (as per gettid()) in the root PID namespace.
21582        #[prost(int32, optional, tag="1")]
21583        pub tid: ::core::option::Option<i32>,
21584        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
21585        #[prost(int32, optional, tag="3")]
21586        pub tgid: ::core::option::Option<i32>,
21587        /// The name of the thread.
21588        #[prost(string, optional, tag="2")]
21589        pub name: ::core::option::Option<::prost::alloc::string::String>,
21590        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
21591        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
21592        /// level thread ID) omitted.
21593        #[prost(int32, repeated, packed="false", tag="4")]
21594        pub nstid: ::prost::alloc::vec::Vec<i32>,
21595    }
21596    /// Representation of a process.
21597    #[derive(Clone, PartialEq, ::prost::Message)]
21598    pub struct Process {
21599        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
21600        /// PID namespace.
21601        #[prost(int32, optional, tag="1")]
21602        pub pid: ::core::option::Option<i32>,
21603        /// The parent process ID, as per getppid().
21604        #[prost(int32, optional, tag="2")]
21605        pub ppid: ::core::option::Option<i32>,
21606        /// The command line for the process, as per /proc/pid/cmdline, broken up on
21607        /// NUL bytes.
21608        /// If it is a kernel thread or a zombie, there will only be one cmdline
21609        /// field and it will contain /proc/pid/comm.
21610        #[prost(string, repeated, tag="3")]
21611        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21612        /// If true, the |cmdline| field was filled with the main thread's "comm"
21613        /// field instead.
21614        /// Introduced in: perfetto v50.
21615        #[prost(bool, optional, tag="9")]
21616        pub cmdline_is_comm: ::core::option::Option<bool>,
21617        /// The uid for the process, as per /proc/pid/status.
21618        #[prost(int32, optional, tag="5")]
21619        pub uid: ::core::option::Option<i32>,
21620        /// The non-root-level process IDs if the process runs in a PID namespace.
21621        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
21622        /// (root-level process ID) omitted.
21623        #[prost(int32, repeated, packed="false", tag="6")]
21624        pub nspid: ::prost::alloc::vec::Vec<i32>,
21625        /// Timestamp of when the process was created, in nanoseconds
21626        /// from boot. Parsed from starttime in /proc/pid/stat.
21627        /// Recorded if record_process_age config option is set.
21628        /// Resolution of "clock ticks", usually 10ms.
21629        #[prost(uint64, optional, tag="7")]
21630        pub process_start_from_boot: ::core::option::Option<u64>,
21631        /// If true, the process is a kernel thread.
21632        /// Set only on linux v6.4+. For traces from older devices, it is possible to
21633        /// infer most kthreads by checking that they're a descendant of kthreadd
21634        /// (pid=2), or are the idle process (pid=0).
21635        /// Introduced in: perfetto v50.
21636        #[prost(bool, optional, tag="8")]
21637        pub is_kthread: ::core::option::Option<bool>,
21638    }
21639}
21640// End of protos/perfetto/trace/ps/process_tree.proto
21641
21642// Begin of protos/perfetto/trace/remote_clock_sync.proto
21643
21644/// Records the parameters for aligning clock readings between machines.
21645#[derive(Clone, PartialEq, ::prost::Message)]
21646pub struct RemoteClockSync {
21647    #[prost(message, repeated, tag="1")]
21648    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
21649}
21650/// Nested message and enum types in `RemoteClockSync`.
21651pub mod remote_clock_sync {
21652    /// Synchronized clock snapshots taken on both sides of the relay port (the
21653    /// tracing service and the relay service). A round of clock synchronization
21654    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
21655    /// snapshot -> client snapshot -> host snapshot.
21656    #[derive(Clone, PartialEq, ::prost::Message)]
21657    pub struct SyncedClocks {
21658        #[prost(message, optional, tag="2")]
21659        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
21660        #[prost(message, optional, tag="3")]
21661        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
21662    }
21663}
21664// End of protos/perfetto/trace/remote_clock_sync.proto
21665
21666// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
21667
21668/// Deliberate empty message. See comment on StatsdAtom#atom below.
21669#[derive(Clone, PartialEq, ::prost::Message)]
21670pub struct Atom {
21671}
21672/// One or more statsd atoms. This must continue to match:
21673/// perfetto/protos/third_party/statsd/shell_data.proto
21674/// So that we can efficiently add data from statsd directly to the
21675/// trace.
21676#[derive(Clone, PartialEq, ::prost::Message)]
21677pub struct StatsdAtom {
21678    /// Atom should be filled with an Atom proto from:
21679    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
21680    /// We don't reference Atom directly here since we don't want to import
21681    /// Atom.proto and all its transitive dependencies into Perfetto.
21682    /// atom and timestamp_nanos have the same cardinality
21683    #[prost(message, repeated, tag="1")]
21684    pub atom: ::prost::alloc::vec::Vec<Atom>,
21685    #[prost(int64, repeated, packed="false", tag="2")]
21686    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
21687}
21688// End of protos/perfetto/trace/statsd/statsd_atom.proto
21689
21690// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
21691
21692/// Various Linux system stat counters from /proc.
21693/// The fields in this message can be reported at different rates and with
21694/// different granularity. See sys_stats_config.proto.
21695#[derive(Clone, PartialEq, ::prost::Message)]
21696pub struct SysStats {
21697    #[prost(message, repeated, tag="1")]
21698    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
21699    #[prost(message, repeated, tag="2")]
21700    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
21701    /// One entry per cpu.
21702    #[prost(message, repeated, tag="3")]
21703    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
21704    /// Num processes forked since boot.
21705    /// Populated only if FORK_COUNT in config.stat_counters.
21706    #[prost(uint64, optional, tag="4")]
21707    pub num_forks: ::core::option::Option<u64>,
21708    // Number of interrupts, broken by IRQ number.
21709    // Populated only if IRQ_COUNTS in config.stat_counters.
21710
21711    /// Total num of irqs serviced since boot.
21712    #[prost(uint64, optional, tag="5")]
21713    pub num_irq_total: ::core::option::Option<u64>,
21714    #[prost(message, repeated, tag="6")]
21715    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
21716    // Number of softirqs, broken by softirq number.
21717    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
21718
21719    /// Total num of softirqs since boot.
21720    #[prost(uint64, optional, tag="7")]
21721    pub num_softirq_total: ::core::option::Option<u64>,
21722    /// Per-softirq count.
21723    #[prost(message, repeated, tag="8")]
21724    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
21725    /// The time at which we finish collecting this set of samples;
21726    /// the top-level packet timestamp is the time at which
21727    /// we begin collection.
21728    #[prost(uint64, optional, tag="9")]
21729    pub collection_end_timestamp: ::core::option::Option<u64>,
21730    /// One entry per device.
21731    #[prost(message, repeated, tag="10")]
21732    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
21733    /// Cpu current frequency from
21734    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
21735    /// One entry per cpu. Report 0 for offline cpu
21736    #[prost(uint32, repeated, packed="false", tag="11")]
21737    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
21738    /// One entry per each node's zones.
21739    #[prost(message, repeated, tag="12")]
21740    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
21741    /// One entry per disk device.
21742    #[prost(message, repeated, tag="13")]
21743    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
21744    /// One entry per PsiResource type.
21745    #[prost(message, repeated, tag="14")]
21746    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
21747    #[prost(message, repeated, tag="15")]
21748    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
21749    #[prost(message, repeated, tag="16")]
21750    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
21751    /// Read GPU frequency info on Intel/AMD devices.
21752    #[prost(uint64, repeated, packed="false", tag="17")]
21753    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
21754}
21755/// Nested message and enum types in `SysStats`.
21756pub mod sys_stats {
21757    /// Counters from /proc/meminfo. Values are in KB.
21758    #[derive(Clone, PartialEq, ::prost::Message)]
21759    pub struct MeminfoValue {
21760        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
21761        pub key: ::core::option::Option<i32>,
21762        #[prost(uint64, optional, tag="2")]
21763        pub value: ::core::option::Option<u64>,
21764    }
21765    /// Counter from /proc/vmstat. Units are often pages, not KB.
21766    #[derive(Clone, PartialEq, ::prost::Message)]
21767    pub struct VmstatValue {
21768        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
21769        pub key: ::core::option::Option<i32>,
21770        #[prost(uint64, optional, tag="2")]
21771        pub value: ::core::option::Option<u64>,
21772    }
21773    /// Times in each mode, since boot. Unit: nanoseconds.
21774    #[derive(Clone, PartialEq, ::prost::Message)]
21775    pub struct CpuTimes {
21776        #[prost(uint32, optional, tag="1")]
21777        pub cpu_id: ::core::option::Option<u32>,
21778        /// Time spent in user mode.
21779        #[prost(uint64, optional, tag="2")]
21780        pub user_ns: ::core::option::Option<u64>,
21781        /// Time spent in user mode (low prio).
21782        #[prost(uint64, optional, tag="3")]
21783        pub user_nice_ns: ::core::option::Option<u64>,
21784        /// Time spent in system mode.
21785        #[prost(uint64, optional, tag="4")]
21786        pub system_mode_ns: ::core::option::Option<u64>,
21787        /// Time spent in the idle task.
21788        #[prost(uint64, optional, tag="5")]
21789        pub idle_ns: ::core::option::Option<u64>,
21790        /// Time spent waiting for I/O.
21791        #[prost(uint64, optional, tag="6")]
21792        pub io_wait_ns: ::core::option::Option<u64>,
21793        /// Time spent servicing interrupts.
21794        #[prost(uint64, optional, tag="7")]
21795        pub irq_ns: ::core::option::Option<u64>,
21796        /// Time spent servicing softirqs.
21797        #[prost(uint64, optional, tag="8")]
21798        pub softirq_ns: ::core::option::Option<u64>,
21799        /// Time spent executing something else on host than this guest.
21800        #[prost(uint64, optional, tag="9")]
21801        pub steal_ns: ::core::option::Option<u64>,
21802    }
21803    #[derive(Clone, PartialEq, ::prost::Message)]
21804    pub struct InterruptCount {
21805        #[prost(int32, optional, tag="1")]
21806        pub irq: ::core::option::Option<i32>,
21807        #[prost(uint64, optional, tag="2")]
21808        pub count: ::core::option::Option<u64>,
21809    }
21810    /// Frequencies for /sys/class/devfreq/ entries in kHz.
21811    #[derive(Clone, PartialEq, ::prost::Message)]
21812    pub struct DevfreqValue {
21813        #[prost(string, optional, tag="1")]
21814        pub key: ::core::option::Option<::prost::alloc::string::String>,
21815        #[prost(uint64, optional, tag="2")]
21816        pub value: ::core::option::Option<u64>,
21817    }
21818    #[derive(Clone, PartialEq, ::prost::Message)]
21819    pub struct BuddyInfo {
21820        #[prost(string, optional, tag="1")]
21821        pub node: ::core::option::Option<::prost::alloc::string::String>,
21822        #[prost(string, optional, tag="2")]
21823        pub zone: ::core::option::Option<::prost::alloc::string::String>,
21824        #[prost(uint32, repeated, packed="false", tag="3")]
21825        pub order_pages: ::prost::alloc::vec::Vec<u32>,
21826    }
21827    /// Counters from /proc/diskstats.
21828    #[derive(Clone, PartialEq, ::prost::Message)]
21829    pub struct DiskStat {
21830        #[prost(string, optional, tag="1")]
21831        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
21832        #[prost(uint64, optional, tag="2")]
21833        pub read_sectors: ::core::option::Option<u64>,
21834        #[prost(uint64, optional, tag="3")]
21835        pub read_time_ms: ::core::option::Option<u64>,
21836        #[prost(uint64, optional, tag="4")]
21837        pub write_sectors: ::core::option::Option<u64>,
21838        #[prost(uint64, optional, tag="5")]
21839        pub write_time_ms: ::core::option::Option<u64>,
21840        #[prost(uint64, optional, tag="6")]
21841        pub discard_sectors: ::core::option::Option<u64>,
21842        #[prost(uint64, optional, tag="7")]
21843        pub discard_time_ms: ::core::option::Option<u64>,
21844        #[prost(uint64, optional, tag="8")]
21845        pub flush_count: ::core::option::Option<u64>,
21846        #[prost(uint64, optional, tag="9")]
21847        pub flush_time_ms: ::core::option::Option<u64>,
21848    }
21849    /// Reading from /proc/pressure/*.
21850    #[derive(Clone, PartialEq, ::prost::Message)]
21851    pub struct PsiSample {
21852        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
21853        pub resource: ::core::option::Option<i32>,
21854        /// Total absolute stall time (in nanos) for a given resource.
21855        /// While PSI readings are in micros, we store in nanos for consistency with
21856        /// most other time-based counters.
21857        #[prost(uint64, optional, tag="2")]
21858        pub total_ns: ::core::option::Option<u64>,
21859    }
21860    /// Nested message and enum types in `PsiSample`.
21861    pub mod psi_sample {
21862        /// Type of resource that may have exhibited pressure stalls.
21863        ///     * _SOME indicates some resource tasks stalled.
21864        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
21865        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21866        #[repr(i32)]
21867        pub enum PsiResource {
21868            Unspecified = 0,
21869            CpuSome = 1,
21870            CpuFull = 2,
21871            IoSome = 3,
21872            IoFull = 4,
21873            MemorySome = 5,
21874            MemoryFull = 6,
21875        }
21876        impl PsiResource {
21877            /// String value of the enum field names used in the ProtoBuf definition.
21878            ///
21879            /// The values are not transformed in any way and thus are considered stable
21880            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21881            pub fn as_str_name(&self) -> &'static str {
21882                match self {
21883                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
21884                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
21885                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
21886                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
21887                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
21888                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
21889                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
21890                }
21891            }
21892        }
21893    }
21894    /// Reading from /sys/class/thermal/*.
21895    #[derive(Clone, PartialEq, ::prost::Message)]
21896    pub struct ThermalZone {
21897        #[prost(string, optional, tag="1")]
21898        pub name: ::core::option::Option<::prost::alloc::string::String>,
21899        #[prost(uint64, optional, tag="2")]
21900        pub temp: ::core::option::Option<u64>,
21901        #[prost(string, optional, tag="3")]
21902        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21903    }
21904    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
21905    #[derive(Clone, PartialEq, ::prost::Message)]
21906    pub struct CpuIdleStateEntry {
21907        /// Name of the idle state, e.g. C1-C10
21908        #[prost(string, optional, tag="1")]
21909        pub state: ::core::option::Option<::prost::alloc::string::String>,
21910        #[prost(uint64, optional, tag="2")]
21911        pub duration_us: ::core::option::Option<u64>,
21912    }
21913    #[derive(Clone, PartialEq, ::prost::Message)]
21914    pub struct CpuIdleState {
21915        #[prost(uint32, optional, tag="1")]
21916        pub cpu_id: ::core::option::Option<u32>,
21917        #[prost(message, repeated, tag="2")]
21918        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
21919    }
21920}
21921// End of protos/perfetto/trace/sys_stats/sys_stats.proto
21922
21923// Begin of protos/perfetto/trace/system_info/cpu_info.proto
21924
21925/// Information about CPUs from procfs and sysfs.
21926#[derive(Clone, PartialEq, ::prost::Message)]
21927pub struct CpuInfo {
21928    /// Describes available CPUs, one entry per CPU.
21929    #[prost(message, repeated, tag="1")]
21930    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
21931}
21932/// Nested message and enum types in `CpuInfo`.
21933pub mod cpu_info {
21934    #[derive(Clone, PartialEq, ::prost::Message)]
21935    pub struct ArmCpuIdentifier {
21936        /// Implementer code
21937        #[prost(uint32, optional, tag="1")]
21938        pub implementer: ::core::option::Option<u32>,
21939        /// Architecture code
21940        #[prost(uint32, optional, tag="2")]
21941        pub architecture: ::core::option::Option<u32>,
21942        /// CPU variant
21943        #[prost(uint32, optional, tag="3")]
21944        pub variant: ::core::option::Option<u32>,
21945        /// CPU part
21946        #[prost(uint32, optional, tag="4")]
21947        pub part: ::core::option::Option<u32>,
21948        /// CPU revision
21949        #[prost(uint32, optional, tag="5")]
21950        pub revision: ::core::option::Option<u32>,
21951    }
21952    /// Information about a single CPU.
21953    #[derive(Clone, PartialEq, ::prost::Message)]
21954    pub struct Cpu {
21955        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
21956        /// Example: "AArch64 Processor rev 12 (aarch64)"
21957        #[prost(string, optional, tag="1")]
21958        pub processor: ::core::option::Option<::prost::alloc::string::String>,
21959        /// Frequencies from
21960        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
21961        /// where X is the index of this CPU.
21962        #[prost(uint32, repeated, packed="false", tag="2")]
21963        pub frequencies: ::prost::alloc::vec::Vec<u32>,
21964        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
21965        /// the index of this CPU.
21966        #[prost(uint32, optional, tag="3")]
21967        pub capacity: ::core::option::Option<u32>,
21968        /// Features is a bitmap containing a bit set for each feature defined in
21969        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
21970        /// index.
21971        #[prost(uint64, optional, tag="5")]
21972        pub features: ::core::option::Option<u64>,
21973        /// Code to identify the CPU
21974        #[prost(oneof="cpu::Identifier", tags="4")]
21975        pub identifier: ::core::option::Option<cpu::Identifier>,
21976    }
21977    /// Nested message and enum types in `Cpu`.
21978    pub mod cpu {
21979        /// Code to identify the CPU
21980        #[derive(Clone, PartialEq, ::prost::Oneof)]
21981        pub enum Identifier {
21982            #[prost(message, tag="4")]
21983            ArmIdentifier(super::ArmCpuIdentifier),
21984        }
21985    }
21986}
21987// End of protos/perfetto/trace/system_info/cpu_info.proto
21988
21989// Begin of protos/perfetto/trace/test_event.proto
21990
21991/// Event used by testing code.
21992#[derive(Clone, PartialEq, ::prost::Message)]
21993pub struct TestEvent {
21994    /// Arbitrary string used in tests.
21995    #[prost(string, optional, tag="1")]
21996    pub str: ::core::option::Option<::prost::alloc::string::String>,
21997    /// The current value of the random number sequence used in tests.
21998    #[prost(uint32, optional, tag="2")]
21999    pub seq_value: ::core::option::Option<u32>,
22000    /// Monotonically increased on each packet.
22001    #[prost(uint64, optional, tag="3")]
22002    pub counter: ::core::option::Option<u64>,
22003    /// No more packets should follow (from the current sequence).
22004    #[prost(bool, optional, tag="4")]
22005    pub is_last: ::core::option::Option<bool>,
22006    #[prost(message, optional, tag="5")]
22007    pub payload: ::core::option::Option<test_event::TestPayload>,
22008}
22009/// Nested message and enum types in `TestEvent`.
22010pub mod test_event {
22011    #[derive(Clone, PartialEq, ::prost::Message)]
22012    pub struct TestPayload {
22013        #[prost(string, repeated, tag="1")]
22014        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22015        #[prost(message, repeated, tag="2")]
22016        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
22017        #[prost(string, optional, tag="4")]
22018        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
22019        #[prost(int32, optional, tag="5")]
22020        pub single_int: ::core::option::Option<i32>,
22021        #[prost(int32, repeated, packed="false", tag="6")]
22022        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
22023        /// When 0 this is the bottom-most nested message.
22024        #[prost(uint32, optional, tag="3")]
22025        pub remaining_nesting_depth: ::core::option::Option<u32>,
22026        #[prost(message, repeated, tag="7")]
22027        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
22028    }
22029}
22030// End of protos/perfetto/trace/test_event.proto
22031
22032// Begin of protos/perfetto/trace/trace_packet_defaults.proto
22033
22034/// Default values for TracePacket fields that hold for a particular TraceWriter
22035/// packet sequence. This message contains a subset of the TracePacket fields
22036/// with matching IDs. When provided, these fields define the default values
22037/// that should be applied, at import time, to all TracePacket(s) with the same
22038/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
22039///
22040/// Should be reemitted whenever incremental state is cleared on the sequence.
22041#[derive(Clone, PartialEq, ::prost::Message)]
22042pub struct TracePacketDefaults {
22043    #[prost(uint32, optional, tag="58")]
22044    pub timestamp_clock_id: ::core::option::Option<u32>,
22045    /// Default values for TrackEvents (e.g. default track).
22046    #[prost(message, optional, tag="11")]
22047    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
22048    /// Defaults for perf profiler packets (PerfSample).
22049    #[prost(message, optional, tag="12")]
22050    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
22051    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
22052    /// V8RegexpCode)
22053    #[prost(message, optional, tag="99")]
22054    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
22055}
22056// Begin of protos/perfetto/trace/trace_uuid.proto
22057
22058/// A random unique ID that identifies the trace.
22059/// This message has been introduced in v32. Prior to that, the UUID was
22060/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
22061/// This has been moved to a standalone packet to deal with new use-cases for
22062/// go/gapless-aot, where the same tracing session can be serialized several
22063/// times, in which case the UUID is changed on each snapshot and does not match
22064/// the one in the TraceConfig.
22065#[derive(Clone, PartialEq, ::prost::Message)]
22066pub struct TraceUuid {
22067    #[prost(int64, optional, tag="1")]
22068    pub msb: ::core::option::Option<i64>,
22069    #[prost(int64, optional, tag="2")]
22070    pub lsb: ::core::option::Option<i64>,
22071}
22072// End of protos/perfetto/trace/trace_uuid.proto
22073
22074// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
22075
22076/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
22077/// usually by the process's main thread.
22078///
22079/// Next id: 9.
22080#[derive(Clone, PartialEq, ::prost::Message)]
22081pub struct ProcessDescriptor {
22082    #[prost(int32, optional, tag="1")]
22083    pub pid: ::core::option::Option<i32>,
22084    #[prost(string, repeated, tag="2")]
22085    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22086    #[prost(string, optional, tag="6")]
22087    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
22088    #[prost(int32, optional, tag="5")]
22089    pub process_priority: ::core::option::Option<i32>,
22090    /// Process start time in nanoseconds.
22091    /// The timestamp refers to the trace clock by default. Other clock IDs
22092    /// provided in TracePacket are not supported.
22093    #[prost(int64, optional, tag="7")]
22094    pub start_timestamp_ns: ::core::option::Option<i64>,
22095    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
22096    pub chrome_process_type: ::core::option::Option<i32>,
22097    /// To support old UI. New UI should determine default sorting by process_type.
22098    #[prost(int32, optional, tag="3")]
22099    pub legacy_sort_index: ::core::option::Option<i32>,
22100    /// Labels can be used to further describe properties of the work performed by
22101    /// the process. For example, these can be used by Chrome renderer process to
22102    /// provide titles of frames being rendered.
22103    #[prost(string, repeated, tag="8")]
22104    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22105}
22106/// Nested message and enum types in `ProcessDescriptor`.
22107pub mod process_descriptor {
22108    // ---------------------------------------------------------------------------
22109    // Deprecated / legacy fields, which will be removed in the future:
22110    // ---------------------------------------------------------------------------
22111
22112    /// See chromium's content::ProcessType.
22113    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22114    #[repr(i32)]
22115    pub enum ChromeProcessType {
22116        ProcessUnspecified = 0,
22117        ProcessBrowser = 1,
22118        ProcessRenderer = 2,
22119        ProcessUtility = 3,
22120        ProcessZygote = 4,
22121        ProcessSandboxHelper = 5,
22122        ProcessGpu = 6,
22123        ProcessPpapiPlugin = 7,
22124        ProcessPpapiBroker = 8,
22125    }
22126    impl ChromeProcessType {
22127        /// String value of the enum field names used in the ProtoBuf definition.
22128        ///
22129        /// The values are not transformed in any way and thus are considered stable
22130        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22131        pub fn as_str_name(&self) -> &'static str {
22132            match self {
22133                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
22134                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
22135                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
22136                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
22137                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
22138                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
22139                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
22140                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
22141                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
22142            }
22143        }
22144    }
22145}
22146// End of protos/perfetto/trace/track_event/process_descriptor.proto
22147
22148// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
22149
22150/// This message specifies the "range of interest" for track events. With the
22151/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
22152/// Trace Processor drops track events outside of this range.
22153#[derive(Clone, PartialEq, ::prost::Message)]
22154pub struct TrackEventRangeOfInterest {
22155    #[prost(int64, optional, tag="1")]
22156    pub start_us: ::core::option::Option<i64>,
22157}
22158// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
22159
22160/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
22161/// usually by the thread's trace writer.
22162///
22163/// Next id: 9.
22164#[derive(Clone, PartialEq, ::prost::Message)]
22165pub struct ThreadDescriptor {
22166    #[prost(int32, optional, tag="1")]
22167    pub pid: ::core::option::Option<i32>,
22168    #[prost(int32, optional, tag="2")]
22169    pub tid: ::core::option::Option<i32>,
22170    #[prost(string, optional, tag="5")]
22171    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
22172    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
22173    pub chrome_thread_type: ::core::option::Option<i32>,
22174    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
22175    /// and timestamp_clock_id fields instead.
22176    #[prost(int64, optional, tag="6")]
22177    pub reference_timestamp_us: ::core::option::Option<i64>,
22178    /// Absolute reference values. Clock values in subsequent TrackEvents can be
22179    /// encoded accumulatively and relative to these. This reduces their var-int
22180    /// encoding size.
22181    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
22182    #[prost(int64, optional, tag="7")]
22183    pub reference_thread_time_us: ::core::option::Option<i64>,
22184    #[prost(int64, optional, tag="8")]
22185    pub reference_thread_instruction_count: ::core::option::Option<i64>,
22186    /// To support old UI. New UI should determine default sorting by thread_type.
22187    #[prost(int32, optional, tag="3")]
22188    pub legacy_sort_index: ::core::option::Option<i32>,
22189}
22190/// Nested message and enum types in `ThreadDescriptor`.
22191pub mod thread_descriptor {
22192    // ---------------------------------------------------------------------------
22193    // Deprecated / legacy fields, which will be removed in the future:
22194    // ---------------------------------------------------------------------------
22195
22196    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22197    #[repr(i32)]
22198    pub enum ChromeThreadType {
22199        ChromeThreadUnspecified = 0,
22200        ChromeThreadMain = 1,
22201        ChromeThreadIo = 2,
22202        /// Scheduler:
22203        ChromeThreadPoolBgWorker = 3,
22204        ChromeThreadPoolFgWorker = 4,
22205        ChromeThreadPoolFbBlocking = 5,
22206        ChromeThreadPoolBgBlocking = 6,
22207        ChromeThreadPoolService = 7,
22208        /// Compositor:
22209        ChromeThreadCompositor = 8,
22210        ChromeThreadVizCompositor = 9,
22211        ChromeThreadCompositorWorker = 10,
22212        /// Renderer:
22213        ChromeThreadServiceWorker = 11,
22214        /// Tracing related threads:
22215        ChromeThreadMemoryInfra = 50,
22216        ChromeThreadSamplingProfiler = 51,
22217    }
22218    impl ChromeThreadType {
22219        /// String value of the enum field names used in the ProtoBuf definition.
22220        ///
22221        /// The values are not transformed in any way and thus are considered stable
22222        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22223        pub fn as_str_name(&self) -> &'static str {
22224            match self {
22225                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
22226                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
22227                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
22228                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
22229                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
22230                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
22231                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
22232                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
22233                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
22234                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
22235                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
22236                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
22237                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
22238                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
22239            }
22240        }
22241    }
22242}
22243// End of protos/perfetto/trace/track_event/thread_descriptor.proto
22244
22245// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
22246
22247/// Describes the attributes for a Chrome process. Must be paired with a
22248/// ProcessDescriptor in the same TrackDescriptor.
22249///
22250/// Next id: 6.
22251#[derive(Clone, PartialEq, ::prost::Message)]
22252pub struct ChromeProcessDescriptor {
22253    /// This is a chrome_enums::ProcessType from
22254    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
22255    /// be imported here because of a dependency loop.
22256    #[prost(int32, optional, tag="1")]
22257    pub process_type: ::core::option::Option<i32>,
22258    #[prost(int32, optional, tag="2")]
22259    pub process_priority: ::core::option::Option<i32>,
22260    /// To support old UI. New UI should determine default sorting by process_type.
22261    #[prost(int32, optional, tag="3")]
22262    pub legacy_sort_index: ::core::option::Option<i32>,
22263    /// Name of the hosting app for WebView. Used to match renderer processes to
22264    /// their hosting apps.
22265    #[prost(string, optional, tag="4")]
22266    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
22267    /// The ID to link crashes to trace.
22268    /// Notes:
22269    /// * The ID is per process. So, each trace may contain many IDs, and you need
22270    ///    to look for the ID from crashed process to find the crash report.
22271    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
22272    ///    get an uploaded trace, since uploads could have failed.
22273    /// * On the other hand, if there was a crash during the session and trace was
22274    ///    uploaded, it is very likely to find a crash report with the trace ID.
22275    /// * This is not crash ID or trace ID. It is just a random 64-bit number
22276    ///    recorded in both traces and crashes. It is possible to have collisions,
22277    ///    though very rare.
22278    #[prost(uint64, optional, tag="5")]
22279    pub crash_trace_id: ::core::option::Option<u64>,
22280}
22281// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
22282
22283// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
22284
22285/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
22286/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
22287/// in the same TrackDescriptor.
22288///
22289/// Next id: 3.
22290#[derive(Clone, PartialEq, ::prost::Message)]
22291pub struct ChromeThreadDescriptor {
22292    /// This is a chrome_enums::ThreadType from
22293    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
22294    /// be imported here because of a dependency loop.
22295    #[prost(int32, optional, tag="1")]
22296    pub thread_type: ::core::option::Option<i32>,
22297    /// To support old UI. New UI should determine default sorting by thread_type.
22298    #[prost(int32, optional, tag="2")]
22299    pub legacy_sort_index: ::core::option::Option<i32>,
22300    /// Indicates whether the thread's tid specified in the thread descriptor is
22301    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
22302    #[prost(bool, optional, tag="3")]
22303    pub is_sandboxed_tid: ::core::option::Option<bool>,
22304}
22305// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
22306
22307// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
22308
22309/// Defines properties of a counter track, e.g. for built-in counters (thread
22310/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
22311/// a specific app component).
22312///
22313/// Counter tracks only support TYPE_COUNTER track events, which specify new
22314/// values for the counter. For counters that require per-slice values, counter
22315/// values can instead be provided in a more efficient encoding via TrackEvent's
22316/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
22317/// slice-type events cannot be emitted onto a counter track.
22318///
22319/// Values for counters that are only emitted on a single packet sequence can
22320/// optionally be delta-encoded, see |is_incremental|.
22321///
22322/// Next id: 7.
22323#[derive(Clone, PartialEq, ::prost::Message)]
22324pub struct CounterDescriptor {
22325    /// For built-in counters (e.g. thread time). Custom user-specified counters
22326    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
22327    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
22328    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
22329    pub r#type: ::core::option::Option<i32>,
22330    /// Names of categories of the counter (usually for user-specified counters).
22331    /// In the client library, categories are a way to turn groups of individual
22332    /// counters (or events) on or off.
22333    #[prost(string, repeated, tag="2")]
22334    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22335    /// Type of the counter's values. Built-in counters imply a value for this
22336    /// field.
22337    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
22338    pub unit: ::core::option::Option<i32>,
22339    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
22340    /// name can be used instead.
22341    #[prost(string, optional, tag="6")]
22342    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
22343    /// Multiplication factor of this counter's values, e.g. to supply
22344    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
22345    #[prost(int64, optional, tag="4")]
22346    pub unit_multiplier: ::core::option::Option<i64>,
22347    /// Whether values for this counter are provided as delta values. Only
22348    /// supported for counters that are emitted on a single packet-sequence (e.g.
22349    /// thread time). Counter values in subsequent packets on the current packet
22350    /// sequence will be interpreted as delta values from the sequence's most
22351    /// recent value for the counter. When incremental state is cleared, the
22352    /// counter value is considered to be reset to 0. Thus, the first value after
22353    /// incremental state is cleared is effectively an absolute value.
22354    #[prost(bool, optional, tag="5")]
22355    pub is_incremental: ::core::option::Option<bool>,
22356    // TODO(eseckler): Support arguments describing the counter (?).
22357    // repeated DebugAnnotation debug_annotations;
22358
22359    /// When visualizing multiple counter tracks, it is often useful to have them
22360    /// share the same Y-axis range. This allows for easy comparison of their
22361    /// values.
22362    ///
22363    /// All counter tracks with the same |y_axis_share_key| and the same parent
22364    /// track (e.g. grouped under the same process track) will share their y-axis
22365    /// range in the UI.
22366    #[prost(string, optional, tag="7")]
22367    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
22368}
22369/// Nested message and enum types in `CounterDescriptor`.
22370pub mod counter_descriptor {
22371    /// Built-in counters, usually with special meaning in the client library,
22372    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
22373    /// track name from the enum value if none is provided in TrackDescriptor.
22374    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22375    #[repr(i32)]
22376    pub enum BuiltinCounterType {
22377        CounterUnspecified = 0,
22378        // Thread-scoped counters. The thread's track should be specified via
22379        // |parent_uuid| in the TrackDescriptor for such a counter.
22380
22381        /// implies UNIT_TIME_NS.
22382        CounterThreadTimeNs = 1,
22383        /// implies UNIT_COUNT.
22384        CounterThreadInstructionCount = 2,
22385    }
22386    impl BuiltinCounterType {
22387        /// String value of the enum field names used in the ProtoBuf definition.
22388        ///
22389        /// The values are not transformed in any way and thus are considered stable
22390        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22391        pub fn as_str_name(&self) -> &'static str {
22392            match self {
22393                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
22394                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
22395                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
22396            }
22397        }
22398    }
22399    /// Type of the values for the counters - to supply lower granularity units,
22400    /// see also |unit_multiplier|.
22401    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22402    #[repr(i32)]
22403    pub enum Unit {
22404        Unspecified = 0,
22405        TimeNs = 1,
22406        Count = 2,
22407        /// TODO(eseckler): Support more units as necessary.
22408        SizeBytes = 3,
22409    }
22410    impl Unit {
22411        /// String value of the enum field names used in the ProtoBuf definition.
22412        ///
22413        /// The values are not transformed in any way and thus are considered stable
22414        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22415        pub fn as_str_name(&self) -> &'static str {
22416            match self {
22417                Unit::Unspecified => "UNIT_UNSPECIFIED",
22418                Unit::TimeNs => "UNIT_TIME_NS",
22419                Unit::Count => "UNIT_COUNT",
22420                Unit::SizeBytes => "UNIT_SIZE_BYTES",
22421            }
22422        }
22423    }
22424}
22425// End of protos/perfetto/trace/track_event/counter_descriptor.proto
22426
22427// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
22428
22429/// Defines a track for TrackEvents. Slices and instant events on the same track
22430/// will be nested based on their timestamps, see TrackEvent::Type.
22431///
22432/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
22433/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
22434/// when the ring buffer wraps, it should be reemitted whenever incremental state
22435/// is cleared.
22436///
22437/// As a fallback, TrackEvents emitted without an explicit track association will
22438/// be associated with an implicit trace-global track (uuid = 0), see also
22439/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
22440/// TrackDescriptor for this implicit track.
22441///
22442/// Next id: 18.
22443#[derive(Clone, PartialEq, ::prost::Message)]
22444pub struct TrackDescriptor {
22445    /// Unique ID that identifies this track. This ID is global to the whole trace.
22446    /// Producers should ensure that it is unlikely to clash with IDs emitted by
22447    /// other producers. A value of 0 denotes the implicit trace-global track.
22448    ///
22449    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
22450    /// event id + id_scope, pid, and/or tid to compute this ID.
22451    #[prost(uint64, optional, tag="1")]
22452    pub uuid: ::core::option::Option<u64>,
22453    /// A parent track reference can be used to describe relationships between
22454    /// tracks. For example, to define an asynchronous track which is scoped to a
22455    /// specific process, specify the uuid for that process's process track here.
22456    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
22457    /// thread, specify the uuid for that thread's thread track here. In general,
22458    /// setting a parent will *nest* that track under the parent in the UI and in
22459    /// the trace processor data model (with the important exception noted below).
22460    ///
22461    /// If not specified, the track will be a root track, i.e. not nested under any
22462    /// other track.
22463    ///
22464    /// Note: if the `thread` or `process` fields are set, this value will be
22465    /// *ignored* as priority is given to those fields.
22466    ///
22467    /// Note: if the parent is set to a track with `thread` or `process` fields
22468    /// set, the track will *not* be nested under the parent in the UI and in the
22469    /// trace processor data model. Instead, the track will inherit the parent's
22470    /// thread/process association and will appear as a *sibling* of the parent.
22471    /// This semantic exists for back-compat reasons as the UI used to work this
22472    /// way for years and changing this leads to a lot of traces subtly breaking.
22473    /// If you want to force nesting, create *another* intermediate track to act as
22474    /// the parent.
22475    #[prost(uint64, optional, tag="5")]
22476    pub parent_uuid: ::core::option::Option<u64>,
22477    /// A human-readable description of the track providing more context about its
22478    /// data. In the UI, this is shown in a popup when the track's help button is
22479    /// clicked.
22480    #[prost(string, optional, tag="14")]
22481    pub description: ::core::option::Option<::prost::alloc::string::String>,
22482    /// Associate the track with a process, making it the process-global track.
22483    /// There should only be one such track per process (usually for instant
22484    /// events; trace processor uses this fact to detect pid reuse). If you need
22485    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
22486    ///
22487    /// Trace processor will merge events on a process track with slice-type events
22488    /// from other sources (e.g. ftrace) for the same process into a single
22489    /// timeline view.
22490    #[prost(message, optional, tag="3")]
22491    pub process: ::core::option::Option<ProcessDescriptor>,
22492    #[prost(message, optional, tag="6")]
22493    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
22494    /// Associate the track with a thread, indicating that the track's events
22495    /// describe synchronous code execution on the thread. There should only be one
22496    /// such track per thread (trace processor uses this fact to detect tid reuse).
22497    ///
22498    /// Trace processor will merge events on a thread track with slice-type events
22499    /// from other sources (e.g. ftrace) for the same thread into a single timeline
22500    /// view.
22501    #[prost(message, optional, tag="4")]
22502    pub thread: ::core::option::Option<ThreadDescriptor>,
22503    #[prost(message, optional, tag="7")]
22504    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
22505    /// Descriptor for a counter track. If set, the track will only support
22506    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
22507    /// |extra_counter_values|).
22508    #[prost(message, optional, tag="8")]
22509    pub counter: ::core::option::Option<CounterDescriptor>,
22510    /// If true, forces Trace Processor to use separate tracks for track events
22511    /// and system events for the same thread.
22512    ///
22513    /// Track events timestamps in Chrome have microsecond resolution, while
22514    /// system events use nanoseconds. It results in broken event nesting when
22515    /// track events and system events share a track.
22516    #[prost(bool, optional, tag="9")]
22517    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
22518    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
22519    pub child_ordering: ::core::option::Option<i32>,
22520    /// An opaque value which allows specifying how two sibling tracks should be
22521    /// ordered relative to each other: tracks with lower ranks will appear before
22522    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
22523    /// 0.
22524    ///
22525    /// Note: this option is only relevant for tracks where the parent has
22526    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
22527    ///
22528    /// Note: for tracks where the parent has `thread` or `process` are set, this
22529    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
22530    /// See `parent_uuid` for details.
22531    #[prost(int32, optional, tag="12")]
22532    pub sibling_order_rank: ::core::option::Option<i32>,
22533    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
22534    pub sibling_merge_behavior: ::core::option::Option<i32>,
22535    /// Name of the track.
22536    ///
22537    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
22538    /// emitted before any `TrackEvent`s on the same track.
22539    ///
22540    /// Note: any name specified here will be *ignored* for the root thread scoped
22541    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
22542    /// case, the name of the track is shared by many different data sources and so
22543    /// is centrally controlled by trace processor.
22544    ///
22545    /// It's strongly recommended to only emit the name for a track uuid *once*. If
22546    /// a descriptor *has* to be emitted multiple times (e.g. between different
22547    /// processes), it's recommended to ensure that the name is consistent across
22548    /// all TrackDescriptors with the same `uuid`.
22549    ///
22550    /// If the the above recommendation is not followed and the same uuid is
22551    /// emitted with different names, it is implementation defined how the final
22552    /// name will be chosen and may change at any time.
22553    ///
22554    /// The current implementation of trace processor chooses the name in the
22555    /// following way, depending on the value of the `sibling_merge_behavior`
22556    /// field:
22557    ///
22558    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
22559    ///    * The *last* non-null name in the whole trace according to trace order
22560    ///      will be used.
22561    ///    * If no non-null name is present in the whole trace, the trace processor
22562    ///      may fall back to other sources to provide a name for the track (e.g.
22563    ///      the first event name for slice tracks, the counter name for counter
22564    ///      tracks). This is implementation defined and may change at any time.
22565    ///
22566    /// 2. If `sibling_merge_behavior` is set to any other value:
22567    ///    * The first non-null name before the first event on the track *or on any
22568    ///      descendant tracks* is processed will be used. For example, consider
22569    ///      the following sequence of events:
22570    ///        ts=100: TrackDescriptor(uuid=A)
22571    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
22572    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
22573    ///        ts=400: TrackEvent(track_uuid=B)
22574    ///      In this case, the name for track A will be "Track A" because the
22575    ///      descriptor with the name was emitted before the first event on a
22576    ///      descendant track (B).
22577    ///    * If no non-null name is present before the event is processed, the trace
22578    ///      processor may fall back to other sources to provide a name for the
22579    ///      track (e.g. the first event name for slice tracks, the counter name for
22580    ///      counter tracks). This is implementation defined and may change at any
22581    ///      time.
22582    ///    * Note on processing order: In the standard trace processor pipeline,
22583    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
22584    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
22585    ///      track, all its descriptors in the trace are processed before its
22586    ///      events. Consequently, the "first non-null name before the first event"
22587    ///      will be the name from the first `TrackDescriptor` for that track in the
22588    ///      trace file that has a non-null name. However, in a streaming parsing
22589    ///      scenario, the timestamp order of descriptors and events is significant,
22590    ///      and a descriptor arriving after an event has been processed will not be
22591    ///      used to name the track.
22592    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
22593    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
22594    /// An opaque value which allows specifying which tracks should be merged
22595    /// together.
22596    ///
22597    /// Only meaningful when `sibling_merge_behavior` is set to
22598    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
22599    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
22600    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
22601}
22602/// Nested message and enum types in `TrackDescriptor`.
22603pub mod track_descriptor {
22604    /// Specifies how the UI should display child tracks of this track (i.e. tracks
22605    /// where `parent_uuid` is specified to this track `uuid`). Note that this
22606    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
22607    /// this if it has a good reason not to do so.
22608    ///
22609    /// Note: for tracks where `thread` or `process` are set, this option is
22610    /// *ignored*. See `parent_uuid` for details.
22611    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22612    #[repr(i32)]
22613    pub enum ChildTracksOrdering {
22614        /// The default ordering, with no bearing on how the UI will visualise the
22615        /// tracks.
22616        Unknown = 0,
22617        /// Order tracks by `name` or `static_name` depending on which one has been
22618        /// specified.
22619        Lexicographic = 1,
22620        /// Order tracks by the first `ts` event in a track.
22621        Chronological = 2,
22622        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
22623        /// the lower values will be shown before tracks with higher values. Tracks
22624        /// with no value will be treated as having 0 rank.
22625        Explicit = 3,
22626    }
22627    impl ChildTracksOrdering {
22628        /// String value of the enum field names used in the ProtoBuf definition.
22629        ///
22630        /// The values are not transformed in any way and thus are considered stable
22631        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22632        pub fn as_str_name(&self) -> &'static str {
22633            match self {
22634                ChildTracksOrdering::Unknown => "UNKNOWN",
22635                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
22636                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
22637                ChildTracksOrdering::Explicit => "EXPLICIT",
22638            }
22639        }
22640    }
22641    /// Specifies how the analysis tools should "merge" different sibling
22642    /// TrackEvent tracks.
22643    ///
22644    /// For two or more tracks to be merged, they must be "eligible" siblings.
22645    /// Eligibility is determined by the following rules:
22646    /// 1. All tracks must have the same parent.
22647    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
22648    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
22649    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
22650    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
22651    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
22652    ///
22653    /// Specifically:
22654    ///    - in the UI, all tracks which are merged together will be
22655    ///      displayed as a single "visual" track.
22656    ///    - in the trace processor, all tracks which are merged together will be
22657    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
22658    ///      of tracks which have an active event at the same time.
22659    ///
22660    /// When tracks are merged togther, the properties for the merged track will be
22661    /// chosen from the source tracks based on the following rules:
22662    ///    - for `sibling_order_rank`: the rank of the merged track will be the
22663    ///      smallest rank among the source tracks.
22664    ///    - for all other properties: the property taken is unspecified and can
22665    ///      be any value provided by one of the source tracks. This can lead to
22666    ///      non-deterministic behavior.
22667    ///       - examples of other properties include `name`, `child_ordering` etc.
22668    ///       - because of this, it's strongly recommended to ensure that all source
22669    ///         tracks have the same value for these properties.
22670    ///       - the trace processor will also emit an error stat if it detects
22671    ///         that the properties are not the same across all source tracks.
22672    ///
22673    /// Note: merging is done *recursively* so entire trees of tracks can be merged
22674    /// together. To make this clearer, consider an example track hierarchy (in
22675    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
22676    /// track line, like "Updater", is its 'name' property):
22677    ///
22678    ///    Initial track hierarchy:
22679    ///      SystemActivity
22680    ///      ├── AuthService (smk: "auth_main_cluster")
22681    ///      │   └── LoginOp (smk: "login_v1")
22682    ///      ├── AuthService (smk: "auth_main_cluster")
22683    ///      │   └── LoginOp (smk: "login_v1")
22684    ///      ├── AuthService (smk: "auth_backup_cluster")
22685    ///      │   └── GuestOp (smk: "guest_v1")
22686    ///      └── UserProfileService (smk: "profile_cluster")
22687    ///          └── GetProfileOp (smk: "getprofile_v1")
22688    ///
22689    /// Merging outcomes:
22690    ///
22691    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
22692    ///    - The first two "AuthService" tracks merge because they share
22693    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
22694    ///      aligning with recommendations. The merged track is named "AuthService".
22695    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
22696    ///      remains separate, as its `sibling_merge_key` is different.
22697    ///    - "UserProfileService" also remains separate.
22698    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
22699    ///      "LoginOp" get merged as they have the same sibling merge key.
22700    ///
22701    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
22702    ///      SystemActivity
22703    ///      ├── AuthService (merged by smk: "auth_main_cluster")
22704    ///      │   ├── LoginOp (merged by smk: "login_v1")
22705    ///      ├── AuthService (smk: "auth_backup_cluster")
22706    ///      │   └── GuestOp (smk: "guest_v1")
22707    ///      └── UserProfileService (smk: "profile_cluster")
22708    ///          └── GetProfileOp (smk: "getprofile_v1")
22709    ///
22710    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
22711    ///    - All three tracks named "AuthService" merge because they share the same
22712    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
22713    ///      for this merged track would be taken from one of the source tracks
22714    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
22715    ///      relevant if its children had key-based merge behaviors.
22716    ///    - "UserProfileService" remains separate due to its different name.
22717    ///    - Within the single merged "AuthService" track:
22718    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
22719    ///      they have the same name.
22720    ///
22721    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
22722    ///      SystemActivity
22723    ///      ├── AuthService (merged from 3 "AuthService" tracks)
22724    ///      │   ├── LoginOp (smk: "login_v1")
22725    ///      │   └── GuestOp (smk: "guest_v1")
22726    ///      └── UserProfileService (smk: "profile_cluster")
22727    ///          └── GetProfileOp (smk: "getprofile_v1")
22728    ///
22729    /// Note: for tracks where `thread` or `process` are set, this option is
22730    /// *ignored*. See `parent_uuid` for details.
22731    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22732    #[repr(i32)]
22733    pub enum SiblingMergeBehavior {
22734        /// When unspecified or not set, defaults to
22735        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
22736        Unspecified = 0,
22737        /// Merge this track with eligible siblings which have the same `name`.
22738        ///
22739        /// This is the default behavior.option.
22740        ///
22741        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
22742        /// worked this way for years and inherited this behavior from
22743        /// chrome://tracing which has worked this way for even longer
22744        ByTrackName = 1,
22745        /// Never merge this track with any siblings. Useful if if this track has a
22746        /// specific meaning and you want to see separately from any others.
22747        None = 2,
22748        /// Merge this track with eligible siblings which have the same
22749        /// `sibling_merge_key`.
22750        BySiblingMergeKey = 3,
22751    }
22752    impl SiblingMergeBehavior {
22753        /// String value of the enum field names used in the ProtoBuf definition.
22754        ///
22755        /// The values are not transformed in any way and thus are considered stable
22756        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22757        pub fn as_str_name(&self) -> &'static str {
22758            match self {
22759                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
22760                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
22761                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
22762                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
22763            }
22764        }
22765    }
22766    /// Name of the track.
22767    ///
22768    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
22769    /// emitted before any `TrackEvent`s on the same track.
22770    ///
22771    /// Note: any name specified here will be *ignored* for the root thread scoped
22772    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
22773    /// case, the name of the track is shared by many different data sources and so
22774    /// is centrally controlled by trace processor.
22775    ///
22776    /// It's strongly recommended to only emit the name for a track uuid *once*. If
22777    /// a descriptor *has* to be emitted multiple times (e.g. between different
22778    /// processes), it's recommended to ensure that the name is consistent across
22779    /// all TrackDescriptors with the same `uuid`.
22780    ///
22781    /// If the the above recommendation is not followed and the same uuid is
22782    /// emitted with different names, it is implementation defined how the final
22783    /// name will be chosen and may change at any time.
22784    ///
22785    /// The current implementation of trace processor chooses the name in the
22786    /// following way, depending on the value of the `sibling_merge_behavior`
22787    /// field:
22788    ///
22789    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
22790    ///    * The *last* non-null name in the whole trace according to trace order
22791    ///      will be used.
22792    ///    * If no non-null name is present in the whole trace, the trace processor
22793    ///      may fall back to other sources to provide a name for the track (e.g.
22794    ///      the first event name for slice tracks, the counter name for counter
22795    ///      tracks). This is implementation defined and may change at any time.
22796    ///
22797    /// 2. If `sibling_merge_behavior` is set to any other value:
22798    ///    * The first non-null name before the first event on the track *or on any
22799    ///      descendant tracks* is processed will be used. For example, consider
22800    ///      the following sequence of events:
22801    ///        ts=100: TrackDescriptor(uuid=A)
22802    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
22803    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
22804    ///        ts=400: TrackEvent(track_uuid=B)
22805    ///      In this case, the name for track A will be "Track A" because the
22806    ///      descriptor with the name was emitted before the first event on a
22807    ///      descendant track (B).
22808    ///    * If no non-null name is present before the event is processed, the trace
22809    ///      processor may fall back to other sources to provide a name for the
22810    ///      track (e.g. the first event name for slice tracks, the counter name for
22811    ///      counter tracks). This is implementation defined and may change at any
22812    ///      time.
22813    ///    * Note on processing order: In the standard trace processor pipeline,
22814    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
22815    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
22816    ///      track, all its descriptors in the trace are processed before its
22817    ///      events. Consequently, the "first non-null name before the first event"
22818    ///      will be the name from the first `TrackDescriptor` for that track in the
22819    ///      trace file that has a non-null name. However, in a streaming parsing
22820    ///      scenario, the timestamp order of descriptors and events is significant,
22821    ///      and a descriptor arriving after an event has been processed will not be
22822    ///      used to name the track.
22823    #[derive(Clone, PartialEq, ::prost::Oneof)]
22824    pub enum StaticOrDynamicName {
22825        #[prost(string, tag="2")]
22826        Name(::prost::alloc::string::String),
22827        /// This field is only set by the SDK when perfetto::StaticString is
22828        /// provided.
22829        #[prost(string, tag="10")]
22830        StaticName(::prost::alloc::string::String),
22831        /// Equivalent to name, used just to mark that the data is coming from
22832        /// android.os.Trace.
22833        #[prost(string, tag="13")]
22834        AtraceName(::prost::alloc::string::String),
22835    }
22836    /// An opaque value which allows specifying which tracks should be merged
22837    /// together.
22838    ///
22839    /// Only meaningful when `sibling_merge_behavior` is set to
22840    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
22841    #[derive(Clone, PartialEq, ::prost::Oneof)]
22842    pub enum SiblingMergeKeyField {
22843        #[prost(string, tag="16")]
22844        SiblingMergeKey(::prost::alloc::string::String),
22845        #[prost(uint64, tag="17")]
22846        SiblingMergeKeyInt(u64),
22847    }
22848}
22849// End of protos/perfetto/trace/track_event/track_descriptor.proto
22850
22851// Begin of protos/perfetto/trace/translation/translation_table.proto
22852
22853/// Translation rules for the trace processor.
22854/// See the comments for each rule type for specific meaning.
22855#[derive(Clone, PartialEq, ::prost::Message)]
22856pub struct TranslationTable {
22857    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
22858    pub table: ::core::option::Option<translation_table::Table>,
22859}
22860/// Nested message and enum types in `TranslationTable`.
22861pub mod translation_table {
22862    #[derive(Clone, PartialEq, ::prost::Oneof)]
22863    pub enum Table {
22864        #[prost(message, tag="1")]
22865        ChromeHistogram(super::ChromeHistorgramTranslationTable),
22866        #[prost(message, tag="2")]
22867        ChromeUserEvent(super::ChromeUserEventTranslationTable),
22868        #[prost(message, tag="3")]
22869        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
22870        #[prost(message, tag="4")]
22871        SliceName(super::SliceNameTranslationTable),
22872        #[prost(message, tag="5")]
22873        ProcessTrackName(super::ProcessTrackNameTranslationTable),
22874        #[prost(message, tag="6")]
22875        ChromeStudy(super::ChromeStudyTranslationTable),
22876    }
22877}
22878/// Chrome histogram sample hash -> name translation rules.
22879#[derive(Clone, PartialEq, ::prost::Message)]
22880pub struct ChromeHistorgramTranslationTable {
22881    #[prost(map="uint64, string", tag="1")]
22882    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22883}
22884/// Chrome user event action hash -> name translation rules.
22885#[derive(Clone, PartialEq, ::prost::Message)]
22886pub struct ChromeUserEventTranslationTable {
22887    #[prost(map="uint64, string", tag="1")]
22888    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22889}
22890/// Chrome performance mark translation rules.
22891#[derive(Clone, PartialEq, ::prost::Message)]
22892pub struct ChromePerformanceMarkTranslationTable {
22893    #[prost(map="uint32, string", tag="1")]
22894    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
22895    #[prost(map="uint32, string", tag="2")]
22896    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
22897}
22898/// Raw -> deobfuscated slice name translation rules.
22899#[derive(Clone, PartialEq, ::prost::Message)]
22900pub struct SliceNameTranslationTable {
22901    #[prost(map="string, string", tag="1")]
22902    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
22903}
22904/// Raw -> deobfuscated process track name translation rules.
22905#[derive(Clone, PartialEq, ::prost::Message)]
22906pub struct ProcessTrackNameTranslationTable {
22907    #[prost(map="string, string", tag="1")]
22908    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
22909}
22910/// Chrome study hash -> name translation rules.
22911#[derive(Clone, PartialEq, ::prost::Message)]
22912pub struct ChromeStudyTranslationTable {
22913    #[prost(map="uint64, string", tag="1")]
22914    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22915}
22916// End of protos/perfetto/trace/translation/translation_table.proto
22917
22918// Begin of protos/perfetto/trace/trigger.proto
22919
22920/// When a TracingSession receives a trigger it records the boot time nanoseconds
22921/// in the TracePacket's timestamp field as well as the name of the producer that
22922/// triggered it. We emit this data so filtering can be done on triggers received
22923/// in the trace.
22924#[derive(Clone, PartialEq, ::prost::Message)]
22925pub struct Trigger {
22926    /// Name of the trigger which was received.
22927    #[prost(string, optional, tag="1")]
22928    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
22929    /// The actual producer that activated |trigger|.
22930    #[prost(string, optional, tag="2")]
22931    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
22932    /// The verified UID of the producer.
22933    #[prost(int32, optional, tag="3")]
22934    pub trusted_producer_uid: ::core::option::Option<i32>,
22935    /// The value of stop_delay_ms from the configuration.
22936    #[prost(uint64, optional, tag="4")]
22937    pub stop_delay_ms: ::core::option::Option<u64>,
22938}
22939// End of protos/perfetto/trace/trigger.proto
22940
22941// Begin of protos/perfetto/trace/ui_state.proto
22942
22943/// Common state for UIs visualizing Perfetto traces.
22944/// This message can be appended as a TracePacket by UIs to save the
22945/// visible state (e.g. scroll position/zoom state) for future opening
22946/// of the trace.
22947/// Design doc: go/trace-ui-state.
22948#[derive(Clone, PartialEq, ::prost::Message)]
22949pub struct UiState {
22950    /// The start and end bounds of the viewport of the UI in nanoseconds.
22951    ///
22952    /// This is the absolute time associated to slices and other events in
22953    /// trace processor tables (i.e. the |ts| column of most tables)
22954    #[prost(int64, optional, tag="1")]
22955    pub timeline_start_ts: ::core::option::Option<i64>,
22956    #[prost(int64, optional, tag="2")]
22957    pub timeline_end_ts: ::core::option::Option<i64>,
22958    #[prost(message, optional, tag="3")]
22959    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
22960}
22961/// Nested message and enum types in `UiState`.
22962pub mod ui_state {
22963    /// Indicates that the given process should be highlighted by the UI.
22964    #[derive(Clone, PartialEq, ::prost::Message)]
22965    pub struct HighlightProcess {
22966        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
22967        pub selector: ::core::option::Option<highlight_process::Selector>,
22968    }
22969    /// Nested message and enum types in `HighlightProcess`.
22970    pub mod highlight_process {
22971        #[derive(Clone, PartialEq, ::prost::Oneof)]
22972        pub enum Selector {
22973            /// The pid of the process to highlight. This is useful for UIs to focus
22974            /// on tracks of a particular process in the trace.
22975            ///
22976            /// If more than one process in a trace has the same pid, it is UI
22977            /// implementation specific how the process to be focused will be
22978            /// chosen.
22979            #[prost(uint32, tag="1")]
22980            Pid(u32),
22981            /// The command line of the process to highlight; for most Android apps,
22982            /// this is the package name of the app. This is useful for UIs to focus
22983            /// on a particular app in the trace.
22984            ///
22985            /// If more than one process hasthe same cmdline, it is UI implementation
22986            /// specific how the process to be focused will be chosen.
22987            #[prost(string, tag="2")]
22988            Cmdline(::prost::alloc::string::String),
22989        }
22990    }
22991}
22992// Begin of protos/perfetto/trace/trace_packet.proto
22993
22994/// TracePacket is the root object of a Perfetto trace.
22995/// A Perfetto trace is a linear sequence of TracePacket(s).
22996///
22997/// The tracing service guarantees that all TracePacket(s) written by a given
22998/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
22999/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
23000/// to the Consumer (or written into the trace file).
23001/// TracePacket(s) written by different TraceWriter(s), hence even different
23002/// data sources, can be seen in arbitrary order.
23003/// The consumer can re-establish a total order, if interested, using the packet
23004/// timestamps, after having synchronized the different clocks onto a global
23005/// clock.
23006///
23007/// The tracing service is agnostic of the content of TracePacket, with the
23008/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
23009/// the service itself.
23010///
23011/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
23012///
23013/// Next reserved id: 14 (up to 15).
23014/// Next id: 123.
23015#[derive(Clone, PartialEq, ::prost::Message)]
23016pub struct TracePacket {
23017    /// The timestamp of the TracePacket.
23018    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
23019    /// Android). It can be overridden using a different timestamp_clock_id.
23020    /// The clock domain definition in ClockSnapshot can also override:
23021    /// - The unit (default: 1ns).
23022    /// - The absolute vs delta encoding (default: absolute timestamp).
23023    #[prost(uint64, optional, tag="8")]
23024    pub timestamp: ::core::option::Option<u64>,
23025    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
23026    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
23027    /// producer-defined clock id.
23028    /// If unspecified and if no default per-sequence value has been provided via
23029    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
23030    #[prost(uint32, optional, tag="58")]
23031    pub timestamp_clock_id: ::core::option::Option<u32>,
23032    /// Trusted process id of the producer which generated this packet, written by
23033    /// the service.
23034    #[prost(int32, optional, tag="79")]
23035    pub trusted_pid: ::core::option::Option<i32>,
23036    /// Incrementally emitted interned data, valid only on the packet's sequence
23037    /// (packets with the same |trusted_packet_sequence_id|). The writer will
23038    /// usually emit new interned data in the same TracePacket that first refers to
23039    /// it (since the last reset of interning state). It may also be emitted
23040    /// proactively in advance of referring to them in later packets.
23041    #[prost(message, optional, tag="12")]
23042    pub interned_data: ::core::option::Option<InternedData>,
23043    #[prost(uint32, optional, tag="13")]
23044    pub sequence_flags: ::core::option::Option<u32>,
23045    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
23046    #[prost(bool, optional, tag="41")]
23047    pub incremental_state_cleared: ::core::option::Option<bool>,
23048    /// Default values for fields of later TracePackets emitted on this packet's
23049    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
23050    /// It must be reemitted when incremental state is cleared (see
23051    /// |incremental_state_cleared|).
23052    /// Requires that any future packet emitted on the same sequence specifies
23053    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
23054    /// TracePacketDefaults always override the global defaults for any future
23055    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
23056    #[prost(message, optional, tag="59")]
23057    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
23058    /// Flag set by the service if, for the current packet sequence (see
23059    /// |trusted_packet_sequence_id|), either:
23060    /// * this is the first packet, or
23061    /// * one or multiple packets were dropped since the last packet that the
23062    ///    consumer read from the sequence. This can happen if chunks in the trace
23063    ///    buffer are overridden before the consumer could read them when the trace
23064    ///    is configured in ring buffer mode.
23065    ///
23066    /// When packet loss occurs, incrementally emitted data (including interned
23067    /// data) on the sequence should be considered invalid up until the next packet
23068    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
23069    #[prost(bool, optional, tag="42")]
23070    pub previous_packet_dropped: ::core::option::Option<bool>,
23071    /// Flag set by a producer (starting from SDK v29) if, for the current packet
23072    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
23073    ///
23074    /// This flag can be used for distinguishing the two situations when
23075    /// processing the trace:
23076    /// 1. There are no prior events for the sequence because of data loss, e.g.
23077    ///     due to ring buffer wrapping.
23078    /// 2. There are no prior events for the sequence because it didn't start
23079    ///     before this packet (= there's definitely no preceding data loss).
23080    ///
23081    /// Given that older SDK versions do not support this flag, this flag not
23082    /// being present for a particular sequence does not necessarily imply data
23083    /// loss.
23084    #[prost(bool, optional, tag="87")]
23085    pub first_packet_on_sequence: ::core::option::Option<bool>,
23086    /// The machine ID for identifying trace packets in a multi-machine tracing
23087    /// session. Is emitted by the tracing service for producers running on a
23088    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
23089    #[prost(uint32, optional, tag="98")]
23090    pub machine_id: ::core::option::Option<u32>,
23091    #[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, 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, 900")]
23092    pub data: ::core::option::Option<trace_packet::Data>,
23093    /// Trusted user id of the producer which generated this packet. Keep in sync
23094    /// with TrustedPacket.trusted_uid.
23095    ///
23096    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
23097    /// instead.
23098    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
23099    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
23100    /// Service-assigned identifier of the packet sequence this packet belongs to.
23101    /// Uniquely identifies a producer + writer pair within the tracing session. A
23102    /// value of zero denotes an invalid ID. Keep in sync with
23103    /// TrustedPacket.trusted_packet_sequence_id.
23104    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
23105    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
23106}
23107/// Nested message and enum types in `TracePacket`.
23108pub mod trace_packet {
23109    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23110    #[repr(i32)]
23111    pub enum SequenceFlags {
23112        SeqUnspecified = 0,
23113        /// Set by the writer to indicate that it will re-emit any incremental data
23114        /// for the packet's sequence before referring to it again. This includes
23115        /// interned data as well as periodically emitted data like
23116        /// Process/ThreadDescriptors. This flag only affects the current packet
23117        /// sequence (see |trusted_packet_sequence_id|).
23118        ///
23119        /// When set, this TracePacket and subsequent TracePackets on the same
23120        /// sequence will not refer to any incremental data emitted before this
23121        /// TracePacket. For example, previously emitted interned data will be
23122        /// re-emitted if it is referred to again.
23123        ///
23124        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
23125        /// to skip packets in the sequence until the next one with this flag set, to
23126        /// ensure intact incremental data.
23127        SeqIncrementalStateCleared = 1,
23128        /// This packet requires incremental state, such as TracePacketDefaults or
23129        /// InternedData, to be parsed correctly. The trace reader should skip this
23130        /// packet if incremental state is not valid on this sequence, i.e. if no
23131        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
23132        /// current |trusted_packet_sequence_id|.
23133        SeqNeedsIncrementalState = 2,
23134    }
23135    impl SequenceFlags {
23136        /// String value of the enum field names used in the ProtoBuf definition.
23137        ///
23138        /// The values are not transformed in any way and thus are considered stable
23139        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23140        pub fn as_str_name(&self) -> &'static str {
23141            match self {
23142                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
23143                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
23144                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
23145            }
23146        }
23147    }
23148    #[derive(Clone, PartialEq, ::prost::Oneof)]
23149    pub enum Data {
23150        #[prost(message, tag="2")]
23151        ProcessTree(super::ProcessTree),
23152        #[prost(message, tag="9")]
23153        ProcessStats(super::ProcessStats),
23154        #[prost(message, tag="4")]
23155        InodeFileMap(super::InodeFileMap),
23156        #[prost(message, tag="5")]
23157        ChromeEvents(super::ChromeEventBundle),
23158        #[prost(message, tag="6")]
23159        ClockSnapshot(super::ClockSnapshot),
23160        #[prost(message, tag="7")]
23161        SysStats(super::SysStats),
23162        #[prost(message, tag="11")]
23163        TrackEvent(super::TrackEvent),
23164        // IDs up to 15 are reserved. They take only one byte to encode their
23165        // preamble so should be used for frequent events.
23166
23167        #[prost(message, tag="89")]
23168        TraceUuid(super::TraceUuid),
23169        #[prost(message, tag="33")]
23170        TraceConfig(super::TraceConfig),
23171        #[prost(message, tag="34")]
23172        FtraceStats(super::FtraceStats),
23173        #[prost(message, tag="35")]
23174        TraceStats(super::TraceStats),
23175        #[prost(message, tag="37")]
23176        ProfilePacket(super::ProfilePacket),
23177        #[prost(message, tag="74")]
23178        StreamingAllocation(super::StreamingAllocation),
23179        #[prost(message, tag="75")]
23180        StreamingFree(super::StreamingFree),
23181        #[prost(message, tag="38")]
23182        Battery(super::BatteryCounters),
23183        #[prost(message, tag="40")]
23184        PowerRails(super::PowerRails),
23185        #[prost(message, tag="39")]
23186        AndroidLog(super::AndroidLogPacket),
23187        #[prost(message, tag="45")]
23188        SystemInfo(super::SystemInfo),
23189        #[prost(message, tag="46")]
23190        Trigger(super::Trigger),
23191        #[prost(message, tag="109")]
23192        ChromeTrigger(super::ChromeTrigger),
23193        #[prost(message, tag="47")]
23194        PackagesList(super::PackagesList),
23195        #[prost(message, tag="48")]
23196        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
23197        #[prost(message, tag="49")]
23198        PerfettoMetatrace(super::PerfettoMetatrace),
23199        #[prost(message, tag="51")]
23200        ChromeMetadata(super::ChromeMetadataPacket),
23201        #[prost(message, tag="52")]
23202        GpuCounterEvent(super::GpuCounterEvent),
23203        #[prost(message, tag="53")]
23204        GpuRenderStageEvent(super::GpuRenderStageEvent),
23205        #[prost(message, tag="54")]
23206        StreamingProfilePacket(super::StreamingProfilePacket),
23207        #[prost(message, tag="56")]
23208        HeapGraph(super::HeapGraph),
23209        #[prost(message, tag="57")]
23210        GraphicsFrameEvent(super::GraphicsFrameEvent),
23211        #[prost(message, tag="62")]
23212        VulkanMemoryEvent(super::VulkanMemoryEvent),
23213        #[prost(message, tag="63")]
23214        GpuLog(super::GpuLog),
23215        #[prost(message, tag="65")]
23216        VulkanApiEvent(super::VulkanApiEvent),
23217        #[prost(message, tag="66")]
23218        PerfSample(super::PerfSample),
23219        #[prost(message, tag="67")]
23220        CpuInfo(super::CpuInfo),
23221        #[prost(message, tag="68")]
23222        SmapsPacket(super::SmapsPacket),
23223        #[prost(message, tag="69")]
23224        ServiceEvent(super::TracingServiceEvent),
23225        #[prost(message, tag="70")]
23226        InitialDisplayState(super::InitialDisplayState),
23227        #[prost(message, tag="71")]
23228        GpuMemTotalEvent(super::GpuMemTotalEvent),
23229        #[prost(message, tag="73")]
23230        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
23231        #[prost(message, tag="76")]
23232        FrameTimelineEvent(super::FrameTimelineEvent),
23233        #[prost(message, tag="77")]
23234        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
23235        #[prost(message, tag="78")]
23236        UiState(super::UiState),
23237        #[prost(message, tag="80")]
23238        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
23239        #[prost(message, tag="81")]
23240        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
23241        #[prost(message, tag="82")]
23242        TranslationTable(super::TranslationTable),
23243        #[prost(message, tag="83")]
23244        AndroidGameInterventionList(super::AndroidGameInterventionList),
23245        #[prost(message, tag="84")]
23246        StatsdAtom(super::StatsdAtom),
23247        #[prost(message, tag="86")]
23248        AndroidSystemProperty(super::AndroidSystemProperty),
23249        #[prost(message, tag="91")]
23250        EntityStateResidency(super::EntityStateResidency),
23251        /// Only used in profile packets.
23252        #[prost(message, tag="61")]
23253        ModuleSymbols(super::ModuleSymbols),
23254        #[prost(message, tag="64")]
23255        DeobfuscationMapping(super::DeobfuscationMapping),
23256        /// Only used by TrackEvent.
23257        #[prost(message, tag="60")]
23258        TrackDescriptor(super::TrackDescriptor),
23259        /// Deprecated, use TrackDescriptor instead.
23260        #[prost(message, tag="43")]
23261        ProcessDescriptor(super::ProcessDescriptor),
23262        /// Deprecated, use TrackDescriptor instead.
23263        #[prost(message, tag="44")]
23264        ThreadDescriptor(super::ThreadDescriptor),
23265        /// Events from the Linux kernel ftrace infrastructure.
23266        #[prost(message, tag="1")]
23267        FtraceEvents(super::FtraceEventBundle),
23268        /// This field is emitted at periodic intervals (~10s) and
23269        /// contains always the binary representation of the UUID
23270        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
23271        /// efficiently partition long traces without having to fully parse them.
23272        #[prost(bytes, tag="36")]
23273        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
23274        /// Zero or more proto encoded trace packets compressed using deflate.
23275        /// Each compressed_packets TracePacket (including the two field ids and
23276        /// sizes) should be less than 512KB.
23277        #[prost(bytes, tag="50")]
23278        CompressedPackets(::prost::alloc::vec::Vec<u8>),
23279        /// Data sources can extend the trace proto with custom extension protos (see
23280        /// docs/design-docs/extensions.md). When they do that, the descriptor of
23281        /// their extension proto descriptor is serialized in this packet. This
23282        /// allows trace_processor to deserialize extended messages using reflection
23283        /// even if the extension proto is not checked in the Perfetto repo.
23284        #[prost(message, tag="72")]
23285        ExtensionDescriptor(super::ExtensionDescriptor),
23286        /// Represents a single packet sent or received by the network.
23287        #[prost(message, tag="88")]
23288        NetworkPacket(super::NetworkPacketEvent),
23289        /// Represents one or more packets sent or received by the network.
23290        #[prost(message, tag="92")]
23291        NetworkPacketBundle(super::NetworkPacketBundle),
23292        /// The "range of interest" for track events. See the message definition
23293        /// comments for more details.
23294        #[prost(message, tag="90")]
23295        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
23296        /// Winscope traces
23297        #[prost(message, tag="93")]
23298        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
23299        #[prost(message, tag="94")]
23300        SurfaceflingerTransactions(super::TransactionTraceEntry),
23301        #[prost(message, tag="96")]
23302        ShellTransition(super::ShellTransition),
23303        #[prost(message, tag="97")]
23304        ShellHandlerMappings(super::ShellHandlerMappings),
23305        #[prost(message, tag="104")]
23306        ProtologMessage(super::ProtoLogMessage),
23307        #[prost(message, tag="105")]
23308        ProtologViewerConfig(super::ProtoLogViewerConfig),
23309        #[prost(message, tag="112")]
23310        WinscopeExtensions(super::WinscopeExtensions),
23311        /// Events from the Windows etw infrastructure.
23312        #[prost(message, tag="95")]
23313        EtwEvents(super::EtwTraceEventBundle),
23314        #[prost(message, tag="99")]
23315        V8JsCode(super::V8JsCode),
23316        #[prost(message, tag="100")]
23317        V8InternalCode(super::V8InternalCode),
23318        #[prost(message, tag="101")]
23319        V8WasmCode(super::V8WasmCode),
23320        #[prost(message, tag="102")]
23321        V8RegExpCode(super::V8RegExpCode),
23322        #[prost(message, tag="103")]
23323        V8CodeMove(super::V8CodeMove),
23324        /// Clock synchronization with remote machines.
23325        #[prost(message, tag="107")]
23326        RemoteClockSync(super::RemoteClockSync),
23327        #[prost(message, tag="110")]
23328        PixelModemEvents(super::PixelModemEvents),
23329        #[prost(message, tag="111")]
23330        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
23331        #[prost(message, tag="113")]
23332        CloneSnapshotTrigger(super::Trigger),
23333        #[prost(message, tag="114")]
23334        BluetoothTraceEvent(super::BluetoothTraceEvent),
23335        #[prost(message, tag="115")]
23336        KernelWakelockData(super::KernelWakelockData),
23337        #[prost(message, tag="116")]
23338        AppWakelockBundle(super::AppWakelockBundle),
23339        /// Generic events for a standard kernel implementation
23340        #[prost(message, tag="117")]
23341        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
23342        #[prost(message, tag="118")]
23343        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
23344        #[prost(message, tag="120")]
23345        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
23346        #[prost(message, tag="122")]
23347        GenericKernelProcessTree(super::GenericKernelProcessTree),
23348        #[prost(message, tag="119")]
23349        CpuPerUidData(super::CpuPerUidData),
23350        #[prost(message, tag="121")]
23351        EvdevEvent(super::EvdevEvent),
23352        /// This field is only used for testing.
23353        /// In previous versions of this proto this field had the id 268435455
23354        /// This caused many problems:
23355        /// - protozero decoder does not handle field ids larger than 999.
23356        /// - old versions of protoc produce Java bindings with syntax errors when
23357        ///    the field id is large enough.
23358        #[prost(message, tag="900")]
23359        ForTesting(super::TestEvent),
23360    }
23361    /// Trusted user id of the producer which generated this packet. Keep in sync
23362    /// with TrustedPacket.trusted_uid.
23363    ///
23364    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
23365    /// instead.
23366    #[derive(Clone, PartialEq, ::prost::Oneof)]
23367    pub enum OptionalTrustedUid {
23368        #[prost(int32, tag="3")]
23369        TrustedUid(i32),
23370    }
23371    /// Service-assigned identifier of the packet sequence this packet belongs to.
23372    /// Uniquely identifies a producer + writer pair within the tracing session. A
23373    /// value of zero denotes an invalid ID. Keep in sync with
23374    /// TrustedPacket.trusted_packet_sequence_id.
23375    #[derive(Clone, PartialEq, ::prost::Oneof)]
23376    pub enum OptionalTrustedPacketSequenceId {
23377        #[prost(uint32, tag="10")]
23378        TrustedPacketSequenceId(u32),
23379    }
23380}
23381// End of protos/perfetto/trace/trace_packet.proto
23382
23383// Begin of protos/perfetto/trace/trace.proto
23384
23385#[derive(Clone, PartialEq, ::prost::Message)]
23386pub struct Trace {
23387    #[prost(message, repeated, tag="1")]
23388    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
23389}
23390// End of protos/perfetto/common/tracing_service_state.proto
23391
23392// Begin of protos/perfetto/common/builtin_clock.proto
23393
23394#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23395#[repr(i32)]
23396pub enum BuiltinClock {
23397    Unknown = 0,
23398    Realtime = 1,
23399    RealtimeCoarse = 2,
23400    Monotonic = 3,
23401    MonotonicCoarse = 4,
23402    MonotonicRaw = 5,
23403    Boottime = 6,
23404    Tsc = 9,
23405    Perf = 10,
23406    MaxId = 63,
23407}
23408impl BuiltinClock {
23409    /// String value of the enum field names used in the ProtoBuf definition.
23410    ///
23411    /// The values are not transformed in any way and thus are considered stable
23412    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23413    pub fn as_str_name(&self) -> &'static str {
23414        match self {
23415            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
23416            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
23417            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
23418            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
23419            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
23420            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
23421            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
23422            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
23423            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
23424            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
23425        }
23426    }
23427}
23428// End of protos/perfetto/config/android/android_input_event_config.proto
23429
23430// Begin of protos/perfetto/common/android_log_constants.proto
23431
23432/// Values from NDK's android/log.h.
23433#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23434#[repr(i32)]
23435pub enum AndroidLogId {
23436    /// MAIN.
23437    LidDefault = 0,
23438    LidRadio = 1,
23439    LidEvents = 2,
23440    LidSystem = 3,
23441    LidCrash = 4,
23442    LidStats = 5,
23443    LidSecurity = 6,
23444    LidKernel = 7,
23445}
23446impl AndroidLogId {
23447    /// String value of the enum field names used in the ProtoBuf definition.
23448    ///
23449    /// The values are not transformed in any way and thus are considered stable
23450    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23451    pub fn as_str_name(&self) -> &'static str {
23452        match self {
23453            AndroidLogId::LidDefault => "LID_DEFAULT",
23454            AndroidLogId::LidRadio => "LID_RADIO",
23455            AndroidLogId::LidEvents => "LID_EVENTS",
23456            AndroidLogId::LidSystem => "LID_SYSTEM",
23457            AndroidLogId::LidCrash => "LID_CRASH",
23458            AndroidLogId::LidStats => "LID_STATS",
23459            AndroidLogId::LidSecurity => "LID_SECURITY",
23460            AndroidLogId::LidKernel => "LID_KERNEL",
23461        }
23462    }
23463}
23464#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23465#[repr(i32)]
23466pub enum AndroidLogPriority {
23467    PrioUnspecified = 0,
23468    /// _DEFAULT, but should never be seen in logs.
23469    PrioUnused = 1,
23470    PrioVerbose = 2,
23471    PrioDebug = 3,
23472    PrioInfo = 4,
23473    PrioWarn = 5,
23474    PrioError = 6,
23475    PrioFatal = 7,
23476}
23477impl AndroidLogPriority {
23478    /// String value of the enum field names used in the ProtoBuf definition.
23479    ///
23480    /// The values are not transformed in any way and thus are considered stable
23481    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23482    pub fn as_str_name(&self) -> &'static str {
23483        match self {
23484            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
23485            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
23486            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
23487            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
23488            AndroidLogPriority::PrioInfo => "PRIO_INFO",
23489            AndroidLogPriority::PrioWarn => "PRIO_WARN",
23490            AndroidLogPriority::PrioError => "PRIO_ERROR",
23491            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
23492        }
23493    }
23494}
23495// End of protos/perfetto/config/android/pixel_modem_config.proto
23496
23497// Begin of protos/perfetto/common/protolog_common.proto
23498
23499#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23500#[repr(i32)]
23501pub enum ProtoLogLevel {
23502    ProtologLevelUndefined = 0,
23503    ProtologLevelDebug = 1,
23504    ProtologLevelVerbose = 2,
23505    ProtologLevelInfo = 3,
23506    ProtologLevelWarn = 4,
23507    ProtologLevelError = 5,
23508    ProtologLevelWtf = 6,
23509}
23510impl ProtoLogLevel {
23511    /// String value of the enum field names used in the ProtoBuf definition.
23512    ///
23513    /// The values are not transformed in any way and thus are considered stable
23514    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23515    pub fn as_str_name(&self) -> &'static str {
23516        match self {
23517            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
23518            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
23519            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
23520            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
23521            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
23522            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
23523            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
23524        }
23525    }
23526}
23527// End of protos/perfetto/config/profiling/perf_event_config.proto
23528
23529// Begin of protos/perfetto/config/statsd/atom_ids.proto
23530
23531/// This enum is obtained by post-processing
23532/// AOSP/frameworks/proto_logging/stats/atoms.proto through
23533/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
23534/// enum value for each proto field defined in the upstream atoms.proto.
23535#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23536#[repr(i32)]
23537pub enum AtomId {
23538    AtomUnspecified = 0,
23539    AtomBleScanStateChanged = 2,
23540    AtomProcessStateChanged = 3,
23541    AtomBleScanResultReceived = 4,
23542    AtomSensorStateChanged = 5,
23543    AtomGpsScanStateChanged = 6,
23544    AtomSyncStateChanged = 7,
23545    AtomScheduledJobStateChanged = 8,
23546    AtomScreenBrightnessChanged = 9,
23547    AtomWakelockStateChanged = 10,
23548    AtomLongPartialWakelockStateChanged = 11,
23549    AtomMobileRadioPowerStateChanged = 12,
23550    AtomWifiRadioPowerStateChanged = 13,
23551    AtomActivityManagerSleepStateChanged = 14,
23552    AtomMemoryFactorStateChanged = 15,
23553    AtomExcessiveCpuUsageReported = 16,
23554    AtomCachedKillReported = 17,
23555    AtomProcessMemoryStatReported = 18,
23556    AtomLauncherEvent = 19,
23557    AtomBatterySaverModeStateChanged = 20,
23558    AtomDeviceIdleModeStateChanged = 21,
23559    AtomDeviceIdlingModeStateChanged = 22,
23560    AtomAudioStateChanged = 23,
23561    AtomMediaCodecStateChanged = 24,
23562    AtomCameraStateChanged = 25,
23563    AtomFlashlightStateChanged = 26,
23564    AtomUidProcessStateChanged = 27,
23565    AtomProcessLifeCycleStateChanged = 28,
23566    AtomScreenStateChanged = 29,
23567    AtomBatteryLevelChanged = 30,
23568    AtomChargingStateChanged = 31,
23569    AtomPluggedStateChanged = 32,
23570    AtomInteractiveStateChanged = 33,
23571    AtomTouchEventReported = 34,
23572    AtomWakeupAlarmOccurred = 35,
23573    AtomKernelWakeupReported = 36,
23574    AtomWifiLockStateChanged = 37,
23575    AtomWifiSignalStrengthChanged = 38,
23576    AtomWifiScanStateChanged = 39,
23577    AtomPhoneSignalStrengthChanged = 40,
23578    AtomSettingChanged = 41,
23579    AtomActivityForegroundStateChanged = 42,
23580    AtomIsolatedUidChanged = 43,
23581    AtomPacketWakeupOccurred = 44,
23582    AtomWallClockTimeShifted = 45,
23583    AtomAnomalyDetected = 46,
23584    AtomAppBreadcrumbReported = 47,
23585    AtomAppStartOccurred = 48,
23586    AtomAppStartCanceled = 49,
23587    AtomAppStartFullyDrawn = 50,
23588    AtomLmkKillOccurred = 51,
23589    AtomPictureInPictureStateChanged = 52,
23590    AtomWifiMulticastLockStateChanged = 53,
23591    AtomAppStartMemoryStateCaptured = 55,
23592    AtomShutdownSequenceReported = 56,
23593    AtomBootSequenceReported = 57,
23594    AtomOverlayStateChanged = 59,
23595    AtomForegroundServiceStateChanged = 60,
23596    AtomCallStateChanged = 61,
23597    AtomKeyguardStateChanged = 62,
23598    AtomKeyguardBouncerStateChanged = 63,
23599    AtomKeyguardBouncerPasswordEntered = 64,
23600    AtomAppDied = 65,
23601    AtomResourceConfigurationChanged = 66,
23602    AtomBluetoothEnabledStateChanged = 67,
23603    AtomBluetoothConnectionStateChanged = 68,
23604    AtomGpsSignalQualityChanged = 69,
23605    AtomUsbConnectorStateChanged = 70,
23606    AtomSpeakerImpedanceReported = 71,
23607    AtomHardwareFailed = 72,
23608    AtomPhysicalDropDetected = 73,
23609    AtomChargeCyclesReported = 74,
23610    AtomMobileConnectionStateChanged = 75,
23611    AtomMobileRadioTechnologyChanged = 76,
23612    AtomUsbDeviceAttached = 77,
23613    AtomAppCrashOccurred = 78,
23614    AtomAnrOccurred = 79,
23615    AtomWtfOccurred = 80,
23616    AtomLowMemReported = 81,
23617    AtomGenericAtom = 82,
23618    AtomVibratorStateChanged = 84,
23619    AtomDeferredJobStatsReported = 85,
23620    AtomThermalThrottling = 86,
23621    AtomBiometricAcquired = 87,
23622    AtomBiometricAuthenticated = 88,
23623    AtomBiometricErrorOccurred = 89,
23624    AtomUiEventReported = 90,
23625    AtomBatteryHealthSnapshot = 91,
23626    AtomSlowIo = 92,
23627    AtomBatteryCausedShutdown = 93,
23628    AtomPhoneServiceStateChanged = 94,
23629    AtomPhoneStateChanged = 95,
23630    AtomUserRestrictionChanged = 96,
23631    AtomSettingsUiChanged = 97,
23632    AtomConnectivityStateChanged = 98,
23633    AtomServiceStateChanged = 99,
23634    AtomServiceLaunchReported = 100,
23635    AtomFlagFlipUpdateOccurred = 101,
23636    AtomBinaryPushStateChanged = 102,
23637    AtomDevicePolicyEvent = 103,
23638    AtomDocsUiFileOpCanceled = 104,
23639    AtomDocsUiFileOpCopyMoveModeReported = 105,
23640    AtomDocsUiFileOpFailure = 106,
23641    AtomDocsUiProviderFileOp = 107,
23642    AtomDocsUiInvalidScopedAccessRequest = 108,
23643    AtomDocsUiLaunchReported = 109,
23644    AtomDocsUiRootVisited = 110,
23645    AtomDocsUiStartupMs = 111,
23646    AtomDocsUiUserActionReported = 112,
23647    AtomWifiEnabledStateChanged = 113,
23648    AtomWifiRunningStateChanged = 114,
23649    AtomAppCompacted = 115,
23650    AtomNetworkDnsEventReported = 116,
23651    AtomDocsUiPickerLaunchedFromReported = 117,
23652    AtomDocsUiPickResultReported = 118,
23653    AtomDocsUiSearchModeReported = 119,
23654    AtomDocsUiSearchTypeReported = 120,
23655    AtomDataStallEvent = 121,
23656    AtomRescuePartyResetReported = 122,
23657    AtomSignedConfigReported = 123,
23658    AtomGnssNiEventReported = 124,
23659    AtomBluetoothLinkLayerConnectionEvent = 125,
23660    AtomBluetoothAclConnectionStateChanged = 126,
23661    AtomBluetoothScoConnectionStateChanged = 127,
23662    AtomAppDowngraded = 128,
23663    AtomAppOptimizedAfterDowngraded = 129,
23664    AtomLowStorageStateChanged = 130,
23665    AtomGnssNfwNotificationReported = 131,
23666    AtomGnssConfigurationReported = 132,
23667    AtomUsbPortOverheatEventReported = 133,
23668    AtomNfcErrorOccurred = 134,
23669    AtomNfcStateChanged = 135,
23670    AtomNfcBeamOccurred = 136,
23671    AtomNfcCardemulationOccurred = 137,
23672    AtomNfcTagOccurred = 138,
23673    AtomNfcHceTransactionOccurred = 139,
23674    AtomSeStateChanged = 140,
23675    AtomSeOmapiReported = 141,
23676    AtomBroadcastDispatchLatencyReported = 142,
23677    AtomAttentionManagerServiceResultReported = 143,
23678    AtomAdbConnectionChanged = 144,
23679    AtomSpeechDspStatReported = 145,
23680    AtomUsbContaminantReported = 146,
23681    AtomWatchdogRollbackOccurred = 147,
23682    AtomBiometricSystemHealthIssueDetected = 148,
23683    AtomBubbleUiChanged = 149,
23684    AtomScheduledJobConstraintChanged = 150,
23685    AtomBluetoothActiveDeviceChanged = 151,
23686    AtomBluetoothA2dpPlaybackStateChanged = 152,
23687    AtomBluetoothA2dpCodecConfigChanged = 153,
23688    AtomBluetoothA2dpCodecCapabilityChanged = 154,
23689    AtomBluetoothA2dpAudioUnderrunReported = 155,
23690    AtomBluetoothA2dpAudioOverrunReported = 156,
23691    AtomBluetoothDeviceRssiReported = 157,
23692    AtomBluetoothDeviceFailedContactCounterReported = 158,
23693    AtomBluetoothDeviceTxPowerLevelReported = 159,
23694    AtomBluetoothHciTimeoutReported = 160,
23695    AtomBluetoothQualityReportReported = 161,
23696    AtomBluetoothDeviceInfoReported = 162,
23697    AtomBluetoothRemoteVersionInfoReported = 163,
23698    AtomBluetoothSdpAttributeReported = 164,
23699    AtomBluetoothBondStateChanged = 165,
23700    AtomBluetoothClassicPairingEventReported = 166,
23701    AtomBluetoothSmpPairingEventReported = 167,
23702    AtomScreenTimeoutExtensionReported = 168,
23703    AtomProcessStartTime = 169,
23704    AtomPermissionGrantRequestResultReported = 170,
23705    AtomBluetoothSocketConnectionStateChanged = 171,
23706    AtomDeviceIdentifierAccessDenied = 172,
23707    AtomBubbleDeveloperErrorReported = 173,
23708    AtomAssistGestureStageReported = 174,
23709    AtomAssistGestureFeedbackReported = 175,
23710    AtomAssistGestureProgressReported = 176,
23711    AtomTouchGestureClassified = 177,
23712    AtomHiddenApiUsed = 178,
23713    AtomStyleUiChanged = 179,
23714    AtomPrivacyIndicatorsInteracted = 180,
23715    AtomAppInstallOnExternalStorageReported = 181,
23716    AtomNetworkStackReported = 182,
23717    AtomAppMovedStorageReported = 183,
23718    AtomBiometricEnrolled = 184,
23719    AtomSystemServerWatchdogOccurred = 185,
23720    AtomTombStoneOccurred = 186,
23721    AtomBluetoothClassOfDeviceReported = 187,
23722    AtomIntelligenceEventReported = 188,
23723    AtomThermalThrottlingSeverityStateChanged = 189,
23724    AtomRoleRequestResultReported = 190,
23725    AtomMediametricsAudiopolicyReported = 191,
23726    AtomMediametricsAudiorecordReported = 192,
23727    AtomMediametricsAudiothreadReported = 193,
23728    AtomMediametricsAudiotrackReported = 194,
23729    AtomMediametricsCodecReported = 195,
23730    AtomMediametricsDrmWidevineReported = 196,
23731    AtomMediametricsExtractorReported = 197,
23732    AtomMediametricsMediadrmReported = 198,
23733    AtomMediametricsNuplayerReported = 199,
23734    AtomMediametricsRecorderReported = 200,
23735    AtomMediametricsDrmmanagerReported = 201,
23736    AtomCarPowerStateChanged = 203,
23737    AtomGarageModeInfo = 204,
23738    AtomTestAtomReported = 205,
23739    AtomContentCaptureCallerMismatchReported = 206,
23740    AtomContentCaptureServiceEvents = 207,
23741    AtomContentCaptureSessionEvents = 208,
23742    AtomContentCaptureFlushed = 209,
23743    AtomLocationManagerApiUsageReported = 210,
23744    AtomReviewPermissionsFragmentResultReported = 211,
23745    AtomRuntimePermissionsUpgradeResult = 212,
23746    AtomGrantPermissionsActivityButtonActions = 213,
23747    AtomLocationAccessCheckNotificationAction = 214,
23748    AtomAppPermissionFragmentActionReported = 215,
23749    AtomAppPermissionFragmentViewed = 216,
23750    AtomAppPermissionsFragmentViewed = 217,
23751    AtomPermissionAppsFragmentViewed = 218,
23752    AtomTextSelectionEvent = 219,
23753    AtomTextLinkifyEvent = 220,
23754    AtomConversationActionsEvent = 221,
23755    AtomLanguageDetectionEvent = 222,
23756    AtomExclusionRectStateChanged = 223,
23757    AtomBackGestureReportedReported = 224,
23758    AtomUpdateEngineUpdateAttemptReported = 225,
23759    AtomUpdateEngineSuccessfulUpdateReported = 226,
23760    AtomCameraActionEvent = 227,
23761    AtomAppCompatibilityChangeReported = 228,
23762    AtomPerfettoUploaded = 229,
23763    AtomVmsClientConnectionStateChanged = 230,
23764    AtomMediaProviderScanOccurred = 233,
23765    AtomMediaContentDeleted = 234,
23766    AtomMediaProviderPermissionRequested = 235,
23767    AtomMediaProviderSchemaChanged = 236,
23768    AtomMediaProviderIdleMaintenanceFinished = 237,
23769    AtomRebootEscrowRecoveryReported = 238,
23770    AtomBootTimeEventDurationReported = 239,
23771    AtomBootTimeEventElapsedTimeReported = 240,
23772    AtomBootTimeEventUtcTimeReported = 241,
23773    AtomBootTimeEventErrorCodeReported = 242,
23774    AtomUserspaceRebootReported = 243,
23775    AtomNotificationReported = 244,
23776    AtomNotificationPanelReported = 245,
23777    AtomNotificationChannelModified = 246,
23778    AtomIntegrityCheckResultReported = 247,
23779    AtomIntegrityRulesPushed = 248,
23780    AtomCbMessageReported = 249,
23781    AtomCbMessageError = 250,
23782    AtomWifiHealthStatReported = 251,
23783    AtomWifiFailureStatReported = 252,
23784    AtomWifiConnectionResultReported = 253,
23785    AtomAppFreezeChanged = 254,
23786    AtomSnapshotMergeReported = 255,
23787    AtomForegroundServiceAppOpSessionEnded = 256,
23788    AtomDisplayJankReported = 257,
23789    AtomAppStandbyBucketChanged = 258,
23790    AtomSharesheetStarted = 259,
23791    AtomRankingSelected = 260,
23792    AtomTvsettingsUiInteracted = 261,
23793    AtomLauncherSnapshot = 262,
23794    AtomPackageInstallerV2Reported = 263,
23795    AtomUserLifecycleJourneyReported = 264,
23796    AtomUserLifecycleEventOccurred = 265,
23797    AtomAccessibilityShortcutReported = 266,
23798    AtomAccessibilityServiceReported = 267,
23799    AtomDocsUiDragAndDropReported = 268,
23800    AtomAppUsageEventOccurred = 269,
23801    AtomAutoRevokeNotificationClicked = 270,
23802    AtomAutoRevokeFragmentAppViewed = 271,
23803    AtomAutoRevokedAppInteraction = 272,
23804    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
23805    AtomEvsUsageStatsReported = 274,
23806    AtomAudioPowerUsageDataReported = 275,
23807    AtomTvTunerStateChanged = 276,
23808    AtomMediaoutputOpSwitchReported = 277,
23809    AtomCbMessageFiltered = 278,
23810    AtomTvTunerDvrStatus = 279,
23811    AtomTvCasSessionOpenStatus = 280,
23812    AtomAssistantInvocationReported = 281,
23813    AtomDisplayWakeReported = 282,
23814    AtomCarUserHalModifyUserRequestReported = 283,
23815    AtomCarUserHalModifyUserResponseReported = 284,
23816    AtomCarUserHalPostSwitchResponseReported = 285,
23817    AtomCarUserHalInitialUserInfoRequestReported = 286,
23818    AtomCarUserHalInitialUserInfoResponseReported = 287,
23819    AtomCarUserHalUserAssociationRequestReported = 288,
23820    AtomCarUserHalSetUserAssociationResponseReported = 289,
23821    AtomNetworkIpProvisioningReported = 290,
23822    AtomNetworkDhcpRenewReported = 291,
23823    AtomNetworkValidationReported = 292,
23824    AtomNetworkStackQuirkReported = 293,
23825    AtomMediametricsAudiorecorddeviceusageReported = 294,
23826    AtomMediametricsAudiothreaddeviceusageReported = 295,
23827    AtomMediametricsAudiotrackdeviceusageReported = 296,
23828    AtomMediametricsAudiodeviceconnectionReported = 297,
23829    AtomBlobCommitted = 298,
23830    AtomBlobLeased = 299,
23831    AtomBlobOpened = 300,
23832    AtomContactsProviderStatusReported = 301,
23833    AtomKeystoreKeyEventReported = 302,
23834    AtomNetworkTetheringReported = 303,
23835    AtomImeTouchReported = 304,
23836    AtomUiInteractionFrameInfoReported = 305,
23837    AtomUiActionLatencyReported = 306,
23838    AtomWifiDisconnectReported = 307,
23839    AtomWifiConnectionStateChanged = 308,
23840    AtomHdmiCecActiveSourceChanged = 309,
23841    AtomHdmiCecMessageReported = 310,
23842    AtomAirplaneMode = 311,
23843    AtomModemRestart = 312,
23844    AtomCarrierIdMismatchReported = 313,
23845    AtomCarrierIdTableUpdated = 314,
23846    AtomDataStallRecoveryReported = 315,
23847    AtomMediametricsMediaparserReported = 316,
23848    AtomTlsHandshakeReported = 317,
23849    AtomTextClassifierApiUsageReported = 318,
23850    AtomCarWatchdogKillStatsReported = 319,
23851    AtomMediametricsPlaybackReported = 320,
23852    AtomMediaNetworkInfoChanged = 321,
23853    AtomMediaPlaybackStateChanged = 322,
23854    AtomMediaPlaybackErrorReported = 323,
23855    AtomMediaPlaybackTrackChanged = 324,
23856    AtomWifiScanReported = 325,
23857    AtomWifiPnoScanReported = 326,
23858    AtomTifTuneChanged = 327,
23859    AtomAutoRotateReported = 328,
23860    AtomPerfettoTrigger = 329,
23861    AtomTranscodingData = 330,
23862    AtomImsServiceEntitlementUpdated = 331,
23863    AtomDeviceRotated = 333,
23864    AtomSimSpecificSettingsRestored = 334,
23865    AtomTextClassifierDownloadReported = 335,
23866    AtomPinStorageEvent = 336,
23867    AtomFaceDownReported = 337,
23868    AtomBluetoothHalCrashReasonReported = 338,
23869    AtomRebootEscrowPreparationReported = 339,
23870    AtomRebootEscrowLskfCaptureReported = 340,
23871    AtomRebootEscrowRebootReported = 341,
23872    AtomBinderLatencyReported = 342,
23873    AtomMediametricsAaudiostreamReported = 343,
23874    AtomMediaTranscodingSessionEnded = 344,
23875    AtomMagnificationUsageReported = 345,
23876    AtomMagnificationModeWithImeOnReported = 346,
23877    AtomAppSearchCallStatsReported = 347,
23878    AtomAppSearchPutDocumentStatsReported = 348,
23879    AtomDeviceControlChanged = 349,
23880    AtomDeviceStateChanged = 350,
23881    AtomInputdeviceRegistered = 351,
23882    AtomSmartspaceCardReported = 352,
23883    AtomAuthPromptAuthenticateInvoked = 353,
23884    AtomAuthManagerCanAuthenticateInvoked = 354,
23885    AtomAuthEnrollActionInvoked = 355,
23886    AtomAuthDeprecatedApiUsed = 356,
23887    AtomUnattendedRebootOccurred = 357,
23888    AtomLongRebootBlockingReported = 358,
23889    AtomLocationTimeZoneProviderStateChanged = 359,
23890    AtomFdtrackEventOccurred = 364,
23891    AtomTimeoutAutoExtendedReported = 365,
23892    AtomAlarmBatchDelivered = 367,
23893    AtomAlarmScheduled = 368,
23894    AtomCarWatchdogIoOveruseStatsReported = 369,
23895    AtomUserLevelHibernationStateChanged = 370,
23896    AtomAppSearchInitializeStatsReported = 371,
23897    AtomAppSearchQueryStatsReported = 372,
23898    AtomAppProcessDied = 373,
23899    AtomNetworkIpReachabilityMonitorReported = 374,
23900    AtomSlowInputEventReported = 375,
23901    AtomAnrOccurredProcessingStarted = 376,
23902    AtomAppSearchRemoveStatsReported = 377,
23903    AtomMediaCodecReported = 378,
23904    AtomPermissionUsageFragmentInteraction = 379,
23905    AtomPermissionDetailsInteraction = 380,
23906    AtomPrivacySensorToggleInteraction = 381,
23907    AtomPrivacyToggleDialogInteraction = 382,
23908    AtomAppSearchOptimizeStatsReported = 383,
23909    AtomNonA11yToolServiceWarningReport = 384,
23910    AtomAppCompatStateChanged = 386,
23911    AtomSizeCompatRestartButtonEventReported = 387,
23912    AtomSplitscreenUiChanged = 388,
23913    AtomNetworkDnsHandshakeReported = 389,
23914    AtomBluetoothCodePathCounter = 390,
23915    AtomBluetoothLeBatchScanReportDelay = 392,
23916    AtomAccessibilityFloatingMenuUiChanged = 393,
23917    AtomNeuralnetworksCompilationCompleted = 394,
23918    AtomNeuralnetworksExecutionCompleted = 395,
23919    AtomNeuralnetworksCompilationFailed = 396,
23920    AtomNeuralnetworksExecutionFailed = 397,
23921    AtomContextHubBooted = 398,
23922    AtomContextHubRestarted = 399,
23923    AtomContextHubLoadedNanoappSnapshotReported = 400,
23924    AtomChreCodeDownloadTransacted = 401,
23925    AtomUwbSessionInited = 402,
23926    AtomUwbSessionClosed = 403,
23927    AtomUwbFirstRangingReceived = 404,
23928    AtomUwbRangingMeasurementReceived = 405,
23929    AtomTextClassifierDownloadWorkScheduled = 406,
23930    AtomTextClassifierDownloadWorkCompleted = 407,
23931    AtomClipboardCleared = 408,
23932    AtomVmCreationRequested = 409,
23933    AtomNearbyDeviceScanStateChanged = 410,
23934    AtomApplicationLocalesChanged = 412,
23935    AtomMediametricsAudiotrackstatusReported = 413,
23936    AtomFoldStateDurationReported = 414,
23937    AtomLocationTimeZoneProviderControllerStateChanged = 415,
23938    AtomDisplayHbmStateChanged = 416,
23939    AtomDisplayHbmBrightnessChanged = 417,
23940    AtomPersistentUriPermissionsFlushed = 418,
23941    AtomEarlyBootCompOsArtifactsCheckReported = 419,
23942    AtomVbmetaDigestReported = 420,
23943    AtomApexInfoGathered = 421,
23944    AtomPvmInfoGathered = 422,
23945    AtomWearSettingsUiInteracted = 423,
23946    AtomTracingServiceReportEvent = 424,
23947    AtomMediametricsAudiorecordstatusReported = 425,
23948    AtomLauncherLatency = 426,
23949    AtomDropboxEntryDropped = 427,
23950    AtomWifiP2pConnectionReported = 428,
23951    AtomGameStateChanged = 429,
23952    AtomHotwordDetectorCreateRequested = 430,
23953    AtomHotwordDetectionServiceInitResultReported = 431,
23954    AtomHotwordDetectionServiceRestarted = 432,
23955    AtomHotwordDetectorKeyphraseTriggered = 433,
23956    AtomHotwordDetectorEvents = 434,
23957    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
23958    AtomContactsIndexerUpdateStatsReported = 440,
23959    AtomAppBackgroundRestrictionsInfo = 441,
23960    AtomMmsSmsProviderGetThreadIdFailed = 442,
23961    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
23962    AtomPermissionReminderNotificationInteracted = 444,
23963    AtomRecentPermissionDecisionsInteracted = 445,
23964    AtomGnssPsdsDownloadReported = 446,
23965    AtomLeAudioConnectionSessionReported = 447,
23966    AtomLeAudioBroadcastSessionReported = 448,
23967    AtomDreamUiEventReported = 449,
23968    AtomTaskManagerEventReported = 450,
23969    AtomCdmAssociationAction = 451,
23970    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
23971    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
23972    AtomAccessibilityTextReadingOptionsChanged = 454,
23973    AtomWifiSetupFailureCrashReported = 455,
23974    AtomUwbDeviceErrorReported = 456,
23975    AtomIsolatedCompilationScheduled = 457,
23976    AtomIsolatedCompilationEnded = 458,
23977    AtomOnsOpportunisticEsimProvisioningComplete = 459,
23978    AtomSystemServerPreWatchdogOccurred = 460,
23979    AtomTelephonyAnomalyDetected = 461,
23980    AtomLetterboxPositionChanged = 462,
23981    AtomRemoteKeyProvisioningAttempt = 463,
23982    AtomRemoteKeyProvisioningNetworkInfo = 464,
23983    AtomRemoteKeyProvisioningTiming = 465,
23984    AtomMediaoutputOpInteractionReport = 466,
23985    AtomSyncExemptionOccurred = 468,
23986    AtomAutofillPresentationEventReported = 469,
23987    AtomDockStateChanged = 470,
23988    AtomSafetySourceStateCollected = 471,
23989    AtomSafetyCenterSystemEventReported = 472,
23990    AtomSafetyCenterInteractionReported = 473,
23991    AtomSettingsProviderSettingChanged = 474,
23992    AtomBroadcastDeliveryEventReported = 475,
23993    AtomServiceRequestEventReported = 476,
23994    AtomProviderAcquisitionEventReported = 477,
23995    AtomBluetoothDeviceNameReported = 478,
23996    AtomCbConfigUpdated = 479,
23997    AtomCbModuleErrorReported = 480,
23998    AtomCbServiceFeatureChanged = 481,
23999    AtomCbReceiverFeatureChanged = 482,
24000    AtomPrivacySignalNotificationInteraction = 484,
24001    AtomPrivacySignalIssueCardInteraction = 485,
24002    AtomPrivacySignalsJobFailure = 486,
24003    AtomVibrationReported = 487,
24004    AtomUwbRangingStart = 489,
24005    AtomAppCompactedV2 = 491,
24006    AtomDisplayBrightnessChanged = 494,
24007    AtomActivityActionBlocked = 495,
24008    AtomNetworkDnsServerSupportReported = 504,
24009    AtomVmBooted = 505,
24010    AtomVmExited = 506,
24011    AtomAmbientBrightnessStatsReported = 507,
24012    AtomMediametricsSpatializercapabilitiesReported = 508,
24013    AtomMediametricsSpatializerdeviceenabledReported = 509,
24014    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
24015    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
24016    AtomHearingAidInfoReported = 513,
24017    AtomDeviceWideJobConstraintChanged = 514,
24018    AtomAmbientModeChanged = 515,
24019    AtomAnrLatencyReported = 516,
24020    AtomResourceApiInfo = 517,
24021    AtomSystemDefaultNetworkChanged = 518,
24022    AtomIwlanSetupDataCallResultReported = 519,
24023    AtomIwlanPdnDisconnectedReasonReported = 520,
24024    AtomAirplaneModeSessionReported = 521,
24025    AtomVmCpuStatusReported = 522,
24026    AtomVmMemStatusReported = 523,
24027    AtomPackageInstallationSessionReported = 524,
24028    AtomDefaultNetworkRematchInfo = 525,
24029    AtomNetworkSelectionPerformance = 526,
24030    AtomNetworkNsdReported = 527,
24031    AtomBluetoothDisconnectionReasonReported = 529,
24032    AtomBluetoothLocalVersionsReported = 530,
24033    AtomBluetoothRemoteSupportedFeaturesReported = 531,
24034    AtomBluetoothLocalSupportedFeaturesReported = 532,
24035    AtomBluetoothGattAppInfo = 533,
24036    AtomBrightnessConfigurationUpdated = 534,
24037    AtomWearMediaOutputSwitcherLaunched = 538,
24038    AtomWearMediaOutputSwitcherFinished = 539,
24039    AtomWearMediaOutputSwitcherConnectionReported = 540,
24040    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
24041    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
24042    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
24043    AtomPackageManagerSnapshotReported = 544,
24044    AtomPackageManagerAppsFilterCacheBuildReported = 545,
24045    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
24046    AtomLauncherImpressionEvent = 547,
24047    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
24048    AtomWsWatchFaceEdited = 551,
24049    AtomWsWatchFaceFavoriteActionReported = 552,
24050    AtomWsWatchFaceSetActionReported = 553,
24051    AtomPackageUninstallationReported = 554,
24052    AtomGameModeChanged = 555,
24053    AtomGameModeConfigurationChanged = 556,
24054    AtomBedtimeModeStateChanged = 557,
24055    AtomNetworkSliceSessionEnded = 558,
24056    AtomNetworkSliceDailyDataUsageReported = 559,
24057    AtomNfcTagTypeOccurred = 560,
24058    AtomNfcAidConflictOccurred = 561,
24059    AtomNfcReaderConflictOccurred = 562,
24060    AtomWsTileListChanged = 563,
24061    AtomGetTypeAccessedWithoutPermission = 564,
24062    AtomMobileBundledAppInfoGathered = 566,
24063    AtomWsWatchFaceComplicationSetChanged = 567,
24064    AtomMediaDrmCreated = 568,
24065    AtomMediaDrmErrored = 569,
24066    AtomMediaDrmSessionOpened = 570,
24067    AtomMediaDrmSessionClosed = 571,
24068    AtomUserSelectedResolution = 572,
24069    AtomUnsafeIntentEventReported = 573,
24070    AtomPerformanceHintSessionReported = 574,
24071    AtomMediametricsMidiDeviceCloseReported = 576,
24072    AtomBiometricTouchReported = 577,
24073    AtomHotwordAudioEgressEventReported = 578,
24074    AtomLocationEnabledStateChanged = 580,
24075    AtomImeRequestFinished = 581,
24076    AtomUsbComplianceWarningsReported = 582,
24077    AtomAppSupportedLocalesChanged = 583,
24078    AtomMediaProviderVolumeRecoveryReported = 586,
24079    AtomBiometricPropertiesCollected = 587,
24080    AtomKernelWakeupAttributed = 588,
24081    AtomScreenStateChangedV2 = 589,
24082    AtomWsBackupActionReported = 590,
24083    AtomWsRestoreActionReported = 591,
24084    AtomDeviceLogAccessEventReported = 592,
24085    AtomMediaSessionUpdated = 594,
24086    AtomWearOobeStateChanged = 595,
24087    AtomWsNotificationUpdated = 596,
24088    AtomNetworkValidationFailureStatsDailyReported = 601,
24089    AtomWsComplicationTapped = 602,
24090    AtomWsNotificationBlocking = 780,
24091    AtomWsNotificationBridgemodeUpdated = 822,
24092    AtomWsNotificationDismissalActioned = 823,
24093    AtomWsNotificationActioned = 824,
24094    AtomWsNotificationLatency = 880,
24095    AtomWifiBytesTransfer = 10000,
24096    AtomWifiBytesTransferByFgBg = 10001,
24097    AtomMobileBytesTransfer = 10002,
24098    AtomMobileBytesTransferByFgBg = 10003,
24099    AtomBluetoothBytesTransfer = 10006,
24100    AtomKernelWakelock = 10004,
24101    AtomSubsystemSleepState = 10005,
24102    AtomCpuTimePerUid = 10009,
24103    AtomCpuTimePerUidFreq = 10010,
24104    AtomWifiActivityInfo = 10011,
24105    AtomModemActivityInfo = 10012,
24106    AtomBluetoothActivityInfo = 10007,
24107    AtomProcessMemoryState = 10013,
24108    AtomSystemElapsedRealtime = 10014,
24109    AtomSystemUptime = 10015,
24110    AtomCpuActiveTime = 10016,
24111    AtomCpuClusterTime = 10017,
24112    AtomDiskSpace = 10018,
24113    AtomRemainingBatteryCapacity = 10019,
24114    AtomFullBatteryCapacity = 10020,
24115    AtomTemperature = 10021,
24116    AtomBinderCalls = 10022,
24117    AtomBinderCallsExceptions = 10023,
24118    AtomLooperStats = 10024,
24119    AtomDiskStats = 10025,
24120    AtomDirectoryUsage = 10026,
24121    AtomAppSize = 10027,
24122    AtomCategorySize = 10028,
24123    AtomProcStats = 10029,
24124    AtomBatteryVoltage = 10030,
24125    AtomNumFingerprintsEnrolled = 10031,
24126    AtomDiskIo = 10032,
24127    AtomPowerProfile = 10033,
24128    AtomProcStatsPkgProc = 10034,
24129    AtomProcessCpuTime = 10035,
24130    AtomCpuTimePerThreadFreq = 10037,
24131    AtomOnDevicePowerMeasurement = 10038,
24132    AtomDeviceCalculatedPowerUse = 10039,
24133    AtomProcessMemoryHighWaterMark = 10042,
24134    AtomBatteryLevel = 10043,
24135    AtomBuildInformation = 10044,
24136    AtomBatteryCycleCount = 10045,
24137    AtomDebugElapsedClock = 10046,
24138    AtomDebugFailingElapsedClock = 10047,
24139    AtomNumFacesEnrolled = 10048,
24140    AtomRoleHolder = 10049,
24141    AtomDangerousPermissionState = 10050,
24142    AtomTrainInfo = 10051,
24143    AtomTimeZoneDataInfo = 10052,
24144    AtomExternalStorageInfo = 10053,
24145    AtomGpuStatsGlobalInfo = 10054,
24146    AtomGpuStatsAppInfo = 10055,
24147    AtomSystemIonHeapSize = 10056,
24148    AtomAppsOnExternalStorageInfo = 10057,
24149    AtomFaceSettings = 10058,
24150    AtomCoolingDevice = 10059,
24151    AtomAppOps = 10060,
24152    AtomProcessSystemIonHeapSize = 10061,
24153    AtomSurfaceflingerStatsGlobalInfo = 10062,
24154    AtomSurfaceflingerStatsLayerInfo = 10063,
24155    AtomProcessMemorySnapshot = 10064,
24156    AtomVmsClientStats = 10065,
24157    AtomNotificationRemoteViews = 10066,
24158    AtomDangerousPermissionStateSampled = 10067,
24159    AtomGraphicsStats = 10068,
24160    AtomRuntimeAppOpAccess = 10069,
24161    AtomIonHeapSize = 10070,
24162    AtomPackageNotificationPreferences = 10071,
24163    AtomPackageNotificationChannelPreferences = 10072,
24164    AtomPackageNotificationChannelGroupPreferences = 10073,
24165    AtomGnssStats = 10074,
24166    AtomAttributedAppOps = 10075,
24167    AtomVoiceCallSession = 10076,
24168    AtomVoiceCallRatUsage = 10077,
24169    AtomSimSlotState = 10078,
24170    AtomSupportedRadioAccessFamily = 10079,
24171    AtomSettingSnapshot = 10080,
24172    AtomBlobInfo = 10081,
24173    AtomDataUsageBytesTransfer = 10082,
24174    AtomBytesTransferByTagAndMetered = 10083,
24175    AtomDndModeRule = 10084,
24176    AtomGeneralExternalStorageAccessStats = 10085,
24177    AtomIncomingSms = 10086,
24178    AtomOutgoingSms = 10087,
24179    AtomCarrierIdTableVersion = 10088,
24180    AtomDataCallSession = 10089,
24181    AtomCellularServiceState = 10090,
24182    AtomCellularDataServiceSwitch = 10091,
24183    AtomSystemMemory = 10092,
24184    AtomImsRegistrationTermination = 10093,
24185    AtomImsRegistrationStats = 10094,
24186    AtomCpuTimePerClusterFreq = 10095,
24187    AtomCpuCyclesPerUidCluster = 10096,
24188    AtomDeviceRotatedData = 10097,
24189    AtomCpuCyclesPerThreadGroupCluster = 10098,
24190    AtomMediaDrmActivityInfo = 10099,
24191    AtomOemManagedBytesTransfer = 10100,
24192    AtomGnssPowerStats = 10101,
24193    AtomTimeZoneDetectorState = 10102,
24194    AtomKeystore2StorageStats = 10103,
24195    AtomRkpPoolStats = 10104,
24196    AtomProcessDmabufMemory = 10105,
24197    AtomPendingAlarmInfo = 10106,
24198    AtomUserLevelHibernatedApps = 10107,
24199    AtomLauncherLayoutSnapshot = 10108,
24200    AtomGlobalHibernatedApps = 10109,
24201    AtomInputEventLatencySketch = 10110,
24202    AtomBatteryUsageStatsBeforeReset = 10111,
24203    AtomBatteryUsageStatsSinceReset = 10112,
24204    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
24205    AtomInstalledIncrementalPackage = 10114,
24206    AtomTelephonyNetworkRequests = 10115,
24207    AtomAppSearchStorageInfo = 10116,
24208    AtomVmstat = 10117,
24209    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
24210    AtomKeystore2KeyCreationWithAuthInfo = 10119,
24211    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
24212    AtomKeystore2AtomWithOverflow = 10121,
24213    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
24214    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
24215    AtomRkpErrorStats = 10124,
24216    AtomKeystore2CrashStats = 10125,
24217    AtomVendorApexInfo = 10126,
24218    AtomAccessibilityShortcutStats = 10127,
24219    AtomAccessibilityFloatingMenuStats = 10128,
24220    AtomDataUsageBytesTransferV2 = 10129,
24221    AtomMediaCapabilities = 10130,
24222    AtomCarWatchdogSystemIoUsageSummary = 10131,
24223    AtomCarWatchdogUidIoUsageSummary = 10132,
24224    AtomImsRegistrationFeatureTagStats = 10133,
24225    AtomRcsClientProvisioningStats = 10134,
24226    AtomRcsAcsProvisioningStats = 10135,
24227    AtomSipDelegateStats = 10136,
24228    AtomSipTransportFeatureTagStats = 10137,
24229    AtomSipMessageResponse = 10138,
24230    AtomSipTransportSession = 10139,
24231    AtomImsDedicatedBearerListenerEvent = 10140,
24232    AtomImsDedicatedBearerEvent = 10141,
24233    AtomImsRegistrationServiceDescStats = 10142,
24234    AtomUceEventStats = 10143,
24235    AtomPresenceNotifyEvent = 10144,
24236    AtomGbaEvent = 10145,
24237    AtomPerSimStatus = 10146,
24238    AtomGpuWorkPerUid = 10147,
24239    AtomPersistentUriPermissionsAmountPerPackage = 10148,
24240    AtomSignedPartitionInfo = 10149,
24241    AtomPinnedFileSizesPerPackage = 10150,
24242    AtomPendingIntentsPerPackage = 10151,
24243    AtomUserInfo = 10152,
24244    AtomTelephonyNetworkRequestsV2 = 10153,
24245    AtomDeviceTelephonyProperties = 10154,
24246    AtomRemoteKeyProvisioningErrorCounts = 10155,
24247    AtomSafetyState = 10156,
24248    AtomIncomingMms = 10157,
24249    AtomOutgoingMms = 10158,
24250    AtomMultiUserInfo = 10160,
24251    AtomNetworkBpfMapInfo = 10161,
24252    AtomOutgoingShortCodeSms = 10162,
24253    AtomConnectivityStateSample = 10163,
24254    AtomNetworkSelectionRematchReasonsInfo = 10164,
24255    AtomGameModeInfo = 10165,
24256    AtomGameModeConfiguration = 10166,
24257    AtomGameModeListener = 10167,
24258    AtomNetworkSliceRequestCount = 10168,
24259    AtomWsTileSnapshot = 10169,
24260    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
24261    AtomProcessState = 10171,
24262    AtomProcessAssociation = 10172,
24263    AtomAdpfSystemComponentInfo = 10173,
24264    AtomNotificationMemoryUse = 10174,
24265    AtomHdrCapabilities = 10175,
24266    AtomWsFavouriteWatchFaceListSnapshot = 10176,
24267    AtomAccessibilityCheckResultReported = 910,
24268    AtomAdaptiveAuthUnlockAfterLockReported = 820,
24269    AtomThermalStatusCalled = 772,
24270    AtomThermalHeadroomCalled = 773,
24271    AtomThermalHeadroomThresholdsCalled = 774,
24272    AtomAdpfHintSessionTidCleanup = 839,
24273    AtomThermalHeadroomThresholds = 10201,
24274    AtomAdpfSessionSnapshot = 10218,
24275    AtomJsscriptengineLatencyReported = 483,
24276    AtomAdServicesApiCalled = 435,
24277    AtomAdServicesMesurementReportsUploaded = 436,
24278    AtomMobileDataDownloadFileGroupStatusReported = 490,
24279    AtomMobileDataDownloadDownloadResultReported = 502,
24280    AtomAdServicesSettingsUsageReported = 493,
24281    AtomBackgroundFetchProcessReported = 496,
24282    AtomUpdateCustomAudienceProcessReported = 497,
24283    AtomRunAdBiddingProcessReported = 498,
24284    AtomRunAdScoringProcessReported = 499,
24285    AtomRunAdSelectionProcessReported = 500,
24286    AtomRunAdBiddingPerCaProcessReported = 501,
24287    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
24288    AtomAdServicesMeasurementRegistrations = 512,
24289    AtomAdServicesGetTopicsReported = 535,
24290    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
24291    AtomAdServicesEpochComputationClassifierReported = 537,
24292    AtomAdServicesBackCompatGetTopicsReported = 598,
24293    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
24294    AtomAdServicesMeasurementDebugKeys = 640,
24295    AtomAdServicesErrorReported = 662,
24296    AtomAdServicesBackgroundJobsExecutionReported = 663,
24297    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
24298    AtomAdServicesMeasurementAttribution = 674,
24299    AtomAdServicesMeasurementJobs = 675,
24300    AtomAdServicesMeasurementWipeout = 676,
24301    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
24302    AtomAdServicesEnrollmentDataStored = 697,
24303    AtomAdServicesEnrollmentFileDownloaded = 698,
24304    AtomAdServicesEnrollmentMatched = 699,
24305    AtomAdServicesConsentMigrated = 702,
24306    AtomAdServicesEnrollmentFailed = 714,
24307    AtomAdServicesMeasurementClickVerification = 756,
24308    AtomAdServicesEncryptionKeyFetched = 765,
24309    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
24310    AtomDestinationRegisteredBeacons = 767,
24311    AtomReportInteractionApiCalled = 768,
24312    AtomInteractionReportingTableCleared = 769,
24313    AtomAppManifestConfigHelperCalled = 788,
24314    AtomAdFilteringProcessJoinCaReported = 793,
24315    AtomAdFilteringProcessAdSelectionReported = 794,
24316    AtomAdCounterHistogramUpdaterReported = 795,
24317    AtomSignatureVerification = 807,
24318    AtomKAnonImmediateSignJoinStatusReported = 808,
24319    AtomKAnonBackgroundJobStatusReported = 809,
24320    AtomKAnonInitializeStatusReported = 810,
24321    AtomKAnonSignStatusReported = 811,
24322    AtomKAnonJoinStatusReported = 812,
24323    AtomKAnonKeyAttestationStatusReported = 813,
24324    AtomGetAdSelectionDataApiCalled = 814,
24325    AtomGetAdSelectionDataBuyerInputGenerated = 815,
24326    AtomBackgroundJobSchedulingReported = 834,
24327    AtomTopicsEncryptionEpochComputationReported = 840,
24328    AtomTopicsEncryptionGetTopicsReported = 841,
24329    AtomAdservicesShellCommandCalled = 842,
24330    AtomUpdateSignalsApiCalled = 843,
24331    AtomEncodingJobRun = 844,
24332    AtomEncodingJsFetch = 845,
24333    AtomEncodingJsExecution = 846,
24334    AtomPersistAdSelectionResultCalled = 847,
24335    AtomServerAuctionKeyFetchCalled = 848,
24336    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
24337    AtomAdServicesMeasurementProcessOdpRegistration = 864,
24338    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
24339    AtomSelectAdsFromOutcomesApiCalled = 876,
24340    AtomReportImpressionApiCalled = 877,
24341    AtomAdServicesEnrollmentTransactionStats = 885,
24342    AtomAdServicesCobaltLoggerEventReported = 902,
24343    AtomAdServicesCobaltPeriodicJobEventReported = 903,
24344    AtomUpdateSignalsProcessReported = 905,
24345    AtomTopicsScheduleEpochJobSettingReported = 930,
24346    AtomAiWallpapersButtonPressed = 706,
24347    AtomAiWallpapersTemplateSelected = 707,
24348    AtomAiWallpapersTermSelected = 708,
24349    AtomAiWallpapersWallpaperSet = 709,
24350    AtomAiWallpapersSessionSummary = 710,
24351    AtomApexInstallationRequested = 732,
24352    AtomApexInstallationStaged = 733,
24353    AtomApexInstallationEnded = 734,
24354    AtomAppSearchSetSchemaStatsReported = 385,
24355    AtomAppSearchSchemaMigrationStatsReported = 579,
24356    AtomAppSearchUsageSearchIntentStatsReported = 825,
24357    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
24358    AtomAppSearchAppsIndexerStatsReported = 909,
24359    AtomArtDatumReported = 332,
24360    AtomArtDeviceDatumReported = 550,
24361    AtomArtDatumDeltaReported = 565,
24362    AtomArtDex2oatReported = 929,
24363    AtomArtDeviceStatus = 10205,
24364    AtomBackgroundDexoptJobEnded = 467,
24365    AtomPrerebootDexoptJobEnded = 883,
24366    AtomOdrefreshReported = 366,
24367    AtomOdsignReported = 548,
24368    AtomAutofillUiEventReported = 603,
24369    AtomAutofillFillRequestReported = 604,
24370    AtomAutofillFillResponseReported = 605,
24371    AtomAutofillSaveEventReported = 606,
24372    AtomAutofillSessionCommitted = 607,
24373    AtomAutofillFieldClassificationEventReported = 659,
24374    AtomCarRecentsEventReported = 770,
24375    AtomCarCalmModeEventReported = 797,
24376    AtomCarWakeupFromSuspendReported = 852,
24377    AtomPluginInitialized = 655,
24378    AtomBluetoothHashedDeviceNameReported = 613,
24379    AtomBluetoothL2capCocClientConnection = 614,
24380    AtomBluetoothL2capCocServerConnection = 615,
24381    AtomBluetoothLeSessionConnected = 656,
24382    AtomRestrictedBluetoothDeviceNameReported = 666,
24383    AtomBluetoothProfileConnectionAttempted = 696,
24384    AtomBluetoothContentProfileErrorReported = 781,
24385    AtomBluetoothRfcommConnectionAttempted = 782,
24386    AtomRemoteDeviceInformationWithMetricId = 862,
24387    AtomLeAppScanStateChanged = 870,
24388    AtomLeRadioScanStopped = 871,
24389    AtomLeScanResultReceived = 872,
24390    AtomLeScanAbused = 873,
24391    AtomLeAdvStateChanged = 874,
24392    AtomLeAdvErrorReported = 875,
24393    AtomA2dpSessionReported = 904,
24394    AtomBluetoothCrossLayerEventReported = 916,
24395    AtomBroadcastAudioSessionReported = 927,
24396    AtomBroadcastAudioSyncReported = 928,
24397    AtomBluetoothRfcommConnectionReportedAtClose = 982,
24398    AtomBluetoothLeConnection = 988,
24399    AtomBroadcastSent = 922,
24400    AtomCameraFeatureCombinationQueryEvent = 900,
24401    AtomCertificateTransparencyLogListStateChanged = 934,
24402    AtomCertificateTransparencyLogListUpdateFailed = 972,
24403    AtomDailyKeepaliveInfoReported = 650,
24404    AtomNetworkRequestStateChanged = 779,
24405    AtomTetheringActiveSessionsReported = 925,
24406    AtomNetworkStatsRecorderFileOperated = 783,
24407    AtomCoreNetworkingTerribleErrorOccurred = 979,
24408    AtomApfSessionInfoReported = 777,
24409    AtomIpClientRaInfoReported = 778,
24410    AtomVpnConnectionStateChanged = 850,
24411    AtomVpnConnectionReported = 851,
24412    AtomCpuPolicy = 10199,
24413    AtomCredentialManagerApiCalled = 585,
24414    AtomCredentialManagerInitPhaseReported = 651,
24415    AtomCredentialManagerCandidatePhaseReported = 652,
24416    AtomCredentialManagerFinalPhaseReported = 653,
24417    AtomCredentialManagerTotalReported = 667,
24418    AtomCredentialManagerFinalnouidReported = 668,
24419    AtomCredentialManagerGetReported = 669,
24420    AtomCredentialManagerAuthClickReported = 670,
24421    AtomCredentialManagerApiv2Called = 671,
24422    AtomCronetEngineCreated = 703,
24423    AtomCronetTrafficReported = 704,
24424    AtomCronetEngineBuilderInitialized = 762,
24425    AtomCronetHttpFlagsInitialized = 763,
24426    AtomCronetInitialized = 764,
24427    AtomDesktopModeUiChanged = 818,
24428    AtomDesktopModeSessionTaskUpdate = 819,
24429    AtomDesktopModeTaskSizeUpdated = 935,
24430    AtomDeviceLockCheckInRequestReported = 726,
24431    AtomDeviceLockProvisioningCompleteReported = 727,
24432    AtomDeviceLockKioskAppRequestReported = 728,
24433    AtomDeviceLockCheckInRetryReported = 789,
24434    AtomDeviceLockProvisionFailureReported = 790,
24435    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
24436    AtomDevicePolicyManagementMode = 10216,
24437    AtomDevicePolicyState = 10217,
24438    AtomDisplayModeDirectorVoteChanged = 792,
24439    AtomExternalDisplayStateChanged = 806,
24440    AtomDndStateChanged = 657,
24441    AtomDreamSettingChanged = 705,
24442    AtomDreamSettingSnapshot = 10192,
24443    AtomExpressEventReported = 528,
24444    AtomExpressHistogramSampleReported = 593,
24445    AtomExpressUidEventReported = 644,
24446    AtomExpressUidHistogramSampleReported = 658,
24447    AtomFederatedComputeApiCalled = 712,
24448    AtomFederatedComputeTrainingEventReported = 771,
24449    AtomExampleIteratorNextLatencyReported = 838,
24450    AtomFullScreenIntentLaunched = 631,
24451    AtomBalAllowed = 632,
24452    AtomInTaskActivityStarted = 685,
24453    AtomDeviceOrientationChanged = 906,
24454    AtomCachedAppsHighWatermark = 10189,
24455    AtomStylusPredictionMetricsReported = 718,
24456    AtomUserRiskEventReported = 725,
24457    AtomMediaProjectionStateChanged = 729,
24458    AtomMediaProjectionTargetChanged = 730,
24459    AtomExcessiveBinderProxyCountReported = 853,
24460    AtomProxyBytesTransferByFgBg = 10200,
24461    AtomMobileBytesTransferByProcState = 10204,
24462    AtomBiometricFrrNotification = 817,
24463    AtomSensitiveContentMediaProjectionSession = 830,
24464    AtomSensitiveNotificationAppProtectionSession = 831,
24465    AtomSensitiveNotificationAppProtectionApplied = 832,
24466    AtomSensitiveNotificationRedaction = 833,
24467    AtomSensitiveContentAppProtection = 835,
24468    AtomAppRestrictionStateChanged = 866,
24469    AtomBatteryUsageStatsPerUid = 10209,
24470    AtomPostgcMemorySnapshot = 924,
24471    AtomPowerSaveTempAllowlistChanged = 926,
24472    AtomAppOpAccessTracked = 931,
24473    AtomContentOrFileUriEventReported = 933,
24474    AtomApplicationGrammaticalInflectionChanged = 584,
24475    AtomSystemGrammaticalInflectionChanged = 816,
24476    AtomBatteryHealth = 10220,
24477    AtomHdmiEarcStatusReported = 701,
24478    AtomHdmiSoundbarModeStatusReported = 724,
24479    AtomHealthConnectApiCalled = 616,
24480    AtomHealthConnectUsageStats = 617,
24481    AtomHealthConnectStorageStats = 618,
24482    AtomHealthConnectApiInvoked = 643,
24483    AtomExerciseRouteApiCalled = 654,
24484    AtomHealthConnectExportInvoked = 907,
24485    AtomHealthConnectImportInvoked = 918,
24486    AtomHealthConnectExportImportStatsReported = 919,
24487    AtomHealthConnectUiImpression = 623,
24488    AtomHealthConnectUiInteraction = 624,
24489    AtomHealthConnectAppOpenedReported = 625,
24490    AtomHotwordEgressSizeAtomReported = 761,
24491    AtomIkeSessionTerminated = 678,
24492    AtomIkeLivenessCheckSessionValidated = 760,
24493    AtomNegotiatedSecurityAssociation = 821,
24494    AtomKeyboardConfigured = 682,
24495    AtomKeyboardSystemsEventReported = 683,
24496    AtomInputdeviceUsageReported = 686,
24497    AtomInputEventLatencyReported = 932,
24498    AtomTouchpadUsage = 10191,
24499    AtomKernelOomKillOccurred = 754,
24500    AtomEmergencyStateChanged = 633,
24501    AtomChreSignificantMotionStateChanged = 868,
24502    AtomPopulationDensityProviderLoadingReported = 1002,
24503    AtomDensityBasedCoarseLocationsUsageReported = 1003,
24504    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
24505    AtomMediaCodecReclaimRequestCompleted = 600,
24506    AtomMediaCodecStarted = 641,
24507    AtomMediaCodecStopped = 642,
24508    AtomMediaCodecRendered = 684,
24509    AtomMediaEditingEndedReported = 798,
24510    AtomMteState = 10181,
24511    AtomMicroxrDeviceBootCompleteReported = 901,
24512    AtomNfcObserveModeStateChanged = 855,
24513    AtomNfcFieldChanged = 856,
24514    AtomNfcPollingLoopNotificationReported = 857,
24515    AtomNfcProprietaryCapabilitiesReported = 858,
24516    AtomOndevicepersonalizationApiCalled = 711,
24517    AtomComponentStateChangedReported = 863,
24518    AtomPdfLoadReported = 859,
24519    AtomPdfApiUsageReported = 860,
24520    AtomPdfSearchReported = 861,
24521    AtomPressureStallInformation = 10229,
24522    AtomPermissionRationaleDialogViewed = 645,
24523    AtomPermissionRationaleDialogActionReported = 646,
24524    AtomAppDataSharingUpdatesNotificationInteraction = 647,
24525    AtomAppDataSharingUpdatesFragmentViewed = 648,
24526    AtomAppDataSharingUpdatesFragmentActionReported = 649,
24527    AtomEnhancedConfirmationDialogResultReported = 827,
24528    AtomEnhancedConfirmationRestrictionCleared = 828,
24529    AtomPhotopickerSessionInfoReported = 886,
24530    AtomPhotopickerApiInfoReported = 887,
24531    AtomPhotopickerUiEventLogged = 888,
24532    AtomPhotopickerMediaItemStatusReported = 889,
24533    AtomPhotopickerPreviewInfoLogged = 890,
24534    AtomPhotopickerMenuInteractionLogged = 891,
24535    AtomPhotopickerBannerInteractionLogged = 892,
24536    AtomPhotopickerMediaLibraryInfoLogged = 893,
24537    AtomPhotopickerPageInfoLogged = 894,
24538    AtomPhotopickerMediaGridSyncInfoReported = 895,
24539    AtomPhotopickerAlbumSyncInfoReported = 896,
24540    AtomPhotopickerSearchInfoReported = 897,
24541    AtomSearchDataExtractionDetailsReported = 898,
24542    AtomEmbeddedPhotopickerInfoReported = 899,
24543    AtomAtom9999 = 9999,
24544    AtomAtom99999 = 99999,
24545    AtomScreenOffReported = 776,
24546    AtomScreenTimeoutOverrideReported = 836,
24547    AtomScreenInteractiveSessionReported = 837,
24548    AtomScreenDimReported = 867,
24549    AtomMediaProviderDatabaseRollbackReported = 784,
24550    AtomBackupSetupStatusReported = 785,
24551    AtomRangingSessionConfigured = 993,
24552    AtomRangingSessionStarted = 994,
24553    AtomRangingSessionClosed = 995,
24554    AtomRangingTechnologyStarted = 996,
24555    AtomRangingTechnologyStopped = 997,
24556    AtomRkpdPoolStats = 664,
24557    AtomRkpdClientOperation = 665,
24558    AtomSandboxApiCalled = 488,
24559    AtomSandboxActivityEventOccurred = 735,
24560    AtomSdkSandboxRestrictedAccessInSession = 796,
24561    AtomSandboxSdkStorage = 10159,
24562    AtomSelinuxAuditLog = 799,
24563    AtomSettingsSpaReported = 622,
24564    AtomTestExtensionAtomReported = 660,
24565    AtomTestRestrictedAtomReported = 672,
24566    AtomStatsSocketLossReported = 752,
24567    AtomLockscreenShortcutSelected = 611,
24568    AtomLockscreenShortcutTriggered = 612,
24569    AtomLauncherImpressionEventV2 = 716,
24570    AtomDisplaySwitchLatencyTracked = 753,
24571    AtomNotificationListenerService = 829,
24572    AtomNavHandleTouchPoints = 869,
24573    AtomCommunalHubWidgetEventReported = 908,
24574    AtomCommunalHubSnapshot = 10226,
24575    AtomEmergencyNumberDialed = 637,
24576    AtomCallStats = 10221,
24577    AtomCallAudioRouteStats = 10222,
24578    AtomTelecomApiStats = 10223,
24579    AtomTelecomErrorStats = 10224,
24580    AtomCellularRadioPowerStateChanged = 713,
24581    AtomEmergencyNumbersInfo = 10180,
24582    AtomDataNetworkValidation = 10207,
24583    AtomDataRatStateChanged = 854,
24584    AtomConnectedChannelChanged = 882,
24585    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
24586    AtomQualifiedRatListChanged = 634,
24587    AtomQnsImsCallDropStats = 635,
24588    AtomQnsFallbackRestrictionChanged = 636,
24589    AtomQnsRatPreferenceMismatchInfo = 10177,
24590    AtomQnsHandoverTimeMillis = 10178,
24591    AtomQnsHandoverPingpong = 10179,
24592    AtomSatelliteController = 10182,
24593    AtomSatelliteSession = 10183,
24594    AtomSatelliteIncomingDatagram = 10184,
24595    AtomSatelliteOutgoingDatagram = 10185,
24596    AtomSatelliteProvision = 10186,
24597    AtomSatelliteSosMessageRecommender = 10187,
24598    AtomCarrierRoamingSatelliteSession = 10211,
24599    AtomCarrierRoamingSatelliteControllerStats = 10212,
24600    AtomControllerStatsPerPackage = 10213,
24601    AtomSatelliteEntitlement = 10214,
24602    AtomSatelliteConfigUpdater = 10215,
24603    AtomSatelliteAccessController = 10219,
24604    AtomCellularIdentifierDisclosed = 800,
24605    AtomThreadnetworkTelemetryDataReported = 738,
24606    AtomThreadnetworkTopoEntryRepeated = 739,
24607    AtomThreadnetworkDeviceInfoReported = 740,
24608    AtomBootIntegrityInfoReported = 775,
24609    AtomTvLowPowerStandbyPolicy = 679,
24610    AtomExternalTvInputEvent = 717,
24611    AtomTestUprobestatsAtomReported = 915,
24612    AtomUwbActivityInfo = 10188,
24613    AtomMediatorUpdated = 721,
24614    AtomSysproxyBluetoothBytesTransfer = 10196,
24615    AtomSysproxyConnectionUpdated = 786,
24616    AtomWearCompanionConnectionState = 921,
24617    AtomMediaActionReported = 608,
24618    AtomMediaControlsLaunched = 609,
24619    AtomMediaSessionStateChanged = 677,
24620    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
24621    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
24622    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
24623    AtomWearModeStateChanged = 715,
24624    AtomRendererInitialized = 736,
24625    AtomSchemaVersionReceived = 737,
24626    AtomLayoutInspected = 741,
24627    AtomLayoutExpressionInspected = 742,
24628    AtomLayoutAnimationsInspected = 743,
24629    AtomMaterialComponentsInspected = 744,
24630    AtomTileRequested = 745,
24631    AtomStateResponseReceived = 746,
24632    AtomTileResponseReceived = 747,
24633    AtomInflationFinished = 748,
24634    AtomInflationFailed = 749,
24635    AtomIgnoredInflationFailuresReported = 750,
24636    AtomDrawableRendered = 751,
24637    AtomWearTimeSyncRequested = 911,
24638    AtomWearTimeUpdateStarted = 912,
24639    AtomWearTimeSyncAttemptCompleted = 913,
24640    AtomWearTimeChanged = 914,
24641    AtomWearAdaptiveSuspendStatsReported = 619,
24642    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
24643    AtomWearPowerAnomalyServiceEventStatsReported = 621,
24644    AtomWsWearTimeSession = 610,
24645    AtomWsIncomingCallActionReported = 626,
24646    AtomWsCallDisconnectionReported = 627,
24647    AtomWsCallDurationReported = 628,
24648    AtomWsCallUserExperienceLatencyReported = 629,
24649    AtomWsCallInteractionReported = 630,
24650    AtomWsOnBodyStateChanged = 787,
24651    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
24652    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
24653    AtomWsComplicationsImpactedNotificationEventReported = 804,
24654    AtomWsRemoteEventUsageReported = 920,
24655    AtomWsBugreportRequested = 936,
24656    AtomWsBugreportTriggered = 937,
24657    AtomWsBugreportFinished = 938,
24658    AtomWsBugreportResultReceived = 939,
24659    AtomWsStandaloneModeSnapshot = 10197,
24660    AtomWsFavoriteWatchFaceSnapshot = 10206,
24661    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
24662    AtomWsWatchFaceCustomizationSnapshot = 10227,
24663    AtomWearPowerMenuOpened = 731,
24664    AtomWearAssistantOpened = 755,
24665    AtomFirstOverlayStateChanged = 917,
24666    AtomWifiAwareNdpReported = 638,
24667    AtomWifiAwareAttachReported = 639,
24668    AtomWifiSelfRecoveryTriggered = 661,
24669    AtomSoftApStarted = 680,
24670    AtomSoftApStopped = 681,
24671    AtomWifiLockReleased = 687,
24672    AtomWifiLockDeactivated = 688,
24673    AtomWifiConfigSaved = 689,
24674    AtomWifiAwareResourceUsingChanged = 690,
24675    AtomWifiAwareHalApiCalled = 691,
24676    AtomWifiLocalOnlyRequestReceived = 692,
24677    AtomWifiLocalOnlyRequestScanTriggered = 693,
24678    AtomWifiThreadTaskExecuted = 694,
24679    AtomWifiStateChanged = 700,
24680    AtomPnoScanStarted = 719,
24681    AtomPnoScanStopped = 720,
24682    AtomWifiIsUnusableReported = 722,
24683    AtomWifiApCapabilitiesReported = 723,
24684    AtomSoftApStateChanged = 805,
24685    AtomScorerPredictionResultReported = 884,
24686    AtomWifiAwareCapabilities = 10190,
24687    AtomWifiModuleInfo = 10193,
24688    AtomWifiSettingInfo = 10194,
24689    AtomWifiComplexSettingInfo = 10195,
24690    AtomWifiConfiguredNetworkInfo = 10198,
24691}
24692impl AtomId {
24693    /// String value of the enum field names used in the ProtoBuf definition.
24694    ///
24695    /// The values are not transformed in any way and thus are considered stable
24696    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24697    pub fn as_str_name(&self) -> &'static str {
24698        match self {
24699            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
24700            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
24701            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
24702            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
24703            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
24704            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
24705            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
24706            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
24707            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
24708            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
24709            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
24710            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
24711            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
24712            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
24713            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
24714            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
24715            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
24716            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
24717            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
24718            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
24719            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
24720            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
24721            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
24722            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
24723            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
24724            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
24725            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
24726            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
24727            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
24728            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
24729            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
24730            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
24731            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
24732            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
24733            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
24734            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
24735            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
24736            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
24737            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
24738            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
24739            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
24740            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
24741            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
24742            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
24743            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
24744            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
24745            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
24746            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
24747            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
24748            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
24749            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
24750            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
24751            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
24752            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
24753            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
24754            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
24755            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
24756            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
24757            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
24758            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
24759            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
24760            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
24761            AtomId::AtomAppDied => "ATOM_APP_DIED",
24762            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
24763            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
24764            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
24765            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
24766            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
24767            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
24768            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
24769            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
24770            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
24771            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
24772            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
24773            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
24774            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
24775            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
24776            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
24777            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
24778            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
24779            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
24780            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
24781            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
24782            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
24783            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
24784            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
24785            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
24786            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
24787            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
24788            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
24789            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
24790            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
24791            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
24792            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
24793            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
24794            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
24795            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
24796            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
24797            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
24798            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
24799            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
24800            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
24801            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
24802            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
24803            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
24804            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
24805            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
24806            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
24807            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
24808            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
24809            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
24810            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
24811            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
24812            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
24813            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
24814            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
24815            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
24816            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
24817            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
24818            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
24819            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
24820            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
24821            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
24822            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
24823            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
24824            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
24825            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
24826            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
24827            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
24828            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
24829            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
24830            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
24831            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
24832            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
24833            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
24834            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
24835            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
24836            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
24837            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
24838            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
24839            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
24840            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
24841            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
24842            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
24843            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
24844            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
24845            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
24846            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
24847            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
24848            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
24849            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
24850            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
24851            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
24852            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
24853            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
24854            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
24855            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
24856            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
24857            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
24858            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
24859            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
24860            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
24861            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
24862            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
24863            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
24864            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
24865            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
24866            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
24867            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
24868            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
24869            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
24870            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
24871            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
24872            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
24873            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
24874            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
24875            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
24876            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
24877            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
24878            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
24879            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
24880            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
24881            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
24882            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
24883            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
24884            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
24885            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
24886            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
24887            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
24888            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
24889            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
24890            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
24891            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
24892            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
24893            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
24894            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
24895            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
24896            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
24897            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
24898            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
24899            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
24900            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
24901            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
24902            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
24903            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
24904            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
24905            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
24906            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
24907            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
24908            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
24909            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
24910            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
24911            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
24912            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
24913            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
24914            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
24915            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
24916            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
24917            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
24918            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
24919            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
24920            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
24921            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
24922            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
24923            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
24924            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
24925            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
24926            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
24927            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
24928            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
24929            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
24930            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
24931            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
24932            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
24933            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
24934            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
24935            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
24936            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
24937            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
24938            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
24939            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
24940            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
24941            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
24942            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
24943            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
24944            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
24945            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
24946            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
24947            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
24948            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
24949            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
24950            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
24951            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
24952            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
24953            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
24954            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
24955            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
24956            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
24957            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
24958            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
24959            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
24960            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
24961            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
24962            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
24963            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
24964            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
24965            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
24966            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
24967            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
24968            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
24969            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
24970            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
24971            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
24972            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
24973            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
24974            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
24975            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
24976            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
24977            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
24978            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
24979            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
24980            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
24981            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
24982            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
24983            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
24984            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
24985            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
24986            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
24987            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
24988            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
24989            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
24990            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
24991            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
24992            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
24993            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
24994            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
24995            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
24996            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
24997            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
24998            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
24999            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
25000            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
25001            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
25002            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
25003            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
25004            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
25005            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
25006            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
25007            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
25008            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
25009            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
25010            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
25011            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
25012            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
25013            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
25014            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
25015            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
25016            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
25017            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
25018            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
25019            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
25020            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
25021            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
25022            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
25023            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
25024            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
25025            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
25026            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
25027            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
25028            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
25029            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
25030            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
25031            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
25032            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
25033            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
25034            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
25035            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
25036            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
25037            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
25038            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
25039            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
25040            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
25041            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
25042            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
25043            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
25044            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
25045            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
25046            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
25047            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
25048            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
25049            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
25050            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
25051            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
25052            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
25053            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
25054            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
25055            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
25056            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
25057            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
25058            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
25059            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
25060            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
25061            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
25062            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
25063            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
25064            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
25065            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
25066            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
25067            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
25068            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
25069            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
25070            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
25071            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
25072            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
25073            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
25074            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
25075            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
25076            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
25077            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
25078            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
25079            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
25080            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
25081            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
25082            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
25083            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
25084            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
25085            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
25086            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
25087            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
25088            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
25089            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
25090            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
25091            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
25092            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
25093            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
25094            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
25095            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
25096            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
25097            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
25098            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
25099            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
25100            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
25101            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
25102            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
25103            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
25104            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
25105            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
25106            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
25107            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
25108            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
25109            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
25110            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
25111            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
25112            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
25113            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
25114            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
25115            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
25116            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
25117            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
25118            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
25119            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
25120            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
25121            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
25122            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
25123            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
25124            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
25125            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
25126            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
25127            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
25128            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
25129            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
25130            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
25131            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
25132            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
25133            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
25134            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
25135            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
25136            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
25137            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
25138            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
25139            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
25140            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
25141            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
25142            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
25143            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
25144            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
25145            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
25146            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
25147            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
25148            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
25149            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
25150            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
25151            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
25152            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
25153            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
25154            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
25155            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
25156            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
25157            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
25158            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
25159            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
25160            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
25161            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
25162            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
25163            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
25164            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
25165            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
25166            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
25167            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
25168            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
25169            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
25170            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
25171            AtomId::AtomVmExited => "ATOM_VM_EXITED",
25172            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
25173            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
25174            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
25175            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
25176            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
25177            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
25178            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
25179            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
25180            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
25181            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
25182            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
25183            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
25184            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
25185            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
25186            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
25187            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
25188            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
25189            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
25190            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
25191            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
25192            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
25193            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
25194            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
25195            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
25196            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
25197            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
25198            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
25199            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
25200            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
25201            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
25202            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
25203            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
25204            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
25205            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
25206            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
25207            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
25208            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
25209            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
25210            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
25211            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
25212            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
25213            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
25214            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
25215            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
25216            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
25217            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
25218            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
25219            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
25220            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
25221            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
25222            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
25223            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
25224            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
25225            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
25226            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
25227            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
25228            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
25229            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
25230            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
25231            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
25232            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
25233            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
25234            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
25235            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
25236            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
25237            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
25238            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
25239            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
25240            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
25241            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
25242            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
25243            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
25244            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
25245            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
25246            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
25247            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
25248            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
25249            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
25250            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
25251            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
25252            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
25253            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
25254            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
25255            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
25256            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
25257            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
25258            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
25259            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
25260            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
25261            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
25262            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
25263            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
25264            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
25265            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
25266            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
25267            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
25268            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
25269            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
25270            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
25271            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
25272            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
25273            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
25274            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
25275            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
25276            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
25277            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
25278            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
25279            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
25280            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
25281            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
25282            AtomId::AtomAppSize => "ATOM_APP_SIZE",
25283            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
25284            AtomId::AtomProcStats => "ATOM_PROC_STATS",
25285            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
25286            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
25287            AtomId::AtomDiskIo => "ATOM_DISK_IO",
25288            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
25289            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
25290            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
25291            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
25292            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
25293            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
25294            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
25295            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
25296            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
25297            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
25298            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
25299            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
25300            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
25301            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
25302            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
25303            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
25304            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
25305            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
25306            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
25307            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
25308            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
25309            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
25310            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
25311            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
25312            AtomId::AtomAppOps => "ATOM_APP_OPS",
25313            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
25314            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
25315            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
25316            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
25317            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
25318            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
25319            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
25320            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
25321            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
25322            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
25323            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
25324            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
25325            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
25326            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
25327            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
25328            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
25329            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
25330            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
25331            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
25332            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
25333            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
25334            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
25335            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
25336            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
25337            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
25338            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
25339            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
25340            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
25341            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
25342            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
25343            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
25344            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
25345            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
25346            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
25347            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
25348            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
25349            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
25350            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
25351            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
25352            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
25353            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
25354            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
25355            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
25356            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
25357            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
25358            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
25359            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
25360            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
25361            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
25362            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
25363            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
25364            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
25365            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
25366            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
25367            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
25368            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
25369            AtomId::AtomVmstat => "ATOM_VMSTAT",
25370            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
25371            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
25372            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
25373            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
25374            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
25375            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
25376            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
25377            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
25378            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
25379            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
25380            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
25381            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
25382            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
25383            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
25384            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
25385            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
25386            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
25387            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
25388            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
25389            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
25390            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
25391            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
25392            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
25393            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
25394            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
25395            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
25396            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
25397            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
25398            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
25399            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
25400            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
25401            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
25402            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
25403            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
25404            AtomId::AtomUserInfo => "ATOM_USER_INFO",
25405            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
25406            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
25407            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
25408            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
25409            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
25410            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
25411            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
25412            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
25413            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
25414            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
25415            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
25416            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
25417            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
25418            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
25419            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
25420            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
25421            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
25422            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
25423            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
25424            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
25425            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
25426            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
25427            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
25428            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
25429            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
25430            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
25431            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
25432            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
25433            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
25434            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
25435            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
25436            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
25437            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
25438            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
25439            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
25440            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
25441            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
25442            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
25443            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
25444            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
25445            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
25446            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
25447            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
25448            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
25449            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
25450            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
25451            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
25452            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
25453            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
25454            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
25455            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
25456            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
25457            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
25458            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
25459            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
25460            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
25461            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
25462            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
25463            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
25464            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
25465            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
25466            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
25467            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
25468            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
25469            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
25470            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
25471            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
25472            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
25473            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
25474            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
25475            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
25476            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
25477            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
25478            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
25479            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
25480            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
25481            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
25482            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
25483            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
25484            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
25485            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
25486            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
25487            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
25488            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
25489            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
25490            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
25491            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
25492            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
25493            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
25494            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
25495            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
25496            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
25497            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
25498            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
25499            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
25500            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
25501            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
25502            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
25503            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
25504            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
25505            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
25506            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
25507            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
25508            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
25509            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
25510            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
25511            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
25512            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
25513            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
25514            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
25515            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
25516            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
25517            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
25518            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
25519            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
25520            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
25521            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
25522            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
25523            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
25524            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
25525            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
25526            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
25527            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
25528            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
25529            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
25530            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
25531            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
25532            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
25533            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
25534            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
25535            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
25536            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
25537            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
25538            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
25539            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
25540            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
25541            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
25542            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
25543            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
25544            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
25545            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
25546            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
25547            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
25548            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
25549            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
25550            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
25551            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
25552            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
25553            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
25554            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
25555            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
25556            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
25557            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
25558            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
25559            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
25560            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
25561            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
25562            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
25563            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
25564            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
25565            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
25566            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
25567            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
25568            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
25569            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
25570            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
25571            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
25572            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
25573            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
25574            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
25575            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
25576            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
25577            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
25578            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
25579            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
25580            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
25581            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
25582            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
25583            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
25584            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
25585            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
25586            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
25587            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
25588            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
25589            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
25590            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
25591            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
25592            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
25593            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
25594            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
25595            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
25596            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
25597            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
25598            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
25599            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
25600            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
25601            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
25602            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
25603            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
25604            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
25605            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
25606            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
25607            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
25608            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
25609            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
25610            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
25611            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
25612            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
25613            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
25614            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
25615            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
25616            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
25617            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
25618            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
25619            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
25620            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
25621            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
25622            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
25623            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
25624            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
25625            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
25626            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
25627            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
25628            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
25629            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
25630            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
25631            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
25632            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
25633            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
25634            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
25635            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
25636            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
25637            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
25638            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
25639            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
25640            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
25641            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
25642            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
25643            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
25644            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
25645            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
25646            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
25647            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
25648            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
25649            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
25650            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
25651            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
25652            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
25653            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
25654            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
25655            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
25656            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
25657            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
25658            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
25659            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
25660            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
25661            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
25662            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
25663            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
25664            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
25665            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
25666            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
25667            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
25668            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
25669            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
25670            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
25671            AtomId::AtomMteState => "ATOM_MTE_STATE",
25672            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
25673            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
25674            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
25675            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
25676            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
25677            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
25678            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
25679            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
25680            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
25681            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
25682            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
25683            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
25684            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
25685            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
25686            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
25687            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
25688            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
25689            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
25690            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
25691            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
25692            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
25693            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
25694            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
25695            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
25696            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
25697            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
25698            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
25699            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
25700            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
25701            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
25702            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
25703            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
25704            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
25705            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
25706            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
25707            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
25708            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
25709            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
25710            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
25711            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
25712            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
25713            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
25714            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
25715            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
25716            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
25717            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
25718            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
25719            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
25720            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
25721            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
25722            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
25723            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
25724            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
25725            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
25726            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
25727            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
25728            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
25729            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
25730            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
25731            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
25732            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
25733            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
25734            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
25735            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
25736            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
25737            AtomId::AtomCallStats => "ATOM_CALL_STATS",
25738            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
25739            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
25740            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
25741            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
25742            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
25743            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
25744            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
25745            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
25746            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
25747            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
25748            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
25749            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
25750            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
25751            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
25752            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
25753            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
25754            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
25755            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
25756            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
25757            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
25758            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
25759            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
25760            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
25761            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
25762            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
25763            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
25764            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
25765            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
25766            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
25767            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
25768            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
25769            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
25770            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
25771            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
25772            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
25773            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
25774            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
25775            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
25776            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
25777            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
25778            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
25779            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
25780            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
25781            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
25782            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
25783            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
25784            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
25785            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
25786            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
25787            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
25788            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
25789            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
25790            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
25791            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
25792            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
25793            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
25794            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
25795            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
25796            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
25797            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
25798            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
25799            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
25800            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
25801            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
25802            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
25803            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
25804            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
25805            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
25806            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
25807            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
25808            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
25809            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
25810            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
25811            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
25812            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
25813            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
25814            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
25815            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
25816            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
25817            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
25818            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
25819            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
25820            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
25821            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
25822            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
25823            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
25824            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
25825            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
25826            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
25827            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
25828            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
25829            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
25830            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
25831            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
25832            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
25833            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
25834            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
25835            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
25836            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
25837            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
25838            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
25839            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
25840            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
25841            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
25842            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
25843            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
25844            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
25845            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
25846            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
25847            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
25848            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
25849            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
25850            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
25851            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
25852        }
25853    }
25854}
25855// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
25856
25857// Begin of protos/perfetto/common/sys_stats_counters.proto
25858
25859// When editing entries here remember also to update "sys_stats_counters.h" with
25860// the corresponding string definitions for the actual /proc files parser.
25861
25862/// Counter definitions for Linux's /proc/meminfo.
25863#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25864#[repr(i32)]
25865pub enum MeminfoCounters {
25866    MeminfoUnspecified = 0,
25867    MeminfoMemTotal = 1,
25868    MeminfoMemFree = 2,
25869    MeminfoMemAvailable = 3,
25870    MeminfoBuffers = 4,
25871    MeminfoCached = 5,
25872    MeminfoSwapCached = 6,
25873    MeminfoActive = 7,
25874    MeminfoInactive = 8,
25875    MeminfoActiveAnon = 9,
25876    MeminfoInactiveAnon = 10,
25877    MeminfoActiveFile = 11,
25878    MeminfoInactiveFile = 12,
25879    MeminfoUnevictable = 13,
25880    MeminfoMlocked = 14,
25881    MeminfoSwapTotal = 15,
25882    MeminfoSwapFree = 16,
25883    MeminfoDirty = 17,
25884    MeminfoWriteback = 18,
25885    MeminfoAnonPages = 19,
25886    MeminfoMapped = 20,
25887    MeminfoShmem = 21,
25888    MeminfoSlab = 22,
25889    MeminfoSlabReclaimable = 23,
25890    MeminfoSlabUnreclaimable = 24,
25891    MeminfoKernelStack = 25,
25892    MeminfoPageTables = 26,
25893    MeminfoCommitLimit = 27,
25894    MeminfoCommitedAs = 28,
25895    MeminfoVmallocTotal = 29,
25896    MeminfoVmallocUsed = 30,
25897    MeminfoVmallocChunk = 31,
25898    MeminfoCmaTotal = 32,
25899    MeminfoCmaFree = 33,
25900    MeminfoGpu = 34,
25901    MeminfoZram = 35,
25902    MeminfoMisc = 36,
25903    MeminfoIonHeap = 37,
25904    MeminfoIonHeapPool = 38,
25905}
25906impl MeminfoCounters {
25907    /// String value of the enum field names used in the ProtoBuf definition.
25908    ///
25909    /// The values are not transformed in any way and thus are considered stable
25910    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25911    pub fn as_str_name(&self) -> &'static str {
25912        match self {
25913            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
25914            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
25915            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
25916            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
25917            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
25918            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
25919            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
25920            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
25921            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
25922            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
25923            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
25924            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
25925            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
25926            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
25927            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
25928            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
25929            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
25930            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
25931            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
25932            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
25933            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
25934            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
25935            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
25936            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
25937            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
25938            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
25939            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
25940            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
25941            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
25942            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
25943            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
25944            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
25945            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
25946            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
25947            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
25948            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
25949            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
25950            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
25951            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
25952        }
25953    }
25954}
25955/// Counter definitions for Linux's /proc/vmstat.
25956#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25957#[repr(i32)]
25958pub enum VmstatCounters {
25959    VmstatUnspecified = 0,
25960    VmstatNrFreePages = 1,
25961    VmstatNrAllocBatch = 2,
25962    VmstatNrInactiveAnon = 3,
25963    VmstatNrActiveAnon = 4,
25964    VmstatNrInactiveFile = 5,
25965    VmstatNrActiveFile = 6,
25966    VmstatNrUnevictable = 7,
25967    VmstatNrMlock = 8,
25968    VmstatNrAnonPages = 9,
25969    VmstatNrMapped = 10,
25970    VmstatNrFilePages = 11,
25971    VmstatNrDirty = 12,
25972    VmstatNrWriteback = 13,
25973    VmstatNrSlabReclaimable = 14,
25974    VmstatNrSlabUnreclaimable = 15,
25975    VmstatNrPageTablePages = 16,
25976    VmstatNrKernelStack = 17,
25977    VmstatNrOverhead = 18,
25978    VmstatNrUnstable = 19,
25979    VmstatNrBounce = 20,
25980    VmstatNrVmscanWrite = 21,
25981    VmstatNrVmscanImmediateReclaim = 22,
25982    VmstatNrWritebackTemp = 23,
25983    VmstatNrIsolatedAnon = 24,
25984    VmstatNrIsolatedFile = 25,
25985    VmstatNrShmem = 26,
25986    VmstatNrDirtied = 27,
25987    VmstatNrWritten = 28,
25988    VmstatNrPagesScanned = 29,
25989    VmstatWorkingsetRefault = 30,
25990    VmstatWorkingsetActivate = 31,
25991    VmstatWorkingsetNodereclaim = 32,
25992    VmstatNrAnonTransparentHugepages = 33,
25993    VmstatNrFreeCma = 34,
25994    VmstatNrSwapcache = 35,
25995    VmstatNrDirtyThreshold = 36,
25996    VmstatNrDirtyBackgroundThreshold = 37,
25997    VmstatPgpgin = 38,
25998    VmstatPgpgout = 39,
25999    VmstatPgpgoutclean = 40,
26000    VmstatPswpin = 41,
26001    VmstatPswpout = 42,
26002    VmstatPgallocDma = 43,
26003    VmstatPgallocNormal = 44,
26004    VmstatPgallocMovable = 45,
26005    VmstatPgfree = 46,
26006    VmstatPgactivate = 47,
26007    VmstatPgdeactivate = 48,
26008    VmstatPgfault = 49,
26009    VmstatPgmajfault = 50,
26010    VmstatPgrefillDma = 51,
26011    VmstatPgrefillNormal = 52,
26012    VmstatPgrefillMovable = 53,
26013    VmstatPgstealKswapdDma = 54,
26014    VmstatPgstealKswapdNormal = 55,
26015    VmstatPgstealKswapdMovable = 56,
26016    VmstatPgstealDirectDma = 57,
26017    VmstatPgstealDirectNormal = 58,
26018    VmstatPgstealDirectMovable = 59,
26019    VmstatPgscanKswapdDma = 60,
26020    VmstatPgscanKswapdNormal = 61,
26021    VmstatPgscanKswapdMovable = 62,
26022    VmstatPgscanDirectDma = 63,
26023    VmstatPgscanDirectNormal = 64,
26024    VmstatPgscanDirectMovable = 65,
26025    VmstatPgscanDirectThrottle = 66,
26026    VmstatPginodesteal = 67,
26027    VmstatSlabsScanned = 68,
26028    VmstatKswapdInodesteal = 69,
26029    VmstatKswapdLowWmarkHitQuickly = 70,
26030    VmstatKswapdHighWmarkHitQuickly = 71,
26031    VmstatPageoutrun = 72,
26032    VmstatAllocstall = 73,
26033    VmstatPgrotated = 74,
26034    VmstatDropPagecache = 75,
26035    VmstatDropSlab = 76,
26036    VmstatPgmigrateSuccess = 77,
26037    VmstatPgmigrateFail = 78,
26038    VmstatCompactMigrateScanned = 79,
26039    VmstatCompactFreeScanned = 80,
26040    VmstatCompactIsolated = 81,
26041    VmstatCompactStall = 82,
26042    VmstatCompactFail = 83,
26043    VmstatCompactSuccess = 84,
26044    VmstatCompactDaemonWake = 85,
26045    VmstatUnevictablePgsCulled = 86,
26046    VmstatUnevictablePgsScanned = 87,
26047    VmstatUnevictablePgsRescued = 88,
26048    VmstatUnevictablePgsMlocked = 89,
26049    VmstatUnevictablePgsMunlocked = 90,
26050    VmstatUnevictablePgsCleared = 91,
26051    VmstatUnevictablePgsStranded = 92,
26052    VmstatNrZspages = 93,
26053    VmstatNrIonHeap = 94,
26054    VmstatNrGpuHeap = 95,
26055    VmstatAllocstallDma = 96,
26056    VmstatAllocstallMovable = 97,
26057    VmstatAllocstallNormal = 98,
26058    VmstatCompactDaemonFreeScanned = 99,
26059    VmstatCompactDaemonMigrateScanned = 100,
26060    VmstatNrFastrpc = 101,
26061    VmstatNrIndirectlyReclaimable = 102,
26062    VmstatNrIonHeapPool = 103,
26063    VmstatNrKernelMiscReclaimable = 104,
26064    VmstatNrShadowCallStackBytes = 105,
26065    VmstatNrShmemHugepages = 106,
26066    VmstatNrShmemPmdmapped = 107,
26067    VmstatNrUnreclaimablePages = 108,
26068    VmstatNrZoneActiveAnon = 109,
26069    VmstatNrZoneActiveFile = 110,
26070    VmstatNrZoneInactiveAnon = 111,
26071    VmstatNrZoneInactiveFile = 112,
26072    VmstatNrZoneUnevictable = 113,
26073    VmstatNrZoneWritePending = 114,
26074    VmstatOomKill = 115,
26075    VmstatPglazyfree = 116,
26076    VmstatPglazyfreed = 117,
26077    VmstatPgrefill = 118,
26078    VmstatPgscanDirect = 119,
26079    VmstatPgscanKswapd = 120,
26080    VmstatPgskipDma = 121,
26081    VmstatPgskipMovable = 122,
26082    VmstatPgskipNormal = 123,
26083    VmstatPgstealDirect = 124,
26084    VmstatPgstealKswapd = 125,
26085    VmstatSwapRa = 126,
26086    VmstatSwapRaHit = 127,
26087    VmstatWorkingsetRestore = 128,
26088    VmstatAllocstallDevice = 129,
26089    VmstatAllocstallDma32 = 130,
26090    VmstatBalloonDeflate = 131,
26091    VmstatBalloonInflate = 132,
26092    VmstatBalloonMigrate = 133,
26093    VmstatCmaAllocFail = 134,
26094    VmstatCmaAllocSuccess = 135,
26095    VmstatNrFileHugepages = 136,
26096    VmstatNrFilePmdmapped = 137,
26097    VmstatNrFollPinAcquired = 138,
26098    VmstatNrFollPinReleased = 139,
26099    VmstatNrSecPageTablePages = 140,
26100    VmstatNrShadowCallStack = 141,
26101    VmstatNrSwapcached = 142,
26102    VmstatNrThrottledWritten = 143,
26103    VmstatPgallocDevice = 144,
26104    VmstatPgallocDma32 = 145,
26105    VmstatPgdemoteDirect = 146,
26106    VmstatPgdemoteKswapd = 147,
26107    VmstatPgreuse = 148,
26108    VmstatPgscanAnon = 149,
26109    VmstatPgscanFile = 150,
26110    VmstatPgskipDevice = 151,
26111    VmstatPgskipDma32 = 152,
26112    VmstatPgstealAnon = 153,
26113    VmstatPgstealFile = 154,
26114    VmstatThpCollapseAlloc = 155,
26115    VmstatThpCollapseAllocFailed = 156,
26116    VmstatThpDeferredSplitPage = 157,
26117    VmstatThpFaultAlloc = 158,
26118    VmstatThpFaultFallback = 159,
26119    VmstatThpFaultFallbackCharge = 160,
26120    VmstatThpFileAlloc = 161,
26121    VmstatThpFileFallback = 162,
26122    VmstatThpFileFallbackCharge = 163,
26123    VmstatThpFileMapped = 164,
26124    VmstatThpMigrationFail = 165,
26125    VmstatThpMigrationSplit = 166,
26126    VmstatThpMigrationSuccess = 167,
26127    VmstatThpScanExceedNonePte = 168,
26128    VmstatThpScanExceedSharePte = 169,
26129    VmstatThpScanExceedSwapPte = 170,
26130    VmstatThpSplitPage = 171,
26131    VmstatThpSplitPageFailed = 172,
26132    VmstatThpSplitPmd = 173,
26133    VmstatThpSwpout = 174,
26134    VmstatThpSwpoutFallback = 175,
26135    VmstatThpZeroPageAlloc = 176,
26136    VmstatThpZeroPageAllocFailed = 177,
26137    VmstatVmaLockAbort = 178,
26138    VmstatVmaLockMiss = 179,
26139    VmstatVmaLockRetry = 180,
26140    VmstatVmaLockSuccess = 181,
26141    VmstatWorkingsetActivateAnon = 182,
26142    VmstatWorkingsetActivateFile = 183,
26143    VmstatWorkingsetNodes = 184,
26144    VmstatWorkingsetRefaultAnon = 185,
26145    VmstatWorkingsetRefaultFile = 186,
26146    VmstatWorkingsetRestoreAnon = 187,
26147    VmstatWorkingsetRestoreFile = 188,
26148}
26149impl VmstatCounters {
26150    /// String value of the enum field names used in the ProtoBuf definition.
26151    ///
26152    /// The values are not transformed in any way and thus are considered stable
26153    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26154    pub fn as_str_name(&self) -> &'static str {
26155        match self {
26156            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
26157            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
26158            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
26159            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
26160            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
26161            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
26162            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
26163            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
26164            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
26165            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
26166            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
26167            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
26168            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
26169            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
26170            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
26171            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
26172            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
26173            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
26174            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
26175            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
26176            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
26177            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
26178            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
26179            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
26180            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
26181            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
26182            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
26183            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
26184            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
26185            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
26186            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
26187            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
26188            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
26189            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
26190            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
26191            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
26192            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
26193            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
26194            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
26195            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
26196            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
26197            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
26198            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
26199            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
26200            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
26201            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
26202            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
26203            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
26204            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
26205            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
26206            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
26207            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
26208            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
26209            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
26210            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
26211            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
26212            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
26213            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
26214            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
26215            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
26216            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
26217            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
26218            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
26219            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
26220            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
26221            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
26222            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
26223            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
26224            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
26225            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
26226            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
26227            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
26228            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
26229            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
26230            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
26231            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
26232            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
26233            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
26234            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
26235            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
26236            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
26237            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
26238            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
26239            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
26240            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
26241            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
26242            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
26243            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
26244            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
26245            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
26246            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
26247            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
26248            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
26249            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
26250            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
26251            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
26252            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
26253            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
26254            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
26255            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
26256            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
26257            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
26258            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
26259            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
26260            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
26261            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
26262            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
26263            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
26264            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
26265            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
26266            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
26267            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
26268            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
26269            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
26270            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
26271            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
26272            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
26273            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
26274            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
26275            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
26276            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
26277            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
26278            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
26279            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
26280            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
26281            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
26282            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
26283            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
26284            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
26285            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
26286            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
26287            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
26288            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
26289            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
26290            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
26291            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
26292            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
26293            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
26294            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
26295            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
26296            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
26297            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
26298            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
26299            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
26300            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
26301            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
26302            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
26303            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
26304            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
26305            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
26306            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
26307            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
26308            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
26309            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
26310            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
26311            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
26312            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
26313            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
26314            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
26315            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
26316            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
26317            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
26318            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
26319            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
26320            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
26321            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
26322            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
26323            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
26324            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
26325            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
26326            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
26327            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
26328            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
26329            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
26330            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
26331            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
26332            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
26333            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
26334            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
26335            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
26336            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
26337            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
26338            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
26339            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
26340            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
26341            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
26342            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
26343            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
26344            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
26345        }
26346    }
26347}
26348// End of protos/perfetto/trace/android/app_wakelock_data.proto
26349
26350// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
26351
26352/// Describes the packet type and direction. CMD and EVT are unidirectional, so
26353/// no need to differentiate the direction.
26354#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26355#[repr(i32)]
26356pub enum BluetoothTracePacketType {
26357    HciCmd = 1,
26358    HciEvt = 2,
26359    HciAclRx = 3,
26360    HciAclTx = 4,
26361    HciScoRx = 5,
26362    HciScoTx = 6,
26363    HciIsoRx = 7,
26364    HciIsoTx = 8,
26365}
26366impl BluetoothTracePacketType {
26367    /// String value of the enum field names used in the ProtoBuf definition.
26368    ///
26369    /// The values are not transformed in any way and thus are considered stable
26370    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26371    pub fn as_str_name(&self) -> &'static str {
26372        match self {
26373            BluetoothTracePacketType::HciCmd => "HCI_CMD",
26374            BluetoothTracePacketType::HciEvt => "HCI_EVT",
26375            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
26376            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
26377            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
26378            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
26379            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
26380            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
26381        }
26382    }
26383}
26384// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
26385
26386// Begin of protos/perfetto/trace/android/network_trace.proto
26387
26388#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26389#[repr(i32)]
26390pub enum TrafficDirection {
26391    DirUnspecified = 0,
26392    DirIngress = 1,
26393    DirEgress = 2,
26394}
26395impl TrafficDirection {
26396    /// String value of the enum field names used in the ProtoBuf definition.
26397    ///
26398    /// The values are not transformed in any way and thus are considered stable
26399    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26400    pub fn as_str_name(&self) -> &'static str {
26401        match self {
26402            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
26403            TrafficDirection::DirIngress => "DIR_INGRESS",
26404            TrafficDirection::DirEgress => "DIR_EGRESS",
26405        }
26406    }
26407}
26408#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26409#[repr(i32)]
26410pub enum TrustedOverlay {
26411    Unset = 0,
26412    Disabled = 1,
26413    Enabled = 2,
26414}
26415impl TrustedOverlay {
26416    /// String value of the enum field names used in the ProtoBuf definition.
26417    ///
26418    /// The values are not transformed in any way and thus are considered stable
26419    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26420    pub fn as_str_name(&self) -> &'static str {
26421        match self {
26422            TrustedOverlay::Unset => "UNSET",
26423            TrustedOverlay::Disabled => "DISABLED",
26424            TrustedOverlay::Enabled => "ENABLED",
26425        }
26426    }
26427}
26428/// Must match definition in the IComposerClient HAL
26429#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26430#[repr(i32)]
26431pub enum HwcCompositionType {
26432    /// Invalid composition type
26433    HwcTypeUnspecified = 0,
26434    /// Layer was composited by the client into the client target buffer
26435    HwcTypeClient = 1,
26436    /// Layer was composited by the device through hardware overlays
26437    HwcTypeDevice = 2,
26438    /// Layer was composited by the device using a color
26439    HwcTypeSolidColor = 3,
26440    /// Similar to DEVICE, but the layer position may have been asynchronously set
26441    /// through setCursorPosition
26442    HwcTypeCursor = 4,
26443    /// Layer was composited by the device via a sideband stream
26444    HwcTypeSideband = 5,
26445    /// Layer was composited by hardware optimized for display decoration
26446    HwcTypeDisplayDecoration = 6,
26447}
26448impl HwcCompositionType {
26449    /// String value of the enum field names used in the ProtoBuf definition.
26450    ///
26451    /// The values are not transformed in any way and thus are considered stable
26452    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26453    pub fn as_str_name(&self) -> &'static str {
26454        match self {
26455            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
26456            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
26457            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
26458            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
26459            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
26460            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
26461            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
26462        }
26463    }
26464}
26465#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26466#[repr(i32)]
26467pub enum FtraceParseStatus {
26468    FtraceStatusUnspecified = 0,
26469    /// Not written, used for convenience of implementation:
26470    FtraceStatusOk = 1,
26471    /// Issues with reading data out of the ftrace ring buffer:
26472    FtraceStatusUnexpectedReadError = 2,
26473    FtraceStatusPartialPageRead = 3,
26474    /// Ring buffer binary data not matching our understanding of the layout:
26475    FtraceStatusAbiInvalidPageHeader = 4,
26476    FtraceStatusAbiShortEventHeader = 5,
26477    FtraceStatusAbiNullPadding = 6,
26478    FtraceStatusAbiShortPaddingLength = 7,
26479    FtraceStatusAbiInvalidPaddingLength = 8,
26480    FtraceStatusAbiShortTimeExtend = 9,
26481    FtraceStatusAbiShortTimeStamp = 10,
26482    FtraceStatusAbiShortDataLength = 11,
26483    FtraceStatusAbiZeroDataLength = 12,
26484    FtraceStatusAbiInvalidDataLength = 13,
26485    FtraceStatusAbiShortEventId = 14,
26486    FtraceStatusAbiEndOverflow = 15,
26487    /// Issues with parsing the event payload:
26488    FtraceStatusShortCompactEvent = 16,
26489    FtraceStatusInvalidEvent = 17,
26490}
26491impl FtraceParseStatus {
26492    /// String value of the enum field names used in the ProtoBuf definition.
26493    ///
26494    /// The values are not transformed in any way and thus are considered stable
26495    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26496    pub fn as_str_name(&self) -> &'static str {
26497        match self {
26498            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
26499            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
26500            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
26501            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
26502            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
26503            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
26504            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
26505            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
26506            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
26507            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
26508            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
26509            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
26510            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
26511            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
26512            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
26513            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
26514            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
26515            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
26516        }
26517    }
26518}
26519#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26520#[repr(i32)]
26521pub enum FtraceClock {
26522    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
26523    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
26524    Unspecified = 0,
26525    Unknown = 1,
26526    Global = 2,
26527    Local = 3,
26528    MonoRaw = 4,
26529}
26530impl FtraceClock {
26531    /// String value of the enum field names used in the ProtoBuf definition.
26532    ///
26533    /// The values are not transformed in any way and thus are considered stable
26534    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26535    pub fn as_str_name(&self) -> &'static str {
26536        match self {
26537            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
26538            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
26539            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
26540            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
26541            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
26542        }
26543    }
26544}
26545// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
26546
26547// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
26548
26549// Describes Chrome's Compositor scheduler's current state and associated
26550// variables.
26551//
26552// These protos and enums were adapted from the corresponding original JSON
26553// trace event for the scheduler state. In contrast to the JSON, we use strongly
26554// typed enum values instead of strings for many fields, and
26555// microsecond-granularity timestamps.
26556//
26557// The original format was generated in JSON by the code at
26558// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
26559//
26560// And is now generated as protozero:
26561// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
26562//
26563// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
26564
26565#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26566#[repr(i32)]
26567pub enum ChromeCompositorSchedulerAction {
26568    CcSchedulerActionUnspecified = 0,
26569    CcSchedulerActionNone = 1,
26570    CcSchedulerActionSendBeginMainFrame = 2,
26571    CcSchedulerActionCommit = 3,
26572    CcSchedulerActionActivateSyncTree = 4,
26573    CcSchedulerActionDrawIfPossible = 5,
26574    CcSchedulerActionDrawForced = 6,
26575    CcSchedulerActionDrawAbort = 7,
26576    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
26577    CcSchedulerActionPrepareTiles = 9,
26578    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
26579    CcSchedulerActionPerformImplSideInvalidation = 11,
26580    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
26581    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
26582}
26583impl ChromeCompositorSchedulerAction {
26584    /// String value of the enum field names used in the ProtoBuf definition.
26585    ///
26586    /// The values are not transformed in any way and thus are considered stable
26587    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26588    pub fn as_str_name(&self) -> &'static str {
26589        match self {
26590            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
26591            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
26592            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
26593            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
26594            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
26595            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
26596            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
26597            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
26598            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
26599            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
26600            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
26601            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
26602            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
26603            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
26604        }
26605    }
26606}
26607// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
26608
26609// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
26610
26611// Describes the state of the RendererScheduler for a given Renderer Process.
26612
26613/// RAIL Mode is an indication of the kind of work that a Renderer is currently
26614/// performing which is in turn used to prioritise work accordingly.
26615/// A fuller description of these modes can be found <https://web.dev/rail/>
26616#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26617#[repr(i32)]
26618pub enum ChromeRailMode {
26619    RailModeNone = 0,
26620    RailModeResponse = 1,
26621    RailModeAnimation = 2,
26622    RailModeIdle = 3,
26623    RailModeLoad = 4,
26624}
26625impl ChromeRailMode {
26626    /// String value of the enum field names used in the ProtoBuf definition.
26627    ///
26628    /// The values are not transformed in any way and thus are considered stable
26629    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26630    pub fn as_str_name(&self) -> &'static str {
26631        match self {
26632            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
26633            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
26634            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
26635            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
26636            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
26637        }
26638    }
26639}