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/kernel_wakelocks_config.proto
728
729/// Data source that records kernel (and native) wakelock data.
730#[derive(Clone, PartialEq, ::prost::Message)]
731pub struct KernelWakelocksConfig {
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/kernel_wakelocks_config.proto
737
738// Begin of protos/perfetto/config/android/network_trace_config.proto
739
740/// Network tracing data source that records details on all packets sent or
741/// received by the network.
742#[derive(Clone, PartialEq, ::prost::Message)]
743pub struct NetworkPacketTraceConfig {
744    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
745    /// ring buffer. The polling interval should be such that the ring buffer is
746    /// unlikely to fill in that interval (or that filling is an acceptable risk).
747    /// The minimum polling rate is 100ms (values below this are ignored).
748    /// Introduced in Android 14 (U).
749    #[prost(uint32, optional, tag="1")]
750    pub poll_ms: ::core::option::Option<u32>,
751    /// The aggregation_threshold is the number of packets at which an event will
752    /// switch from per-packet details to aggregate details. For example, a value
753    /// of 50 means that if a particular event (grouped by the unique combinations
754    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
755    /// packets, the exact timestamp and length are recorded for each packet. If
756    /// there were 50 or more packets in an event, it would only record the total
757    /// duration, packets, and length. A value of zero or unspecified will always
758    /// / record per-packet details. A value of 1 always records aggregate details.
759    #[prost(uint32, optional, tag="2")]
760    pub aggregation_threshold: ::core::option::Option<u32>,
761    /// Specifies the maximum number of packet contexts to intern at a time. This
762    /// prevents the interning table from growing too large and controls whether
763    /// interning is enabled or disabled (a value of zero disables interning and
764    /// is the default). When a data sources interning table reaches this amount,
765    /// packet contexts will be inlined into NetworkPacketEvents.
766    #[prost(uint32, optional, tag="3")]
767    pub intern_limit: ::core::option::Option<u32>,
768    /// The following fields specify whether certain fields should be dropped from
769    /// the output. Dropping fields improves normalization results, reduces the
770    /// size of the interning table, and slightly reduces event size.
771    #[prost(bool, optional, tag="4")]
772    pub drop_local_port: ::core::option::Option<bool>,
773    #[prost(bool, optional, tag="5")]
774    pub drop_remote_port: ::core::option::Option<bool>,
775    #[prost(bool, optional, tag="6")]
776    pub drop_tcp_flags: ::core::option::Option<bool>,
777}
778// End of protos/perfetto/config/android/network_trace_config.proto
779
780// Begin of protos/perfetto/config/android/packages_list_config.proto
781
782/// Data source that lists details (such as version code) about packages on an
783/// Android device.
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct PackagesListConfig {
786    /// If not empty, emit info about only the following list of package names
787    /// (exact match, no regex). Otherwise, emit info about all packages.
788    #[prost(string, repeated, tag="1")]
789    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
790}
791// End of protos/perfetto/config/android/packages_list_config.proto
792
793// Begin of protos/perfetto/config/android/pixel_modem_config.proto
794
795/// Data source that records events from the modem.
796#[derive(Clone, PartialEq, ::prost::Message)]
797pub struct PixelModemConfig {
798    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
799    pub event_group: ::core::option::Option<i32>,
800    /// If set, record only events with these hashes.
801    #[prost(int64, repeated, packed="false", tag="2")]
802    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
803    /// If set and allow_list is not set, deny events with these hashes.
804    #[prost(int64, repeated, packed="false", tag="3")]
805    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
806}
807/// Nested message and enum types in `PixelModemConfig`.
808pub mod pixel_modem_config {
809    /// Event group to record, as defined by the modem.
810    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
811    #[repr(i32)]
812    pub enum EventGroup {
813        Unknown = 0,
814        /// Events suitable for low bandwidth tracing only.
815        LowBandwidth = 1,
816        /// Events suitable for high and low bandwidth tracing.
817        HighAndLowBandwidth = 2,
818    }
819    impl EventGroup {
820        /// String value of the enum field names used in the ProtoBuf definition.
821        ///
822        /// The values are not transformed in any way and thus are considered stable
823        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
824        pub fn as_str_name(&self) -> &'static str {
825            match self {
826                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
827                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
828                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
829            }
830        }
831    }
832}
833// Begin of protos/perfetto/config/android/protolog_config.proto
834
835/// Custom configuration for the "android.protolog" data source.
836/// ProtoLog is a logging mechanism that is intented to be more efficient than
837/// logcat. This configures what logs to capture in the tracing instance.
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct ProtoLogConfig {
840    /// Specified the configurations for each of the logging groups. If none is
841    /// specified for a group the defaults will be used.
842    #[prost(message, repeated, tag="1")]
843    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
844    /// Specified what tracing mode to use for the tracing instance.
845    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
846    pub tracing_mode: ::core::option::Option<i32>,
847    /// If set, any message with log level higher than this level (inclusive) will
848    /// be traced. Group overrides take precedence over this value.
849    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
850    pub default_log_from_level: ::core::option::Option<i32>,
851}
852/// Nested message and enum types in `ProtoLogConfig`.
853pub mod proto_log_config {
854    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
855    #[repr(i32)]
856    pub enum TracingMode {
857        /// When using the DEFAULT tracing mode, only log groups and levels specified
858        /// in the group_overrides are traced.
859        Default = 0,
860        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
861        /// traced, unless specified in the group_overrides.
862        EnableAll = 1,
863    }
864    impl TracingMode {
865        /// String value of the enum field names used in the ProtoBuf definition.
866        ///
867        /// The values are not transformed in any way and thus are considered stable
868        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
869        pub fn as_str_name(&self) -> &'static str {
870            match self {
871                TracingMode::Default => "DEFAULT",
872                TracingMode::EnableAll => "ENABLE_ALL",
873            }
874        }
875    }
876}
877#[derive(Clone, PartialEq, ::prost::Message)]
878pub struct ProtoLogGroup {
879    /// The ProtoLog group name this configuration entry applies to.
880    #[prost(string, optional, tag="1")]
881    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
882    /// Specify the level from which to start capturing protologs.
883    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
884    /// message will be traced.
885    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
886    pub log_from: ::core::option::Option<i32>,
887    /// When set to true we will collect the stacktrace for each protolog message
888    /// in this group that we are tracing.
889    #[prost(bool, optional, tag="3")]
890    pub collect_stacktrace: ::core::option::Option<bool>,
891}
892// End of protos/perfetto/config/android/protolog_config.proto
893
894// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
895
896/// Custom configuration for the "android.surfaceflinger.layers" data source.
897#[derive(Clone, PartialEq, ::prost::Message)]
898pub struct SurfaceFlingerLayersConfig {
899    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
900    pub mode: ::core::option::Option<i32>,
901    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
902    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
903}
904/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
905pub mod surface_flinger_layers_config {
906    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
907    #[repr(i32)]
908    pub enum Mode {
909        Unspecified = 0,
910        /// Trace layers snapshots. A snapshot is taken every time a layers change
911        /// occurs.
912        Active = 1,
913        /// Generate layers snapshots from the transactions kept in the
914        /// SurfaceFlinger's internal ring buffer.
915        /// The layers snapshots generation occurs when this data source is flushed.
916        Generated = 2,
917        /// Trace a single layers snapshot.
918        Dump = 3,
919        /// Default mode (applied by SurfaceFlinger if no mode is specified).
920        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only when a bugreport
921        /// is taken.
922        GeneratedBugreportOnly = 4,
923    }
924    impl Mode {
925        /// String value of the enum field names used in the ProtoBuf definition.
926        ///
927        /// The values are not transformed in any way and thus are considered stable
928        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
929        pub fn as_str_name(&self) -> &'static str {
930            match self {
931                Mode::Unspecified => "MODE_UNSPECIFIED",
932                Mode::Active => "MODE_ACTIVE",
933                Mode::Generated => "MODE_GENERATED",
934                Mode::Dump => "MODE_DUMP",
935                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
936            }
937        }
938    }
939    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
940    #[repr(i32)]
941    pub enum TraceFlag {
942        Unspecified = 0,
943        Input = 2,
944        Composition = 4,
945        Extra = 8,
946        Hwc = 16,
947        Buffers = 32,
948        VirtualDisplays = 64,
949        /// INPUT | COMPOSITION | EXTRA
950        All = 14,
951    }
952    impl TraceFlag {
953        /// String value of the enum field names used in the ProtoBuf definition.
954        ///
955        /// The values are not transformed in any way and thus are considered stable
956        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
957        pub fn as_str_name(&self) -> &'static str {
958            match self {
959                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
960                TraceFlag::Input => "TRACE_FLAG_INPUT",
961                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
962                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
963                TraceFlag::Hwc => "TRACE_FLAG_HWC",
964                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
965                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
966                TraceFlag::All => "TRACE_FLAG_ALL",
967            }
968        }
969    }
970}
971// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
972
973// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
974
975/// Custom configuration for the "android.surfaceflinger.transactions" data
976/// source.
977#[derive(Clone, PartialEq, ::prost::Message)]
978pub struct SurfaceFlingerTransactionsConfig {
979    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
980    pub mode: ::core::option::Option<i32>,
981}
982/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
983pub mod surface_flinger_transactions_config {
984    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
985    #[repr(i32)]
986    pub enum Mode {
987        Unspecified = 0,
988        /// Default mode (applied by SurfaceFlinger if no mode is specified).
989        /// SurfaceFlinger writes its internal ring buffer of transactions every time
990        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
991        /// initial state and the latest transactions.
992        Continuous = 1,
993        /// SurfaceFlinger writes the initial state and then each incoming
994        /// transaction until the data source is stopped.
995        Active = 2,
996    }
997    impl Mode {
998        /// String value of the enum field names used in the ProtoBuf definition.
999        ///
1000        /// The values are not transformed in any way and thus are considered stable
1001        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1002        pub fn as_str_name(&self) -> &'static str {
1003            match self {
1004                Mode::Unspecified => "MODE_UNSPECIFIED",
1005                Mode::Continuous => "MODE_CONTINUOUS",
1006                Mode::Active => "MODE_ACTIVE",
1007            }
1008        }
1009    }
1010}
1011// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1012
1013// Begin of protos/perfetto/config/android/windowmanager_config.proto
1014
1015/// Custom configuration for the "android.windowmanager" data source.
1016#[derive(Clone, PartialEq, ::prost::Message)]
1017pub struct WindowManagerConfig {
1018    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1019    pub log_frequency: ::core::option::Option<i32>,
1020    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1021    pub log_level: ::core::option::Option<i32>,
1022}
1023/// Nested message and enum types in `WindowManagerConfig`.
1024pub mod window_manager_config {
1025    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1026    #[repr(i32)]
1027    pub enum LogFrequency {
1028        Unspecified = 0,
1029        /// Trace state snapshots when a frame is committed.
1030        Frame = 1,
1031        /// Trace state snapshots every time a transaction is committed.
1032        Transaction = 2,
1033        /// Trace single state snapshots when the data source is started.
1034        SingleDump = 3,
1035    }
1036    impl LogFrequency {
1037        /// String value of the enum field names used in the ProtoBuf definition.
1038        ///
1039        /// The values are not transformed in any way and thus are considered stable
1040        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1041        pub fn as_str_name(&self) -> &'static str {
1042            match self {
1043                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1044                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1045                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1046                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1047            }
1048        }
1049    }
1050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1051    #[repr(i32)]
1052    pub enum LogLevel {
1053        Unspecified = 0,
1054        /// Logs all elements with maximum amount of information.
1055        Verbose = 1,
1056        /// Logs all elements but doesn't write all configuration data.
1057        Debug = 2,
1058        /// Logs only visible elements, with the minimum amount of performance
1059        /// overhead
1060        Critical = 3,
1061    }
1062    impl LogLevel {
1063        /// String value of the enum field names used in the ProtoBuf definition.
1064        ///
1065        /// The values are not transformed in any way and thus are considered stable
1066        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1067        pub fn as_str_name(&self) -> &'static str {
1068            match self {
1069                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1070                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1071                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1072                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1073            }
1074        }
1075    }
1076}
1077// End of protos/perfetto/config/android/windowmanager_config.proto
1078
1079// Begin of protos/perfetto/config/chrome/chrome_config.proto
1080
1081#[derive(Clone, PartialEq, ::prost::Message)]
1082pub struct ChromeConfig {
1083    #[prost(string, optional, tag="1")]
1084    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1085    /// When enabled, the data source should only fill in fields in the output that
1086    /// are not potentially privacy sensitive.
1087    #[prost(bool, optional, tag="2")]
1088    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1089    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1090    /// JSON format. Note that the trace data will still be returned as a series of
1091    /// TracePackets, but the embedded data will be JSON instead of serialized
1092    /// protobuf.
1093    #[prost(bool, optional, tag="3")]
1094    pub convert_to_legacy_json: ::core::option::Option<bool>,
1095    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1096    pub client_priority: ::core::option::Option<i32>,
1097    /// Applicable only when using legacy JSON format.
1098    /// If |json_agent_label_filter| is not empty, only data pertaining to
1099    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1100    #[prost(string, optional, tag="5")]
1101    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1102}
1103/// Nested message and enum types in `ChromeConfig`.
1104pub mod chrome_config {
1105    /// Priority of the tracing session client. A higher priority session may
1106    /// preempt a lower priority one in configurations where concurrent sessions
1107    /// aren't supported.
1108    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1109    #[repr(i32)]
1110    pub enum ClientPriority {
1111        Unknown = 0,
1112        Background = 1,
1113        UserInitiated = 2,
1114    }
1115    impl ClientPriority {
1116        /// String value of the enum field names used in the ProtoBuf definition.
1117        ///
1118        /// The values are not transformed in any way and thus are considered stable
1119        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1120        pub fn as_str_name(&self) -> &'static str {
1121            match self {
1122                ClientPriority::Unknown => "UNKNOWN",
1123                ClientPriority::Background => "BACKGROUND",
1124                ClientPriority::UserInitiated => "USER_INITIATED",
1125            }
1126        }
1127    }
1128}
1129// End of protos/perfetto/config/chrome/chrome_config.proto
1130
1131// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1132
1133#[derive(Clone, PartialEq, ::prost::Message)]
1134pub struct ChromiumHistogramSamplesConfig {
1135    /// List of histograms to record. If no histogram is specified, all histograms
1136    /// are recorded.
1137    #[prost(message, repeated, tag="1")]
1138    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1139    /// Default: false (i.e. histogram names are NOT filtered out by default)
1140    /// When true, histogram_name will be filtered out.
1141    #[prost(bool, optional, tag="2")]
1142    pub filter_histogram_names: ::core::option::Option<bool>,
1143}
1144/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1145pub mod chromium_histogram_samples_config {
1146    /// Records when a value within the specified bounds [min_value, max_value] is
1147    /// emitted into a Chrome histogram.
1148    #[derive(Clone, PartialEq, ::prost::Message)]
1149    pub struct HistogramSample {
1150        #[prost(string, optional, tag="1")]
1151        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1152        #[prost(int64, optional, tag="2")]
1153        pub min_value: ::core::option::Option<i64>,
1154        #[prost(int64, optional, tag="3")]
1155        pub max_value: ::core::option::Option<i64>,
1156    }
1157}
1158// End of protos/perfetto/config/chrome/histogram_samples.proto
1159
1160// Begin of protos/perfetto/config/chrome/system_metrics.proto
1161
1162#[derive(Clone, PartialEq, ::prost::Message)]
1163pub struct ChromiumSystemMetricsConfig {
1164    /// Samples counters every X ms.
1165    #[prost(uint32, optional, tag="1")]
1166    pub sampling_interval_ms: ::core::option::Option<u32>,
1167}
1168// End of protos/perfetto/config/chrome/system_metrics.proto
1169
1170// Begin of protos/perfetto/config/chrome/v8_config.proto
1171
1172#[derive(Clone, PartialEq, ::prost::Message)]
1173pub struct V8Config {
1174    /// Whether to log the actual content of scripts (e.g. content of the JS file
1175    /// that was compiled to generate code).
1176    /// ATTENTION: This could considerably increase the size of the resuling trace
1177    ///             file.
1178    #[prost(bool, optional, tag="1")]
1179    pub log_script_sources: ::core::option::Option<bool>,
1180    /// Whether to log the generated code for jitted functions (machine code or
1181    /// bytecode).
1182    /// ATTENTION: This could considerably increase the size of the resuling trace
1183    ///             file.
1184    #[prost(bool, optional, tag="2")]
1185    pub log_instructions: ::core::option::Option<bool>,
1186}
1187// End of protos/perfetto/config/chrome/v8_config.proto
1188
1189// Begin of protos/perfetto/config/etw/etw_config.proto
1190
1191/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1192/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1193/// ns-evntrace-event_trace_properties
1194#[derive(Clone, PartialEq, ::prost::Message)]
1195pub struct EtwConfig {
1196    /// The kernel_flags determines the flags that will be used by the etw tracing
1197    /// session. These kernel flags have been built to expose the useful events
1198    /// captured from the kernel mode only.
1199    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1200    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1201}
1202/// Nested message and enum types in `EtwConfig`.
1203pub mod etw_config {
1204    /// The KernelFlag represent list of kernel flags that we are intrested in.
1205    /// To get a more extensive list run 'xperf -providers k'.
1206    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1207    #[repr(i32)]
1208    pub enum KernelFlag {
1209        Cswitch = 0,
1210        Dispatcher = 1,
1211    }
1212    impl KernelFlag {
1213        /// String value of the enum field names used in the ProtoBuf definition.
1214        ///
1215        /// The values are not transformed in any way and thus are considered stable
1216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1217        pub fn as_str_name(&self) -> &'static str {
1218            match self {
1219                KernelFlag::Cswitch => "CSWITCH",
1220                KernelFlag::Dispatcher => "DISPATCHER",
1221            }
1222        }
1223    }
1224}
1225// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1226
1227/// Next id: 31
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct FtraceConfig {
1230    /// Ftrace events to record, example: "sched/sched_switch".
1231    #[prost(string, repeated, tag="1")]
1232    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1233    /// Ftrace events to record, specific for kprobes and kretprobes
1234    #[prost(message, repeated, tag="30")]
1235    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1236    /// Android-specific event categories:
1237    #[prost(string, repeated, tag="2")]
1238    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1239    #[prost(string, repeated, tag="3")]
1240    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1241    /// Some processes can emit data through atrace or through the perfetto SDK via
1242    /// the "track_event" data source. For these categories, the SDK will be
1243    /// preferred, if possible, for this config.
1244    #[prost(string, repeated, tag="28")]
1245    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1246    /// Size of each per-cpu kernel ftrace ring buffer.
1247    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1248    /// buffers cannot be resized without pausing recording in the kernel.
1249    #[prost(uint32, optional, tag="10")]
1250    pub buffer_size_kb: ::core::option::Option<u32>,
1251    /// If set, specifies how often the tracing daemon reads from the kernel ring
1252    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1253    /// Leave unset unless you're fine-tuning a local config.
1254    #[prost(uint32, optional, tag="11")]
1255    pub drain_period_ms: ::core::option::Option<u32>,
1256    /// If set, the tracing daemon will read kernel ring buffers as soon as
1257    /// they're filled past this percentage of occupancy. In other words, a value
1258    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1259    /// half-full. Not guaranteed if there are multiple concurrent tracing
1260    /// sessions.
1261    /// Currently does nothing on Linux kernels below v6.9.
1262    /// Introduced in: perfetto v48.
1263    #[prost(uint32, optional, tag="29")]
1264    pub drain_buffer_percent: ::core::option::Option<u32>,
1265    #[prost(message, optional, tag="12")]
1266    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1267    #[prost(message, optional, tag="22")]
1268    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1269    /// Enables symbol name resolution against /proc/kallsyms.
1270    /// It requires that either traced_probes is running as root or that
1271    /// kptr_restrict has been manually lowered.
1272    /// It does not disclose KASLR, symbol addresses are mangled.
1273    #[prost(bool, optional, tag="13")]
1274    pub symbolize_ksyms: ::core::option::Option<bool>,
1275    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1276    pub ksyms_mem_policy: ::core::option::Option<i32>,
1277    /// By default the kernel symbolizer is lazily initialized on a deferred task
1278    /// to reduce ftrace's time-to-start-recording. Unfortunately that makes
1279    /// ksyms integration tests hard. This flag forces the kernel symbolizer to be
1280    /// initialized synchronously on the data source start and hence avoiding
1281    /// timing races in tests.
1282    /// DEPRECATED in v28 / Android U. This is now the default behavior, setting it
1283    /// to true is a no-op.
1284    #[deprecated]
1285    #[prost(bool, optional, tag="14")]
1286    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1287    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1288    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1289    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1290    /// The historical context for this is the following:
1291    /// - Up to Android S (12), the rss_stat was internally throttled in its
1292    ///    kernel implementation.
1293    /// - A change introduced in the kernels after S has introduced a new
1294    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1295    ///    (hence very spammy).
1296    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1297    ///    need to deal with both cases.
1298    /// For more context: go/rss-stat-throttled.
1299    #[prost(bool, optional, tag="15")]
1300    pub throttle_rss_stat: ::core::option::Option<bool>,
1301    /// If true, avoid enabling events that aren't statically known by
1302    /// traced_probes. Otherwise, the default is to emit such events as
1303    /// GenericFtraceEvent protos.
1304    /// Prefer to keep this flag at its default. This was added for Android
1305    /// tracing, where atrace categories and/or atrace HAL requested events can
1306    /// expand to events that aren't of interest to the tracing user.
1307    /// Introduced in: Android T.
1308    #[prost(bool, optional, tag="16")]
1309    pub disable_generic_events: ::core::option::Option<bool>,
1310    /// The subset of syscalls to record. To record all syscalls, leave this unset
1311    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1312    /// * before perfetto v43, requires the config to also enable
1313    ///    raw_syscalls/sys_{enter,exit}.
1314    /// * perfetto v43+ does the right thing if you set only this field.
1315    /// Example: ["sys_read", "sys_open"].
1316    /// Introduced in: Android U.
1317    #[prost(string, repeated, tag="18")]
1318    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1319    /// If true, enable the "function_graph" kernel tracer that emits events
1320    /// whenever a kernel function is entered and exited
1321    /// (funcgraph_entry/funcgraph_exit).
1322    /// Notes on use:
1323    /// * Requires |symbolize_ksyms| for function name resolution.
1324    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1325    ///    set of functions, otherwise the event bandwidth will be too high for
1326    ///    practical use.
1327    /// * The data source might be rejected if there is already a concurrent
1328    ///    ftrace data source that does not use function graph itself, as we do not
1329    ///    support switching kernel tracers mid-trace.
1330    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1331    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1332    ///    "function_graph".
1333    /// Android:
1334    /// * Available only on debuggable builds.
1335    /// * Introduced in: Android U.
1336    #[prost(bool, optional, tag="19")]
1337    pub enable_function_graph: ::core::option::Option<bool>,
1338    /// Constrains the set of functions traced when |enable_function_graph| is
1339    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1340    /// in which case all matching functions will be traced. See kernel
1341    /// documentation on ftrace "set_ftrace_filter" file for more details.
1342    /// Android:
1343    /// * Available only on debuggable builds.
1344    /// * Introduced in: Android U.
1345    #[prost(string, repeated, tag="20")]
1346    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1347    /// If |enable_function_graph| is true, trace this set of functions *and* all
1348    /// of its callees. Supports globs. Can be set together with
1349    /// |function_filters|, in which case only callees matching the filter will be
1350    /// traced. If setting both, you most likely want all roots to also be
1351    /// included in |function_filters|.
1352    /// Android:
1353    /// * Available only on debuggable builds.
1354    /// * Introduced in: Android U.
1355    #[prost(string, repeated, tag="21")]
1356    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1357    /// If true, does not clear ftrace buffers before the start of the program.
1358    /// This makes sense only if this is the first ftrace data source instance
1359    /// created after the daemon has been started. Can be useful for gathering boot
1360    /// traces, if ftrace has been separately configured (e.g. via kernel
1361    /// commandline).
1362    #[prost(bool, optional, tag="23")]
1363    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1364    /// If true, overrides the default timestamp clock and uses a raw hardware
1365    /// based monotonic clock for getting timestamps.
1366    /// * Introduced in: Android U.
1367    #[prost(bool, optional, tag="24")]
1368    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1369    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1370    /// for event recording. Normally, this means
1371    /// `/sys/kernel/tracing/instances/$instance_name`.
1372    ///
1373    /// The name "hyp" is reserved.
1374    ///
1375    /// The instance must already exist, the tracing daemon *will not* create it
1376    /// for you as it typically doesn't have such permissions.
1377    /// Only a subset of features is guaranteed to work with non-default instances,
1378    /// at the time of writing:
1379    ///   * ftrace_events
1380    ///   * buffer_size_kb
1381    #[prost(string, optional, tag="25")]
1382    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1383    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1384    /// implementation to choose a bigger buffer size.
1385    ///
1386    /// Most configs for perfetto v43+ should simply leave both fields unset.
1387    ///
1388    /// If you need a config compatible with a range of perfetto builds and you
1389    /// used to set a non-default buffer_size_kb, consider setting both fields.
1390    /// Example:
1391    ///    buffer_size_kb: 4096
1392    ///    buffer_size_lower_bound: true
1393    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1394    /// On v43+, buffers will be at least 4 MB.
1395    /// In both cases, neither is guaranteed if there are other concurrent
1396    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1397    /// the recording in the kernel.
1398    /// Introduced in: perfetto v43.
1399    #[prost(bool, optional, tag="27")]
1400    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1401}
1402/// Nested message and enum types in `FtraceConfig`.
1403pub mod ftrace_config {
1404    #[derive(Clone, PartialEq, ::prost::Message)]
1405    pub struct KprobeEvent {
1406        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1407        #[prost(string, optional, tag="1")]
1408        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1409        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1410        pub r#type: ::core::option::Option<i32>,
1411    }
1412    /// Nested message and enum types in `KprobeEvent`.
1413    pub mod kprobe_event {
1414        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1415        #[repr(i32)]
1416        pub enum KprobeType {
1417            Unknown = 0,
1418            Kprobe = 1,
1419            Kretprobe = 2,
1420            Both = 3,
1421        }
1422        impl KprobeType {
1423            /// String value of the enum field names used in the ProtoBuf definition.
1424            ///
1425            /// The values are not transformed in any way and thus are considered stable
1426            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1427            pub fn as_str_name(&self) -> &'static str {
1428                match self {
1429                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1430                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1431                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1432                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1433                }
1434            }
1435        }
1436    }
1437    /// Configuration for compact encoding of scheduler events. When enabled (and
1438    /// recording the relevant ftrace events), specific high-volume events are
1439    /// encoded in a denser format than normal.
1440    #[derive(Clone, PartialEq, ::prost::Message)]
1441    pub struct CompactSchedConfig {
1442        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1443        /// record those events in the compact format.
1444        ///
1445        /// If the field is unset, the default is:
1446        /// * perfetto v42.0+: enabled
1447        /// * before: disabled
1448        #[prost(bool, optional, tag="1")]
1449        pub enabled: ::core::option::Option<bool>,
1450    }
1451    /// Optional filter for "ftrace/print" events.
1452    ///
1453    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1454    /// are processed in order), its `allow` field will be used as the outcome: if
1455    /// `allow` is true, the event will be included in the trace, otherwise it will
1456    /// be discarded. If an event does not match any rule, it will be allowed by
1457    /// default (a rule with an empty prefix and allow=false, disallows everything
1458    /// by default).
1459    #[derive(Clone, PartialEq, ::prost::Message)]
1460    pub struct PrintFilter {
1461        #[prost(message, repeated, tag="1")]
1462        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1463    }
1464    /// Nested message and enum types in `PrintFilter`.
1465    pub mod print_filter {
1466        #[derive(Clone, PartialEq, ::prost::Message)]
1467        pub struct Rule {
1468            #[prost(bool, optional, tag="2")]
1469            pub allow: ::core::option::Option<bool>,
1470            #[prost(oneof="rule::Match", tags="1, 3")]
1471            pub r#match: ::core::option::Option<rule::Match>,
1472        }
1473        /// Nested message and enum types in `Rule`.
1474        pub mod rule {
1475            /// Matches an atrace message of the form:
1476            /// <type>|pid|<prefix>...
1477            #[derive(Clone, PartialEq, ::prost::Message)]
1478            pub struct AtraceMessage {
1479                #[prost(string, optional, tag="1")]
1480                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1481                #[prost(string, optional, tag="2")]
1482                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1483            }
1484            #[derive(Clone, PartialEq, ::prost::Oneof)]
1485            pub enum Match {
1486                /// This rule matches if `prefix` matches exactly with the beginning of
1487                /// the "ftrace/print" "buf" field.
1488                #[prost(string, tag="1")]
1489                Prefix(::prost::alloc::string::String),
1490                /// This rule matches if the "buf" field contains an atrace-style print
1491                /// message as specified in `atrace_msg`.
1492                #[prost(message, tag="3")]
1493                AtraceMsg(AtraceMessage),
1494            }
1495        }
1496    }
1497    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1498    /// should keep the symbol map in memory (and reuse it for future tracing
1499    /// sessions) or clear it (saving memory) and re-create it on each tracing
1500    /// session (wasting cpu and wall time).
1501    /// The tradeoff is roughly:
1502    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1503    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1504    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1505    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1506    #[repr(i32)]
1507    pub enum KsymsMemPolicy {
1508        KsymsUnspecified = 0,
1509        KsymsCleanupOnStop = 1,
1510        KsymsRetain = 2,
1511    }
1512    impl KsymsMemPolicy {
1513        /// String value of the enum field names used in the ProtoBuf definition.
1514        ///
1515        /// The values are not transformed in any way and thus are considered stable
1516        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1517        pub fn as_str_name(&self) -> &'static str {
1518            match self {
1519                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1520                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1521                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1522            }
1523        }
1524    }
1525}
1526// End of protos/perfetto/config/ftrace/ftrace_config.proto
1527
1528// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1529
1530#[derive(Clone, PartialEq, ::prost::Message)]
1531pub struct GpuCounterConfig {
1532    /// Desired sampling interval for counters.
1533    #[prost(uint64, optional, tag="1")]
1534    pub counter_period_ns: ::core::option::Option<u64>,
1535    /// List of counters to be sampled. Counter IDs correspond to the ones
1536    /// described in GpuCounterSpec in the data source descriptor.
1537    #[prost(uint32, repeated, packed="false", tag="2")]
1538    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1539    /// Sample counters by instrumenting command buffers.
1540    #[prost(bool, optional, tag="3")]
1541    pub instrumented_sampling: ::core::option::Option<bool>,
1542    /// Fix gpu clock rate during trace session.
1543    #[prost(bool, optional, tag="4")]
1544    pub fix_gpu_clock: ::core::option::Option<bool>,
1545}
1546// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1547
1548// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1549
1550#[derive(Clone, PartialEq, ::prost::Message)]
1551pub struct GpuRenderStagesConfig {
1552    /// Enable to separate the color and depth/stencil load and store stages
1553    /// into a separate stages. If disabled, the depth/stencil load and store
1554    /// stages will be combined.  Disabled by default. This option has no effect if
1555    /// Low Overhead mode is enabled.
1556    #[prost(bool, optional, tag="1")]
1557    pub full_loadstore: ::core::option::Option<bool>,
1558    /// Use the low overhead mode for traces. In this mode render stages are
1559    /// combined into a single workload stage. This provides less granular data but
1560    /// induces minimal GPU overhead. Disabled by default.
1561    #[prost(bool, optional, tag="2")]
1562    pub low_overhead: ::core::option::Option<bool>,
1563    /// Trace metrics to capture for each render stage
1564    #[prost(string, repeated, tag="3")]
1565    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1566}
1567// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1568
1569// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1570
1571#[derive(Clone, PartialEq, ::prost::Message)]
1572pub struct VulkanMemoryConfig {
1573    /// Tracking driver memory usage events
1574    #[prost(bool, optional, tag="1")]
1575    pub track_driver_memory_usage: ::core::option::Option<bool>,
1576    /// Tracking device memory usage events
1577    #[prost(bool, optional, tag="2")]
1578    pub track_device_memory_usage: ::core::option::Option<bool>,
1579}
1580// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1581
1582// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1583
1584#[derive(Clone, PartialEq, ::prost::Message)]
1585pub struct InodeFileConfig {
1586    /// How long to pause between batches.
1587    #[prost(uint32, optional, tag="1")]
1588    pub scan_interval_ms: ::core::option::Option<u32>,
1589    /// How long to wait before the first scan in order to accumulate inodes.
1590    #[prost(uint32, optional, tag="2")]
1591    pub scan_delay_ms: ::core::option::Option<u32>,
1592    /// How many inodes to scan in one batch.
1593    #[prost(uint32, optional, tag="3")]
1594    pub scan_batch_size: ::core::option::Option<u32>,
1595    /// Do not scan for inodes not found in the static map.
1596    #[prost(bool, optional, tag="4")]
1597    pub do_not_scan: ::core::option::Option<bool>,
1598    /// If non-empty, only scan inodes corresponding to block devices named in
1599    /// this list.
1600    #[prost(string, repeated, tag="5")]
1601    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1602    /// When encountering an inode belonging to a block device corresponding
1603    /// to one of the mount points in this map, scan its scan_roots instead.
1604    #[prost(message, repeated, tag="6")]
1605    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1606}
1607/// Nested message and enum types in `InodeFileConfig`.
1608pub mod inode_file_config {
1609    #[derive(Clone, PartialEq, ::prost::Message)]
1610    pub struct MountPointMappingEntry {
1611        #[prost(string, optional, tag="1")]
1612        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1613        #[prost(string, repeated, tag="2")]
1614        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1615    }
1616}
1617// End of protos/perfetto/config/inode_file/inode_file_config.proto
1618
1619// Begin of protos/perfetto/config/interceptors/console_config.proto
1620
1621#[derive(Clone, PartialEq, ::prost::Message)]
1622pub struct ConsoleConfig {
1623    #[prost(enumeration="console_config::Output", optional, tag="1")]
1624    pub output: ::core::option::Option<i32>,
1625    #[prost(bool, optional, tag="2")]
1626    pub enable_colors: ::core::option::Option<bool>,
1627}
1628/// Nested message and enum types in `ConsoleConfig`.
1629pub mod console_config {
1630    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1631    #[repr(i32)]
1632    pub enum Output {
1633        Unspecified = 0,
1634        Stdout = 1,
1635        Stderr = 2,
1636    }
1637    impl Output {
1638        /// String value of the enum field names used in the ProtoBuf definition.
1639        ///
1640        /// The values are not transformed in any way and thus are considered stable
1641        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1642        pub fn as_str_name(&self) -> &'static str {
1643            match self {
1644                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1645                Output::Stdout => "OUTPUT_STDOUT",
1646                Output::Stderr => "OUTPUT_STDERR",
1647            }
1648        }
1649    }
1650}
1651// End of protos/perfetto/config/interceptors/console_config.proto
1652
1653// Begin of protos/perfetto/config/interceptor_config.proto
1654
1655/// Configuration for trace packet interception. Used for diverting trace data to
1656/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1657/// Perfetto SDK.
1658#[derive(Clone, PartialEq, ::prost::Message)]
1659pub struct InterceptorConfig {
1660    /// Matches the name given to RegisterInterceptor().
1661    #[prost(string, optional, tag="1")]
1662    pub name: ::core::option::Option<::prost::alloc::string::String>,
1663    #[prost(message, optional, tag="100")]
1664    pub console_config: ::core::option::Option<ConsoleConfig>,
1665}
1666// End of protos/perfetto/config/interceptor_config.proto
1667
1668// Begin of protos/perfetto/config/power/android_power_config.proto
1669
1670#[derive(Clone, PartialEq, ::prost::Message)]
1671pub struct AndroidPowerConfig {
1672    #[prost(uint32, optional, tag="1")]
1673    pub battery_poll_ms: ::core::option::Option<u32>,
1674    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1675    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1676    /// Where available enables per-power-rail measurements.
1677    #[prost(bool, optional, tag="3")]
1678    pub collect_power_rails: ::core::option::Option<bool>,
1679    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1680    /// Available from Android S.
1681    #[prost(bool, optional, tag="4")]
1682    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1683    /// Provides a breakdown of time in state for various subsystems.
1684    /// Available from Android U.
1685    #[prost(bool, optional, tag="5")]
1686    pub collect_entity_state_residency: ::core::option::Option<bool>,
1687}
1688/// Nested message and enum types in `AndroidPowerConfig`.
1689pub mod android_power_config {
1690    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1691    #[repr(i32)]
1692    pub enum BatteryCounters {
1693        BatteryCounterUnspecified = 0,
1694        /// Coulomb counter.
1695        BatteryCounterCharge = 1,
1696        /// Charge (%).
1697        BatteryCounterCapacityPercent = 2,
1698        /// Instantaneous current.
1699        BatteryCounterCurrent = 3,
1700        /// Avg current.
1701        BatteryCounterCurrentAvg = 4,
1702        /// Instantaneous voltage.
1703        BatteryCounterVoltage = 5,
1704    }
1705    impl BatteryCounters {
1706        /// String value of the enum field names used in the ProtoBuf definition.
1707        ///
1708        /// The values are not transformed in any way and thus are considered stable
1709        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1710        pub fn as_str_name(&self) -> &'static str {
1711            match self {
1712                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1713                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1714                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1715                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1716                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1717                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1718            }
1719        }
1720    }
1721}
1722// End of protos/perfetto/config/power/android_power_config.proto
1723
1724// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
1725
1726#[derive(Clone, PartialEq, ::prost::Message)]
1727pub struct ProcessStatsConfig {
1728    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
1729    pub quirks: ::prost::alloc::vec::Vec<i32>,
1730    /// If enabled all processes will be scanned and dumped when the trace starts.
1731    #[prost(bool, optional, tag="2")]
1732    pub scan_all_processes_on_start: ::core::option::Option<bool>,
1733    /// If enabled thread names are also recoded (this is redundant if sched_switch
1734    /// is enabled).
1735    #[prost(bool, optional, tag="3")]
1736    pub record_thread_names: ::core::option::Option<bool>,
1737    /// If > 0 samples counters (see process_stats.proto) from
1738    /// /proc/pid/status and oom_score_adj every X ms.
1739    /// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
1740    /// This is required to be > 100ms to avoid excessive CPU usage.
1741    #[prost(uint32, optional, tag="4")]
1742    pub proc_stats_poll_ms: ::core::option::Option<u32>,
1743    // id 5 never used
1744
1745    /// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
1746    /// (default: |proc_stats_poll_ms|). If = 0, will be set to
1747    /// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
1748    /// multiple.
1749    #[prost(uint32, optional, tag="6")]
1750    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
1751    /// Niche feature: If true this will resolve file descriptors for each process
1752    /// so these can be mapped to their actual device or file.
1753    /// Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
1754    /// new fds opened after initially scanning a process will not be
1755    /// recognized.
1756    #[prost(bool, optional, tag="9")]
1757    pub resolve_process_fds: ::core::option::Option<bool>,
1758    /// If true, output will include memory stats from /proc/pid/smaps_rollup.
1759    ///
1760    /// Does NOT work with the Android system daemon by default, as it requires
1761    /// running the recording process (traced_probes or tracebox) as root. It is
1762    /// possible to avoid the root requirement, but the exact steps depend on the
1763    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
1764    /// check, and might be further covered by the procfs "hidepid" mount option.
1765    #[prost(bool, optional, tag="10")]
1766    pub scan_smaps_rollup: ::core::option::Option<bool>,
1767    /// If true: process descriptions will include process age (starttime in
1768    /// /proc/pid/stat).
1769    /// Introduced in: perfetto v44.
1770    #[prost(bool, optional, tag="11")]
1771    pub record_process_age: ::core::option::Option<bool>,
1772    /// If true and |proc_stats_poll_ms| is true, process stats will include time
1773    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
1774    /// Introduced in: perfetto v44.
1775    #[prost(bool, optional, tag="12")]
1776    pub record_process_runtime: ::core::option::Option<bool>,
1777}
1778/// Nested message and enum types in `ProcessStatsConfig`.
1779pub mod process_stats_config {
1780    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1781    #[repr(i32)]
1782    pub enum Quirks {
1783        Unspecified = 0,
1784        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
1785        /// startup is now disabled by default and can be re-enabled using the
1786        /// |scan_all_processes_on_start| arg.
1787        DisableInitialDump = 1,
1788        DisableOnDemand = 2,
1789    }
1790    impl Quirks {
1791        /// String value of the enum field names used in the ProtoBuf definition.
1792        ///
1793        /// The values are not transformed in any way and thus are considered stable
1794        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1795        pub fn as_str_name(&self) -> &'static str {
1796            match self {
1797                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
1798                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
1799                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
1800            }
1801        }
1802    }
1803}
1804// End of protos/perfetto/config/process_stats/process_stats_config.proto
1805
1806// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
1807
1808/// Configuration for go/heapprofd.
1809/// Next id: 28
1810#[derive(Clone, PartialEq, ::prost::Message)]
1811pub struct HeapprofdConfig {
1812    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
1813    ///
1814    /// These are:
1815    /// * All heaps if heap_sampling_intervals is empty.
1816    /// * Those profiled due to all_heaps and not named in heaps if
1817    ///    heap_sampling_intervals is not empty.
1818    /// * The implicit libc.malloc heap if heaps is empty.
1819    ///
1820    /// Set to 1 for perfect accuracy.
1821    /// Otherwise, sample every sample_interval_bytes on average.
1822    ///
1823    /// See
1824    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
1825    /// for more details.
1826    ///
1827    /// BUGS
1828    /// Before Android 12, setting this to 0 would crash the target process.
1829    ///
1830    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
1831    /// this field or with heap_sampling_intervals), otherwise the producer will
1832    /// not start.
1833    #[prost(uint64, optional, tag="1")]
1834    pub sampling_interval_bytes: ::core::option::Option<u64>,
1835    /// If less than the given numbers of bytes are left free in the shared
1836    /// memory buffer, increase sampling interval by a factor of two.
1837    /// Adaptive sampling is disabled when set to 0.
1838    #[prost(uint64, optional, tag="24")]
1839    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
1840    /// Stop doubling the sampling_interval once the sampling interval has reached
1841    /// this value.
1842    #[prost(uint64, optional, tag="25")]
1843    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
1844    /// E.g. surfaceflinger, com.android.phone
1845    /// This input is normalized in the following way: if it contains slashes,
1846    /// everything up to the last slash is discarded. If it contains "@",
1847    /// everything after the first @ is discared.
1848    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
1849    /// This transformation is also applied to the processes' command lines when
1850    /// matching.
1851    #[prost(string, repeated, tag="2")]
1852    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1853    /// For watermark based triggering or local debugging.
1854    #[prost(uint64, repeated, packed="false", tag="4")]
1855    pub pid: ::prost::alloc::vec::Vec<u64>,
1856    /// Only profile target if it was installed by one of the packages given.
1857    /// Special values are:
1858    /// * @system: installed on the system partition
1859    /// * @product: installed on the product partition
1860    /// * @null: sideloaded
1861    /// Supported on Android 12+.
1862    #[prost(string, repeated, tag="26")]
1863    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1864    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
1865    /// "malloc".
1866    ///
1867    /// Introduced in Android 12.
1868    #[prost(string, repeated, tag="20")]
1869    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1870    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
1871    /// combination with all_heaps;
1872    ///
1873    /// Introduced in Android 12.
1874    #[prost(string, repeated, tag="27")]
1875    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1876    #[prost(bool, optional, tag="23")]
1877    pub stream_allocations: ::core::option::Option<bool>,
1878    /// If given, needs to be the same length as heaps and gives the sampling
1879    /// interval for the respective entry in heaps.
1880    ///
1881    /// Otherwise, sampling_interval_bytes is used.
1882    ///
1883    /// It is recommended to set sampling_interval_bytes to a reasonable default
1884    /// value when using this, as a value of 0 for sampling_interval_bytes will
1885    /// crash the target process before Android 12.
1886    ///
1887    /// Introduced in Android 12.
1888    ///
1889    /// All values must be non-zero or the producer will not start.
1890    #[prost(uint64, repeated, packed="false", tag="22")]
1891    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
1892    /// Sample all heaps registered by target process. Introduced in Android 12.
1893    #[prost(bool, optional, tag="21")]
1894    pub all_heaps: ::core::option::Option<bool>,
1895    /// Profile all processes eligible for profiling on the system.
1896    /// See
1897    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
1898    /// for which processes are eligible.
1899    ///
1900    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
1901    /// will crash when trying to launch a new process as it will have an
1902    /// unexpected open socket to heapprofd.
1903    ///
1904    /// heapprofd will likely be overloaded by the amount of data for low
1905    /// sampling intervals.
1906    #[prost(bool, optional, tag="5")]
1907    pub all: ::core::option::Option<bool>,
1908    /// Do not profile processes whose anon RSS + swap < given value.
1909    /// Introduced in Android 11.
1910    #[prost(uint32, optional, tag="15")]
1911    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
1912    /// Stop profile if heapprofd memory usage goes beyond the given value.
1913    /// Introduced in Android 11.
1914    #[prost(uint32, optional, tag="16")]
1915    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
1916    /// Stop profile if heapprofd CPU time since start of this data-source
1917    /// goes beyond given value.
1918    /// Introduced in Android 11.
1919    #[prost(uint64, optional, tag="17")]
1920    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
1921    /// Do not emit function names for mappings starting with this prefix.
1922    /// E.g. /system to not emit symbols for any system libraries.
1923    #[prost(string, repeated, tag="7")]
1924    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1925    /// Dump at a predefined interval.
1926    #[prost(message, optional, tag="6")]
1927    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
1928    /// Size of the shared memory buffer between the profiled processes and
1929    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
1930    /// MiB.
1931    ///
1932    /// Needs to be:
1933    /// * at least 8192,
1934    /// * a power of two,
1935    /// * a multiple of 4096.
1936    #[prost(uint64, optional, tag="8")]
1937    pub shmem_size_bytes: ::core::option::Option<u64>,
1938    /// When the shmem buffer is full, block the client instead of ending the
1939    /// trace. Use with caution as this will significantly slow down the target
1940    /// process.
1941    #[prost(bool, optional, tag="9")]
1942    pub block_client: ::core::option::Option<bool>,
1943    /// If set, stop the trace session after blocking the client for this
1944    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
1945    /// Introduced in Android 11.
1946    #[prost(uint32, optional, tag="14")]
1947    pub block_client_timeout_us: ::core::option::Option<u32>,
1948    /// Do not profile processes from startup, only match already running
1949    /// processes.
1950    ///
1951    /// Can not be set at the same time as no_running.
1952    /// Introduced in Android 11.
1953    #[prost(bool, optional, tag="10")]
1954    pub no_startup: ::core::option::Option<bool>,
1955    /// Do not profile running processes. Only match processes on startup.
1956    ///
1957    /// Can not be set at the same time as no_startup.
1958    /// Introduced in Android 11.
1959    #[prost(bool, optional, tag="11")]
1960    pub no_running: ::core::option::Option<bool>,
1961    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
1962    /// at the point in time when the sampled heap usage of the process was at its
1963    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
1964    /// self_allocated and self_freed to not be set.
1965    /// Introduced in Android 11.
1966    #[prost(bool, optional, tag="13")]
1967    pub dump_at_max: ::core::option::Option<bool>,
1968    // FEATURE FLAGS. THERE BE DRAGONS.
1969
1970    /// Escape hatch if the session is being torn down because of a forked child
1971    /// that shares memory space, but is not correctly identified as a vforked
1972    /// child.
1973    /// Introduced in Android 11.
1974    #[prost(bool, optional, tag="18")]
1975    pub disable_fork_teardown: ::core::option::Option<bool>,
1976    /// We try to automatically detect when a target applicatation vforks but then
1977    /// does a memory allocation (or free). This auto-detection can be disabled
1978    /// with this.
1979    /// Introduced in Android 11.
1980    #[prost(bool, optional, tag="19")]
1981    pub disable_vfork_detection: ::core::option::Option<bool>,
1982}
1983/// Nested message and enum types in `HeapprofdConfig`.
1984pub mod heapprofd_config {
1985    #[derive(Clone, PartialEq, ::prost::Message)]
1986    pub struct ContinuousDumpConfig {
1987        /// ms to wait before first dump.
1988        #[prost(uint32, optional, tag="5")]
1989        pub dump_phase_ms: ::core::option::Option<u32>,
1990        /// ms to wait between following dumps.
1991        #[prost(uint32, optional, tag="6")]
1992        pub dump_interval_ms: ::core::option::Option<u32>,
1993    }
1994}
1995// End of protos/perfetto/config/profiling/heapprofd_config.proto
1996
1997// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
1998
1999/// Configuration for managed app heap graph snapshots.
2000#[derive(Clone, PartialEq, ::prost::Message)]
2001pub struct JavaHprofConfig {
2002    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2003    /// comm string). The semantics of this field were changed since its original
2004    /// introduction.
2005    ///
2006    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2007    /// the profiler will attempt to match it in two possible ways:
2008    /// * if the pattern starts with a '/', then it is matched against the first
2009    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2010    ///    "/bin/echo".
2011    /// * otherwise the pattern is matched against the part of argv0
2012    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2013    ///    For example "echo" would match "/bin/echo".
2014    ///
2015    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2016    /// normalized prior to an exact string comparison. Normalization is as
2017    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2018    /// the string contains forward slashes, trim everything up to and including
2019    /// the last one.
2020    ///
2021    /// Implementation note: in either case, at most 511 characters of cmdline
2022    /// are considered.
2023    #[prost(string, repeated, tag="1")]
2024    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2025    /// For watermark based triggering or local debugging.
2026    #[prost(uint64, repeated, packed="false", tag="2")]
2027    pub pid: ::prost::alloc::vec::Vec<u64>,
2028    /// Only profile target if it was installed by one of the packages given.
2029    /// Special values are:
2030    /// * @system: installed on the system partition
2031    /// * @product: installed on the product partition
2032    /// * @null: sideloaded
2033    /// Supported on Android 12+.
2034    #[prost(string, repeated, tag="7")]
2035    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2036    /// Dump at a predefined interval.
2037    #[prost(message, optional, tag="3")]
2038    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2039    /// Do not profile processes whose anon RSS + swap < given value.
2040    #[prost(uint32, optional, tag="4")]
2041    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2042    /// Include the process' /proc/self/smaps.
2043    /// This only shows maps that:
2044    /// * start with /system
2045    /// * start with /vendor
2046    /// * start with /data/app
2047    /// * contain "extracted in memory from Y", where Y matches any of the above
2048    #[prost(bool, optional, tag="5")]
2049    pub dump_smaps: ::core::option::Option<bool>,
2050    /// Exclude objects of the following types from the profile. This can be
2051    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2052    #[prost(string, repeated, tag="6")]
2053    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2054}
2055/// Nested message and enum types in `JavaHprofConfig`.
2056pub mod java_hprof_config {
2057    /// If dump_interval_ms != 0, the following configuration is used.
2058    #[derive(Clone, PartialEq, ::prost::Message)]
2059    pub struct ContinuousDumpConfig {
2060        /// ms to wait before first continuous dump.
2061        /// A dump is always created at the beginning of the trace.
2062        #[prost(uint32, optional, tag="1")]
2063        pub dump_phase_ms: ::core::option::Option<u32>,
2064        /// ms to wait between following dumps.
2065        #[prost(uint32, optional, tag="2")]
2066        pub dump_interval_ms: ::core::option::Option<u32>,
2067        /// If true, scans all the processes to find `process_cmdline` and filter by
2068        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2069        /// S-.
2070        ///
2071        /// If false, rescans all the processes to find on every dump. Default on
2072        /// Android T+.
2073        #[prost(bool, optional, tag="3")]
2074        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2075    }
2076}
2077// End of protos/perfetto/config/profiling/java_hprof_config.proto
2078
2079// Begin of protos/perfetto/common/perf_events.proto
2080
2081#[derive(Clone, PartialEq, ::prost::Message)]
2082pub struct PerfEvents {
2083}
2084/// Nested message and enum types in `PerfEvents`.
2085pub mod perf_events {
2086    /// The primary event to count. If recording multiple events, this
2087    /// counter is the "group leader".
2088    /// Commented from the perspective of its use in |PerfEventConfig|.
2089    /// Next id: 12
2090    #[derive(Clone, PartialEq, ::prost::Message)]
2091    pub struct Timebase {
2092        /// If set, samples will be timestamped with the given clock.
2093        /// If unset, the clock is chosen by the implementation.
2094        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2095        /// used for hardware events (due to interrupt safety), for which the
2096        /// recommendation is to use one of the monotonic clocks.
2097        #[prost(enumeration="PerfClock", optional, tag="11")]
2098        pub timestamp_clock: ::core::option::Option<i32>,
2099        /// Optional arbitrary name for the event, to identify it in the parsed
2100        /// trace. Does *not* affect the profiling itself. If unset, the trace
2101        /// parser will choose a suitable name.
2102        #[prost(string, optional, tag="10")]
2103        pub name: ::core::option::Option<::prost::alloc::string::String>,
2104        /// How often to snapshot the counter, along with any follower events and
2105        /// any additional sampled data such as callstacks.
2106        ///
2107        /// This choice also controls how the readings are taken:
2108        /// * With |frequency| or |period|, samples are taken by the kernel
2109        ///    into a ring buffer. Analogous to `perf record`.
2110        /// * With |poll_period_ms|, the userspace periodically snapshots
2111        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2112        /// Prefer the sampling options unless you're recording PMUs whose
2113        /// perf drivers only support the reading mode.
2114        ///
2115        /// If unset, an implementation-defined sampling default is used.
2116        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2117        pub interval: ::core::option::Option<timebase::Interval>,
2118        /// Counting event to use as the timebase.
2119        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2120        /// which is what you usually want.
2121        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2122        pub event: ::core::option::Option<timebase::Event>,
2123    }
2124    /// Nested message and enum types in `Timebase`.
2125    pub mod timebase {
2126        /// How often to snapshot the counter, along with any follower events and
2127        /// any additional sampled data such as callstacks.
2128        ///
2129        /// This choice also controls how the readings are taken:
2130        /// * With |frequency| or |period|, samples are taken by the kernel
2131        ///    into a ring buffer. Analogous to `perf record`.
2132        /// * With |poll_period_ms|, the userspace periodically snapshots
2133        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2134        /// Prefer the sampling options unless you're recording PMUs whose
2135        /// perf drivers only support the reading mode.
2136        ///
2137        /// If unset, an implementation-defined sampling default is used.
2138        #[derive(Clone, PartialEq, ::prost::Oneof)]
2139        pub enum Interval {
2140            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2141            /// same as 1/period.
2142            /// Details: the actual sampling will still be based on a period, but the
2143            /// kernel will dynamically adjust it based on the observed event rate, to
2144            /// approximate this frequency. Works best with steady-rate events like
2145            /// timers.
2146            /// Not guaranteed to be honored as the kernel can throttle the sampling
2147            /// rate if it's too high.
2148            #[prost(uint64, tag="2")]
2149            Frequency(u64),
2150            /// Per-cpu sampling will occur every |period| counts of |event|.
2151            /// Prefer |frequency| by default, as it's easier to oversample with a
2152            /// fixed period.
2153            /// Not guaranteed to be honored as the kernel can throttle the sampling
2154            /// rate if it's too high.
2155            #[prost(uint64, tag="1")]
2156            Period(u64),
2157            /// Per-cpu values are read by the userspace every interval. If using this
2158            /// mode, only follower events are supported. Options such as
2159            /// |PerfEventConfig.CallstackSampling| are incompatible.
2160            /// The period can't be guaranteed to be exact since the readings are taken
2161            /// by userspace.
2162            #[prost(uint32, tag="6")]
2163            PollPeriodMs(u32),
2164        }
2165        /// Counting event to use as the timebase.
2166        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2167        /// which is what you usually want.
2168        #[derive(Clone, PartialEq, ::prost::Oneof)]
2169        pub enum Event {
2170            #[prost(enumeration="super::Counter", tag="4")]
2171            Counter(i32),
2172            #[prost(message, tag="3")]
2173            Tracepoint(super::Tracepoint),
2174            #[prost(message, tag="5")]
2175            RawEvent(super::RawEvent),
2176        }
2177    }
2178    #[derive(Clone, PartialEq, ::prost::Message)]
2179    pub struct Tracepoint {
2180        /// Group and name for the tracepoint, acceptable forms:
2181        /// * "sched/sched_switch"
2182        /// * "sched:sched_switch"
2183        #[prost(string, optional, tag="1")]
2184        pub name: ::core::option::Option<::prost::alloc::string::String>,
2185        /// Optional field-level filter for the tracepoint. Only events matching this
2186        /// filter will be counted (and therefore contribute to the sampling period).
2187        /// Example: "prev_pid >= 42 && next_pid == 0".
2188        /// For full syntax, see kernel documentation on "Event filtering":
2189        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2190        #[prost(string, optional, tag="2")]
2191        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2192    }
2193    /// Syscall-level description of the event, propagated to the perf_event_attr
2194    /// struct. Primarily for local use-cases, since the event availability and
2195    /// encoding is hardware-specific.
2196    #[derive(Clone, PartialEq, ::prost::Message)]
2197    pub struct RawEvent {
2198        #[prost(uint32, optional, tag="1")]
2199        pub r#type: ::core::option::Option<u32>,
2200        #[prost(uint64, optional, tag="2")]
2201        pub config: ::core::option::Option<u64>,
2202        #[prost(uint64, optional, tag="3")]
2203        pub config1: ::core::option::Option<u64>,
2204        #[prost(uint64, optional, tag="4")]
2205        pub config2: ::core::option::Option<u64>,
2206    }
2207    /// Builtin counter names from the uapi header. Commented with their perf tool
2208    /// aliases.
2209    /// TODO(rsavitski): consider generating enums for cache events (should be
2210    /// finite), and generally make this list as extensive as possible. Excluding
2211    /// things like dynamic PMUs since those don't fit into a static enum.
2212    /// Next id: 21
2213    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2214    #[repr(i32)]
2215    pub enum Counter {
2216        UnknownCounter = 0,
2217        /// cpu-clock
2218        SwCpuClock = 1,
2219        /// page-faults, faults
2220        SwPageFaults = 2,
2221        /// task-clock
2222        SwTaskClock = 3,
2223        /// context-switches, cs
2224        SwContextSwitches = 4,
2225        /// cpu-migrations, migrations
2226        SwCpuMigrations = 5,
2227        /// minor-faults
2228        SwPageFaultsMin = 6,
2229        /// major-faults
2230        SwPageFaultsMaj = 7,
2231        /// alignment-faults
2232        SwAlignmentFaults = 8,
2233        /// emulation-faults
2234        SwEmulationFaults = 9,
2235        /// dummy
2236        SwDummy = 20,
2237        /// cpu-cycles, cycles
2238        HwCpuCycles = 10,
2239        /// instructions
2240        HwInstructions = 11,
2241        /// cache-references
2242        HwCacheReferences = 12,
2243        /// cache-misses
2244        HwCacheMisses = 13,
2245        /// branch-instructions, branches
2246        HwBranchInstructions = 14,
2247        /// branch-misses
2248        HwBranchMisses = 15,
2249        /// bus-cycles
2250        HwBusCycles = 16,
2251        /// stalled-cycles-frontend, idle-cycles-frontend
2252        HwStalledCyclesFrontend = 17,
2253        /// stalled-cycles-backend, idle-cycles-backend
2254        HwStalledCyclesBackend = 18,
2255        /// ref-cycles
2256        HwRefCpuCycles = 19,
2257    }
2258    impl Counter {
2259        /// String value of the enum field names used in the ProtoBuf definition.
2260        ///
2261        /// The values are not transformed in any way and thus are considered stable
2262        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2263        pub fn as_str_name(&self) -> &'static str {
2264            match self {
2265                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2266                Counter::SwCpuClock => "SW_CPU_CLOCK",
2267                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2268                Counter::SwTaskClock => "SW_TASK_CLOCK",
2269                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2270                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2271                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2272                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2273                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2274                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2275                Counter::SwDummy => "SW_DUMMY",
2276                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2277                Counter::HwInstructions => "HW_INSTRUCTIONS",
2278                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2279                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2280                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2281                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2282                Counter::HwBusCycles => "HW_BUS_CYCLES",
2283                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2284                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2285                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2286            }
2287        }
2288    }
2289    /// Subset of clocks that is supported by perf timestamping.
2290    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2291    /// would require additions to the trace clock synchronisation logic.
2292    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2293    #[repr(i32)]
2294    pub enum PerfClock {
2295        UnknownPerfClock = 0,
2296        Realtime = 1,
2297        Monotonic = 2,
2298        MonotonicRaw = 3,
2299        Boottime = 4,
2300    }
2301    impl PerfClock {
2302        /// String value of the enum field names used in the ProtoBuf definition.
2303        ///
2304        /// The values are not transformed in any way and thus are considered stable
2305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2306        pub fn as_str_name(&self) -> &'static str {
2307            match self {
2308                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2309                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2310                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2311                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2312                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2313            }
2314        }
2315    }
2316}
2317/// Additional events associated with a leader.
2318/// Configuration is similar to Timebase event. Because data acquisition is
2319/// driven by the leader there is no option to configure the clock or the
2320/// frequency.
2321#[derive(Clone, PartialEq, ::prost::Message)]
2322pub struct FollowerEvent {
2323    #[prost(string, optional, tag="4")]
2324    pub name: ::core::option::Option<::prost::alloc::string::String>,
2325    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2326    pub event: ::core::option::Option<follower_event::Event>,
2327}
2328/// Nested message and enum types in `FollowerEvent`.
2329pub mod follower_event {
2330    #[derive(Clone, PartialEq, ::prost::Oneof)]
2331    pub enum Event {
2332        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2333        Counter(i32),
2334        #[prost(message, tag="2")]
2335        Tracepoint(super::perf_events::Tracepoint),
2336        #[prost(message, tag="3")]
2337        RawEvent(super::perf_events::RawEvent),
2338    }
2339}
2340// End of protos/perfetto/common/perf_events.proto
2341
2342// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2343
2344/// Configuration for the traced_perf profiler.
2345///
2346/// Example config for basic cpu profiling:
2347///    perf_event_config {
2348///      timebase {
2349///        frequency: 80
2350///      }
2351///      callstack_sampling {
2352///        scope {
2353///          target_cmdline: "surfaceflinger"
2354///          target_cmdline: "system_server"
2355///        }
2356///        kernel_frames: true
2357///      }
2358///    }
2359///
2360/// Next id: 21
2361#[derive(Clone, PartialEq, ::prost::Message)]
2362pub struct PerfEventConfig {
2363    /// What event to sample on, and how often.
2364    /// Defined in common/perf_events.proto.
2365    #[prost(message, optional, tag="15")]
2366    pub timebase: ::core::option::Option<perf_events::Timebase>,
2367    /// Other events associated with the leader described in the timebase.
2368    #[prost(message, repeated, tag="19")]
2369    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2370    /// If set, the profiler will sample userspace processes' callstacks at the
2371    /// interval specified by the |timebase|.
2372    /// If unset, the profiler will record only the event counts.
2373    #[prost(message, optional, tag="16")]
2374    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2375    /// List of cpu indices for counting. If empty, the default is all cpus.
2376    ///
2377    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2378    /// counter-only traces. A future change will likely reorganise the options,
2379    /// but this field will continue to be supported.
2380    ///
2381    /// Available since: perfetto v50.
2382    #[prost(uint32, repeated, packed="false", tag="20")]
2383    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2384    //
2385    // Kernel <-> userspace ring buffer options:
2386    //
2387
2388    /// How often the per-cpu ring buffers are read by the producer.
2389    /// If unset, an implementation-defined default is used.
2390    #[prost(uint32, optional, tag="8")]
2391    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2392    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2393    /// kernel. If set, must be a power of two.
2394    /// If unset, an implementation-defined default is used.
2395    #[prost(uint32, optional, tag="3")]
2396    pub ring_buffer_pages: ::core::option::Option<u32>,
2397    //
2398    // Daemon's resource usage limits:
2399    //
2400
2401    /// Drop samples if the heap memory held by the samples in the unwinder queue
2402    /// is above the given limit. This counts the memory across all concurrent data
2403    /// sources (not just this one's), and there is no fairness guarantee - the
2404    /// whole quota might be used up by a concurrent source.
2405    #[prost(uint64, optional, tag="17")]
2406    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2407    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2408    /// footprint exceeds this value.
2409    #[prost(uint32, optional, tag="13")]
2410    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2411    //
2412    // Uncommon options:
2413    //
2414
2415    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2416    /// sampled process. This is primarily for Android, where this lookup is
2417    /// asynchronous. As long as the producer is waiting, the associated samples
2418    /// will be kept enqueued (putting pressure on the capacity of the shared
2419    /// unwinding queue). Once a lookup for a process expires, all associated
2420    /// samples are discarded. However, if the lookup still succeeds after the
2421    /// timeout, future samples will be handled normally.
2422    /// If unset, an implementation-defined default is used.
2423    #[prost(uint32, optional, tag="9")]
2424    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2425    /// Optional period for clearing state cached by the unwinder. This is a heavy
2426    /// operation that is only necessary for traces that target a wide set of
2427    /// processes, and require the memory footprint to be reset periodically.
2428    /// If unset, the cached state will not be cleared.
2429    #[prost(uint32, optional, tag="10")]
2430    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2431    /// If set, only profile target if it was installed by a package with one of
2432    /// these names. Special values:
2433    /// * "@system": installed on the system partition
2434    /// * "@product": installed on the product partition
2435    /// * "@null": sideloaded
2436    /// Supported on Android 12+.
2437    #[prost(string, repeated, tag="18")]
2438    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2439    //
2440    // Deprecated (superseded by options above):
2441    //
2442    // Do not set *any* of these fields in new configs.
2443    //
2444
2445    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2446    /// We rely on this to detect such configs.
2447    #[prost(bool, optional, tag="1")]
2448    pub all_cpus: ::core::option::Option<bool>,
2449    #[prost(uint32, optional, tag="2")]
2450    pub sampling_frequency: ::core::option::Option<u32>,
2451    #[prost(bool, optional, tag="12")]
2452    pub kernel_frames: ::core::option::Option<bool>,
2453    #[prost(int32, repeated, packed="false", tag="4")]
2454    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2455    #[prost(string, repeated, tag="5")]
2456    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2457    #[prost(int32, repeated, packed="false", tag="6")]
2458    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2459    #[prost(string, repeated, tag="7")]
2460    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2461    #[prost(uint32, optional, tag="11")]
2462    pub additional_cmdline_count: ::core::option::Option<u32>,
2463}
2464/// Nested message and enum types in `PerfEventConfig`.
2465pub mod perf_event_config {
2466    //
2467    // Sub-messages (nested for generated code namespacing).
2468    //
2469
2470    #[derive(Clone, PartialEq, ::prost::Message)]
2471    pub struct CallstackSampling {
2472        /// Defines a set of processes for which samples are retained/skipped. If
2473        /// unset, all samples are kept, but beware that it will be very heavy on the
2474        /// stack unwinder, which might start dropping samples due to overload.
2475        #[prost(message, optional, tag="1")]
2476        pub scope: ::core::option::Option<Scope>,
2477        /// If true, callstacks will include the kernel-space frames. Such frames can
2478        /// be identified by a magical "kernel" string as their mapping name.
2479        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2480        /// manually unrestricted. On Android, the platform should do the right thing
2481        /// on debug builds.
2482        /// This does *not* disclose KASLR, as only the function names are emitted.
2483        #[prost(bool, optional, tag="2")]
2484        pub kernel_frames: ::core::option::Option<bool>,
2485        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2486        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2487        /// as the most common default (this defaulting is only applicable if the
2488        /// outer CallstackSampling message is explicitly set).
2489        #[prost(enumeration="UnwindMode", optional, tag="3")]
2490        pub user_frames: ::core::option::Option<i32>,
2491    }
2492    #[derive(Clone, PartialEq, ::prost::Message)]
2493    pub struct Scope {
2494        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2495        /// samples will be retained. If multiple allow/deny-lists are
2496        /// specified by the config, then all of them are evaluated for each sampled
2497        /// process.
2498        #[prost(int32, repeated, packed="false", tag="1")]
2499        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2500        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2501        /// comm string). The semantics of this field were changed since its original
2502        /// introduction.
2503        ///
2504        /// On Android T+ (13+), this field can specify a single wildcard (*), and
2505        /// the profiler will attempt to match it in two possible ways:
2506        /// * if the pattern starts with a '/', then it is matched against the first
2507        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2508        ///    "/bin/echo".
2509        /// * otherwise the pattern is matched against the part of argv0
2510        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2511        ///    For example "echo" would match "/bin/echo".
2512        ///
2513        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2514        /// normalized prior to an exact string comparison. Normalization is as
2515        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2516        /// the string contains forward slashes, trim everything up to and including
2517        /// the last one.
2518        ///
2519        /// Implementation note: in either case, at most 511 characters of cmdline
2520        /// are considered.
2521        #[prost(string, repeated, tag="2")]
2522        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2523        /// List of excluded pids.
2524        #[prost(int32, repeated, packed="false", tag="3")]
2525        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2526        /// List of excluded cmdlines. See description of |target_cmdline| for how
2527        /// this is handled.
2528        #[prost(string, repeated, tag="4")]
2529        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2530        // Niche features for systemwide callstacks:
2531
2532        /// Number of additional command lines to sample. Only those which are
2533        /// neither explicitly included nor excluded will be considered. Processes
2534        /// are accepted on a first come, first served basis.
2535        #[prost(uint32, optional, tag="5")]
2536        pub additional_cmdline_count: ::core::option::Option<u32>,
2537        /// If set to N, all encountered processes will be put into one of the N
2538        /// possible bins, and only one randomly-chosen bin will be selected for
2539        /// unwinding. The binning is simply "pid % N", under the assumption that
2540        /// low-order bits of pids are roughly uniformly distributed. Other explicit
2541        /// inclusions/exclusions in this |Scope| message are still respected.
2542        ///
2543        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
2544        /// values will be queryable in trace processor under the "stats" table as
2545        /// "perf_process_shard_count" and "perf_chosen_process_shard".
2546        ///
2547        /// NB: all data sources in a config that set |process_shard_count| must set
2548        /// it to the same value. The profiler will choose one bin for all those data
2549        /// sources.
2550        #[prost(uint32, optional, tag="6")]
2551        pub process_shard_count: ::core::option::Option<u32>,
2552    }
2553    /// Userspace unwinding mode. A possible future addition is kernel-unwound
2554    /// callchains for frame pointer based systems.
2555    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2556    #[repr(i32)]
2557    pub enum UnwindMode {
2558        UnwindUnknown = 0,
2559        /// Do not unwind userspace:
2560        UnwindSkip = 1,
2561        /// Use libunwindstack (default):
2562        UnwindDwarf = 2,
2563        /// Use userspace frame pointer unwinder:
2564        UnwindFramePointer = 3,
2565    }
2566    impl UnwindMode {
2567        /// String value of the enum field names used in the ProtoBuf definition.
2568        ///
2569        /// The values are not transformed in any way and thus are considered stable
2570        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2571        pub fn as_str_name(&self) -> &'static str {
2572            match self {
2573                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
2574                UnwindMode::UnwindSkip => "UNWIND_SKIP",
2575                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
2576                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
2577            }
2578        }
2579    }
2580}
2581// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
2582
2583/// This file is named 'statsd_tracing_config.proto' rather than
2584/// 'statsd_config.proto' (which would be more consistent with the other
2585/// config protos) so it doesn't show up and confuse folks looking for
2586/// the existing statsd_config.proto for configuring statsd itself.
2587/// Same for the config proto itself.
2588#[derive(Clone, PartialEq, ::prost::Message)]
2589pub struct StatsdTracingConfig {
2590    /// This is for the common case of the atom id being known in the enum AtomId.
2591    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2592    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
2593    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
2594    /// (e.g. non-upstream atoms that don't exist in AOSP).
2595    #[prost(int32, repeated, packed="false", tag="2")]
2596    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
2597    #[prost(message, repeated, tag="3")]
2598    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
2599}
2600#[derive(Clone, PartialEq, ::prost::Message)]
2601pub struct StatsdPullAtomConfig {
2602    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2603    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2604    #[prost(int32, repeated, packed="false", tag="2")]
2605    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2606    #[prost(int32, optional, tag="3")]
2607    pub pull_frequency_ms: ::core::option::Option<i32>,
2608    #[prost(string, repeated, tag="4")]
2609    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2610}
2611// End of protos/perfetto/common/sys_stats_counters.proto
2612
2613// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
2614
2615/// This file defines the configuration for the Linux /proc poller data source,
2616/// which injects counters in the trace.
2617/// Counters that are needed in the trace must be explicitly listed in the
2618/// *_counters fields. This is to avoid spamming the trace with all counters
2619/// at all times.
2620/// The sampling rate is configurable. All polling rates (*_period_ms) need
2621/// to be integer multiples of each other.
2622/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
2623/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
2624#[derive(Clone, PartialEq, ::prost::Message)]
2625pub struct SysStatsConfig {
2626    /// Polls /proc/meminfo every X ms, if non-zero.
2627    /// This is required to be > 10ms to avoid excessive CPU usage.
2628    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
2629    #[prost(uint32, optional, tag="1")]
2630    pub meminfo_period_ms: ::core::option::Option<u32>,
2631    /// If empty all known counters are reported. Otherwise, only the counters
2632    /// specified below are reported.
2633    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
2634    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
2635    /// Polls /proc/vmstat every X ms, if non-zero.
2636    /// This is required to be > 10ms to avoid excessive CPU usage.
2637    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
2638    #[prost(uint32, optional, tag="3")]
2639    pub vmstat_period_ms: ::core::option::Option<u32>,
2640    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
2641    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
2642    /// Pols /proc/stat every X ms, if non-zero.
2643    /// This is required to be > 10ms to avoid excessive CPU usage.
2644    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
2645    #[prost(uint32, optional, tag="5")]
2646    pub stat_period_ms: ::core::option::Option<u32>,
2647    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
2648    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
2649    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
2650    /// This is required to be > 10ms to avoid excessive CPU usage.
2651    /// This option can be used to record unchanging values.
2652    /// Updates from frequency changes can come from ftrace/set_clock_rate.
2653    #[prost(uint32, optional, tag="7")]
2654    pub devfreq_period_ms: ::core::option::Option<u32>,
2655    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
2656    /// This is required to be > 10ms to avoid excessive CPU usage.
2657    #[prost(uint32, optional, tag="8")]
2658    pub cpufreq_period_ms: ::core::option::Option<u32>,
2659    /// Polls /proc/buddyinfo every X ms, if non-zero.
2660    /// This is required to be > 10ms to avoid excessive CPU usage.
2661    #[prost(uint32, optional, tag="9")]
2662    pub buddyinfo_period_ms: ::core::option::Option<u32>,
2663    /// Polls /proc/diskstats every X ms, if non-zero.
2664    /// This is required to be > 10ms to avoid excessive CPU usage.
2665    #[prost(uint32, optional, tag="10")]
2666    pub diskstat_period_ms: ::core::option::Option<u32>,
2667    /// Polls /proc/pressure/* every X ms, if non-zero.
2668    /// This is required to be > 10ms to avoid excessive CPU usage.
2669    #[prost(uint32, optional, tag="11")]
2670    pub psi_period_ms: ::core::option::Option<u32>,
2671    /// Polls /sys/class/thermal/* every X ms, if non-zero.
2672    /// This is required to be > 10ms to avoid excessive CPU usage.
2673    #[prost(uint32, optional, tag="12")]
2674    pub thermal_period_ms: ::core::option::Option<u32>,
2675    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
2676    /// This is required to be > 10ms to avoid excessive CPU usage.
2677    #[prost(uint32, optional, tag="13")]
2678    pub cpuidle_period_ms: ::core::option::Option<u32>,
2679    /// Polls device-specific GPU frequency info every X ms, if non-zero.
2680    /// This is required to be > 10ms to avoid excessive CPU usage.
2681    #[prost(uint32, optional, tag="14")]
2682    pub gpufreq_period_ms: ::core::option::Option<u32>,
2683}
2684/// Nested message and enum types in `SysStatsConfig`.
2685pub mod sys_stats_config {
2686    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2687    #[repr(i32)]
2688    pub enum StatCounters {
2689        StatUnspecified = 0,
2690        StatCpuTimes = 1,
2691        StatIrqCounts = 2,
2692        StatSoftirqCounts = 3,
2693        StatForkCount = 4,
2694    }
2695    impl StatCounters {
2696        /// String value of the enum field names used in the ProtoBuf definition.
2697        ///
2698        /// The values are not transformed in any way and thus are considered stable
2699        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2700        pub fn as_str_name(&self) -> &'static str {
2701            match self {
2702                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
2703                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
2704                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
2705                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
2706                StatCounters::StatForkCount => "STAT_FORK_COUNT",
2707            }
2708        }
2709    }
2710}
2711// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
2712
2713// Begin of protos/perfetto/config/system_info/system_info.proto
2714
2715/// This data-source does a one-off recording of system information when
2716/// the trace starts.
2717/// Currently this includes:
2718/// - Values of
2719/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
2720/// datasource has no configuration options at present.
2721#[derive(Clone, PartialEq, ::prost::Message)]
2722pub struct SystemInfoConfig {
2723}
2724// End of protos/perfetto/config/system_info/system_info.proto
2725
2726// Begin of protos/perfetto/config/test_config.proto
2727
2728/// The configuration for a fake producer used in tests.
2729#[derive(Clone, PartialEq, ::prost::Message)]
2730pub struct TestConfig {
2731    /// The number of messages the fake producer should send.
2732    #[prost(uint32, optional, tag="1")]
2733    pub message_count: ::core::option::Option<u32>,
2734    /// The maximum number of messages which should be sent each second.
2735    /// The actual obserced speed may be lower if the producer is unable to
2736    /// work fast enough.
2737    /// If this is zero or unset, the producer will send as fast as possible.
2738    #[prost(uint32, optional, tag="2")]
2739    pub max_messages_per_second: ::core::option::Option<u32>,
2740    /// The seed value for a simple multiplicative congruential pseudo-random
2741    /// number sequence.
2742    #[prost(uint32, optional, tag="3")]
2743    pub seed: ::core::option::Option<u32>,
2744    /// The size of each message in bytes. Should be greater than or equal 5 to
2745    /// account for the number of bytes needed to encode the random number and a
2746    /// null byte for the string.
2747    #[prost(uint32, optional, tag="4")]
2748    pub message_size: ::core::option::Option<u32>,
2749    /// Whether the producer should send a event batch when the data source is
2750    /// is initially registered.
2751    #[prost(bool, optional, tag="5")]
2752    pub send_batch_on_register: ::core::option::Option<bool>,
2753    #[prost(message, optional, tag="6")]
2754    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
2755}
2756/// Nested message and enum types in `TestConfig`.
2757pub mod test_config {
2758    #[derive(Clone, PartialEq, ::prost::Message)]
2759    pub struct DummyFields {
2760        #[prost(uint32, optional, tag="1")]
2761        pub field_uint32: ::core::option::Option<u32>,
2762        #[prost(int32, optional, tag="2")]
2763        pub field_int32: ::core::option::Option<i32>,
2764        #[prost(uint64, optional, tag="3")]
2765        pub field_uint64: ::core::option::Option<u64>,
2766        #[prost(int64, optional, tag="4")]
2767        pub field_int64: ::core::option::Option<i64>,
2768        #[prost(fixed64, optional, tag="5")]
2769        pub field_fixed64: ::core::option::Option<u64>,
2770        #[prost(sfixed64, optional, tag="6")]
2771        pub field_sfixed64: ::core::option::Option<i64>,
2772        #[prost(fixed32, optional, tag="7")]
2773        pub field_fixed32: ::core::option::Option<u32>,
2774        #[prost(sfixed32, optional, tag="8")]
2775        pub field_sfixed32: ::core::option::Option<i32>,
2776        #[prost(double, optional, tag="9")]
2777        pub field_double: ::core::option::Option<f64>,
2778        #[prost(float, optional, tag="10")]
2779        pub field_float: ::core::option::Option<f32>,
2780        #[prost(sint64, optional, tag="11")]
2781        pub field_sint64: ::core::option::Option<i64>,
2782        #[prost(sint32, optional, tag="12")]
2783        pub field_sint32: ::core::option::Option<i32>,
2784        #[prost(string, optional, tag="13")]
2785        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
2786        #[prost(bytes="vec", optional, tag="14")]
2787        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2788    }
2789}
2790// End of protos/perfetto/config/test_config.proto
2791
2792// Begin of protos/perfetto/config/track_event/track_event_config.proto
2793
2794/// The following fields define the set of enabled trace categories. Each list
2795/// item is a glob.
2796///
2797/// To determine if category is enabled, it is checked against the filters in
2798/// the following order:
2799///
2800///    1. Exact matches in enabled categories.
2801///    2. Exact matches in enabled tags.
2802///    3. Exact matches in disabled categories.
2803///    4. Exact matches in disabled tags.
2804///    5. Pattern matches in enabled categories.
2805///    6. Pattern matches in enabled tags.
2806///    7. Pattern matches in disabled categories.
2807///    8. Pattern matches in disabled tags.
2808///
2809/// If none of the steps produced a match:
2810///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
2811///   default.
2812///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
2813///
2814/// Examples:
2815///
2816///   - To enable all non-slow/debug categories:
2817///
2818///        enabled_categories: "*"
2819///
2820///   - To enable specific categories:
2821///
2822///        disabled_categories: "*"
2823///        enabled_categories: "my_category"
2824///        enabled_categories: "my_category2"
2825///
2826///   - To enable only categories with a specific tag:
2827///
2828///        disabled_tags: "*"
2829///        enabled_tags: "my_tag"
2830///
2831#[derive(Clone, PartialEq, ::prost::Message)]
2832pub struct TrackEventConfig {
2833    /// Default: []
2834    #[prost(string, repeated, tag="1")]
2835    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2836    /// Default: []
2837    #[prost(string, repeated, tag="2")]
2838    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2839    /// Default: ["slow", "debug"]
2840    #[prost(string, repeated, tag="3")]
2841    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2842    /// Default: []
2843    #[prost(string, repeated, tag="4")]
2844    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2845    /// Default: false (i.e. enabled by default)
2846    #[prost(bool, optional, tag="5")]
2847    pub disable_incremental_timestamps: ::core::option::Option<bool>,
2848    /// Allows to specify a custom unit different than the default (ns).
2849    /// Also affects thread timestamps if enable_thread_time_sampling = true.
2850    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
2851    /// 3000 ns = 3 us.
2852    /// Default: 1 (if unset, it should be read as 1).
2853    #[prost(uint64, optional, tag="6")]
2854    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
2855    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
2856    /// When true, any debug annotations provided as arguments to the
2857    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
2858    /// still be emitted even if set to true.
2859    #[prost(bool, optional, tag="7")]
2860    pub filter_debug_annotations: ::core::option::Option<bool>,
2861    /// Default : false (i.e. disabled)
2862    /// When true, the SDK samples and emits the current thread time counter value
2863    /// for each event on the current thread's track. This value represents the
2864    /// total CPU time consumed by that thread since its creation. Note that if a
2865    /// thread is not scheduled by OS for some duration, that time won't be
2866    /// included in thread_time.
2867    /// Learn more : "CLOCK_THREAD_CPUTIME_ID" flag at
2868    /// <https://linux.die.net/man/3/clock_gettime>
2869    #[prost(bool, optional, tag="8")]
2870    pub enable_thread_time_sampling: ::core::option::Option<bool>,
2871    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
2872    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
2873    /// out.
2874    #[prost(bool, optional, tag="9")]
2875    pub filter_dynamic_event_names: ::core::option::Option<bool>,
2876}
2877// End of protos/perfetto/config/track_event/track_event_config.proto
2878
2879// Begin of protos/perfetto/config/data_source_config.proto
2880
2881/// The configuration that is passed to each data source when starting tracing.
2882/// Next id: 136
2883#[derive(Clone, PartialEq, ::prost::Message)]
2884pub struct DataSourceConfig {
2885    /// Data source unique name, e.g., "linux.ftrace". This must match
2886    /// the name passed by the data source when it registers (see
2887    /// RegisterDataSource()).
2888    #[prost(string, optional, tag="1")]
2889    pub name: ::core::option::Option<::prost::alloc::string::String>,
2890    /// The index of the logging buffer where TracePacket(s) will be stored.
2891    /// This field doesn't make a major difference for the Producer(s). The final
2892    /// logging buffers, in fact, are completely owned by the Service. We just ask
2893    /// the Producer to copy this number into the chunk headers it emits, so that
2894    /// the Service can quickly identify the buffer where to move the chunks into
2895    /// without expensive lookups on its fastpath.
2896    #[prost(uint32, optional, tag="2")]
2897    pub target_buffer: ::core::option::Option<u32>,
2898    /// Set by the service to indicate the duration of the trace.
2899    /// DO NOT SET in consumer as this will be overridden by the service.
2900    #[prost(uint32, optional, tag="3")]
2901    pub trace_duration_ms: ::core::option::Option<u32>,
2902    /// If true, |trace_duration_ms| should count also time in suspend. This
2903    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
2904    #[prost(bool, optional, tag="122")]
2905    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
2906    /// Set by the service to indicate how long it waits after StopDataSource.
2907    /// DO NOT SET in consumer as this will be overridden by the service.
2908    #[prost(uint32, optional, tag="7")]
2909    pub stop_timeout_ms: ::core::option::Option<u32>,
2910    /// Set by the service to indicate whether this tracing session has extra
2911    /// guardrails.
2912    /// DO NOT SET in consumer as this will be overridden by the service.
2913    #[prost(bool, optional, tag="6")]
2914    pub enable_extra_guardrails: ::core::option::Option<bool>,
2915    /// Set by the service to indicate which user initiated this trace.
2916    /// DO NOT SET in consumer as this will be overridden by the service.
2917    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
2918    pub session_initiator: ::core::option::Option<i32>,
2919    /// Set by the service to indicate which tracing session the data source
2920    /// belongs to. The intended use case for this is checking if two data sources,
2921    /// one of which produces metadata for the other one, belong to the same trace
2922    /// session and hence should be linked together.
2923    /// This field was introduced in Aug 2018 after Android P.
2924    /// DO NOT SET in consumer as this will be overridden by the service.
2925    #[prost(uint64, optional, tag="4")]
2926    pub tracing_session_id: ::core::option::Option<u64>,
2927    // Keeep the lower IDs (up to 99) for fields that are *not* specific to
2928    // data-sources and needs to be processed by the traced daemon.
2929
2930    // All data source config fields must be marked as \[lazy=true\]. This prevents
2931    // the proto-to-cpp generator from recursing into those when generating the
2932    // cpp classes and polluting tracing/core with data-source-specific classes.
2933    // Instead they are treated as opaque strings containing raw proto bytes.
2934
2935    /// Data source name: linux.ftrace
2936    #[prost(message, optional, tag="100")]
2937    pub ftrace_config: ::core::option::Option<FtraceConfig>,
2938    /// Data source name: linux.inode_file_map
2939    #[prost(message, optional, tag="102")]
2940    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
2941    /// Data source name: linux.process_stats
2942    #[prost(message, optional, tag="103")]
2943    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
2944    /// Data source name: linux.sys_stats
2945    #[prost(message, optional, tag="104")]
2946    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
2947    /// Data source name: android.heapprofd
2948    /// Introduced in Android 10.
2949    #[prost(message, optional, tag="105")]
2950    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
2951    /// Data source name: android.java_hprof
2952    /// Introduced in Android 11.
2953    #[prost(message, optional, tag="110")]
2954    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
2955    /// Data source name: android.power
2956    #[prost(message, optional, tag="106")]
2957    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
2958    /// Data source name: android.log
2959    #[prost(message, optional, tag="107")]
2960    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
2961    /// Data source name: gpu.counters
2962    #[prost(message, optional, tag="108")]
2963    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
2964    /// Data source name: android.game_interventions
2965    #[prost(message, optional, tag="116")]
2966    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
2967    /// Data source name: android.packages_list
2968    #[prost(message, optional, tag="109")]
2969    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
2970    /// Data source name: linux.perf
2971    #[prost(message, optional, tag="111")]
2972    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
2973    /// Data source name: vulkan.memory_tracker
2974    #[prost(message, optional, tag="112")]
2975    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
2976    /// Data source name: track_event
2977    #[prost(message, optional, tag="113")]
2978    pub track_event_config: ::core::option::Option<TrackEventConfig>,
2979    /// Data source name: android.polled_state
2980    #[prost(message, optional, tag="114")]
2981    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
2982    /// Data source name: android.system_property
2983    #[prost(message, optional, tag="118")]
2984    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
2985    /// Data source name: android.statsd
2986    #[prost(message, optional, tag="117")]
2987    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
2988    /// Data source name: linux.system_info
2989    #[prost(message, optional, tag="119")]
2990    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
2991    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
2992    /// avoid proto serialization and de-serialization there because that would
2993    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
2994    /// C++ class for it so it can pass around plain C++ objets.
2995    #[prost(message, optional, tag="101")]
2996    pub chrome_config: ::core::option::Option<ChromeConfig>,
2997    /// Data source name: code.v8.dev
2998    #[prost(message, optional, tag="127")]
2999    pub v8_config: ::core::option::Option<V8Config>,
3000    /// If an interceptor is specified here, packets for this data source will be
3001    /// rerouted to the interceptor instead of the main trace buffer. This can be
3002    /// used, for example, to write trace data into ETW or for logging trace points
3003    /// to the console.
3004    ///
3005    /// Note that interceptors are only supported by data sources registered
3006    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3007    /// traced_probes) may not support interception.
3008    #[prost(message, optional, tag="115")]
3009    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3010    /// Data source name: android.network_packets.
3011    /// Introduced in Android 14 (U).
3012    #[prost(message, optional, tag="120")]
3013    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3014    /// Data source name: android.surfaceflinger.layers
3015    #[prost(message, optional, tag="121")]
3016    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3017    /// Data source name: android.surfaceflinger.transactions
3018    #[prost(message, optional, tag="123")]
3019    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3020    /// Data source name: android.sdk_sysprop_guard
3021    /// Introduced in Android 14 (U) QPR1.
3022    #[prost(message, optional, tag="124")]
3023    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3024    /// Data source name: windows.etw
3025    #[prost(message, optional, tag="125")]
3026    pub etw_config: ::core::option::Option<EtwConfig>,
3027    /// Data source name: android.protolog
3028    #[prost(message, optional, tag="126")]
3029    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3030    /// Data source name: android.input.inputevent
3031    #[prost(message, optional, tag="128")]
3032    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3033    /// Data source name: android.pixel.modem
3034    #[prost(message, optional, tag="129")]
3035    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3036    /// Data source name: android.windowmanager
3037    #[prost(message, optional, tag="130")]
3038    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3039    /// Data source name: org.chromium.system_metrics
3040    #[prost(message, optional, tag="131")]
3041    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3042    /// Data source name: android.kernel_wakelocks
3043    #[prost(message, optional, tag="132")]
3044    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3045    /// Data source name: gpu.renderstages
3046    #[prost(message, optional, tag="133")]
3047    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3048    /// Data source name: org.chromium.histogram_samples
3049    #[prost(message, optional, tag="134")]
3050    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3051    /// Data source name: android.app_wakelocks
3052    #[prost(message, optional, tag="135")]
3053    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3054    /// This is a fallback mechanism to send a free-form text config to the
3055    /// producer. In theory this should never be needed. All the code that
3056    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3057    /// the trace config proto and propagate unknown fields. However, if anything
3058    /// in the pipeline (client or backend) ends up breaking this forward compat
3059    /// plan, this field will become the escape hatch to allow future data sources
3060    /// to get some meaningful configuration.
3061    #[prost(string, optional, tag="1000")]
3062    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3063    /// This field is only used for testing.
3064    #[prost(message, optional, tag="1001")]
3065    pub for_testing: ::core::option::Option<TestConfig>,
3066}
3067/// Nested message and enum types in `DataSourceConfig`.
3068pub mod data_source_config {
3069    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3070    #[repr(i32)]
3071    pub enum SessionInitiator {
3072        Unspecified = 0,
3073        /// This trace was initiated from a trusted system app has DUMP and
3074        /// USAGE_STATS permission. This system app is expected to not expose the
3075        /// trace to the user of the device.
3076        /// This is determined by checking the UID initiating the trace.
3077        TrustedSystem = 1,
3078    }
3079    impl SessionInitiator {
3080        /// String value of the enum field names used in the ProtoBuf definition.
3081        ///
3082        /// The values are not transformed in any way and thus are considered stable
3083        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3084        pub fn as_str_name(&self) -> &'static str {
3085            match self {
3086                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3087                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3088            }
3089        }
3090    }
3091}
3092// End of protos/perfetto/config/data_source_config.proto
3093
3094// Begin of protos/perfetto/config/trace_config.proto
3095
3096/// The overall config that is used when starting a new tracing session through
3097/// ProducerPort::StartTracing().
3098/// It contains the general config for the logging buffer(s) and the configs for
3099/// all the data source being enabled.
3100///
3101/// Next id: 40.
3102#[derive(Clone, PartialEq, ::prost::Message)]
3103pub struct TraceConfig {
3104    #[prost(message, repeated, tag="1")]
3105    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3106    #[prost(message, repeated, tag="2")]
3107    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3108    #[prost(message, optional, tag="20")]
3109    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3110    /// If specified, the trace will be stopped |duration_ms| after starting.
3111    /// This does *not* count the time the system is suspended, so we will run
3112    /// for duration_ms of system activity, not wall time.
3113    ///
3114    /// However in case of traces with triggers, see
3115    /// TriggerConfig.trigger_timeout_ms instead.
3116    #[prost(uint32, optional, tag="3")]
3117    pub duration_ms: ::core::option::Option<u32>,
3118    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3119    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3120    /// Linux/Android, no-op on other platforms. This is used when dealing with
3121    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3122    /// wall-time, making them more likely to hit device reboots (and hence loss).
3123    /// This option also changes consistently the semantic of
3124    /// TriggerConfig.stop_delay_ms.
3125    #[prost(bool, optional, tag="36")]
3126    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3127    /// This is set when --dropbox is passed to the Perfetto command line client
3128    /// and enables guardrails that limit resource usage for traces requested
3129    /// by statsd.
3130    #[prost(bool, optional, tag="4")]
3131    pub enable_extra_guardrails: ::core::option::Option<bool>,
3132    /// Reject producers that are not running under the same UID as the tracing
3133    /// service.
3134    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3135    pub lockdown_mode: ::core::option::Option<i32>,
3136    #[prost(message, repeated, tag="6")]
3137    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3138    /// Statsd-specific metadata.
3139    #[prost(message, optional, tag="7")]
3140    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3141    /// When true && |output_path| is empty, the EnableTracing() request must
3142    /// provide a file descriptor. The service will then periodically read packets
3143    /// out of the trace buffer and store it into the passed file.
3144    /// If |output_path| is not empty no fd should be passed, the service
3145    /// will create a new file and write into that (see comment below).
3146    #[prost(bool, optional, tag="8")]
3147    pub write_into_file: ::core::option::Option<bool>,
3148    /// This must point to a non-existing file. If the file exists the service
3149    /// will NOT overwrite and will fail instead as a security precaution.
3150    /// On Android, when this is used with the system traced, the path must be
3151    /// within /data/misc/perfetto-traces/ or the trace will fail.
3152    /// This option has been introduced in Android R. Before R write_into_file
3153    /// can be used only with the "pass a file descriptor over IPC" mode.
3154    #[prost(string, optional, tag="29")]
3155    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3156    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3157    /// enforced (i.e. smaller values are ignored).
3158    #[prost(uint32, optional, tag="9")]
3159    pub file_write_period_ms: ::core::option::Option<u32>,
3160    /// Optional. When non zero the periodic write stops once at most X bytes
3161    /// have been written into the file. Tracing is disabled when this limit is
3162    /// reached, even if |duration_ms| has not been reached yet.
3163    #[prost(uint64, optional, tag="10")]
3164    pub max_file_size_bytes: ::core::option::Option<u64>,
3165    #[prost(message, optional, tag="11")]
3166    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3167    /// When true, data sources are not started until an explicit call to
3168    /// StartTracing() on the consumer port. This is to support early
3169    /// initialization and fast trace triggering. This can be used only when the
3170    /// Consumer explicitly triggers the StartTracing() method.
3171    /// This should not be used in a remote trace config via statsd, doing so will
3172    /// result in a hung trace session.
3173    #[prost(bool, optional, tag="12")]
3174    pub deferred_start: ::core::option::Option<bool>,
3175    /// When set, it periodically issues a Flush() to all data source, forcing them
3176    /// to commit their data into the tracing service. This can be used for
3177    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3178    /// events in the trace in windows of X ms.
3179    #[prost(uint32, optional, tag="13")]
3180    pub flush_period_ms: ::core::option::Option<u32>,
3181    /// Wait for this long for producers to acknowledge flush requests.
3182    /// Default 5s.
3183    #[prost(uint32, optional, tag="14")]
3184    pub flush_timeout_ms: ::core::option::Option<u32>,
3185    /// Wait for this long for producers to acknowledge stop requests.
3186    /// Default 5s.
3187    #[prost(uint32, optional, tag="23")]
3188    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3189    /// Android-only. If set, sends an intent to the Traceur system app when the
3190    /// trace ends to notify it about the trace readiness.
3191    #[prost(bool, optional, tag="16")]
3192    pub notify_traceur: ::core::option::Option<bool>,
3193    /// This field was introduced in Android S.
3194    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3195    /// for being attached to a bugreport. This field effectively acts as a z-index
3196    /// for bugreports. When Android's dumpstate runs perfetto
3197    /// --save-for-bugreport, traced will pick the tracing session with the highest
3198    /// score (score <= 0 is ignored) and:
3199    /// On Android S, T:  will steal its contents, save the trace into
3200    ///      a known path and stop prematurely.
3201    /// On Android U+: will create a read-only snapshot and save that into a known
3202    ///      path, without stoppin the original tracing session.
3203    /// When this field is set the tracing session becomes eligible to be cloned
3204    /// by other UIDs.
3205    #[prost(int32, optional, tag="30")]
3206    pub bugreport_score: ::core::option::Option<i32>,
3207    /// When set, defines name of the file that will be saved under
3208    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3209    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3210    /// starting from the highest `bugreport_score`.
3211    /// Introduced in v42 / Android V.
3212    #[prost(string, optional, tag="38")]
3213    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3214    #[prost(message, optional, tag="17")]
3215    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3216    /// When this is non-empty the perfetto command line tool will ignore the rest
3217    /// of this TraceConfig and instead connect to the perfetto service as a
3218    /// producer and send these triggers, potentially stopping or starting traces
3219    /// that were previous configured to use a TriggerConfig.
3220    #[prost(string, repeated, tag="18")]
3221    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3222    #[prost(message, optional, tag="21")]
3223    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3224    /// No longer needed as we unconditionally allow tracing on user builds.
3225    #[deprecated]
3226    #[prost(bool, optional, tag="19")]
3227    pub allow_user_build_tracing: ::core::option::Option<bool>,
3228    /// If set the tracing service will ensure there is at most one tracing session
3229    /// with this key.
3230    #[prost(string, optional, tag="22")]
3231    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3232    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3233    pub compression_type: ::core::option::Option<i32>,
3234    #[prost(message, optional, tag="25")]
3235    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3236    /// Android-only. Not for general use. If specified, sets the logging to statsd
3237    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3238    /// this to enabled (if not explicitly set in the config) when specifying
3239    /// --upload.
3240    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3241    pub statsd_logging: ::core::option::Option<i32>,
3242    /// An identifier clients can use to tie this trace to other logging.
3243    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3244    /// Trace UUID. If this field is set, the tracing service will respect the
3245    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3246    /// gap-less snapshotting is not used.
3247    #[deprecated]
3248    #[prost(int64, optional, tag="27")]
3249    pub trace_uuid_msb: ::core::option::Option<i64>,
3250    #[deprecated]
3251    #[prost(int64, optional, tag="28")]
3252    pub trace_uuid_lsb: ::core::option::Option<i64>,
3253    #[prost(message, optional, tag="33")]
3254    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3255    #[prost(message, optional, tag="34")]
3256    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3257    #[prost(message, optional, tag="35")]
3258    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3259    #[prost(message, repeated, tag="39")]
3260    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3261}
3262/// Nested message and enum types in `TraceConfig`.
3263pub mod trace_config {
3264    #[derive(Clone, PartialEq, ::prost::Message)]
3265    pub struct BufferConfig {
3266        #[prost(uint32, optional, tag="1")]
3267        pub size_kb: ::core::option::Option<u32>,
3268        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3269        pub fill_policy: ::core::option::Option<i32>,
3270        /// When true the buffer is moved (rather than copied) onto the cloned
3271        /// session, and an empty buffer of the same size is allocated in the source
3272        /// tracing session. This feature will likely get deprecated in the future.
3273        /// It been introduced mainly to support the surfaceflinger snapshot dump
3274        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3275        /// that case we don't want to retain another in-memory copy of the buffer.
3276        #[prost(bool, optional, tag="5")]
3277        pub transfer_on_clone: ::core::option::Option<bool>,
3278        /// Used in conjunction with transfer_on_clone. When true the buffer is
3279        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3280        /// that if the data source took too long to write the data in a previous
3281        /// clone-related flush, we don't end up with a mixture of leftovers from
3282        /// the previous write and new data.
3283        #[prost(bool, optional, tag="6")]
3284        pub clear_before_clone: ::core::option::Option<bool>,
3285    }
3286    /// Nested message and enum types in `BufferConfig`.
3287    pub mod buffer_config {
3288        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3289        #[repr(i32)]
3290        pub enum FillPolicy {
3291            Unspecified = 0,
3292            /// Default behavior. The buffer operates as a conventional ring buffer.
3293            /// If the writer is faster than the reader (or if the reader reads only
3294            /// after tracing is stopped) newly written packets will overwrite old
3295            /// packets.
3296            RingBuffer = 1,
3297            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3298            /// the reader catches up with the writer. As soon as the writer hits
3299            /// an unread chunk, it stops accepting new data in the buffer.
3300            Discard = 2,
3301        }
3302        impl FillPolicy {
3303            /// String value of the enum field names used in the ProtoBuf definition.
3304            ///
3305            /// The values are not transformed in any way and thus are considered stable
3306            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3307            pub fn as_str_name(&self) -> &'static str {
3308                match self {
3309                    FillPolicy::Unspecified => "UNSPECIFIED",
3310                    FillPolicy::RingBuffer => "RING_BUFFER",
3311                    FillPolicy::Discard => "DISCARD",
3312                }
3313            }
3314        }
3315    }
3316    #[derive(Clone, PartialEq, ::prost::Message)]
3317    pub struct DataSource {
3318        /// Filters and data-source specific config. It contains also the unique name
3319        /// of the data source, the one passed in the  DataSourceDescriptor when they
3320        /// register on the service.
3321        #[prost(message, optional, tag="1")]
3322        pub config: ::core::option::Option<super::DataSourceConfig>,
3323        /// Optional. If multiple producers (~processes) expose the same data source
3324        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3325        /// the data source is enabled only for producers whose names match any of
3326        /// the filters.
3327        /// |producer_name_filter| has to be an exact match, while
3328        /// |producer_name_regex_filter| is a regular expression.
3329        /// This allows to enable a data source only for specific processes.
3330        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3331        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3332        #[prost(string, repeated, tag="2")]
3333        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3334        #[prost(string, repeated, tag="3")]
3335        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3336    }
3337    /// Config for disabling builtin data sources in the tracing service.
3338    #[derive(Clone, PartialEq, ::prost::Message)]
3339    pub struct BuiltinDataSource {
3340        /// Disable emitting clock timestamps into the trace.
3341        #[prost(bool, optional, tag="1")]
3342        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3343        /// Disable echoing the original trace config in the trace.
3344        #[prost(bool, optional, tag="2")]
3345        pub disable_trace_config: ::core::option::Option<bool>,
3346        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3347        #[prost(bool, optional, tag="3")]
3348        pub disable_system_info: ::core::option::Option<bool>,
3349        /// Disable emitting events for data-source state changes (e.g. the marker
3350        /// for all data sources having ACKed the start of the trace).
3351        #[prost(bool, optional, tag="4")]
3352        pub disable_service_events: ::core::option::Option<bool>,
3353        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3354        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3355        /// into the trace as part of the ClockSnapshots emitted by the service.
3356        /// Trace processor will attempt to translate packet/event timestamps from
3357        /// various data sources (and their chosen clock domains) to this domain
3358        /// during import. Added in Android R.
3359        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3360        pub primary_trace_clock: ::core::option::Option<i32>,
3361        /// Time interval in between snapshotting of sync markers, clock snapshots,
3362        /// stats, and other periodic service-emitted events. Note that the service
3363        /// only keeps track of the first and the most recent snapshot until
3364        /// ReadBuffers() is called.
3365        #[prost(uint32, optional, tag="6")]
3366        pub snapshot_interval_ms: ::core::option::Option<u32>,
3367        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3368        /// clock should be used for periodic snapshots of service-emitted events.
3369        /// This means, if a snapshot *should* have happened during suspend, it will
3370        /// happen immediately after the device resumes.
3371        ///
3372        /// Choosing a clock like this is done on best-effort basis; not all
3373        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3374        /// tasks counting suspend. If such a clock is not available, the service
3375        /// falls back to the best-available alternative.
3376        ///
3377        /// Introduced in Android S.
3378        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3379        /// crashes in S.
3380        #[prost(bool, optional, tag="7")]
3381        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3382        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3383        #[prost(bool, optional, tag="8")]
3384        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3385    }
3386    #[derive(Clone, PartialEq, ::prost::Message)]
3387    pub struct ProducerConfig {
3388        /// Identifies the producer for which this config is for.
3389        #[prost(string, optional, tag="1")]
3390        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3391        /// Specifies the preferred size of the shared memory buffer. If the size is
3392        /// larger than the max size, the max will be used. If it is smaller than
3393        /// the page size or doesn't fit pages evenly into it, it will fall back to
3394        /// the size specified by the producer or finally the default shared memory
3395        /// size.
3396        #[prost(uint32, optional, tag="2")]
3397        pub shm_size_kb: ::core::option::Option<u32>,
3398        /// Specifies the preferred size of each page in the shared memory buffer.
3399        /// Must be an integer multiple of 4K.
3400        #[prost(uint32, optional, tag="3")]
3401        pub page_size_kb: ::core::option::Option<u32>,
3402    }
3403    /// Contains statsd-specific metadata about an alert associated with the trace.
3404    #[derive(Clone, PartialEq, ::prost::Message)]
3405    pub struct StatsdMetadata {
3406        /// The identifier of the alert which triggered this trace.
3407        #[prost(int64, optional, tag="1")]
3408        pub triggering_alert_id: ::core::option::Option<i64>,
3409        /// The uid which registered the triggering configuration with statsd.
3410        #[prost(int32, optional, tag="2")]
3411        pub triggering_config_uid: ::core::option::Option<i32>,
3412        /// The identifier of the config which triggered the alert.
3413        #[prost(int64, optional, tag="3")]
3414        pub triggering_config_id: ::core::option::Option<i64>,
3415        /// The identifier of the subscription which triggered this trace.
3416        #[prost(int64, optional, tag="4")]
3417        pub triggering_subscription_id: ::core::option::Option<i64>,
3418    }
3419    /// Contains flags which override the default values of the guardrails inside
3420    /// Perfetto.
3421    #[derive(Clone, PartialEq, ::prost::Message)]
3422    pub struct GuardrailOverrides {
3423        /// Override the default limit (in bytes) for uploading data to server within
3424        /// a 24 hour period.
3425        /// On R-, this override only affected userdebug builds. Since S, it also
3426        /// affects user builds.
3427        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3428        /// was removed from Perfetto.
3429        #[deprecated]
3430        #[prost(uint64, optional, tag="1")]
3431        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3432        /// Overrides the guardrail for maximum trace buffer size.
3433        /// Available on U+
3434        #[prost(uint32, optional, tag="2")]
3435        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3436    }
3437    /// Triggers allow producers to start or stop the tracing session when an event
3438    /// occurs.
3439    ///
3440    /// For example if we are tracing probabilistically, most traces will be
3441    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3442    /// those traces during which the device temperature reached a certain
3443    /// threshold. In this case the producer can activate a trigger to keep
3444    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3445    /// (START_TRACING) because it knows something is about to happen.
3446    #[derive(Clone, PartialEq, ::prost::Message)]
3447    pub struct TriggerConfig {
3448        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3449        pub trigger_mode: ::core::option::Option<i32>,
3450        /// This flag is really a workaround for b/274931668. This is needed only
3451        /// when deploying configs to different versions of the tracing service.
3452        /// When this is set to true this has the same effect of setting trigger_mode
3453        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3454        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3455        /// versions of Android and fall back to STOP_TRACING on older versions where
3456        /// CLONE_SNAPSHOT did not exist.
3457        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3458        #[prost(bool, optional, tag="5")]
3459        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3460        /// A list of triggers which are related to this configuration. If ANY
3461        /// trigger is seen then an action will be performed based on |trigger_mode|.
3462        #[prost(message, repeated, tag="2")]
3463        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3464        /// Required and must be positive if a TriggerConfig is specified. This is
3465        /// how long this TraceConfig should wait for a trigger to arrive. After this
3466        /// period of time if no trigger is seen the TracingSession will be cleaned
3467        /// up.
3468        #[prost(uint32, optional, tag="3")]
3469        pub trigger_timeout_ms: ::core::option::Option<u32>,
3470    }
3471    /// Nested message and enum types in `TriggerConfig`.
3472    pub mod trigger_config {
3473        #[derive(Clone, PartialEq, ::prost::Message)]
3474        pub struct Trigger {
3475            /// The producer must specify this name to activate the trigger.
3476            #[prost(string, optional, tag="1")]
3477            pub name: ::core::option::Option<::prost::alloc::string::String>,
3478            /// An std::regex that will match the producer that can activate this
3479            /// trigger. This is optional. If unset any producers can activate this
3480            /// trigger.
3481            #[prost(string, optional, tag="2")]
3482            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3483            /// After a trigger is received either in START_TRACING or STOP_TRACING
3484            /// mode then the trace will end |stop_delay_ms| after triggering.
3485            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3486            /// snapshot.
3487            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3488            /// based on wall-clock, counting also time in suspend.
3489            #[prost(uint32, optional, tag="3")]
3490            pub stop_delay_ms: ::core::option::Option<u32>,
3491            /// Limits the number of traces this trigger can start/stop in a rolling
3492            /// 24 hour window. If this field is unset or zero, no limit is applied and
3493            /// activiation of this trigger *always* starts/stops the trace.
3494            #[prost(uint32, optional, tag="4")]
3495            pub max_per_24_h: ::core::option::Option<u32>,
3496            /// A value between 0 and 1 which encodes the probability of skipping a
3497            /// trigger with this name. This is useful for reducing the probability
3498            /// of high-frequency triggers from dominating trace finaization. If this
3499            /// field is unset or zero, the trigger will *never* be skipped. If this
3500            /// field is greater than or equal to 1, this trigger will *always* be
3501            /// skipped i.e. it will be as if this trigger was never included in the
3502            /// first place.
3503            /// This probability check is applied *before* any other limits. For
3504            /// example, if |max_per_24_h| is also set, first we will check if the
3505            /// probability bar is met and only then will we check the |max_per_24_h|
3506            /// limit.
3507            #[prost(double, optional, tag="5")]
3508            pub skip_probability: ::core::option::Option<f64>,
3509        }
3510        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3511        #[repr(i32)]
3512        pub enum TriggerMode {
3513            Unspecified = 0,
3514            /// When this mode is chosen, data sources are not started until one of the
3515            /// |triggers| are received. This supports early initialization and fast
3516            /// starting of the tracing system. On triggering, the session will then
3517            /// record for |stop_delay_ms|. However if no trigger is seen
3518            /// after |trigger_timeout_ms| the session will be stopped and no data will
3519            /// be returned.
3520            StartTracing = 1,
3521            /// When this mode is chosen, the session will be started via the normal
3522            /// EnableTracing() & StartTracing(). If no trigger is ever seen
3523            /// the session will be stopped after |trigger_timeout_ms| and no data will
3524            /// be returned. However if triggered the trace will stop after
3525            /// |stop_delay_ms| and any data in the buffer will be returned to the
3526            /// consumer.
3527            StopTracing = 2,
3528            /// When this mode is chosen, this causes a snapshot of the current tracing
3529            /// session to be created after |stop_delay_ms| while the current tracing
3530            /// session continues undisturbed (% an extra flush). This mode can be
3531            /// used only when the tracing session is handled by the "perfetto" cmdline
3532            /// client (which is true in 90% of cases). Part of the business logic
3533            /// necessary for this behavior, and ensuing file handling, lives in
3534            /// perfetto_cmd.cc . On other consumers, this causes only a notification
3535            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
3536            /// consumer is supposed to call CloneSession() itself after the event.
3537            /// Use use_clone_snapshot_if_available=true when targeting older versions
3538            /// of perfetto.
3539            CloneSnapshot = 4,
3540        }
3541        impl TriggerMode {
3542            /// String value of the enum field names used in the ProtoBuf definition.
3543            ///
3544            /// The values are not transformed in any way and thus are considered stable
3545            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3546            pub fn as_str_name(&self) -> &'static str {
3547                match self {
3548                    TriggerMode::Unspecified => "UNSPECIFIED",
3549                    TriggerMode::StartTracing => "START_TRACING",
3550                    TriggerMode::StopTracing => "STOP_TRACING",
3551                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
3552                }
3553            }
3554        }
3555    }
3556    /// Configuration for trace contents that reference earlier trace data. For
3557    /// example, a data source might intern strings, and emit packets containing
3558    /// {interned id : string} pairs. Future packets from that data source can then
3559    /// use the interned ids instead of duplicating the raw string contents. The
3560    /// trace parser will then need to use that interning table to fully interpret
3561    /// the rest of the trace.
3562    #[derive(Clone, PartialEq, ::prost::Message)]
3563    pub struct IncrementalStateConfig {
3564        /// If nonzero, notify eligible data sources to clear their incremental state
3565        /// periodically, with the given period. The notification is sent only to
3566        /// data sources that have |handles_incremental_state_clear| set in their
3567        /// DataSourceDescriptor. The notification requests that the data source
3568        /// stops referring to past trace contents. This is particularly useful when
3569        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
3570        /// trace data.
3571        ///
3572        /// Warning: this time-based global clearing is likely to be removed in the
3573        /// future, to be replaced with a smarter way of sending the notifications
3574        /// only when necessary.
3575        #[prost(uint32, optional, tag="1")]
3576        pub clear_period_ms: ::core::option::Option<u32>,
3577    }
3578    /// Android-only. Not for general use. If set, saves the trace into an
3579    /// incident. This field is read by perfetto_cmd, rather than the tracing
3580    /// service. This field must be set when passing the --upload flag to
3581    /// perfetto_cmd.
3582    ///
3583    /// In this message, either:
3584    ///   * all of |destination_package|, |destination_class| and |privacy_level|
3585    ///     must be set.
3586    ///   * |skip_incidentd| must be explicitly set to true.
3587    #[derive(Clone, PartialEq, ::prost::Message)]
3588    pub struct IncidentReportConfig {
3589        #[prost(string, optional, tag="1")]
3590        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
3591        #[prost(string, optional, tag="2")]
3592        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
3593        /// Level of filtering in the requested incident. See |Destination| in
3594        /// frameworks/base/core/proto/android/privacy.proto.
3595        #[prost(int32, optional, tag="3")]
3596        pub privacy_level: ::core::option::Option<i32>,
3597        /// If true, then skips saving the trace to incidentd.
3598        ///
3599        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3600        /// or when we explicitly don't want traces to go to incidentd even when they
3601        /// usually would (e.g. configs deployed using statsd but only used for
3602        /// inclusion in bugreports using |bugreport_score|).
3603        ///
3604        /// The motivation for having this flag, instead of just not setting
3605        /// |incident_report_config|, is prevent accidents where
3606        /// |incident_report_config| is omitted by mistake.
3607        #[prost(bool, optional, tag="5")]
3608        pub skip_incidentd: ::core::option::Option<bool>,
3609        /// If true, do not write the trace into dropbox (i.e. incident only).
3610        /// Otherwise, write to both dropbox and incident.
3611        /// TODO(lalitm): remove this field as we no longer use Dropbox.
3612        #[deprecated]
3613        #[prost(bool, optional, tag="4")]
3614        pub skip_dropbox: ::core::option::Option<bool>,
3615    }
3616    /// When set applies a post-filter to the trace contents using the filter
3617    /// provided. The filter is applied at ReadBuffers() time and works both in the
3618    /// case of IPC readback and write_into_file. This filter can be generated
3619    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
3620    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
3621    /// design.
3622    ///
3623    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
3624    /// Android T with a different field number. Updated in Android U with a new
3625    /// bytecode version which supports string filtering.
3626    ///
3627    /// =========================
3628    /// Filter bytecode.
3629    /// =========================
3630    #[derive(Clone, PartialEq, ::prost::Message)]
3631    pub struct TraceFilter {
3632        /// The bytecode as implemented in Android T.
3633        #[prost(bytes="vec", optional, tag="1")]
3634        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3635        /// The bytecode as implemented in Android U. Adds support for string
3636        /// filtering.
3637        #[prost(bytes="vec", optional, tag="2")]
3638        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3639        #[prost(message, optional, tag="3")]
3640        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
3641    }
3642    /// Nested message and enum types in `TraceFilter`.
3643    pub mod trace_filter {
3644        /// A rule specifies how strings should be filtered.
3645        #[derive(Clone, PartialEq, ::prost::Message)]
3646        pub struct StringFilterRule {
3647            /// The policy (i.e. algorithm) dictating how strings matching this rule
3648            /// should be handled.
3649            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
3650            pub policy: ::core::option::Option<i32>,
3651            /// The regex pattern used to match against each string.
3652            #[prost(string, optional, tag="2")]
3653            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
3654            /// The string which should appear after the tgid in atrace tracepoint
3655            /// strings.
3656            #[prost(string, optional, tag="3")]
3657            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
3658        }
3659        /// A chain is a list of rules which string will be sequentially checked
3660        /// against.
3661        #[derive(Clone, PartialEq, ::prost::Message)]
3662        pub struct StringFilterChain {
3663            #[prost(message, repeated, tag="1")]
3664            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
3665        }
3666        // =========================
3667        // String filtering
3668        // =========================
3669
3670        // The principles and terminology of string filtering is heavily inspired by
3671        // iptables. A "rule" decide how strings should be filtered. Each rule
3672        // contains a "policy" which indicates the algorithm to use for filtering.
3673        // A "chain" is a list of rules which will be sequentially checked against
3674        // each string.
3675        //
3676        // The first rule which applies to the string terminates filtering for that
3677        // string. If no rules apply, the string is left unchanged.
3678
3679        /// A policy specifies which algorithm should be used for filtering the
3680        /// string.
3681        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3682        #[repr(i32)]
3683        pub enum StringFilterPolicy {
3684            SfpUnspecified = 0,
3685            /// Tries to match the string field against |regex_pattern|. If it
3686            /// matches, all matching groups are "redacted" (i.e. replaced with a
3687            /// constant string) and filtering is terminated (i.e. no further rules are
3688            /// checked). If it doesn't match, the string is left unchanged and the
3689            /// next rule in chain is considered.
3690            SfpMatchRedactGroups = 1,
3691            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
3692            /// checking the regex. Specifically, it tries to parse the string field as
3693            /// an atrace tracepoint and checks if the post-tgid field starts with
3694            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3695            /// this check succeeds.
3696            SfpAtraceMatchRedactGroups = 2,
3697            /// Tries to match the string field against |regex_pattern|. If it
3698            /// matches, filtering is terminated (i.e. no further rules are checked).
3699            /// If it doesn't match, the string is left unchanged and the next rule in
3700            /// chain is considered.
3701            SfpMatchBreak = 3,
3702            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
3703            /// the regex. Specifically, it tries to parse the string field as an
3704            /// atrace tracepoint and checks if the post-tgid field starts with
3705            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3706            /// this check succeeds.
3707            SfpAtraceMatchBreak = 4,
3708            /// Tries to repeatedly search (i.e. find substrings of) the string field
3709            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
3710            /// replaced with a constant string). Once there are no further matches,
3711            /// filtering is terminated (i.e. no further rules are checked).
3712            ///
3713            /// Note that this is policy is a "search" policy not a "match" policy
3714            /// unlike the above policies:
3715            ///   * Match policies require matching the full string i.e. there is an
3716            ///     implicit leading `^` and trailing `$`.
3717            ///   * Search policies perform repeated partial matching of the string
3718            ///     e.g.
3719            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
3720            ///       - Pattern: `foo=(\d+)`
3721            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
3722            ///     where P6O is the redaction string
3723            ///
3724            /// All of this is only performed after some pre-work where we try to parse
3725            /// the string field as an atrace tracepoint and check if the post-tgid
3726            /// field starts with |atrace_post_tgid_starts_with|.
3727            ///
3728            /// If there are no partial matches, the string is left unchanged and the
3729            /// next rule in chain is considered.
3730            SfpAtraceRepeatedSearchRedactGroups = 5,
3731        }
3732        impl StringFilterPolicy {
3733            /// String value of the enum field names used in the ProtoBuf definition.
3734            ///
3735            /// The values are not transformed in any way and thus are considered stable
3736            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3737            pub fn as_str_name(&self) -> &'static str {
3738                match self {
3739                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
3740                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
3741                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
3742                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
3743                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
3744                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
3745                }
3746            }
3747        }
3748    }
3749    /// Android-only. Not for general use. If set, reports the trace to the
3750    /// Android framework. This field is read by perfetto_cmd, rather than the
3751    /// tracing service. This field must be set when passing the --upload flag to
3752    /// perfetto_cmd.
3753    ///
3754    /// In this message, either:
3755    ///   * |reporter_service_package| and |reporter_service_class| must be set.
3756    ///   * |skip_reporting| must be explicitly set to true.
3757    #[derive(Clone, PartialEq, ::prost::Message)]
3758    pub struct AndroidReportConfig {
3759        #[prost(string, optional, tag="1")]
3760        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
3761        #[prost(string, optional, tag="2")]
3762        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
3763        /// If true, then skips reporting the trace to Android framework.
3764        ///
3765        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3766        /// or when we explicitly don't want to report traces to the framework even
3767        /// when they usually would (e.g. configs deployed using statsd but only
3768        /// used for inclusion in bugreports using |bugreport_score|).
3769        ///
3770        /// The motivation for having this flag, instead of just not setting
3771        /// |framework_report_config|, is prevent accidents where
3772        /// |framework_report_config| is omitted by mistake.
3773        #[prost(bool, optional, tag="3")]
3774        pub skip_report: ::core::option::Option<bool>,
3775        /// If true, will direct the Android framework to read the data in trace
3776        /// file and pass it to the reporter class over a pipe instead of passing
3777        /// the file descriptor directly.
3778        ///
3779        /// This flag is needed because the Android test framework does not
3780        /// currently support priv-app helper apps (in terms of SELinux) and we
3781        /// really don't want to add an allow rule for untrusted_app to receive
3782        /// trace fds.
3783        ///
3784        /// Because of this, we instead will direct the framework to create a new
3785        /// pipe and pass this to the reporter process instead. As the pipe is
3786        /// created by the framework, we won't have any problems with SELinux
3787        /// (system_server is already allowed to pass pipe fds, even
3788        /// to untrusted apps).
3789        ///
3790        /// As the name suggests this option *MUST* only be used for testing.
3791        /// Note that the framework will reject (and drop) files which are too
3792        /// large both for simplicity and to be minimize the amount of data we
3793        /// pass to a non-priv app (note that the framework will still check
3794        /// manifest permissions even though SELinux permissions are worked around).
3795        #[prost(bool, optional, tag="4")]
3796        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
3797    }
3798    /// If set, delays the start of tracing by a random duration. The duration is
3799    /// chosen from a uniform distribution between the specified minimum and
3800    /// maximum.
3801    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
3802    /// not work if you communicate with traced directly over the consumer API.
3803    /// Introduced in Android T.
3804    #[derive(Clone, PartialEq, ::prost::Message)]
3805    pub struct CmdTraceStartDelay {
3806        #[prost(uint32, optional, tag="1")]
3807        pub min_delay_ms: ::core::option::Option<u32>,
3808        #[prost(uint32, optional, tag="2")]
3809        pub max_delay_ms: ::core::option::Option<u32>,
3810    }
3811    /// When non-empty, ensures that for a each semaphore named `name at most
3812    /// `max_other_session_count`` *other* sessions (whose value is taken of the
3813    /// minimum of all values specified by this config or any already-running
3814    /// session) can be be running.
3815    ///
3816    /// If a semaphore "acquisition" fails, EnableTracing will return an error
3817    /// and the tracing session will not be started (or elgible to start in
3818    /// the case of deferred sessions).
3819    ///
3820    /// This is easiest to explain with an example. Suppose the tracing service has
3821    /// the following active tracing sessions:
3822    ///    S1 = [{name=foo, max_other_session_count=2},
3823    ///          {name=bar, max_other_session_count=0}]
3824    ///    S2 = [{name=foo, max_other_session_count=1},
3825    ///          {name=baz, max_other_session_count=1}]
3826    ///
3827    /// Then, for a new session, the following would be the expected behaviour of
3828    /// EnableSession given the state of `session_semaphores`.
3829    ///    Q: session_semaphores = []
3830    ///    A: Allowed because it does not specify any semaphores. Will be allowed
3831    ///       no matter the state of any other tracing session.
3832    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
3833    ///    A: Allowed because both S2 and this config specify
3834    ///       max_other_session_count=1 for baz.
3835    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
3836    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
3837    ///       takes that slot.
3838    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
3839    ///    A: Denied because S1 takes the the slot specified by both S1 and
3840    ///       this config.
3841    ///
3842    /// Introduced in 24Q3 (Android V).
3843    #[derive(Clone, PartialEq, ::prost::Message)]
3844    pub struct SessionSemaphore {
3845        /// The name of the semaphore. Acts as a unique identifier across all
3846        /// tracing sessions (including the one being started).
3847        #[prost(string, optional, tag="1")]
3848        pub name: ::core::option::Option<::prost::alloc::string::String>,
3849        /// The maximum number of *other* sesssions which specify the same semaphore
3850        /// which can be active. The minimum of this value across all tracing
3851        /// sessions and the value specified by the config is used when deciding
3852        /// whether the tracing session can be started.
3853        #[prost(uint64, optional, tag="2")]
3854        pub max_other_session_count: ::core::option::Option<u64>,
3855    }
3856    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3857    #[repr(i32)]
3858    pub enum LockdownModeOperation {
3859        LockdownUnchanged = 0,
3860        LockdownClear = 1,
3861        LockdownSet = 2,
3862    }
3863    impl LockdownModeOperation {
3864        /// String value of the enum field names used in the ProtoBuf definition.
3865        ///
3866        /// The values are not transformed in any way and thus are considered stable
3867        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3868        pub fn as_str_name(&self) -> &'static str {
3869            match self {
3870                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
3871                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
3872                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
3873            }
3874        }
3875    }
3876    /// Compress trace with the given method. Best effort.
3877    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3878    #[repr(i32)]
3879    pub enum CompressionType {
3880        Unspecified = 0,
3881        Deflate = 1,
3882    }
3883    impl CompressionType {
3884        /// String value of the enum field names used in the ProtoBuf definition.
3885        ///
3886        /// The values are not transformed in any way and thus are considered stable
3887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3888        pub fn as_str_name(&self) -> &'static str {
3889            match self {
3890                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
3891                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
3892            }
3893        }
3894    }
3895    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3896    #[repr(i32)]
3897    pub enum StatsdLogging {
3898        Unspecified = 0,
3899        Enabled = 1,
3900        Disabled = 2,
3901    }
3902    impl StatsdLogging {
3903        /// String value of the enum field names used in the ProtoBuf definition.
3904        ///
3905        /// The values are not transformed in any way and thus are considered stable
3906        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3907        pub fn as_str_name(&self) -> &'static str {
3908            match self {
3909                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
3910                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
3911                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
3912            }
3913        }
3914    }
3915}
3916// End of protos/perfetto/config/trace_config.proto
3917
3918// Begin of protos/perfetto/common/trace_stats.proto
3919
3920/// Statistics for the internals of the tracing service.
3921///
3922/// Next id: 19.
3923#[derive(Clone, PartialEq, ::prost::Message)]
3924pub struct TraceStats {
3925    /// Stats for the TraceBuffer(s) of the current trace session.
3926    #[prost(message, repeated, tag="1")]
3927    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
3928    /// The thresholds of each the `writer_stats` histogram buckets. This is
3929    /// emitted only once as all WriterStats share the same bucket layout.
3930    /// This field has the same cardinality of the
3931    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
3932    /// (The -1 is because the last overflow bucket is not reported in the _def).
3933    /// An array of values [10, 100, 1000] in the _def array means that there are
3934    /// four buckets (3 + the implicit overflow bucket):
3935    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
3936    #[prost(int64, repeated, packed="false", tag="17")]
3937    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
3938    #[prost(message, repeated, tag="18")]
3939    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
3940    /// Num. producers connected (whether they are involved in the current tracing
3941    /// session or not).
3942    #[prost(uint32, optional, tag="2")]
3943    pub producers_connected: ::core::option::Option<u32>,
3944    /// Num. producers ever seen for all trace sessions since startup (it's a good
3945    /// proxy for inferring num. producers crashed / killed).
3946    #[prost(uint64, optional, tag="3")]
3947    pub producers_seen: ::core::option::Option<u64>,
3948    /// Num. data sources registered for all trace sessions.
3949    #[prost(uint32, optional, tag="4")]
3950    pub data_sources_registered: ::core::option::Option<u32>,
3951    /// Num. data sources ever seen for all trace sessions since startup.
3952    #[prost(uint64, optional, tag="5")]
3953    pub data_sources_seen: ::core::option::Option<u64>,
3954    /// Num. concurrently active tracing sessions.
3955    #[prost(uint32, optional, tag="6")]
3956    pub tracing_sessions: ::core::option::Option<u32>,
3957    /// Num. buffers for all tracing session (not just the current one). This will
3958    /// be >= buffer_stats.size(), because the latter is only about the current
3959    /// session.
3960    #[prost(uint32, optional, tag="7")]
3961    pub total_buffers: ::core::option::Option<u32>,
3962    // The fields below have been introduced in Android Q.
3963
3964    /// Num. chunks that were discarded by the service before attempting to commit
3965    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
3966    #[prost(uint64, optional, tag="8")]
3967    pub chunks_discarded: ::core::option::Option<u64>,
3968    /// Num. patches that were discarded by the service before attempting to apply
3969    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
3970    #[prost(uint64, optional, tag="9")]
3971    pub patches_discarded: ::core::option::Option<u64>,
3972    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
3973    /// is a bug in the producer.
3974    #[prost(uint64, optional, tag="10")]
3975    pub invalid_packets: ::core::option::Option<u64>,
3976    #[prost(message, optional, tag="11")]
3977    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
3978    /// Count of Flush() requests (either from the Consumer, or self-induced
3979    /// periodic flushes). The final Flush() is also included in the count.
3980    #[prost(uint64, optional, tag="12")]
3981    pub flushes_requested: ::core::option::Option<u64>,
3982    /// The count of the Flush() requests that were completed successfully.
3983    /// In a well behaving trace this should always be == `flush_requests`.
3984    #[prost(uint64, optional, tag="13")]
3985    pub flushes_succeeded: ::core::option::Option<u64>,
3986    /// The count of the Flush() requests that failed (in most timed out).
3987    /// In a well behaving trace this should always be == 0.
3988    #[prost(uint64, optional, tag="14")]
3989    pub flushes_failed: ::core::option::Option<u64>,
3990    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
3991    pub final_flush_outcome: ::core::option::Option<i32>,
3992}
3993/// Nested message and enum types in `TraceStats`.
3994pub mod trace_stats {
3995    /// From TraceBuffer::Stats.
3996    ///
3997    /// Next id: 21.
3998    #[derive(Clone, PartialEq, ::prost::Message)]
3999    pub struct BufferStats {
4000        /// Size of the circular buffer in bytes.
4001        #[prost(uint64, optional, tag="12")]
4002        pub buffer_size: ::core::option::Option<u64>,
4003        /// Num. bytes written into the circular buffer, including chunk headers.
4004        #[prost(uint64, optional, tag="1")]
4005        pub bytes_written: ::core::option::Option<u64>,
4006        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4007        #[prost(uint64, optional, tag="13")]
4008        pub bytes_overwritten: ::core::option::Option<u64>,
4009        /// Total size of chunks that were fully read from the circular buffer by the
4010        /// consumer. This may not be equal to |bytes_written| either in the middle
4011        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4012        /// size of the chunks read from the buffer, including chunk headers, which
4013        /// will be different from the total size of packets returned to the
4014        /// consumer.
4015        ///
4016        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4017        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4018        /// adding the difference of |padding_bytes_written| and
4019        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4020        /// Note that this represents the total size of buffered data in the buffer,
4021        /// yet this data may be spread non-contiguously through the buffer and may
4022        /// be overridden before the utilization reaches 100%.
4023        #[prost(uint64, optional, tag="14")]
4024        pub bytes_read: ::core::option::Option<u64>,
4025        /// Num. bytes that were allocated as padding between chunks in the circular
4026        /// buffer.
4027        #[prost(uint64, optional, tag="15")]
4028        pub padding_bytes_written: ::core::option::Option<u64>,
4029        /// Num. of padding bytes that were removed from the circular buffer when
4030        /// they were overwritten.
4031        ///
4032        /// The difference between |padding_bytes_written| and
4033        /// |padding_bytes_cleared| denotes the total size of padding currently
4034        /// present in the buffer.
4035        #[prost(uint64, optional, tag="16")]
4036        pub padding_bytes_cleared: ::core::option::Option<u64>,
4037        /// Num. chunks (!= packets) written into the buffer.
4038        #[prost(uint64, optional, tag="2")]
4039        pub chunks_written: ::core::option::Option<u64>,
4040        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4041        /// the same chunk with additional packets appended to the end.
4042        #[prost(uint64, optional, tag="10")]
4043        pub chunks_rewritten: ::core::option::Option<u64>,
4044        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4045        #[prost(uint64, optional, tag="3")]
4046        pub chunks_overwritten: ::core::option::Option<u64>,
4047        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4048        /// is configured with FillPolicy == DISCARD.
4049        #[prost(uint64, optional, tag="18")]
4050        pub chunks_discarded: ::core::option::Option<u64>,
4051        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4052        /// the consumer. This may not be equal to |chunks_written| either in the
4053        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4054        #[prost(uint64, optional, tag="17")]
4055        pub chunks_read: ::core::option::Option<u64>,
4056        /// Num. chunks that were committed out of order.
4057        #[prost(uint64, optional, tag="11")]
4058        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4059        /// Num. times the ring buffer wrapped around.
4060        #[prost(uint64, optional, tag="4")]
4061        pub write_wrap_count: ::core::option::Option<u64>,
4062        /// Num. out-of-band (OOB) patches that succeeded.
4063        #[prost(uint64, optional, tag="5")]
4064        pub patches_succeeded: ::core::option::Option<u64>,
4065        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4066        #[prost(uint64, optional, tag="6")]
4067        pub patches_failed: ::core::option::Option<u64>,
4068        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4069        /// successful packet read.
4070        #[prost(uint64, optional, tag="7")]
4071        pub readaheads_succeeded: ::core::option::Option<u64>,
4072        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4073        /// Note that a small number > 0 is totally expected: occasionally, when
4074        /// issuing a read, the very last packet in a sequence might be incomplete
4075        /// (because the producer is still writing it while we read). The read will
4076        /// stop at that point, for that sequence, increasing this counter.
4077        #[prost(uint64, optional, tag="8")]
4078        pub readaheads_failed: ::core::option::Option<u64>,
4079        /// Num. of violations of the SharedMemoryABI found while writing or reading
4080        /// the buffer. This is an indication of either a bug in the producer(s) or
4081        /// malicious producer(s).
4082        #[prost(uint64, optional, tag="9")]
4083        pub abi_violations: ::core::option::Option<u64>,
4084        // The fields below have been introduced in Android R.
4085
4086        /// Num. of times the service detected packet loss on a trace writer
4087        /// sequence. This is usually caused by exhaustion of available chunks in the
4088        /// writer process's SMB. Note that this relies on the client's TraceWriter
4089        /// indicating this loss to the service -- packets lost for other reasons are
4090        /// not reflected in this stat.
4091        #[prost(uint64, optional, tag="19")]
4092        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4093    }
4094    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4095    /// visible as a unique sequence ID in the trace.
4096    #[derive(Clone, PartialEq, ::prost::Message)]
4097    pub struct WriterStats {
4098        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4099        /// correlate the stats with the actual packet types.
4100        #[prost(uint64, optional, tag="1")]
4101        pub sequence_id: ::core::option::Option<u64>,
4102        /// The buffer index (0..N, as defined in the TraceConfig).
4103        #[prost(uint32, optional, tag="4")]
4104        pub buffer: ::core::option::Option<u32>,
4105        /// These two arrays have the same cardinality and match the cardinality of
4106        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4107        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4108        /// for each bucket.
4109        #[prost(uint64, repeated, tag="2")]
4110        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4111        #[prost(int64, repeated, tag="3")]
4112        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4113    }
4114    /// This is set only when the TraceConfig specifies a TraceFilter.
4115    #[derive(Clone, PartialEq, ::prost::Message)]
4116    pub struct FilterStats {
4117        #[prost(uint64, optional, tag="1")]
4118        pub input_packets: ::core::option::Option<u64>,
4119        #[prost(uint64, optional, tag="2")]
4120        pub input_bytes: ::core::option::Option<u64>,
4121        #[prost(uint64, optional, tag="3")]
4122        pub output_bytes: ::core::option::Option<u64>,
4123        #[prost(uint64, optional, tag="4")]
4124        pub errors: ::core::option::Option<u64>,
4125        #[prost(uint64, optional, tag="5")]
4126        pub time_taken_ns: ::core::option::Option<u64>,
4127        /// The number of bytes discarded by the filter (i.e. output - input).
4128        /// The array has one entry for each buffer defined in the config (unless no
4129        /// packets for that buffer were seen and hence filtered).
4130        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4131        /// (output_bytes - input_bytes) because the filter might also discard
4132        /// server-generated synthetic packets, that have no buffer index.
4133        #[prost(uint64, repeated, packed="false", tag="20")]
4134        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4135    }
4136    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4137    #[repr(i32)]
4138    pub enum FinalFlushOutcome {
4139        FinalFlushUnspecified = 0,
4140        FinalFlushSucceeded = 1,
4141        FinalFlushFailed = 2,
4142    }
4143    impl FinalFlushOutcome {
4144        /// String value of the enum field names used in the ProtoBuf definition.
4145        ///
4146        /// The values are not transformed in any way and thus are considered stable
4147        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4148        pub fn as_str_name(&self) -> &'static str {
4149            match self {
4150                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4151                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4152                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4153            }
4154        }
4155    }
4156}
4157// End of protos/perfetto/common/trace_stats.proto
4158
4159// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4160
4161#[derive(Clone, PartialEq, ::prost::Message)]
4162pub struct AndroidGameInterventionList {
4163    #[prost(message, repeated, tag="1")]
4164    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4165    /// True when at least one error occurred when parsing
4166    /// game_mode_intervention.list
4167    #[prost(bool, optional, tag="2")]
4168    pub parse_error: ::core::option::Option<bool>,
4169    /// Failed to open / read game_mode_intervention.list
4170    #[prost(bool, optional, tag="3")]
4171    pub read_error: ::core::option::Option<bool>,
4172}
4173/// Nested message and enum types in `AndroidGameInterventionList`.
4174pub mod android_game_intervention_list {
4175    #[derive(Clone, PartialEq, ::prost::Message)]
4176    pub struct GameModeInfo {
4177        #[prost(uint32, optional, tag="1")]
4178        pub mode: ::core::option::Option<u32>,
4179        #[prost(bool, optional, tag="2")]
4180        pub use_angle: ::core::option::Option<bool>,
4181        #[prost(float, optional, tag="3")]
4182        pub resolution_downscale: ::core::option::Option<f32>,
4183        #[prost(float, optional, tag="4")]
4184        pub fps: ::core::option::Option<f32>,
4185    }
4186    #[derive(Clone, PartialEq, ::prost::Message)]
4187    pub struct GamePackageInfo {
4188        #[prost(string, optional, tag="1")]
4189        pub name: ::core::option::Option<::prost::alloc::string::String>,
4190        #[prost(uint64, optional, tag="2")]
4191        pub uid: ::core::option::Option<u64>,
4192        #[prost(uint32, optional, tag="3")]
4193        pub current_mode: ::core::option::Option<u32>,
4194        #[prost(message, repeated, tag="4")]
4195        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4196    }
4197}
4198// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4199
4200// Begin of protos/perfetto/trace/android/android_log.proto
4201
4202#[derive(Clone, PartialEq, ::prost::Message)]
4203pub struct AndroidLogPacket {
4204    #[prost(message, repeated, tag="1")]
4205    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4206    #[prost(message, optional, tag="2")]
4207    pub stats: ::core::option::Option<android_log_packet::Stats>,
4208}
4209/// Nested message and enum types in `AndroidLogPacket`.
4210pub mod android_log_packet {
4211    #[derive(Clone, PartialEq, ::prost::Message)]
4212    pub struct LogEvent {
4213        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4214        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4215        pub log_id: ::core::option::Option<i32>,
4216        /// PID (TGID), TID and UID of the task that emitted the event.
4217        #[prost(int32, optional, tag="2")]
4218        pub pid: ::core::option::Option<i32>,
4219        #[prost(int32, optional, tag="3")]
4220        pub tid: ::core::option::Option<i32>,
4221        #[prost(int32, optional, tag="4")]
4222        pub uid: ::core::option::Option<i32>,
4223        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4224        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4225        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4226        #[prost(uint64, optional, tag="5")]
4227        pub timestamp: ::core::option::Option<u64>,
4228        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4229        /// the second column of /system/etc/event-log-tags. For all other events,
4230        /// |tag| is the app-specified argument passed to __android_log_write().
4231        #[prost(string, optional, tag="6")]
4232        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4233        /// Empty when log_id == LID_EVENTS.
4234        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4235        pub prio: ::core::option::Option<i32>,
4236        /// Empty when log_id == LID_EVENTS.
4237        #[prost(string, optional, tag="8")]
4238        pub message: ::core::option::Option<::prost::alloc::string::String>,
4239        /// Only populated when log_id == LID_EVENTS.
4240        #[prost(message, repeated, tag="9")]
4241        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4242    }
4243    /// Nested message and enum types in `LogEvent`.
4244    pub mod log_event {
4245        #[derive(Clone, PartialEq, ::prost::Message)]
4246        pub struct Arg {
4247            #[prost(string, optional, tag="1")]
4248            pub name: ::core::option::Option<::prost::alloc::string::String>,
4249            #[prost(oneof="arg::Value", tags="2, 3, 4")]
4250            pub value: ::core::option::Option<arg::Value>,
4251        }
4252        /// Nested message and enum types in `Arg`.
4253        pub mod arg {
4254            #[derive(Clone, PartialEq, ::prost::Oneof)]
4255            pub enum Value {
4256                #[prost(int64, tag="2")]
4257                IntValue(i64),
4258                #[prost(float, tag="3")]
4259                FloatValue(f32),
4260                #[prost(string, tag="4")]
4261                StringValue(::prost::alloc::string::String),
4262            }
4263        }
4264    }
4265    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
4266    /// absolute counters since the beginning of the lifetime of the tracing
4267    /// session and NOT relative to the previous Stats snapshot).
4268    #[derive(Clone, PartialEq, ::prost::Message)]
4269    pub struct Stats {
4270        /// Total number of log events seen, including errors and skipped entries
4271        /// (num of events stored in the trace = total - failed - skipped).
4272        #[prost(uint64, optional, tag="1")]
4273        pub num_total: ::core::option::Option<u64>,
4274        /// Parser failures.
4275        #[prost(uint64, optional, tag="2")]
4276        pub num_failed: ::core::option::Option<u64>,
4277        /// Messages skipped due to filters.
4278        #[prost(uint64, optional, tag="3")]
4279        pub num_skipped: ::core::option::Option<u64>,
4280    }
4281}
4282// End of protos/perfetto/trace/android/android_log.proto
4283
4284// Begin of protos/perfetto/trace/android/android_system_property.proto
4285
4286#[derive(Clone, PartialEq, ::prost::Message)]
4287pub struct AndroidSystemProperty {
4288    #[prost(message, repeated, tag="1")]
4289    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
4290}
4291/// Nested message and enum types in `AndroidSystemProperty`.
4292pub mod android_system_property {
4293    #[derive(Clone, PartialEq, ::prost::Message)]
4294    pub struct PropertyValue {
4295        #[prost(string, optional, tag="1")]
4296        pub name: ::core::option::Option<::prost::alloc::string::String>,
4297        #[prost(string, optional, tag="2")]
4298        pub value: ::core::option::Option<::prost::alloc::string::String>,
4299    }
4300}
4301// End of protos/perfetto/trace/android/android_system_property.proto
4302
4303// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
4304
4305/// AppWakelockInfo describes the time-independent properties of a wakelock, such
4306/// as the owning package or wakelock tag. This is interned to reduce trace size.
4307/// Event bundles refer to interned wakelock info by the iid.
4308#[derive(Clone, PartialEq, ::prost::Message)]
4309pub struct AppWakelockInfo {
4310    /// The interned id of this wakelock.
4311    #[prost(int32, optional, tag="1")]
4312    pub iid: ::core::option::Option<i32>,
4313    /// The app-provided tag of the wakelock.
4314    #[prost(string, optional, tag="2")]
4315    pub tag: ::core::option::Option<::prost::alloc::string::String>,
4316    /// The wakelock flags (such as partial vs full).
4317    #[prost(int32, optional, tag="3")]
4318    pub flags: ::core::option::Option<i32>,
4319    /// The pid that created the wakelock.
4320    #[prost(int32, optional, tag="4")]
4321    pub owner_pid: ::core::option::Option<i32>,
4322    /// The uid that created the wakelock.
4323    #[prost(int32, optional, tag="5")]
4324    pub owner_uid: ::core::option::Option<i32>,
4325    /// The uid of the work source root (if present).
4326    #[prost(int32, optional, tag="6")]
4327    pub work_uid: ::core::option::Option<i32>,
4328}
4329/// AppWakelockBundle describes one or more wakelock events. Events are written
4330/// in two paired array, such that the details for event i are in intern_id\[i\]
4331/// and encoded_ts\[i\].
4332#[derive(Clone, PartialEq, ::prost::Message)]
4333pub struct AppWakelockBundle {
4334    /// The interned id for the WakelockInfo of the event.
4335    #[prost(uint32, repeated, tag="1")]
4336    pub intern_id: ::prost::alloc::vec::Vec<u32>,
4337    /// The timestamp and event type, encoded as:
4338    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
4339    #[prost(uint64, repeated, tag="2")]
4340    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
4341    /// For writing single packets (mainly by tokenization).
4342    #[prost(message, optional, tag="3")]
4343    pub info: ::core::option::Option<AppWakelockInfo>,
4344    #[prost(bool, optional, tag="4")]
4345    pub acquired: ::core::option::Option<bool>,
4346}
4347/// Trace event for bluetooth
4348#[derive(Clone, PartialEq, ::prost::Message)]
4349pub struct BluetoothTraceEvent {
4350    /// Packet type and direction
4351    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
4352    pub packet_type: ::core::option::Option<i32>,
4353    /// Total count of the packets collected during the collection interval
4354    #[prost(uint32, optional, tag="2")]
4355    pub count: ::core::option::Option<u32>,
4356    /// Total cumulative length of the packets collected during the collection
4357    /// interval
4358    #[prost(uint32, optional, tag="3")]
4359    pub length: ::core::option::Option<u32>,
4360    /// The collection interval in nanoseconds. This is the duration between the
4361    /// first and last packets collected.
4362    #[prost(uint32, optional, tag="4")]
4363    pub duration: ::core::option::Option<u32>,
4364    /// In case of CMD type, further breakdown of the type of command
4365    #[prost(uint32, optional, tag="5")]
4366    pub op_code: ::core::option::Option<u32>,
4367    /// In the case of EVT type, further breakdown of the type of event
4368    #[prost(uint32, optional, tag="6")]
4369    pub event_code: ::core::option::Option<u32>,
4370    /// When applicable for EVT type, further breakdown of event type into specific
4371    /// subevent
4372    #[prost(uint32, optional, tag="7")]
4373    pub subevent_code: ::core::option::Option<u32>,
4374    /// Associated handle for the bluetooth packet
4375    #[prost(uint32, optional, tag="8")]
4376    pub connection_handle: ::core::option::Option<u32>,
4377}
4378// End of protos/perfetto/trace/android/bluetooth_trace.proto
4379
4380// Begin of protos/perfetto/trace/android/camera_event.proto
4381
4382/// A profiling event corresponding to a single camera frame. This message
4383/// collects important details and timestamps involved in producing a single
4384/// camera frame.
4385/// Next ID: 17
4386#[derive(Clone, PartialEq, ::prost::Message)]
4387pub struct AndroidCameraFrameEvent {
4388    /// Identifier for the CameraCaptureSession this frame originates from. See:
4389    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4390    #[prost(uint64, optional, tag="1")]
4391    pub session_id: ::core::option::Option<u64>,
4392    /// Identifier for the camera sensor that is the source of this frame. This may
4393    /// be either a physical or logical camera (up to vendor interpretation).
4394    #[prost(uint32, optional, tag="2")]
4395    pub camera_id: ::core::option::Option<u32>,
4396    /// The frame number identifying this frame on this camera.
4397    #[prost(int64, optional, tag="3")]
4398    pub frame_number: ::core::option::Option<i64>,
4399    /// Identifier for the CaptureRequest. See:
4400    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
4401    ///
4402    /// If multiple cameras are streaming simultaneously, the request_id may be
4403    /// used to identify which frames were captured in service of the same request.
4404    #[prost(int64, optional, tag="4")]
4405    pub request_id: ::core::option::Option<i64>,
4406    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
4407    /// received by the camera HAL pipeline. Note that this request may wait for
4408    /// some time before processing actually begins. See also
4409    /// request_processing_started_ns.
4410    #[prost(int64, optional, tag="5")]
4411    pub request_received_ns: ::core::option::Option<i64>,
4412    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
4413    /// processing by the camera HAL pipeline. This is the time at which the
4414    /// pipeline actually begins to work on the request.
4415    #[prost(int64, optional, tag="6")]
4416    pub request_processing_started_ns: ::core::option::Option<i64>,
4417    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
4418    #[prost(int64, optional, tag="7")]
4419    pub start_of_exposure_ns: ::core::option::Option<i64>,
4420    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
4421    /// event.
4422    #[prost(int64, optional, tag="8")]
4423    pub start_of_frame_ns: ::core::option::Option<i64>,
4424    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
4425    /// for the frame.
4426    #[prost(int64, optional, tag="9")]
4427    pub responses_all_sent_ns: ::core::option::Option<i64>,
4428    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
4429    pub capture_result_status: ::core::option::Option<i32>,
4430    /// The number of sensor frames that were skipped between this frame and the
4431    /// previous frame. Under normal operation, this should be zero. Any number
4432    /// greater than zero indicates dropped sensor frames.
4433    #[prost(int32, optional, tag="11")]
4434    pub skipped_sensor_frames: ::core::option::Option<i32>,
4435    /// The value of CONTROL_CAPTURE_INTENT. See:
4436    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
4437    #[prost(int32, optional, tag="12")]
4438    pub capture_intent: ::core::option::Option<i32>,
4439    /// The number of streams in the capture request.
4440    #[prost(int32, optional, tag="13")]
4441    pub num_streams: ::core::option::Option<i32>,
4442    #[prost(message, repeated, tag="14")]
4443    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
4444    /// These fields capture vendor-specific additions to this proto message. In
4445    /// practice `vendor_data` typically contains a serialized message of the
4446    /// vendor's design, and `vendor_data_version` is incremented each time there
4447    /// is a backwards incompatible change made to the message.
4448    #[prost(int32, optional, tag="15")]
4449    pub vendor_data_version: ::core::option::Option<i32>,
4450    #[prost(bytes="vec", optional, tag="16")]
4451    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4452}
4453/// Nested message and enum types in `AndroidCameraFrameEvent`.
4454pub mod android_camera_frame_event {
4455    /// A profiling event corresponding to a single node processing within the camera
4456    /// pipeline. Intuitively this corresponds to a single stage of processing to
4457    /// produce a camera frame.
4458    /// Next ID: 6
4459    #[derive(Clone, PartialEq, ::prost::Message)]
4460    pub struct CameraNodeProcessingDetails {
4461        #[prost(int64, optional, tag="1")]
4462        pub node_id: ::core::option::Option<i64>,
4463        /// The timestamp at which node processing begins to run.
4464        #[prost(int64, optional, tag="2")]
4465        pub start_processing_ns: ::core::option::Option<i64>,
4466        /// The timestamp at which node processing finishes running.
4467        #[prost(int64, optional, tag="3")]
4468        pub end_processing_ns: ::core::option::Option<i64>,
4469        /// The delay between inputs becoming ready and the node actually beginning to
4470        /// run.
4471        #[prost(int64, optional, tag="4")]
4472        pub scheduling_latency_ns: ::core::option::Option<i64>,
4473    }
4474    /// The error status, if any, reported to the camera framework. Any status
4475    /// other than STATUS_OK indicates a dropped frame.
4476    /// Next Enum: 6
4477    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4478    #[repr(i32)]
4479    pub enum CaptureResultStatus {
4480        StatusUnspecified = 0,
4481        StatusOk = 1,
4482        /// Early metadata was returned to the camera framework with an error.
4483        StatusEarlyMetadataError = 2,
4484        /// Final metadata was returned to the camera framework with an error.
4485        StatusFinalMetadataError = 3,
4486        /// One or more buffers were returned to the camera framework with an error.
4487        StatusBufferError = 4,
4488        /// The frame was dropped as a result of a flush operation.
4489        StatusFlushError = 5,
4490    }
4491    impl CaptureResultStatus {
4492        /// String value of the enum field names used in the ProtoBuf definition.
4493        ///
4494        /// The values are not transformed in any way and thus are considered stable
4495        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4496        pub fn as_str_name(&self) -> &'static str {
4497            match self {
4498                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
4499                CaptureResultStatus::StatusOk => "STATUS_OK",
4500                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
4501                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
4502                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
4503                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
4504            }
4505        }
4506    }
4507}
4508/// A profiling event that may be emitted periodically (i.e., at a slower rate
4509/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
4510/// session-specific values.
4511#[derive(Clone, PartialEq, ::prost::Message)]
4512pub struct AndroidCameraSessionStats {
4513    /// Identifier for the CameraCaptureSession this frame originates from. See:
4514    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4515    #[prost(uint64, optional, tag="1")]
4516    pub session_id: ::core::option::Option<u64>,
4517    #[prost(message, optional, tag="2")]
4518    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
4519}
4520/// Nested message and enum types in `AndroidCameraSessionStats`.
4521pub mod android_camera_session_stats {
4522    /// Although vendor implementations may vary, camera pipeline processing is
4523    /// typically arranged into a directed graph-like structure. This message is
4524    /// used to record that graph.
4525    #[derive(Clone, PartialEq, ::prost::Message)]
4526    pub struct CameraGraph {
4527        #[prost(message, repeated, tag="1")]
4528        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
4529        #[prost(message, repeated, tag="2")]
4530        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
4531    }
4532    /// Nested message and enum types in `CameraGraph`.
4533    pub mod camera_graph {
4534        #[derive(Clone, PartialEq, ::prost::Message)]
4535        pub struct CameraNode {
4536            #[prost(int64, optional, tag="1")]
4537            pub node_id: ::core::option::Option<i64>,
4538            /// A list of inputs consumed by this node.
4539            #[prost(int64, repeated, packed="false", tag="2")]
4540            pub input_ids: ::prost::alloc::vec::Vec<i64>,
4541            /// A list of outputs produced by this node.
4542            #[prost(int64, repeated, packed="false", tag="3")]
4543            pub output_ids: ::prost::alloc::vec::Vec<i64>,
4544            /// These fields capture vendor-specific additions to this proto message. In
4545            /// practice `vendor_data` typically contains a serialized message of the
4546            /// vendor's design, and `vendor_data_version` is incremented each time there
4547            /// is a backwards incompatible change made to the message.
4548            #[prost(int32, optional, tag="4")]
4549            pub vendor_data_version: ::core::option::Option<i32>,
4550            #[prost(bytes="vec", optional, tag="5")]
4551            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4552        }
4553        /// An adjacency list describing connections between CameraNodes, mapping
4554        /// nodes and their outputs to other nodes that consume them as inputs.
4555        #[derive(Clone, PartialEq, ::prost::Message)]
4556        pub struct CameraEdge {
4557            /// The pair of IDs identifying the node and output connected by this edge.
4558            #[prost(int64, optional, tag="1")]
4559            pub output_node_id: ::core::option::Option<i64>,
4560            #[prost(int64, optional, tag="2")]
4561            pub output_id: ::core::option::Option<i64>,
4562            /// The pair of IDs identifying the node and input connected by this edge.
4563            #[prost(int64, optional, tag="3")]
4564            pub input_node_id: ::core::option::Option<i64>,
4565            #[prost(int64, optional, tag="4")]
4566            pub input_id: ::core::option::Option<i64>,
4567            /// These fields capture vendor-specific additions to this proto message. In
4568            /// practice `vendor_data` typically contains a serialized message of the
4569            /// vendor's design, and `vendor_data_version` is incremented each time there
4570            /// is a backwards incompatible change made to the message.
4571            #[prost(int32, optional, tag="5")]
4572            pub vendor_data_version: ::core::option::Option<i32>,
4573            #[prost(bytes="vec", optional, tag="6")]
4574            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4575        }
4576    }
4577}
4578// End of protos/perfetto/trace/android/camera_event.proto
4579
4580// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
4581
4582/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
4583/// Used in comparing the expected timeline of a frame to the actual timeline.
4584/// Key terms:
4585///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
4586///     2) SurfaceFrame - represents App's work on its frame
4587///     3) Timeline = start to end of a component's(app/SF) work on a frame.
4588/// SurfaceFlinger composites frames from many apps together, so
4589///     One DisplayFrame can map to N SurfaceFrame(s)
4590/// This relationship can be reconstructed by using
4591///     DisplayFrame.token = SurfaceFrame.display_frame_token
4592#[derive(Clone, PartialEq, ::prost::Message)]
4593pub struct FrameTimelineEvent {
4594    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
4595    pub event: ::core::option::Option<frame_timeline_event::Event>,
4596}
4597/// Nested message and enum types in `FrameTimelineEvent`.
4598pub mod frame_timeline_event {
4599    /// Indicates the start of expected timeline slice for SurfaceFrames.
4600    #[derive(Clone, PartialEq, ::prost::Message)]
4601    pub struct ExpectedSurfaceFrameStart {
4602        /// Cookie used to correlate between the start and end messages of the same
4603        /// frame. Since all values except the ts are same for start and end, cookie
4604        /// helps in preventing redundant data transmission.
4605        /// The same cookie is used only by start and end messages of a single frame
4606        /// and is otherwise unique.
4607        #[prost(int64, optional, tag="1")]
4608        pub cookie: ::core::option::Option<i64>,
4609        /// Token received by the app for its work. Can be shared between multiple
4610        /// layers of the same app (example: pip mode).
4611        #[prost(int64, optional, tag="2")]
4612        pub token: ::core::option::Option<i64>,
4613        /// The corresponding DisplayFrame token is required to link the App's work
4614        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4615        /// DisplayFrame.
4616        /// this.display_frame_token = DisplayFrame.token
4617        #[prost(int64, optional, tag="3")]
4618        pub display_frame_token: ::core::option::Option<i64>,
4619        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4620        /// the respective process track group.
4621        #[prost(int32, optional, tag="4")]
4622        pub pid: ::core::option::Option<i32>,
4623        #[prost(string, optional, tag="5")]
4624        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4625    }
4626    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
4627    /// includes the jank information.
4628    #[derive(Clone, PartialEq, ::prost::Message)]
4629    pub struct ActualSurfaceFrameStart {
4630        /// Cookie used to correlate between the start and end messages of the same
4631        /// frame. Since all values except the ts are same for start and end, cookie
4632        /// helps in preventing redundant data transmission.
4633        /// The same cookie is used only by start and end messages of a single frame
4634        /// and is otherwise unique.
4635        #[prost(int64, optional, tag="1")]
4636        pub cookie: ::core::option::Option<i64>,
4637        /// Token received by the app for its work. Can be shared between multiple
4638        /// layers of the same app (example: pip mode).
4639        #[prost(int64, optional, tag="2")]
4640        pub token: ::core::option::Option<i64>,
4641        /// The corresponding DisplayFrame token is required to link the App's work
4642        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4643        /// DisplayFrame.
4644        /// this.display_frame_token = DisplayFrame.token
4645        #[prost(int64, optional, tag="3")]
4646        pub display_frame_token: ::core::option::Option<i64>,
4647        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4648        /// the respective process track group.
4649        #[prost(int32, optional, tag="4")]
4650        pub pid: ::core::option::Option<i32>,
4651        #[prost(string, optional, tag="5")]
4652        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4653        #[prost(enumeration="PresentType", optional, tag="6")]
4654        pub present_type: ::core::option::Option<i32>,
4655        #[prost(bool, optional, tag="7")]
4656        pub on_time_finish: ::core::option::Option<bool>,
4657        #[prost(bool, optional, tag="8")]
4658        pub gpu_composition: ::core::option::Option<bool>,
4659        /// A bitmask of JankType. More than one reason can be attributed to a janky
4660        /// frame.
4661        #[prost(int32, optional, tag="9")]
4662        pub jank_type: ::core::option::Option<i32>,
4663        #[prost(enumeration="PredictionType", optional, tag="10")]
4664        pub prediction_type: ::core::option::Option<i32>,
4665        #[prost(bool, optional, tag="11")]
4666        pub is_buffer: ::core::option::Option<bool>,
4667        #[prost(enumeration="JankSeverityType", optional, tag="12")]
4668        pub jank_severity_type: ::core::option::Option<i32>,
4669    }
4670    /// Indicates the start of expected timeline slice for DisplayFrames.
4671    #[derive(Clone, PartialEq, ::prost::Message)]
4672    pub struct ExpectedDisplayFrameStart {
4673        /// Cookie used to correlate between the start and end messages of the same
4674        /// frame. Since all values except the ts are same for start and end, cookie
4675        /// helps in preventing redundant data transmission.
4676        /// The same cookie is used only by start and end messages of a single frame
4677        /// and is otherwise unique.
4678        #[prost(int64, optional, tag="1")]
4679        pub cookie: ::core::option::Option<i64>,
4680        /// Token received by SurfaceFlinger for its work
4681        /// this.token = SurfaceFrame.display_frame_token
4682        #[prost(int64, optional, tag="2")]
4683        pub token: ::core::option::Option<i64>,
4684        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
4685        /// inside the SurfaceFlinger process group.
4686        #[prost(int32, optional, tag="3")]
4687        pub pid: ::core::option::Option<i32>,
4688    }
4689    /// Indicates the start of actual timeline slice for DisplayFrames. Also
4690    /// includes the jank information.
4691    #[derive(Clone, PartialEq, ::prost::Message)]
4692    pub struct ActualDisplayFrameStart {
4693        /// Cookie used to correlate between the start and end messages of the same
4694        /// frame. Since all values except the ts are same for start and end, cookie
4695        /// helps in preventing redundant data transmission.
4696        /// The same cookie is used only by start and end messages of a single frame
4697        /// and is otherwise unique.
4698        #[prost(int64, optional, tag="1")]
4699        pub cookie: ::core::option::Option<i64>,
4700        /// Token received by SurfaceFlinger for its work
4701        /// this.token = SurfaceFrame.display_frame_token
4702        #[prost(int64, optional, tag="2")]
4703        pub token: ::core::option::Option<i64>,
4704        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
4705        /// inside the SurfaceFlinger process group.
4706        #[prost(int32, optional, tag="3")]
4707        pub pid: ::core::option::Option<i32>,
4708        #[prost(enumeration="PresentType", optional, tag="4")]
4709        pub present_type: ::core::option::Option<i32>,
4710        #[prost(bool, optional, tag="5")]
4711        pub on_time_finish: ::core::option::Option<bool>,
4712        #[prost(bool, optional, tag="6")]
4713        pub gpu_composition: ::core::option::Option<bool>,
4714        /// A bitmask of JankType. More than one reason can be attributed to a janky
4715        /// frame.
4716        #[prost(int32, optional, tag="7")]
4717        pub jank_type: ::core::option::Option<i32>,
4718        #[prost(enumeration="PredictionType", optional, tag="8")]
4719        pub prediction_type: ::core::option::Option<i32>,
4720        #[prost(enumeration="JankSeverityType", optional, tag="9")]
4721        pub jank_severity_type: ::core::option::Option<i32>,
4722    }
4723    /// FrameEnd just sends the cookie to indicate that the corresponding
4724    /// <display/surface>frame slice's end.
4725    #[derive(Clone, PartialEq, ::prost::Message)]
4726    pub struct FrameEnd {
4727        #[prost(int64, optional, tag="1")]
4728        pub cookie: ::core::option::Option<i64>,
4729    }
4730    /// Specifies the reason(s) most likely to have caused the jank.
4731    /// Used as a bitmask.
4732    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4733    #[repr(i32)]
4734    pub enum JankType {
4735        JankUnspecified = 0,
4736        JankNone = 1,
4737        JankSfScheduling = 2,
4738        JankPredictionError = 4,
4739        JankDisplayHal = 8,
4740        JankSfCpuDeadlineMissed = 16,
4741        JankSfGpuDeadlineMissed = 32,
4742        JankAppDeadlineMissed = 64,
4743        JankBufferStuffing = 128,
4744        JankUnknown = 256,
4745        JankSfStuffing = 512,
4746        JankDropped = 1024,
4747    }
4748    impl JankType {
4749        /// String value of the enum field names used in the ProtoBuf definition.
4750        ///
4751        /// The values are not transformed in any way and thus are considered stable
4752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4753        pub fn as_str_name(&self) -> &'static str {
4754            match self {
4755                JankType::JankUnspecified => "JANK_UNSPECIFIED",
4756                JankType::JankNone => "JANK_NONE",
4757                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
4758                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
4759                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
4760                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
4761                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
4762                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
4763                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
4764                JankType::JankUnknown => "JANK_UNKNOWN",
4765                JankType::JankSfStuffing => "JANK_SF_STUFFING",
4766                JankType::JankDropped => "JANK_DROPPED",
4767            }
4768        }
4769    }
4770    /// Specifies the severity of a jank.
4771    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4772    #[repr(i32)]
4773    pub enum JankSeverityType {
4774        SeverityUnknown = 0,
4775        SeverityNone = 1,
4776        SeverityPartial = 2,
4777        SeverityFull = 3,
4778    }
4779    impl JankSeverityType {
4780        /// String value of the enum field names used in the ProtoBuf definition.
4781        ///
4782        /// The values are not transformed in any way and thus are considered stable
4783        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4784        pub fn as_str_name(&self) -> &'static str {
4785            match self {
4786                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
4787                JankSeverityType::SeverityNone => "SEVERITY_NONE",
4788                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
4789                JankSeverityType::SeverityFull => "SEVERITY_FULL",
4790            }
4791        }
4792    }
4793    /// Specifies how a frame was presented on screen w.r.t. timing.
4794    /// Can be different for SurfaceFrame and DisplayFrame.
4795    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4796    #[repr(i32)]
4797    pub enum PresentType {
4798        PresentUnspecified = 0,
4799        PresentOnTime = 1,
4800        PresentLate = 2,
4801        PresentEarly = 3,
4802        PresentDropped = 4,
4803        PresentUnknown = 5,
4804    }
4805    impl PresentType {
4806        /// String value of the enum field names used in the ProtoBuf definition.
4807        ///
4808        /// The values are not transformed in any way and thus are considered stable
4809        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4810        pub fn as_str_name(&self) -> &'static str {
4811            match self {
4812                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
4813                PresentType::PresentOnTime => "PRESENT_ON_TIME",
4814                PresentType::PresentLate => "PRESENT_LATE",
4815                PresentType::PresentEarly => "PRESENT_EARLY",
4816                PresentType::PresentDropped => "PRESENT_DROPPED",
4817                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
4818            }
4819        }
4820    }
4821    /// Specifies if the predictions for the frame are still valid, expired or
4822    /// unknown.
4823    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4824    #[repr(i32)]
4825    pub enum PredictionType {
4826        PredictionUnspecified = 0,
4827        PredictionValid = 1,
4828        PredictionExpired = 2,
4829        PredictionUnknown = 3,
4830    }
4831    impl PredictionType {
4832        /// String value of the enum field names used in the ProtoBuf definition.
4833        ///
4834        /// The values are not transformed in any way and thus are considered stable
4835        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4836        pub fn as_str_name(&self) -> &'static str {
4837            match self {
4838                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
4839                PredictionType::PredictionValid => "PREDICTION_VALID",
4840                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
4841                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
4842            }
4843        }
4844    }
4845    #[derive(Clone, PartialEq, ::prost::Oneof)]
4846    pub enum Event {
4847        #[prost(message, tag="1")]
4848        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
4849        #[prost(message, tag="2")]
4850        ActualDisplayFrameStart(ActualDisplayFrameStart),
4851        #[prost(message, tag="3")]
4852        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
4853        #[prost(message, tag="4")]
4854        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
4855        #[prost(message, tag="5")]
4856        FrameEnd(FrameEnd),
4857    }
4858}
4859// End of protos/perfetto/trace/android/frame_timeline_event.proto
4860
4861// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
4862
4863/// Generated by Android's GpuService.
4864#[derive(Clone, PartialEq, ::prost::Message)]
4865pub struct GpuMemTotalEvent {
4866    #[prost(uint32, optional, tag="1")]
4867    pub gpu_id: ::core::option::Option<u32>,
4868    #[prost(uint32, optional, tag="2")]
4869    pub pid: ::core::option::Option<u32>,
4870    #[prost(uint64, optional, tag="3")]
4871    pub size: ::core::option::Option<u64>,
4872}
4873// End of protos/perfetto/trace/android/gpu_mem_event.proto
4874
4875// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
4876
4877/// Generated by Android's SurfaceFlinger.
4878#[derive(Clone, PartialEq, ::prost::Message)]
4879pub struct GraphicsFrameEvent {
4880    #[prost(message, optional, tag="1")]
4881    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
4882}
4883/// Nested message and enum types in `GraphicsFrameEvent`.
4884pub mod graphics_frame_event {
4885    #[derive(Clone, PartialEq, ::prost::Message)]
4886    pub struct BufferEvent {
4887        #[prost(uint32, optional, tag="1")]
4888        pub frame_number: ::core::option::Option<u32>,
4889        #[prost(enumeration="BufferEventType", optional, tag="2")]
4890        pub r#type: ::core::option::Option<i32>,
4891        #[prost(string, optional, tag="3")]
4892        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4893        /// If no duration is set, the event is an instant event.
4894        #[prost(uint64, optional, tag="4")]
4895        pub duration_ns: ::core::option::Option<u64>,
4896        /// Unique buffer identifier.
4897        #[prost(uint32, optional, tag="5")]
4898        pub buffer_id: ::core::option::Option<u32>,
4899    }
4900    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4901    #[repr(i32)]
4902    pub enum BufferEventType {
4903        Unspecified = 0,
4904        Dequeue = 1,
4905        Queue = 2,
4906        Post = 3,
4907        AcquireFence = 4,
4908        Latch = 5,
4909        /// HWC will compose this buffer
4910        HwcCompositionQueued = 6,
4911        /// renderEngine composition
4912        FallbackComposition = 7,
4913        PresentFence = 8,
4914        ReleaseFence = 9,
4915        Modify = 10,
4916        Detach = 11,
4917        Attach = 12,
4918        Cancel = 13,
4919    }
4920    impl BufferEventType {
4921        /// String value of the enum field names used in the ProtoBuf definition.
4922        ///
4923        /// The values are not transformed in any way and thus are considered stable
4924        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4925        pub fn as_str_name(&self) -> &'static str {
4926            match self {
4927                BufferEventType::Unspecified => "UNSPECIFIED",
4928                BufferEventType::Dequeue => "DEQUEUE",
4929                BufferEventType::Queue => "QUEUE",
4930                BufferEventType::Post => "POST",
4931                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
4932                BufferEventType::Latch => "LATCH",
4933                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
4934                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
4935                BufferEventType::PresentFence => "PRESENT_FENCE",
4936                BufferEventType::ReleaseFence => "RELEASE_FENCE",
4937                BufferEventType::Modify => "MODIFY",
4938                BufferEventType::Detach => "DETACH",
4939                BufferEventType::Attach => "ATTACH",
4940                BufferEventType::Cancel => "CANCEL",
4941            }
4942        }
4943    }
4944}
4945// End of protos/perfetto/trace/android/graphics_frame_event.proto
4946
4947// Begin of protos/perfetto/trace/android/initial_display_state.proto
4948
4949#[derive(Clone, PartialEq, ::prost::Message)]
4950pub struct InitialDisplayState {
4951    /// Same values as android.view.Display.STATE_*
4952    #[prost(int32, optional, tag="1")]
4953    pub display_state: ::core::option::Option<i32>,
4954    #[prost(double, optional, tag="2")]
4955    pub brightness: ::core::option::Option<f64>,
4956}
4957// End of protos/perfetto/trace/android/initial_display_state.proto
4958
4959// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
4960
4961#[derive(Clone, PartialEq, ::prost::Message)]
4962pub struct KernelWakelockData {
4963    /// This is only emitted when we encounter new wakelocks.
4964    #[prost(message, repeated, tag="1")]
4965    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
4966    /// Interning id.
4967    #[prost(uint32, repeated, tag="2")]
4968    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
4969    /// If we interned the wakelock name in this packet, this is the total time
4970    /// the wakelock has been held.
4971    /// If not, it's a delta from the last time we saw it.
4972    #[prost(uint64, repeated, tag="3")]
4973    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
4974}
4975/// Nested message and enum types in `KernelWakelockData`.
4976pub mod kernel_wakelock_data {
4977    #[derive(Clone, PartialEq, ::prost::Message)]
4978    pub struct Wakelock {
4979        /// Interning id.
4980        #[prost(uint32, optional, tag="1")]
4981        pub wakelock_id: ::core::option::Option<u32>,
4982        /// Name of the wakelock.
4983        #[prost(string, optional, tag="2")]
4984        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
4985        /// Type of the wakelock. We record data about both true kernel wakelocks
4986        /// and "native" wakelocks which are taken in userspace but are more
4987        /// conceptually similar to kernel wakelocks than normal userspace ones.
4988        #[prost(enumeration="wakelock::Type", optional, tag="3")]
4989        pub wakelock_type: ::core::option::Option<i32>,
4990    }
4991    /// Nested message and enum types in `Wakelock`.
4992    pub mod wakelock {
4993        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4994        #[repr(i32)]
4995        pub enum Type {
4996            WakelockTypeUnknown = 0,
4997            WakelockTypeKernel = 1,
4998            WakelockTypeNative = 2,
4999        }
5000        impl Type {
5001            /// String value of the enum field names used in the ProtoBuf definition.
5002            ///
5003            /// The values are not transformed in any way and thus are considered stable
5004            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5005            pub fn as_str_name(&self) -> &'static str {
5006                match self {
5007                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5008                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5009                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5010                }
5011            }
5012        }
5013    }
5014}
5015/// NetworkPacketEvent records the details of a single packet sent or received
5016/// on the network (in Linux kernel terminology, one sk_buff struct).
5017#[derive(Clone, PartialEq, ::prost::Message)]
5018pub struct NetworkPacketEvent {
5019    /// The direction traffic is flowing for this event.
5020    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5021    pub direction: ::core::option::Option<i32>,
5022    /// The name of the interface if available (e.g. 'rmnet0').
5023    #[prost(string, optional, tag="2")]
5024    pub interface: ::core::option::Option<::prost::alloc::string::String>,
5025    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5026    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5027    /// NetworkPacketContext.
5028    #[prost(uint32, optional, tag="3")]
5029    pub length: ::core::option::Option<u32>,
5030    /// The Linux user id associated with the packet's socket.
5031    #[prost(uint32, optional, tag="4")]
5032    pub uid: ::core::option::Option<u32>,
5033    /// The Android network tag associated with the packet's socket.
5034    #[prost(uint32, optional, tag="5")]
5035    pub tag: ::core::option::Option<u32>,
5036    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5037    #[prost(uint32, optional, tag="6")]
5038    pub ip_proto: ::core::option::Option<u32>,
5039    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5040    #[prost(uint32, optional, tag="7")]
5041    pub tcp_flags: ::core::option::Option<u32>,
5042    /// The local udp/tcp port of the packet.
5043    #[prost(uint32, optional, tag="8")]
5044    pub local_port: ::core::option::Option<u32>,
5045    /// The remote udp/tcp port of the packet.
5046    #[prost(uint32, optional, tag="9")]
5047    pub remote_port: ::core::option::Option<u32>,
5048    /// The 1-byte ICMP type identifier.
5049    #[prost(uint32, optional, tag="10")]
5050    pub icmp_type: ::core::option::Option<u32>,
5051    /// The 1-byte ICMP code identifier.
5052    #[prost(uint32, optional, tag="11")]
5053    pub icmp_code: ::core::option::Option<u32>,
5054}
5055/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5056#[derive(Clone, PartialEq, ::prost::Message)]
5057pub struct NetworkPacketBundle {
5058    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5059    /// enclosing TracePacket's timestamp.
5060    #[prost(uint64, repeated, tag="3")]
5061    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5062    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5063    #[prost(uint32, repeated, tag="4")]
5064    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5065    /// Total number of packets in the bundle (when above aggregation_threshold).
5066    #[prost(uint32, optional, tag="5")]
5067    pub total_packets: ::core::option::Option<u32>,
5068    /// Duration between first and last packet (when above aggregation_threshold).
5069    #[prost(uint64, optional, tag="6")]
5070    pub total_duration: ::core::option::Option<u64>,
5071    /// Total packet length in bytes (when above aggregation_threshold).
5072    #[prost(uint64, optional, tag="7")]
5073    pub total_length: ::core::option::Option<u64>,
5074    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5075    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5076}
5077/// Nested message and enum types in `NetworkPacketBundle`.
5078pub mod network_packet_bundle {
5079    #[derive(Clone, PartialEq, ::prost::Oneof)]
5080    pub enum PacketContext {
5081        /// The intern id for looking up the associated packet context.
5082        #[prost(uint64, tag="1")]
5083        Iid(u64),
5084        /// The inlined context for events in this bundle.
5085        #[prost(message, tag="2")]
5086        Ctx(super::NetworkPacketEvent),
5087    }
5088}
5089/// An internable packet context.
5090#[derive(Clone, PartialEq, ::prost::Message)]
5091pub struct NetworkPacketContext {
5092    #[prost(uint64, optional, tag="1")]
5093    pub iid: ::core::option::Option<u64>,
5094    #[prost(message, optional, tag="2")]
5095    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5096}
5097// End of protos/perfetto/trace/android/network_trace.proto
5098
5099// Begin of protos/perfetto/trace/android/packages_list.proto
5100
5101#[derive(Clone, PartialEq, ::prost::Message)]
5102pub struct PackagesList {
5103    #[prost(message, repeated, tag="1")]
5104    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5105    /// At least one error occurred parsing the packages.list.
5106    #[prost(bool, optional, tag="2")]
5107    pub parse_error: ::core::option::Option<bool>,
5108    /// Failed to open / read packages.list.
5109    #[prost(bool, optional, tag="3")]
5110    pub read_error: ::core::option::Option<bool>,
5111}
5112/// Nested message and enum types in `PackagesList`.
5113pub mod packages_list {
5114    #[derive(Clone, PartialEq, ::prost::Message)]
5115    pub struct PackageInfo {
5116        #[prost(string, optional, tag="1")]
5117        pub name: ::core::option::Option<::prost::alloc::string::String>,
5118        #[prost(uint64, optional, tag="2")]
5119        pub uid: ::core::option::Option<u64>,
5120        #[prost(bool, optional, tag="3")]
5121        pub debuggable: ::core::option::Option<bool>,
5122        #[prost(bool, optional, tag="4")]
5123        pub profileable_from_shell: ::core::option::Option<bool>,
5124        #[prost(int64, optional, tag="5")]
5125        pub version_code: ::core::option::Option<i64>,
5126    }
5127}
5128// End of protos/perfetto/trace/android/packages_list.proto
5129
5130// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5131
5132#[derive(Clone, PartialEq, ::prost::Message)]
5133pub struct PixelModemEvents {
5134    /// Pigweed-format dehydrated events.
5135    #[prost(bytes="vec", repeated, tag="1")]
5136    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5137    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5138    /// timestamp is the absolute timestamp of the first event. Subsequent
5139    /// timestamps are deltas from the previous timestamp.
5140    /// The nth entry from `events` gets the nth entry here.
5141    #[prost(uint64, repeated, packed="false", tag="2")]
5142    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5143}
5144/// NB: this is not emitted in the trace but can be prepended later.
5145#[derive(Clone, PartialEq, ::prost::Message)]
5146pub struct PixelModemTokenDatabase {
5147    /// Pigweed-format database to allow event rehydration.
5148    #[prost(bytes="vec", optional, tag="1")]
5149    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5150}
5151// End of protos/perfetto/trace/android/pixel_modem_events.proto
5152
5153// Begin of protos/perfetto/trace/android/protolog.proto
5154
5155/// represents a single log entry 
5156#[derive(Clone, PartialEq, ::prost::Message)]
5157pub struct ProtoLogMessage {
5158    /// log statement identifier, created from message string and log level. 
5159    #[prost(fixed64, optional, tag="1")]
5160    pub message_id: ::core::option::Option<u64>,
5161    /// string parameters passed to the log call that have been interned. 
5162    #[prost(uint32, repeated, packed="false", tag="2")]
5163    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5164    /// integer parameters passed to the log call. 
5165    #[prost(sint64, repeated, packed="false", tag="3")]
5166    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5167    /// floating point parameters passed to the log call. 
5168    #[prost(double, repeated, packed="false", tag="4")]
5169    pub double_params: ::prost::alloc::vec::Vec<f64>,
5170    /// boolean parameters passed to the log call. 
5171    #[prost(int32, repeated, packed="false", tag="5")]
5172    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5173    /// id of the interned stacktrace string
5174    /// (only dumped if explicitly confuigured to do so)
5175    #[prost(uint32, optional, tag="6")]
5176    pub stacktrace_iid: ::core::option::Option<u32>,
5177}
5178/// contains all the data required to fully decode the protolog messages 
5179#[derive(Clone, PartialEq, ::prost::Message)]
5180pub struct ProtoLogViewerConfig {
5181    #[prost(message, repeated, tag="1")]
5182    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
5183    #[prost(message, repeated, tag="2")]
5184    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
5185}
5186/// Nested message and enum types in `ProtoLogViewerConfig`.
5187pub mod proto_log_viewer_config {
5188    #[derive(Clone, PartialEq, ::prost::Message)]
5189    pub struct MessageData {
5190        /// the id of the message that is logged in a ProtoLogMessage
5191        #[prost(fixed64, optional, tag="1")]
5192        pub message_id: ::core::option::Option<u64>,
5193        /// the string representation of the message
5194        #[prost(string, optional, tag="2")]
5195        pub message: ::core::option::Option<::prost::alloc::string::String>,
5196        /// the level of the message
5197        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
5198        pub level: ::core::option::Option<i32>,
5199        /// the id of the log group this message belongs to
5200        #[prost(uint32, optional, tag="4")]
5201        pub group_id: ::core::option::Option<u32>,
5202        /// path to the file where the message was logged
5203        #[prost(string, optional, tag="5")]
5204        pub location: ::core::option::Option<::prost::alloc::string::String>,
5205    }
5206    /// information about a ProtoLog log group 
5207    #[derive(Clone, PartialEq, ::prost::Message)]
5208    pub struct Group {
5209        #[prost(uint32, optional, tag="1")]
5210        pub id: ::core::option::Option<u32>,
5211        #[prost(string, optional, tag="2")]
5212        pub name: ::core::option::Option<::prost::alloc::string::String>,
5213        #[prost(string, optional, tag="3")]
5214        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5215    }
5216}
5217// End of protos/perfetto/trace/android/protolog.proto
5218
5219// Begin of protos/perfetto/trace/android/shell_transition.proto
5220
5221/// ShellTransition messages record information about the shell transitions in
5222/// the system. This is used to track the animations that are created and execute
5223/// through the shell transition system.
5224#[derive(Clone, PartialEq, ::prost::Message)]
5225pub struct ShellTransition {
5226    /// The unique identifier of the transition.
5227    #[prost(int32, optional, tag="1")]
5228    pub id: ::core::option::Option<i32>,
5229    /// The time the transition was created on the WM side
5230    /// (using SystemClock.elapsedRealtimeNanos())
5231    #[prost(int64, optional, tag="2")]
5232    pub create_time_ns: ::core::option::Option<i64>,
5233    /// The time the transition was sent from the WM side to shell
5234    /// (using SystemClock.elapsedRealtimeNanos())
5235    #[prost(int64, optional, tag="3")]
5236    pub send_time_ns: ::core::option::Option<i64>,
5237    /// The time the transition was dispatched by shell to execute
5238    /// (using SystemClock.elapsedRealtimeNanos())
5239    #[prost(int64, optional, tag="4")]
5240    pub dispatch_time_ns: ::core::option::Option<i64>,
5241    /// If the transition merge was accepted by the transition handler, this
5242    /// contains the time the transition was merged into transition with id
5243    /// `merge_target`.
5244    /// (using SystemClock.elapsedRealtimeNanos())
5245    #[prost(int64, optional, tag="5")]
5246    pub merge_time_ns: ::core::option::Option<i64>,
5247    /// The time shell proposed the transition should be merged to the transition
5248    /// handler into transition with id `merge_target`.
5249    /// (using SystemClock.elapsedRealtimeNanos()).
5250    #[prost(int64, optional, tag="6")]
5251    pub merge_request_time_ns: ::core::option::Option<i64>,
5252    /// If the transition was aborted on the shell side, this is the time that
5253    /// occurred.
5254    /// (using SystemClock.elapsedRealtimeNanos())
5255    #[prost(int64, optional, tag="7")]
5256    pub shell_abort_time_ns: ::core::option::Option<i64>,
5257    /// If the transition was aborted on the wm side, this is the time that
5258    /// occurred.
5259    /// (using SystemClock.elapsedRealtimeNanos())
5260    #[prost(int64, optional, tag="8")]
5261    pub wm_abort_time_ns: ::core::option::Option<i64>,
5262    /// The time WM considers the transition to be complete.
5263    /// (using SystemClock.elapsedRealtimeNanos())
5264    #[prost(int64, optional, tag="9")]
5265    pub finish_time_ns: ::core::option::Option<i64>,
5266    /// The id of the transaction that WM proposed to use as the starting
5267    /// transaction. It contains all the layer changes required to setup the
5268    /// transition and should be executed right at the start of the transition
5269    /// by the transition handler.
5270    #[prost(uint64, optional, tag="10")]
5271    pub start_transaction_id: ::core::option::Option<u64>,
5272    /// The if of the transaction that WM proposed to use as the finish
5273    /// transaction. It contains all the layer changes required to set the final
5274    /// state of the transition.
5275    #[prost(uint64, optional, tag="11")]
5276    pub finish_transaction_id: ::core::option::Option<u64>,
5277    /// The id of the handler that executed the transition. A HandlerMappings
5278    /// message in the trace will contain the mapping of id to a string
5279    /// representation of the handler.
5280    #[prost(int32, optional, tag="12")]
5281    pub handler: ::core::option::Option<i32>,
5282    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
5283    #[prost(int32, optional, tag="13")]
5284    pub r#type: ::core::option::Option<i32>,
5285    /// The list of targets that are part of this transition.
5286    #[prost(message, repeated, tag="14")]
5287    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
5288    /// The id of the transition we have requested to merge or have merged this
5289    /// transition into.
5290    #[prost(int32, optional, tag="15")]
5291    pub merge_target: ::core::option::Option<i32>,
5292    /// The flags set on this transition.
5293    #[prost(int32, optional, tag="16")]
5294    pub flags: ::core::option::Option<i32>,
5295    /// The time the starting window was removed. Tracked because this can
5296    /// happen after the transition finishes, but the app may not yet be visible
5297    /// until the starting window is removed. So in a sense the transition is not
5298    /// finished until the starting window is removed. (b/284302118)
5299    /// (using SystemClock.elapsedRealtimeNanos())
5300    #[prost(int64, optional, tag="17")]
5301    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
5302}
5303/// Nested message and enum types in `ShellTransition`.
5304pub mod shell_transition {
5305    /// Contains the information about the windows targeted in a transition.
5306    #[derive(Clone, PartialEq, ::prost::Message)]
5307    pub struct Target {
5308        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
5309        #[prost(int32, optional, tag="1")]
5310        pub mode: ::core::option::Option<i32>,
5311        /// The layer id of this target.
5312        #[prost(int32, optional, tag="2")]
5313        pub layer_id: ::core::option::Option<i32>,
5314        /// The window id of this target.
5315        #[prost(int32, optional, tag="3")]
5316        pub window_id: ::core::option::Option<i32>,
5317        /// The flags set on this target.
5318        #[prost(int32, optional, tag="4")]
5319        pub flags: ::core::option::Option<i32>,
5320    }
5321}
5322/// Contains mappings from handler ids to string representation of the handlers.
5323#[derive(Clone, PartialEq, ::prost::Message)]
5324pub struct ShellHandlerMappings {
5325    #[prost(message, repeated, tag="1")]
5326    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
5327}
5328#[derive(Clone, PartialEq, ::prost::Message)]
5329pub struct ShellHandlerMapping {
5330    /// The id of the handler used in the ShellTransition message.
5331    #[prost(int32, optional, tag="1")]
5332    pub id: ::core::option::Option<i32>,
5333    /// A human readable and meaningful string representation of the handler.
5334    #[prost(string, optional, tag="2")]
5335    pub name: ::core::option::Option<::prost::alloc::string::String>,
5336}
5337// End of protos/perfetto/trace/android/shell_transition.proto
5338
5339// Begin of protos/perfetto/trace/android/graphics/rect.proto
5340
5341#[derive(Clone, PartialEq, ::prost::Message)]
5342pub struct RectProto {
5343    #[prost(int32, optional, tag="1")]
5344    pub left: ::core::option::Option<i32>,
5345    #[prost(int32, optional, tag="2")]
5346    pub top: ::core::option::Option<i32>,
5347    #[prost(int32, optional, tag="3")]
5348    pub right: ::core::option::Option<i32>,
5349    #[prost(int32, optional, tag="4")]
5350    pub bottom: ::core::option::Option<i32>,
5351}
5352// End of protos/perfetto/trace/android/graphics/rect.proto
5353
5354// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
5355
5356#[derive(Clone, PartialEq, ::prost::Message)]
5357pub struct RegionProto {
5358    #[prost(message, repeated, tag="2")]
5359    pub rect: ::prost::alloc::vec::Vec<RectProto>,
5360}
5361#[derive(Clone, PartialEq, ::prost::Message)]
5362pub struct SizeProto {
5363    #[prost(int32, optional, tag="1")]
5364    pub w: ::core::option::Option<i32>,
5365    #[prost(int32, optional, tag="2")]
5366    pub h: ::core::option::Option<i32>,
5367}
5368#[derive(Clone, PartialEq, ::prost::Message)]
5369pub struct TransformProto {
5370    #[prost(float, optional, tag="1")]
5371    pub dsdx: ::core::option::Option<f32>,
5372    #[prost(float, optional, tag="2")]
5373    pub dtdx: ::core::option::Option<f32>,
5374    #[prost(float, optional, tag="3")]
5375    pub dsdy: ::core::option::Option<f32>,
5376    #[prost(float, optional, tag="4")]
5377    pub dtdy: ::core::option::Option<f32>,
5378    #[prost(int32, optional, tag="5")]
5379    pub r#type: ::core::option::Option<i32>,
5380}
5381#[derive(Clone, PartialEq, ::prost::Message)]
5382pub struct ColorProto {
5383    #[prost(float, optional, tag="1")]
5384    pub r: ::core::option::Option<f32>,
5385    #[prost(float, optional, tag="2")]
5386    pub g: ::core::option::Option<f32>,
5387    #[prost(float, optional, tag="3")]
5388    pub b: ::core::option::Option<f32>,
5389    #[prost(float, optional, tag="4")]
5390    pub a: ::core::option::Option<f32>,
5391}
5392#[derive(Clone, PartialEq, ::prost::Message)]
5393pub struct InputWindowInfoProto {
5394    #[prost(uint32, optional, tag="1")]
5395    pub layout_params_flags: ::core::option::Option<u32>,
5396    #[prost(int32, optional, tag="2")]
5397    pub layout_params_type: ::core::option::Option<i32>,
5398    #[prost(message, optional, tag="3")]
5399    pub frame: ::core::option::Option<RectProto>,
5400    #[prost(message, optional, tag="4")]
5401    pub touchable_region: ::core::option::Option<RegionProto>,
5402    #[prost(int32, optional, tag="5")]
5403    pub surface_inset: ::core::option::Option<i32>,
5404    #[prost(bool, optional, tag="6")]
5405    pub visible: ::core::option::Option<bool>,
5406    #[deprecated]
5407    #[prost(bool, optional, tag="7")]
5408    pub can_receive_keys: ::core::option::Option<bool>,
5409    #[prost(bool, optional, tag="8")]
5410    pub focusable: ::core::option::Option<bool>,
5411    #[prost(bool, optional, tag="9")]
5412    pub has_wallpaper: ::core::option::Option<bool>,
5413    #[prost(float, optional, tag="10")]
5414    pub global_scale_factor: ::core::option::Option<f32>,
5415    #[deprecated]
5416    #[prost(float, optional, tag="11")]
5417    pub window_x_scale: ::core::option::Option<f32>,
5418    #[deprecated]
5419    #[prost(float, optional, tag="12")]
5420    pub window_y_scale: ::core::option::Option<f32>,
5421    #[prost(int32, optional, tag="13")]
5422    pub crop_layer_id: ::core::option::Option<i32>,
5423    #[prost(bool, optional, tag="14")]
5424    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
5425    #[prost(message, optional, tag="15")]
5426    pub touchable_region_crop: ::core::option::Option<RectProto>,
5427    #[prost(message, optional, tag="16")]
5428    pub transform: ::core::option::Option<TransformProto>,
5429    #[prost(uint32, optional, tag="17")]
5430    pub input_config: ::core::option::Option<u32>,
5431}
5432#[derive(Clone, PartialEq, ::prost::Message)]
5433pub struct BlurRegion {
5434    #[prost(uint32, optional, tag="1")]
5435    pub blur_radius: ::core::option::Option<u32>,
5436    #[prost(uint32, optional, tag="2")]
5437    pub corner_radius_tl: ::core::option::Option<u32>,
5438    #[prost(uint32, optional, tag="3")]
5439    pub corner_radius_tr: ::core::option::Option<u32>,
5440    #[prost(uint32, optional, tag="4")]
5441    pub corner_radius_bl: ::core::option::Option<u32>,
5442    #[prost(float, optional, tag="5")]
5443    pub corner_radius_br: ::core::option::Option<f32>,
5444    #[prost(float, optional, tag="6")]
5445    pub alpha: ::core::option::Option<f32>,
5446    #[prost(int32, optional, tag="7")]
5447    pub left: ::core::option::Option<i32>,
5448    #[prost(int32, optional, tag="8")]
5449    pub top: ::core::option::Option<i32>,
5450    #[prost(int32, optional, tag="9")]
5451    pub right: ::core::option::Option<i32>,
5452    #[prost(int32, optional, tag="10")]
5453    pub bottom: ::core::option::Option<i32>,
5454}
5455#[derive(Clone, PartialEq, ::prost::Message)]
5456pub struct ColorTransformProto {
5457    /// This will be a 4x4 matrix of float values
5458    #[prost(float, repeated, tag="1")]
5459    pub val: ::prost::alloc::vec::Vec<f32>,
5460}
5461// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
5462
5463/// Message used by Winscope to process legacy trace files.
5464/// Represents a file full of surface flinger trace entries.
5465/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
5466/// (.LYRTRACE), such that they can be easily identified.
5467#[derive(Clone, PartialEq, ::prost::Message)]
5468pub struct LayersTraceFileProto {
5469    /// Must be the first field, set to value in MagicNumber
5470    #[prost(fixed64, optional, tag="1")]
5471    pub magic_number: ::core::option::Option<u64>,
5472    #[prost(message, repeated, tag="2")]
5473    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
5474    /// Offset between real-time clock and elapsed time clock in nanoseconds.
5475    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
5476    /// systemTime(SYSTEM_TIME_MONOTONIC)
5477    #[prost(fixed64, optional, tag="3")]
5478    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
5479}
5480/// Nested message and enum types in `LayersTraceFileProto`.
5481pub mod layers_trace_file_proto {
5482    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
5483    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
5484    /// and there's no nice way to put 64bit constants into .proto files.
5485    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5486    #[repr(i32)]
5487    pub enum MagicNumber {
5488        Invalid = 0,
5489        /// LYRT (little-endian ASCII)
5490        L = 1414682956,
5491        /// RACE (little-endian ASCII)
5492        H = 1162035538,
5493    }
5494    impl MagicNumber {
5495        /// String value of the enum field names used in the ProtoBuf definition.
5496        ///
5497        /// The values are not transformed in any way and thus are considered stable
5498        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5499        pub fn as_str_name(&self) -> &'static str {
5500            match self {
5501                MagicNumber::Invalid => "INVALID",
5502                MagicNumber::L => "MAGIC_NUMBER_L",
5503                MagicNumber::H => "MAGIC_NUMBER_H",
5504            }
5505        }
5506    }
5507}
5508#[derive(Clone, PartialEq, ::prost::Message)]
5509pub struct LayersSnapshotProto {
5510    /// elapsed realtime in nanos since boot of when this entry was logged
5511    #[prost(sfixed64, optional, tag="1")]
5512    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
5513    /// SurfaceFlinger's stage where the snapshot was triggered.
5514    /// Currently either "visibleRegionsDirty" or "bufferLatched".
5515    #[prost(string, optional, tag="2")]
5516    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
5517    #[prost(message, optional, tag="3")]
5518    pub layers: ::core::option::Option<LayersProto>,
5519    /// Blob for the current HWC information for all layers, reported by dumpsys.
5520    /// Example:
5521    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
5522    #[prost(string, optional, tag="4")]
5523    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
5524    /// Excludes state sent during composition like visible region and composition
5525    /// type.
5526    #[prost(bool, optional, tag="5")]
5527    pub excludes_composition_state: ::core::option::Option<bool>,
5528    /// Number of missed entries since the last entry was recorded.
5529    #[prost(uint32, optional, tag="6")]
5530    pub missed_entries: ::core::option::Option<u32>,
5531    #[prost(message, repeated, tag="7")]
5532    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
5533    #[prost(int64, optional, tag="8")]
5534    pub vsync_id: ::core::option::Option<i64>,
5535}
5536/// Contains a list of all layers.
5537#[derive(Clone, PartialEq, ::prost::Message)]
5538pub struct LayersProto {
5539    #[prost(message, repeated, tag="1")]
5540    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
5541}
5542#[derive(Clone, PartialEq, ::prost::Message)]
5543pub struct DisplayProto {
5544    #[prost(uint64, optional, tag="1")]
5545    pub id: ::core::option::Option<u64>,
5546    /// Display descriptor, e.g. "Built-In Screen"
5547    #[prost(string, optional, tag="2")]
5548    pub name: ::core::option::Option<::prost::alloc::string::String>,
5549    #[prost(uint32, optional, tag="3")]
5550    pub layer_stack: ::core::option::Option<u32>,
5551    #[prost(message, optional, tag="4")]
5552    pub size: ::core::option::Option<SizeProto>,
5553    #[prost(message, optional, tag="5")]
5554    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
5555    #[prost(message, optional, tag="6")]
5556    pub transform: ::core::option::Option<TransformProto>,
5557    #[prost(bool, optional, tag="7")]
5558    pub is_virtual: ::core::option::Option<bool>,
5559    #[prost(double, optional, tag="8")]
5560    pub dpi_x: ::core::option::Option<f64>,
5561    #[prost(double, optional, tag="9")]
5562    pub dpi_y: ::core::option::Option<f64>,
5563}
5564/// Information about each layer.
5565#[derive(Clone, PartialEq, ::prost::Message)]
5566pub struct LayerProto {
5567    /// unique id per layer.
5568    #[prost(int32, optional, tag="1")]
5569    pub id: ::core::option::Option<i32>,
5570    /// unique name per layer.
5571    /// Example: "Wallpaper".
5572    #[prost(string, optional, tag="2")]
5573    pub name: ::core::option::Option<::prost::alloc::string::String>,
5574    /// list of children this layer may have. May be empty.
5575    #[prost(int32, repeated, tag="3")]
5576    pub children: ::prost::alloc::vec::Vec<i32>,
5577    /// list of layers that are z order relative to this layer.
5578    #[prost(int32, repeated, tag="4")]
5579    pub relatives: ::prost::alloc::vec::Vec<i32>,
5580    /// The type of layer.
5581    /// Examples: "ContainerLayer", "BufferStateLayer".
5582    #[prost(string, optional, tag="5")]
5583    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
5584    #[prost(message, optional, tag="6")]
5585    pub transparent_region: ::core::option::Option<RegionProto>,
5586    #[prost(message, optional, tag="7")]
5587    pub visible_region: ::core::option::Option<RegionProto>,
5588    #[prost(message, optional, tag="8")]
5589    pub damage_region: ::core::option::Option<RegionProto>,
5590    #[prost(uint32, optional, tag="9")]
5591    pub layer_stack: ::core::option::Option<u32>,
5592    /// The layer's z order. Can be z order in layer stack, relative to parent,
5593    /// or relative to another layer specified in zOrderRelative.
5594    #[prost(int32, optional, tag="10")]
5595    pub z: ::core::option::Option<i32>,
5596    /// The layer's position on the display.
5597    #[prost(message, optional, tag="11")]
5598    pub position: ::core::option::Option<PositionProto>,
5599    /// The layer's requested position.
5600    #[prost(message, optional, tag="12")]
5601    pub requested_position: ::core::option::Option<PositionProto>,
5602    /// The layer's size.
5603    #[prost(message, optional, tag="13")]
5604    pub size: ::core::option::Option<SizeProto>,
5605    /// The layer's crop in its own bounds.
5606    #[prost(message, optional, tag="14")]
5607    pub crop: ::core::option::Option<RectProto>,
5608    /// The layer's crop in its parent's bounds.
5609    #[deprecated]
5610    #[prost(message, optional, tag="15")]
5611    pub final_crop: ::core::option::Option<RectProto>,
5612    #[prost(bool, optional, tag="16")]
5613    pub is_opaque: ::core::option::Option<bool>,
5614    #[prost(bool, optional, tag="17")]
5615    pub invalidate: ::core::option::Option<bool>,
5616    /// Composition states's dataspace.
5617    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
5618    /// See full enum in
5619    /// frameworks/native/libs/nativewindow/include/android/data_space.h
5620    #[prost(string, optional, tag="18")]
5621    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
5622    /// Buffer's pixel format
5623    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
5624    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
5625    #[prost(string, optional, tag="19")]
5626    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
5627    /// The layer's actual color.
5628    #[prost(message, optional, tag="20")]
5629    pub color: ::core::option::Option<ColorProto>,
5630    /// The layer's requested color.
5631    #[prost(message, optional, tag="21")]
5632    pub requested_color: ::core::option::Option<ColorProto>,
5633    /// Can be any combination of
5634    ///     hidden = 0x01
5635    ///     opaque = 0x02,
5636    ///     secure = 0x80,
5637    #[prost(uint32, optional, tag="22")]
5638    pub flags: ::core::option::Option<u32>,
5639    /// The layer's actual transform
5640    #[prost(message, optional, tag="23")]
5641    pub transform: ::core::option::Option<TransformProto>,
5642    /// The layer's requested transform.
5643    #[prost(message, optional, tag="24")]
5644    pub requested_transform: ::core::option::Option<TransformProto>,
5645    /// The parent layer. This value can be null if there is no parent.
5646    #[prost(int32, optional, tag="25")]
5647    pub parent: ::core::option::Option<i32>,
5648    /// The layer that this layer has a z order relative to. This value can be
5649    /// null.
5650    #[prost(int32, optional, tag="26")]
5651    pub z_order_relative_of: ::core::option::Option<i32>,
5652    /// This value can be null if there's nothing to draw.
5653    #[prost(message, optional, tag="27")]
5654    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
5655    /// The number of frames available.
5656    #[prost(int32, optional, tag="28")]
5657    pub queued_frames: ::core::option::Option<i32>,
5658    #[prost(bool, optional, tag="29")]
5659    pub refresh_pending: ::core::option::Option<bool>,
5660    /// The layer's composer backend destination frame
5661    #[prost(message, optional, tag="30")]
5662    pub hwc_frame: ::core::option::Option<RectProto>,
5663    /// The layer's composer backend source crop
5664    #[prost(message, optional, tag="31")]
5665    pub hwc_crop: ::core::option::Option<FloatRectProto>,
5666    /// The layer's composer backend transform
5667    #[prost(int32, optional, tag="32")]
5668    pub hwc_transform: ::core::option::Option<i32>,
5669    #[deprecated]
5670    #[prost(int32, optional, tag="33")]
5671    pub window_type: ::core::option::Option<i32>,
5672    #[deprecated]
5673    #[prost(int32, optional, tag="34")]
5674    pub app_id: ::core::option::Option<i32>,
5675    /// The layer's composition type
5676    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
5677    pub hwc_composition_type: ::core::option::Option<i32>,
5678    /// If it's a buffer layer, indicate if the content is protected
5679    #[prost(bool, optional, tag="36")]
5680    pub is_protected: ::core::option::Option<bool>,
5681    /// Current frame number being rendered.
5682    #[prost(uint64, optional, tag="37")]
5683    pub curr_frame: ::core::option::Option<u64>,
5684    /// A list of barriers that the layer is waiting to update state.
5685    #[prost(message, repeated, tag="38")]
5686    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
5687    /// If active_buffer is not null, record its transform.
5688    #[prost(message, optional, tag="39")]
5689    pub buffer_transform: ::core::option::Option<TransformProto>,
5690    #[prost(int32, optional, tag="40")]
5691    pub effective_scaling_mode: ::core::option::Option<i32>,
5692    /// Layer's corner radius.
5693    #[prost(float, optional, tag="41")]
5694    pub corner_radius: ::core::option::Option<f32>,
5695    /// Metadata map. May be empty.
5696    #[prost(map="int32, string", tag="42")]
5697    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
5698    #[prost(message, optional, tag="43")]
5699    pub effective_transform: ::core::option::Option<TransformProto>,
5700    #[prost(message, optional, tag="44")]
5701    pub source_bounds: ::core::option::Option<FloatRectProto>,
5702    #[prost(message, optional, tag="45")]
5703    pub bounds: ::core::option::Option<FloatRectProto>,
5704    #[prost(message, optional, tag="46")]
5705    pub screen_bounds: ::core::option::Option<FloatRectProto>,
5706    #[prost(message, optional, tag="47")]
5707    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
5708    /// Crop used to draw the rounded corner.
5709    #[prost(message, optional, tag="48")]
5710    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
5711    /// length of the shadow to draw around the layer, it may be set on the
5712    /// layer or set by a parent layer.
5713    #[prost(float, optional, tag="49")]
5714    pub shadow_radius: ::core::option::Option<f32>,
5715    #[prost(message, optional, tag="50")]
5716    pub color_transform: ::core::option::Option<ColorTransformProto>,
5717    #[prost(bool, optional, tag="51")]
5718    pub is_relative_of: ::core::option::Option<bool>,
5719    /// Layer's background blur radius in pixels.
5720    #[prost(int32, optional, tag="52")]
5721    pub background_blur_radius: ::core::option::Option<i32>,
5722    #[prost(uint32, optional, tag="53")]
5723    pub owner_uid: ::core::option::Option<u32>,
5724    /// Regions of a layer, where blur should be applied.
5725    #[prost(message, repeated, tag="54")]
5726    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
5727    #[prost(bool, optional, tag="55")]
5728    pub is_trusted_overlay: ::core::option::Option<bool>,
5729    /// Corner radius explicitly set on layer rather than inherited
5730    #[prost(float, optional, tag="56")]
5731    pub requested_corner_radius: ::core::option::Option<f32>,
5732    #[prost(message, optional, tag="57")]
5733    pub destination_frame: ::core::option::Option<RectProto>,
5734    #[prost(uint32, optional, tag="58")]
5735    pub original_id: ::core::option::Option<u32>,
5736    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
5737    pub trusted_overlay: ::core::option::Option<i32>,
5738}
5739#[derive(Clone, PartialEq, ::prost::Message)]
5740pub struct PositionProto {
5741    #[prost(float, optional, tag="1")]
5742    pub x: ::core::option::Option<f32>,
5743    #[prost(float, optional, tag="2")]
5744    pub y: ::core::option::Option<f32>,
5745}
5746#[derive(Clone, PartialEq, ::prost::Message)]
5747pub struct FloatRectProto {
5748    #[prost(float, optional, tag="1")]
5749    pub left: ::core::option::Option<f32>,
5750    #[prost(float, optional, tag="2")]
5751    pub top: ::core::option::Option<f32>,
5752    #[prost(float, optional, tag="3")]
5753    pub right: ::core::option::Option<f32>,
5754    #[prost(float, optional, tag="4")]
5755    pub bottom: ::core::option::Option<f32>,
5756}
5757#[derive(Clone, PartialEq, ::prost::Message)]
5758pub struct ActiveBufferProto {
5759    #[prost(uint32, optional, tag="1")]
5760    pub width: ::core::option::Option<u32>,
5761    #[prost(uint32, optional, tag="2")]
5762    pub height: ::core::option::Option<u32>,
5763    #[prost(uint32, optional, tag="3")]
5764    pub stride: ::core::option::Option<u32>,
5765    #[prost(int32, optional, tag="4")]
5766    pub format: ::core::option::Option<i32>,
5767    #[prost(uint64, optional, tag="5")]
5768    pub usage: ::core::option::Option<u64>,
5769}
5770#[derive(Clone, PartialEq, ::prost::Message)]
5771pub struct BarrierLayerProto {
5772    /// layer id the barrier is waiting on.
5773    #[prost(int32, optional, tag="1")]
5774    pub id: ::core::option::Option<i32>,
5775    /// frame number the barrier is waiting on.
5776    #[prost(uint64, optional, tag="2")]
5777    pub frame_number: ::core::option::Option<u64>,
5778}
5779// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
5780
5781// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
5782
5783/// Message used by Winscope to process legacy trace files.
5784/// Represents a file full of surface flinger transactions.
5785/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
5786/// (.TNXTRACE), such that they can be easily identified.
5787#[derive(Clone, PartialEq, ::prost::Message)]
5788pub struct TransactionTraceFile {
5789    /// Must be the first field, set to value in MagicNumber
5790    #[prost(fixed64, optional, tag="1")]
5791    pub magic_number: ::core::option::Option<u64>,
5792    #[prost(message, repeated, tag="2")]
5793    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
5794    /// offset between real-time clock and elapsed time clock in nanoseconds.
5795    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
5796    /// systemTime(SYSTEM_TIME_MONOTONIC)
5797    #[prost(fixed64, optional, tag="3")]
5798    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
5799    #[prost(uint32, optional, tag="4")]
5800    pub version: ::core::option::Option<u32>,
5801}
5802/// Nested message and enum types in `TransactionTraceFile`.
5803pub mod transaction_trace_file {
5804    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
5805    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
5806    /// and there's no nice way to put 64bit constants into .proto files.
5807    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5808    #[repr(i32)]
5809    pub enum MagicNumber {
5810        Invalid = 0,
5811        /// TNXT (little-endian ASCII)
5812        L = 1415073364,
5813        /// RACE (little-endian ASCII)
5814        H = 1162035538,
5815    }
5816    impl MagicNumber {
5817        /// String value of the enum field names used in the ProtoBuf definition.
5818        ///
5819        /// The values are not transformed in any way and thus are considered stable
5820        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5821        pub fn as_str_name(&self) -> &'static str {
5822            match self {
5823                MagicNumber::Invalid => "INVALID",
5824                MagicNumber::L => "MAGIC_NUMBER_L",
5825                MagicNumber::H => "MAGIC_NUMBER_H",
5826            }
5827        }
5828    }
5829}
5830#[derive(Clone, PartialEq, ::prost::Message)]
5831pub struct TransactionTraceEntry {
5832    #[prost(int64, optional, tag="1")]
5833    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
5834    #[prost(int64, optional, tag="2")]
5835    pub vsync_id: ::core::option::Option<i64>,
5836    #[prost(message, repeated, tag="3")]
5837    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
5838    #[prost(message, repeated, tag="4")]
5839    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
5840    #[prost(uint32, repeated, packed="false", tag="5")]
5841    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
5842    #[prost(message, repeated, tag="6")]
5843    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
5844    #[prost(int32, repeated, packed="false", tag="7")]
5845    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
5846    #[prost(uint32, repeated, packed="false", tag="8")]
5847    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
5848    #[prost(bool, optional, tag="9")]
5849    pub displays_changed: ::core::option::Option<bool>,
5850    #[prost(message, repeated, tag="10")]
5851    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
5852}
5853#[derive(Clone, PartialEq, ::prost::Message)]
5854pub struct DisplayInfo {
5855    #[prost(uint32, optional, tag="1")]
5856    pub layer_stack: ::core::option::Option<u32>,
5857    #[prost(int32, optional, tag="2")]
5858    pub display_id: ::core::option::Option<i32>,
5859    #[prost(int32, optional, tag="3")]
5860    pub logical_width: ::core::option::Option<i32>,
5861    #[prost(int32, optional, tag="4")]
5862    pub logical_height: ::core::option::Option<i32>,
5863    #[prost(message, optional, tag="5")]
5864    pub transform_inverse: ::core::option::Option<Transform>,
5865    #[prost(message, optional, tag="6")]
5866    pub transform: ::core::option::Option<Transform>,
5867    #[prost(bool, optional, tag="7")]
5868    pub receives_input: ::core::option::Option<bool>,
5869    #[prost(bool, optional, tag="8")]
5870    pub is_secure: ::core::option::Option<bool>,
5871    #[prost(bool, optional, tag="9")]
5872    pub is_primary: ::core::option::Option<bool>,
5873    #[prost(bool, optional, tag="10")]
5874    pub is_virtual: ::core::option::Option<bool>,
5875    #[prost(int32, optional, tag="11")]
5876    pub rotation_flags: ::core::option::Option<i32>,
5877    #[prost(int32, optional, tag="12")]
5878    pub transform_hint: ::core::option::Option<i32>,
5879}
5880#[derive(Clone, PartialEq, ::prost::Message)]
5881pub struct LayerCreationArgs {
5882    #[prost(uint32, optional, tag="1")]
5883    pub layer_id: ::core::option::Option<u32>,
5884    #[prost(string, optional, tag="2")]
5885    pub name: ::core::option::Option<::prost::alloc::string::String>,
5886    #[prost(uint32, optional, tag="3")]
5887    pub flags: ::core::option::Option<u32>,
5888    #[prost(uint32, optional, tag="4")]
5889    pub parent_id: ::core::option::Option<u32>,
5890    #[prost(uint32, optional, tag="5")]
5891    pub mirror_from_id: ::core::option::Option<u32>,
5892    #[prost(bool, optional, tag="6")]
5893    pub add_to_root: ::core::option::Option<bool>,
5894    #[prost(uint32, optional, tag="7")]
5895    pub layer_stack_to_mirror: ::core::option::Option<u32>,
5896}
5897#[derive(Clone, PartialEq, ::prost::Message)]
5898pub struct Transform {
5899    #[prost(float, optional, tag="1")]
5900    pub dsdx: ::core::option::Option<f32>,
5901    #[prost(float, optional, tag="2")]
5902    pub dtdx: ::core::option::Option<f32>,
5903    #[prost(float, optional, tag="3")]
5904    pub dtdy: ::core::option::Option<f32>,
5905    #[prost(float, optional, tag="4")]
5906    pub dsdy: ::core::option::Option<f32>,
5907    #[prost(float, optional, tag="5")]
5908    pub tx: ::core::option::Option<f32>,
5909    #[prost(float, optional, tag="6")]
5910    pub ty: ::core::option::Option<f32>,
5911}
5912#[derive(Clone, PartialEq, ::prost::Message)]
5913pub struct TransactionState {
5914    #[prost(int32, optional, tag="1")]
5915    pub pid: ::core::option::Option<i32>,
5916    #[prost(int32, optional, tag="2")]
5917    pub uid: ::core::option::Option<i32>,
5918    #[prost(int64, optional, tag="3")]
5919    pub vsync_id: ::core::option::Option<i64>,
5920    #[prost(int32, optional, tag="4")]
5921    pub input_event_id: ::core::option::Option<i32>,
5922    #[prost(int64, optional, tag="5")]
5923    pub post_time: ::core::option::Option<i64>,
5924    #[prost(uint64, optional, tag="6")]
5925    pub transaction_id: ::core::option::Option<u64>,
5926    #[prost(message, repeated, tag="7")]
5927    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
5928    #[prost(message, repeated, tag="8")]
5929    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
5930    #[prost(uint64, repeated, packed="false", tag="9")]
5931    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
5932}
5933/// Keep insync with layer_state_t
5934#[derive(Clone, PartialEq, ::prost::Message)]
5935pub struct LayerState {
5936    #[prost(uint32, optional, tag="1")]
5937    pub layer_id: ::core::option::Option<u32>,
5938    #[prost(uint64, optional, tag="2")]
5939    pub what: ::core::option::Option<u64>,
5940    #[prost(float, optional, tag="3")]
5941    pub x: ::core::option::Option<f32>,
5942    #[prost(float, optional, tag="4")]
5943    pub y: ::core::option::Option<f32>,
5944    #[prost(int32, optional, tag="5")]
5945    pub z: ::core::option::Option<i32>,
5946    #[prost(uint32, optional, tag="6")]
5947    pub w: ::core::option::Option<u32>,
5948    #[prost(uint32, optional, tag="7")]
5949    pub h: ::core::option::Option<u32>,
5950    #[prost(uint32, optional, tag="8")]
5951    pub layer_stack: ::core::option::Option<u32>,
5952    #[prost(uint32, optional, tag="9")]
5953    pub flags: ::core::option::Option<u32>,
5954    #[prost(uint32, optional, tag="10")]
5955    pub mask: ::core::option::Option<u32>,
5956    #[prost(message, optional, tag="11")]
5957    pub matrix: ::core::option::Option<layer_state::Matrix22>,
5958    #[prost(float, optional, tag="12")]
5959    pub corner_radius: ::core::option::Option<f32>,
5960    #[prost(uint32, optional, tag="13")]
5961    pub background_blur_radius: ::core::option::Option<u32>,
5962    #[prost(uint32, optional, tag="14")]
5963    pub parent_id: ::core::option::Option<u32>,
5964    #[prost(uint32, optional, tag="15")]
5965    pub relative_parent_id: ::core::option::Option<u32>,
5966    #[prost(float, optional, tag="16")]
5967    pub alpha: ::core::option::Option<f32>,
5968    #[prost(message, optional, tag="17")]
5969    pub color: ::core::option::Option<layer_state::Color3>,
5970    #[prost(message, optional, tag="18")]
5971    pub transparent_region: ::core::option::Option<RegionProto>,
5972    #[prost(uint32, optional, tag="19")]
5973    pub transform: ::core::option::Option<u32>,
5974    #[prost(bool, optional, tag="20")]
5975    pub transform_to_display_inverse: ::core::option::Option<bool>,
5976    #[prost(message, optional, tag="21")]
5977    pub crop: ::core::option::Option<RectProto>,
5978    #[prost(message, optional, tag="22")]
5979    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
5980    #[prost(int32, optional, tag="23")]
5981    pub api: ::core::option::Option<i32>,
5982    #[prost(bool, optional, tag="24")]
5983    pub has_sideband_stream: ::core::option::Option<bool>,
5984    #[prost(message, optional, tag="25")]
5985    pub color_transform: ::core::option::Option<ColorTransformProto>,
5986    #[prost(message, repeated, tag="26")]
5987    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
5988    #[prost(message, optional, tag="27")]
5989    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
5990    #[prost(float, optional, tag="28")]
5991    pub bg_color_alpha: ::core::option::Option<f32>,
5992    #[prost(int32, optional, tag="29")]
5993    pub bg_color_dataspace: ::core::option::Option<i32>,
5994    #[prost(bool, optional, tag="30")]
5995    pub color_space_agnostic: ::core::option::Option<bool>,
5996    #[prost(float, optional, tag="31")]
5997    pub shadow_radius: ::core::option::Option<f32>,
5998    #[prost(int32, optional, tag="32")]
5999    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6000    #[prost(float, optional, tag="33")]
6001    pub frame_rate: ::core::option::Option<f32>,
6002    #[prost(int32, optional, tag="34")]
6003    pub frame_rate_compatibility: ::core::option::Option<i32>,
6004    #[prost(int32, optional, tag="35")]
6005    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6006    #[prost(uint32, optional, tag="36")]
6007    pub fixed_transform_hint: ::core::option::Option<u32>,
6008    #[prost(uint64, optional, tag="37")]
6009    pub frame_number: ::core::option::Option<u64>,
6010    #[prost(bool, optional, tag="38")]
6011    pub auto_refresh: ::core::option::Option<bool>,
6012    /// unused
6013    #[prost(bool, optional, tag="39")]
6014    pub is_trusted_overlay: ::core::option::Option<bool>,
6015    #[prost(message, optional, tag="40")]
6016    pub buffer_crop: ::core::option::Option<RectProto>,
6017    #[prost(message, optional, tag="41")]
6018    pub destination_frame: ::core::option::Option<RectProto>,
6019    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6020    pub drop_input_mode: ::core::option::Option<i32>,
6021    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6022    pub trusted_overlay: ::core::option::Option<i32>,
6023}
6024/// Nested message and enum types in `LayerState`.
6025pub mod layer_state {
6026    #[derive(Clone, PartialEq, ::prost::Message)]
6027    pub struct Matrix22 {
6028        #[prost(float, optional, tag="1")]
6029        pub dsdx: ::core::option::Option<f32>,
6030        #[prost(float, optional, tag="2")]
6031        pub dtdx: ::core::option::Option<f32>,
6032        #[prost(float, optional, tag="3")]
6033        pub dtdy: ::core::option::Option<f32>,
6034        #[prost(float, optional, tag="4")]
6035        pub dsdy: ::core::option::Option<f32>,
6036    }
6037    #[derive(Clone, PartialEq, ::prost::Message)]
6038    pub struct Color3 {
6039        #[prost(float, optional, tag="1")]
6040        pub r: ::core::option::Option<f32>,
6041        #[prost(float, optional, tag="2")]
6042        pub g: ::core::option::Option<f32>,
6043        #[prost(float, optional, tag="3")]
6044        pub b: ::core::option::Option<f32>,
6045    }
6046    #[derive(Clone, PartialEq, ::prost::Message)]
6047    pub struct BufferData {
6048        #[prost(uint64, optional, tag="1")]
6049        pub buffer_id: ::core::option::Option<u64>,
6050        #[prost(uint32, optional, tag="2")]
6051        pub width: ::core::option::Option<u32>,
6052        #[prost(uint32, optional, tag="3")]
6053        pub height: ::core::option::Option<u32>,
6054        #[prost(uint64, optional, tag="4")]
6055        pub frame_number: ::core::option::Option<u64>,
6056        #[prost(uint32, optional, tag="5")]
6057        pub flags: ::core::option::Option<u32>,
6058        #[prost(uint64, optional, tag="6")]
6059        pub cached_buffer_id: ::core::option::Option<u64>,
6060        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
6061        pub pixel_format: ::core::option::Option<i32>,
6062        #[prost(uint64, optional, tag="8")]
6063        pub usage: ::core::option::Option<u64>,
6064    }
6065    /// Nested message and enum types in `BufferData`.
6066    pub mod buffer_data {
6067        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6068        #[repr(i32)]
6069        pub enum BufferDataChange {
6070            None = 0,
6071            FenceChanged = 1,
6072            FrameNumberChanged = 2,
6073            CachedBufferChanged = 4,
6074        }
6075        impl BufferDataChange {
6076            /// String value of the enum field names used in the ProtoBuf definition.
6077            ///
6078            /// The values are not transformed in any way and thus are considered stable
6079            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6080            pub fn as_str_name(&self) -> &'static str {
6081                match self {
6082                    BufferDataChange::None => "BufferDataChangeNone",
6083                    BufferDataChange::FenceChanged => "fenceChanged",
6084                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
6085                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
6086                }
6087            }
6088        }
6089        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6090        #[repr(i32)]
6091        pub enum PixelFormat {
6092            Unknown = 0,
6093            Custom = -4,
6094            Translucent = -3,
6095            Transparent = -2,
6096            Opaque = -1,
6097            Rgba8888 = 1,
6098            Rgbx8888 = 2,
6099            Rgb888 = 3,
6100            Rgb565 = 4,
6101            Bgra8888 = 5,
6102            Rgba5551 = 6,
6103            Rgba4444 = 7,
6104            RgbaFp16 = 22,
6105            Rgba1010102 = 43,
6106            R8 = 56,
6107        }
6108        impl PixelFormat {
6109            /// String value of the enum field names used in the ProtoBuf definition.
6110            ///
6111            /// The values are not transformed in any way and thus are considered stable
6112            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6113            pub fn as_str_name(&self) -> &'static str {
6114                match self {
6115                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
6116                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
6117                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
6118                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
6119                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
6120                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
6121                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
6122                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
6123                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
6124                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
6125                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
6126                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
6127                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
6128                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
6129                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
6130                }
6131            }
6132        }
6133    }
6134    #[derive(Clone, PartialEq, ::prost::Message)]
6135    pub struct WindowInfo {
6136        #[prost(uint32, optional, tag="1")]
6137        pub layout_params_flags: ::core::option::Option<u32>,
6138        #[prost(int32, optional, tag="2")]
6139        pub layout_params_type: ::core::option::Option<i32>,
6140        #[prost(message, optional, tag="3")]
6141        pub touchable_region: ::core::option::Option<super::RegionProto>,
6142        #[prost(int32, optional, tag="4")]
6143        pub surface_inset: ::core::option::Option<i32>,
6144        /// unused
6145        #[prost(bool, optional, tag="5")]
6146        pub focusable: ::core::option::Option<bool>,
6147        /// unused
6148        #[prost(bool, optional, tag="6")]
6149        pub has_wallpaper: ::core::option::Option<bool>,
6150        #[prost(float, optional, tag="7")]
6151        pub global_scale_factor: ::core::option::Option<f32>,
6152        #[prost(uint32, optional, tag="8")]
6153        pub crop_layer_id: ::core::option::Option<u32>,
6154        #[prost(bool, optional, tag="9")]
6155        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6156        #[prost(message, optional, tag="10")]
6157        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
6158        #[prost(message, optional, tag="11")]
6159        pub transform: ::core::option::Option<super::Transform>,
6160        #[prost(uint32, optional, tag="12")]
6161        pub input_config: ::core::option::Option<u32>,
6162    }
6163    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
6164    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
6165    /// enums have to be 32 bits and there's no nice way to put 64bit constants
6166    /// into .proto files.
6167    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6168    #[repr(i32)]
6169    pub enum ChangesLsb {
6170        EChangesLsbNone = 0,
6171        EPositionChanged = 1,
6172        ELayerChanged = 2,
6173        /// unused = 0x00000004;
6174        EAlphaChanged = 8,
6175        EMatrixChanged = 16,
6176        ETransparentRegionChanged = 32,
6177        EFlagsChanged = 64,
6178        ELayerStackChanged = 128,
6179        EReleaseBufferListenerChanged = 1024,
6180        EShadowRadiusChanged = 2048,
6181        EBufferCropChanged = 8192,
6182        ERelativeLayerChanged = 16384,
6183        EReparent = 32768,
6184        EColorChanged = 65536,
6185        EBufferTransformChanged = 262144,
6186        ETransformToDisplayInverseChanged = 524288,
6187        ECropChanged = 1048576,
6188        EBufferChanged = 2097152,
6189        EAcquireFenceChanged = 4194304,
6190        EDataspaceChanged = 8388608,
6191        EHdrMetadataChanged = 16777216,
6192        ESurfaceDamageRegionChanged = 33554432,
6193        EApiChanged = 67108864,
6194        ESidebandStreamChanged = 134217728,
6195        EColorTransformChanged = 268435456,
6196        EHasListenerCallbacksChanged = 536870912,
6197        EInputInfoChanged = 1073741824,
6198        /// 0x80000000; (proto stores enums as signed int)
6199        ECornerRadiusChanged = -2147483648,
6200    }
6201    impl ChangesLsb {
6202        /// String value of the enum field names used in the ProtoBuf definition.
6203        ///
6204        /// The values are not transformed in any way and thus are considered stable
6205        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6206        pub fn as_str_name(&self) -> &'static str {
6207            match self {
6208                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
6209                ChangesLsb::EPositionChanged => "ePositionChanged",
6210                ChangesLsb::ELayerChanged => "eLayerChanged",
6211                ChangesLsb::EAlphaChanged => "eAlphaChanged",
6212                ChangesLsb::EMatrixChanged => "eMatrixChanged",
6213                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
6214                ChangesLsb::EFlagsChanged => "eFlagsChanged",
6215                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
6216                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
6217                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
6218                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
6219                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
6220                ChangesLsb::EReparent => "eReparent",
6221                ChangesLsb::EColorChanged => "eColorChanged",
6222                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
6223                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
6224                ChangesLsb::ECropChanged => "eCropChanged",
6225                ChangesLsb::EBufferChanged => "eBufferChanged",
6226                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
6227                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
6228                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
6229                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
6230                ChangesLsb::EApiChanged => "eApiChanged",
6231                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
6232                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
6233                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
6234                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
6235                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
6236            }
6237        }
6238    }
6239    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6240    #[repr(i32)]
6241    pub enum ChangesMsb {
6242        EChangesMsbNone = 0,
6243        EDestinationFrameChanged = 1,
6244        ECachedBufferChanged = 2,
6245        EBackgroundColorChanged = 4,
6246        EMetadataChanged = 8,
6247        EColorSpaceAgnosticChanged = 16,
6248        EFrameRateSelectionPriority = 32,
6249        EFrameRateChanged = 64,
6250        EBackgroundBlurRadiusChanged = 128,
6251        EProducerDisconnect = 256,
6252        EFixedTransformHintChanged = 512,
6253        EFrameNumberChanged = 1024,
6254        EBlurRegionsChanged = 2048,
6255        EAutoRefreshChanged = 4096,
6256        EStretchChanged = 8192,
6257        ETrustedOverlayChanged = 16384,
6258        EDropInputModeChanged = 32768,
6259    }
6260    impl ChangesMsb {
6261        /// String value of the enum field names used in the ProtoBuf definition.
6262        ///
6263        /// The values are not transformed in any way and thus are considered stable
6264        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6265        pub fn as_str_name(&self) -> &'static str {
6266            match self {
6267                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
6268                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
6269                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
6270                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
6271                ChangesMsb::EMetadataChanged => "eMetadataChanged",
6272                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
6273                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
6274                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
6275                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
6276                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
6277                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
6278                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
6279                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
6280                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
6281                ChangesMsb::EStretchChanged => "eStretchChanged",
6282                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
6283                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
6284            }
6285        }
6286    }
6287    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6288    #[repr(i32)]
6289    pub enum Flags {
6290        EFlagsNone = 0,
6291        ELayerHidden = 1,
6292        ELayerOpaque = 2,
6293        ELayerSkipScreenshot = 64,
6294        ELayerSecure = 128,
6295        EEnableBackpressure = 256,
6296        ELayerIsDisplayDecoration = 512,
6297    }
6298    impl Flags {
6299        /// String value of the enum field names used in the ProtoBuf definition.
6300        ///
6301        /// The values are not transformed in any way and thus are considered stable
6302        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6303        pub fn as_str_name(&self) -> &'static str {
6304            match self {
6305                Flags::EFlagsNone => "eFlagsNone",
6306                Flags::ELayerHidden => "eLayerHidden",
6307                Flags::ELayerOpaque => "eLayerOpaque",
6308                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
6309                Flags::ELayerSecure => "eLayerSecure",
6310                Flags::EEnableBackpressure => "eEnableBackpressure",
6311                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
6312            }
6313        }
6314    }
6315    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6316    #[repr(i32)]
6317    pub enum DropInputMode {
6318        None = 0,
6319        All = 1,
6320        Obscured = 2,
6321    }
6322    impl DropInputMode {
6323        /// String value of the enum field names used in the ProtoBuf definition.
6324        ///
6325        /// The values are not transformed in any way and thus are considered stable
6326        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6327        pub fn as_str_name(&self) -> &'static str {
6328            match self {
6329                DropInputMode::None => "NONE",
6330                DropInputMode::All => "ALL",
6331                DropInputMode::Obscured => "OBSCURED",
6332            }
6333        }
6334    }
6335}
6336#[derive(Clone, PartialEq, ::prost::Message)]
6337pub struct DisplayState {
6338    #[prost(int32, optional, tag="1")]
6339    pub id: ::core::option::Option<i32>,
6340    #[prost(uint32, optional, tag="2")]
6341    pub what: ::core::option::Option<u32>,
6342    #[prost(uint32, optional, tag="3")]
6343    pub flags: ::core::option::Option<u32>,
6344    #[prost(uint32, optional, tag="4")]
6345    pub layer_stack: ::core::option::Option<u32>,
6346    #[prost(uint32, optional, tag="5")]
6347    pub orientation: ::core::option::Option<u32>,
6348    #[prost(message, optional, tag="6")]
6349    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6350    #[prost(message, optional, tag="7")]
6351    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
6352    #[prost(uint32, optional, tag="8")]
6353    pub width: ::core::option::Option<u32>,
6354    #[prost(uint32, optional, tag="9")]
6355    pub height: ::core::option::Option<u32>,
6356}
6357/// Nested message and enum types in `DisplayState`.
6358pub mod display_state {
6359    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6360    #[repr(i32)]
6361    pub enum Changes {
6362        EChangesNone = 0,
6363        ESurfaceChanged = 1,
6364        ELayerStackChanged = 2,
6365        EDisplayProjectionChanged = 4,
6366        EDisplaySizeChanged = 8,
6367        EFlagsChanged = 16,
6368    }
6369    impl Changes {
6370        /// String value of the enum field names used in the ProtoBuf definition.
6371        ///
6372        /// The values are not transformed in any way and thus are considered stable
6373        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6374        pub fn as_str_name(&self) -> &'static str {
6375            match self {
6376                Changes::EChangesNone => "eChangesNone",
6377                Changes::ESurfaceChanged => "eSurfaceChanged",
6378                Changes::ELayerStackChanged => "eLayerStackChanged",
6379                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
6380                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
6381                Changes::EFlagsChanged => "eFlagsChanged",
6382            }
6383        }
6384    }
6385}
6386// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6387
6388// Begin of protos/perfetto/trace/android/winscope_extensions.proto
6389
6390#[derive(Clone, PartialEq, ::prost::Message)]
6391pub struct WinscopeExtensions {
6392}
6393// End of protos/perfetto/trace/android/winscope_extensions.proto
6394
6395// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6396
6397/// This message is not intended to be written by the chrome on the device.
6398/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
6399/// part of the trace that's written by the telemetry tracing agent).
6400#[derive(Clone, PartialEq, ::prost::Message)]
6401pub struct ChromeBenchmarkMetadata {
6402    /// Time when the benchmark execution started (host unixtime in microseconds).
6403    #[prost(int64, optional, tag="1")]
6404    pub benchmark_start_time_us: ::core::option::Option<i64>,
6405    /// Time when this particular story was run (host unixtime in microseconds).
6406    #[prost(int64, optional, tag="2")]
6407    pub story_run_time_us: ::core::option::Option<i64>,
6408    /// Name of benchmark.
6409    #[prost(string, optional, tag="3")]
6410    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
6411    /// Description of benchmark.
6412    #[prost(string, optional, tag="4")]
6413    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
6414    /// Optional label.
6415    #[prost(string, optional, tag="5")]
6416    pub label: ::core::option::Option<::prost::alloc::string::String>,
6417    /// Name of story.
6418    #[prost(string, optional, tag="6")]
6419    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
6420    /// List of story tags.
6421    #[prost(string, repeated, tag="7")]
6422    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6423    /// Index of the story run (>0 if the same story was run several times).
6424    #[prost(int32, optional, tag="8")]
6425    pub story_run_index: ::core::option::Option<i32>,
6426    /// Whether this run failed.
6427    #[prost(bool, optional, tag="9")]
6428    pub had_failures: ::core::option::Option<bool>,
6429}
6430// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6431
6432// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
6433
6434/// Metadata for chrome traces.
6435#[derive(Clone, PartialEq, ::prost::Message)]
6436pub struct ChromeMetadataPacket {
6437    #[prost(message, optional, tag="1")]
6438    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
6439    /// Version code of Chrome used by Android's Play Store. This field is only set
6440    /// on Android.
6441    #[prost(int32, optional, tag="2")]
6442    pub chrome_version_code: ::core::option::Option<i32>,
6443    /// Comma separated list of enabled categories for tracing. The list of
6444    /// possible category strings are listed in code
6445    /// base/trace_event/builtin_categories.h.
6446    #[prost(string, optional, tag="3")]
6447    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
6448    /// List of Finch study/groups that apply to this trace.
6449    #[prost(message, repeated, tag="4")]
6450    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
6451}
6452/// Nested message and enum types in `ChromeMetadataPacket`.
6453pub mod chrome_metadata_packet {
6454    /// Finch name and group based on the ActiveGroupId.
6455    #[derive(Clone, PartialEq, ::prost::Message)]
6456    pub struct FinchHash {
6457        #[prost(uint32, optional, tag="1")]
6458        pub name: ::core::option::Option<u32>,
6459        #[prost(uint32, optional, tag="2")]
6460        pub group: ::core::option::Option<u32>,
6461    }
6462}
6463/// Metadata related to background tracing scenarios, states and triggers.
6464#[derive(Clone, PartialEq, ::prost::Message)]
6465pub struct BackgroundTracingMetadata {
6466    /// Specifies the rule that caused the trace to be uploaded.
6467    #[prost(message, optional, tag="1")]
6468    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
6469    /// List of all active triggers in current session, when trace was triggered.
6470    #[prost(message, repeated, tag="2")]
6471    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
6472    /// Hash of the scenario name.
6473    #[prost(fixed32, optional, tag="3")]
6474    pub scenario_name_hash: ::core::option::Option<u32>,
6475}
6476/// Nested message and enum types in `BackgroundTracingMetadata`.
6477pub mod background_tracing_metadata {
6478    /// Information about a trigger rule defined in the experiment config.
6479    #[derive(Clone, PartialEq, ::prost::Message)]
6480    pub struct TriggerRule {
6481        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
6482        pub trigger_type: ::core::option::Option<i32>,
6483        #[prost(message, optional, tag="2")]
6484        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
6485        #[prost(message, optional, tag="3")]
6486        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
6487        /// Hash of the rule name.
6488        #[prost(fixed32, optional, tag="4")]
6489        pub name_hash: ::core::option::Option<u32>,
6490    }
6491    /// Nested message and enum types in `TriggerRule`.
6492    pub mod trigger_rule {
6493        /// Configuration of histogram trigger.
6494        #[derive(Clone, PartialEq, ::prost::Message)]
6495        pub struct HistogramRule {
6496            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
6497            #[prost(fixed64, optional, tag="1")]
6498            pub histogram_name_hash: ::core::option::Option<u64>,
6499            /// Range of values of the histogram that activates trigger.
6500            #[prost(int64, optional, tag="2")]
6501            pub histogram_min_trigger: ::core::option::Option<i64>,
6502            #[prost(int64, optional, tag="3")]
6503            pub histogram_max_trigger: ::core::option::Option<i64>,
6504        }
6505        /// Configuration of named trigger.
6506        #[derive(Clone, PartialEq, ::prost::Message)]
6507        pub struct NamedRule {
6508            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
6509            pub event_type: ::core::option::Option<i32>,
6510            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
6511            /// content-trigger that actually fired.
6512            #[prost(fixed64, optional, tag="2")]
6513            pub content_trigger_name_hash: ::core::option::Option<u64>,
6514        }
6515        /// Nested message and enum types in `NamedRule`.
6516        pub mod named_rule {
6517            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6518            #[repr(i32)]
6519            pub enum EventType {
6520                Unspecified = 0,
6521                SessionRestore = 1,
6522                Navigation = 2,
6523                Startup = 3,
6524                ReachedCode = 4,
6525                ContentTrigger = 5,
6526                TestRule = 1000,
6527            }
6528            impl EventType {
6529                /// String value of the enum field names used in the ProtoBuf definition.
6530                ///
6531                /// The values are not transformed in any way and thus are considered stable
6532                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6533                pub fn as_str_name(&self) -> &'static str {
6534                    match self {
6535                        EventType::Unspecified => "UNSPECIFIED",
6536                        EventType::SessionRestore => "SESSION_RESTORE",
6537                        EventType::Navigation => "NAVIGATION",
6538                        EventType::Startup => "STARTUP",
6539                        EventType::ReachedCode => "REACHED_CODE",
6540                        EventType::ContentTrigger => "CONTENT_TRIGGER",
6541                        EventType::TestRule => "TEST_RULE",
6542                    }
6543                }
6544            }
6545        }
6546        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6547        #[repr(i32)]
6548        pub enum TriggerType {
6549            TriggerUnspecified = 0,
6550            /// Traces are triggered by specific range of values of an UMA histogram.
6551            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
6552            /// Traces are triggered by specific named events in chromium codebase,
6553            /// like "second-update-failure".
6554            MonitorAndDumpWhenTriggerNamed = 2,
6555        }
6556        impl TriggerType {
6557            /// String value of the enum field names used in the ProtoBuf definition.
6558            ///
6559            /// The values are not transformed in any way and thus are considered stable
6560            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6561            pub fn as_str_name(&self) -> &'static str {
6562                match self {
6563                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
6564                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
6565                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
6566                }
6567            }
6568        }
6569    }
6570}
6571// End of protos/perfetto/trace/chrome/chrome_metadata.proto
6572
6573// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
6574
6575#[derive(Clone, PartialEq, ::prost::Message)]
6576pub struct ChromeTracedValue {
6577    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
6578    pub nested_type: ::core::option::Option<i32>,
6579    #[prost(string, repeated, tag="2")]
6580    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6581    #[prost(message, repeated, tag="3")]
6582    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6583    #[prost(message, repeated, tag="4")]
6584    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6585    #[prost(int32, optional, tag="5")]
6586    pub int_value: ::core::option::Option<i32>,
6587    #[prost(double, optional, tag="6")]
6588    pub double_value: ::core::option::Option<f64>,
6589    #[prost(bool, optional, tag="7")]
6590    pub bool_value: ::core::option::Option<bool>,
6591    #[prost(string, optional, tag="8")]
6592    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
6593}
6594/// Nested message and enum types in `ChromeTracedValue`.
6595pub mod chrome_traced_value {
6596    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6597    #[repr(i32)]
6598    pub enum NestedType {
6599        Dict = 0,
6600        Array = 1,
6601    }
6602    impl NestedType {
6603        /// String value of the enum field names used in the ProtoBuf definition.
6604        ///
6605        /// The values are not transformed in any way and thus are considered stable
6606        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6607        pub fn as_str_name(&self) -> &'static str {
6608            match self {
6609                NestedType::Dict => "DICT",
6610                NestedType::Array => "ARRAY",
6611            }
6612        }
6613    }
6614}
6615#[derive(Clone, PartialEq, ::prost::Message)]
6616pub struct ChromeStringTableEntry {
6617    #[prost(string, optional, tag="1")]
6618    pub value: ::core::option::Option<::prost::alloc::string::String>,
6619    #[prost(int32, optional, tag="2")]
6620    pub index: ::core::option::Option<i32>,
6621}
6622/// Deprecated, use TrackEvent protos instead.
6623#[derive(Clone, PartialEq, ::prost::Message)]
6624pub struct ChromeTraceEvent {
6625    #[prost(string, optional, tag="1")]
6626    pub name: ::core::option::Option<::prost::alloc::string::String>,
6627    #[prost(int64, optional, tag="2")]
6628    pub timestamp: ::core::option::Option<i64>,
6629    #[prost(int32, optional, tag="3")]
6630    pub phase: ::core::option::Option<i32>,
6631    #[prost(int32, optional, tag="4")]
6632    pub thread_id: ::core::option::Option<i32>,
6633    #[prost(int64, optional, tag="5")]
6634    pub duration: ::core::option::Option<i64>,
6635    #[prost(int64, optional, tag="6")]
6636    pub thread_duration: ::core::option::Option<i64>,
6637    #[prost(string, optional, tag="7")]
6638    pub scope: ::core::option::Option<::prost::alloc::string::String>,
6639    #[prost(uint64, optional, tag="8")]
6640    pub id: ::core::option::Option<u64>,
6641    #[prost(uint32, optional, tag="9")]
6642    pub flags: ::core::option::Option<u32>,
6643    #[prost(string, optional, tag="10")]
6644    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
6645    #[prost(int32, optional, tag="11")]
6646    pub process_id: ::core::option::Option<i32>,
6647    #[prost(int64, optional, tag="12")]
6648    pub thread_timestamp: ::core::option::Option<i64>,
6649    #[prost(uint64, optional, tag="13")]
6650    pub bind_id: ::core::option::Option<u64>,
6651    #[prost(message, repeated, tag="14")]
6652    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
6653    /// Takes precedence over respectively |name| and
6654    /// |category_group_name_index| if set,
6655    /// and are indices into |string_table|.
6656    #[prost(uint32, optional, tag="15")]
6657    pub name_index: ::core::option::Option<u32>,
6658    #[prost(uint32, optional, tag="16")]
6659    pub category_group_name_index: ::core::option::Option<u32>,
6660}
6661/// Nested message and enum types in `ChromeTraceEvent`.
6662pub mod chrome_trace_event {
6663    #[derive(Clone, PartialEq, ::prost::Message)]
6664    pub struct Arg {
6665        #[prost(string, optional, tag="1")]
6666        pub name: ::core::option::Option<::prost::alloc::string::String>,
6667        /// Takes precedence over |name| if set,
6668        /// and is an index into |string_table|.
6669        #[prost(uint32, optional, tag="9")]
6670        pub name_index: ::core::option::Option<u32>,
6671        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
6672        pub value: ::core::option::Option<arg::Value>,
6673    }
6674    /// Nested message and enum types in `Arg`.
6675    pub mod arg {
6676        #[derive(Clone, PartialEq, ::prost::Oneof)]
6677        pub enum Value {
6678            #[prost(bool, tag="2")]
6679            BoolValue(bool),
6680            #[prost(uint64, tag="3")]
6681            UintValue(u64),
6682            #[prost(int64, tag="4")]
6683            IntValue(i64),
6684            #[prost(double, tag="5")]
6685            DoubleValue(f64),
6686            #[prost(string, tag="6")]
6687            StringValue(::prost::alloc::string::String),
6688            /// Pointers are stored in a separate type as the JSON output treats them
6689            /// differently from other uint64 values.
6690            #[prost(uint64, tag="7")]
6691            PointerValue(u64),
6692            #[prost(string, tag="8")]
6693            JsonValue(::prost::alloc::string::String),
6694            #[prost(message, tag="10")]
6695            TracedValue(super::super::ChromeTracedValue),
6696        }
6697    }
6698}
6699#[derive(Clone, PartialEq, ::prost::Message)]
6700pub struct ChromeMetadata {
6701    #[prost(string, optional, tag="1")]
6702    pub name: ::core::option::Option<::prost::alloc::string::String>,
6703    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
6704    pub value: ::core::option::Option<chrome_metadata::Value>,
6705}
6706/// Nested message and enum types in `ChromeMetadata`.
6707pub mod chrome_metadata {
6708    #[derive(Clone, PartialEq, ::prost::Oneof)]
6709    pub enum Value {
6710        #[prost(string, tag="2")]
6711        StringValue(::prost::alloc::string::String),
6712        #[prost(bool, tag="3")]
6713        BoolValue(bool),
6714        #[prost(int64, tag="4")]
6715        IntValue(i64),
6716        #[prost(string, tag="5")]
6717        JsonValue(::prost::alloc::string::String),
6718    }
6719}
6720/// Subtraces produced in legacy json format by Chrome tracing agents not yet
6721/// updated to support the new binary format, e.g. ETW and CrOS ARC.
6722/// TODO(eseckler): Update these agents to become perfetto producers.
6723#[derive(Clone, PartialEq, ::prost::Message)]
6724pub struct ChromeLegacyJsonTrace {
6725    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
6726    pub r#type: ::core::option::Option<i32>,
6727    #[prost(string, optional, tag="2")]
6728    pub data: ::core::option::Option<::prost::alloc::string::String>,
6729}
6730/// Nested message and enum types in `ChromeLegacyJsonTrace`.
6731pub mod chrome_legacy_json_trace {
6732    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6733    #[repr(i32)]
6734    pub enum TraceType {
6735        UserTrace = 0,
6736        /// Deprecated.
6737        SystemTrace = 1,
6738    }
6739    impl TraceType {
6740        /// String value of the enum field names used in the ProtoBuf definition.
6741        ///
6742        /// The values are not transformed in any way and thus are considered stable
6743        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6744        pub fn as_str_name(&self) -> &'static str {
6745            match self {
6746                TraceType::UserTrace => "USER_TRACE",
6747                TraceType::SystemTrace => "SYSTEM_TRACE",
6748            }
6749        }
6750    }
6751}
6752#[derive(Clone, PartialEq, ::prost::Message)]
6753pub struct ChromeEventBundle {
6754    /// Deprecated, use TrackEvent protos instead.
6755    #[deprecated]
6756    #[prost(message, repeated, tag="1")]
6757    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
6758    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
6759    /// which contains typed fields.
6760    #[prost(message, repeated, tag="2")]
6761    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
6762    /// ftrace output from CrOS and Cast system tracing agents.
6763    /// TODO(eseckler): Replace system traces with native perfetto service.
6764    #[prost(string, repeated, tag="4")]
6765    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6766    #[prost(message, repeated, tag="5")]
6767    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
6768    /// Contents of a string table that's valid for
6769    /// the whole ChromeEventBundle entry.
6770    #[deprecated]
6771    #[prost(message, repeated, tag="3")]
6772    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
6773}
6774// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
6775
6776// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
6777
6778/// Information about a specific trigger during a background tracing scenario
6779/// Associated packet timestamps are useful to delimitate a scenario range in a
6780/// trace. Triggers are also useful for filtering traces.
6781#[derive(Clone, PartialEq, ::prost::Message)]
6782pub struct ChromeTrigger {
6783    /// Name of the trigger which was received.
6784    #[prost(string, optional, tag="1")]
6785    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
6786    /// SHA1 hash of the trigger name.
6787    #[prost(fixed32, optional, tag="2")]
6788    pub trigger_name_hash: ::core::option::Option<u32>,
6789    /// Flow id which should terminate on this trigger.
6790    #[prost(fixed64, optional, tag="3")]
6791    pub flow_id: ::core::option::Option<u64>,
6792}
6793// End of protos/perfetto/trace/chrome/chrome_trigger.proto
6794
6795// Begin of protos/perfetto/trace/chrome/v8.proto
6796
6797// These are the protos for the V8 data source.
6798//
6799// All events are associated to a V8 isolate instance. There can be multiple
6800// instances associated to a given thread, although this is rare.
6801//
6802// Generated code in V8 is allocated in the V8 heap (in a special executeable
6803// section), this means that code can be garbage collected (when no longer used)
6804// or can be moved around (e.g. during heap compactation). This means that a
6805// given callsite might correspond to function `A` at one point in time and to
6806// function `B` later on.
6807// In addition V8 code has various levels of optimization, so a function might
6808// have multiple associated code snippets.
6809//
6810// V8 does not track code deletion, so we have to indirectly infer it by
6811// detecting code overlaps, if a newer code creation event overlaps with older
6812// code we need to asume that the old code was deleted. Code moves are logged,
6813// and there is an event to track those.
6814
6815/// Strings used by V8 can have different encodings, instead of coverting to a
6816/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
6817/// "raw" string and do the convestion at trace ingestion time.
6818///
6819/// ATTENTION: There is some overhead in using a message (as opossed to having
6820/// the `oneof encoded_string`` direcly embedded in the message), so use this
6821/// message in places were these extra bytes don't matter that much.
6822/// Next id: 5
6823#[derive(Clone, PartialEq, ::prost::Message)]
6824pub struct V8String {
6825    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
6826    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
6827}
6828/// Nested message and enum types in `V8String`.
6829pub mod v8_string {
6830    #[derive(Clone, PartialEq, ::prost::Oneof)]
6831    pub enum EncodedString {
6832        /// ISO/IEC 8859-1:1998 encoding aka latin1
6833        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
6834        #[prost(bytes, tag="1")]
6835        Latin1(::prost::alloc::vec::Vec<u8>),
6836        /// UTF-16 Little Endian Encoding
6837        #[prost(bytes, tag="2")]
6838        Utf16Le(::prost::alloc::vec::Vec<u8>),
6839        /// UTF-16 Big Endian Encoding
6840        #[prost(bytes, tag="3")]
6841        Utf16Be(::prost::alloc::vec::Vec<u8>),
6842    }
6843}
6844/// Interned version of V8String
6845#[derive(Clone, PartialEq, ::prost::Message)]
6846pub struct InternedV8String {
6847    #[prost(uint64, optional, tag="1")]
6848    pub iid: ::core::option::Option<u64>,
6849    /// We inline the fields in V8String here to save some bytes in the serialized
6850    /// proto format. Interning is about saving bytes so this makes sense here.
6851    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
6852    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
6853}
6854/// Nested message and enum types in `InternedV8String`.
6855pub mod interned_v8_string {
6856    /// We inline the fields in V8String here to save some bytes in the serialized
6857    /// proto format. Interning is about saving bytes so this makes sense here.
6858    #[derive(Clone, PartialEq, ::prost::Oneof)]
6859    pub enum EncodedString {
6860        /// ISO/IEC 8859-1:1998 encoding aka latin1
6861        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
6862        #[prost(bytes, tag="2")]
6863        Latin1(::prost::alloc::vec::Vec<u8>),
6864        /// UTF-16 Little Endian Encoding
6865        #[prost(bytes, tag="3")]
6866        Utf16Le(::prost::alloc::vec::Vec<u8>),
6867        /// UTF-16 Big Endian Encoding
6868        #[prost(bytes, tag="4")]
6869        Utf16Be(::prost::alloc::vec::Vec<u8>),
6870    }
6871}
6872/// Represents a script that was compiled to generate code. Some V8 code is
6873/// generated out of scripts and will reference a V8Script other types of code
6874/// will not (e.g. builtins).
6875#[derive(Clone, PartialEq, ::prost::Message)]
6876pub struct InternedV8JsScript {
6877    #[prost(uint64, optional, tag="1")]
6878    pub iid: ::core::option::Option<u64>,
6879    /// Unique in a given isolate
6880    #[prost(int32, optional, tag="2")]
6881    pub script_id: ::core::option::Option<i32>,
6882    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
6883    pub r#type: ::core::option::Option<i32>,
6884    #[prost(message, optional, tag="4")]
6885    pub name: ::core::option::Option<V8String>,
6886    /// Actual source of the script
6887    #[prost(message, optional, tag="5")]
6888    pub source: ::core::option::Option<V8String>,
6889}
6890/// Nested message and enum types in `InternedV8JsScript`.
6891pub mod interned_v8_js_script {
6892    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6893    #[repr(i32)]
6894    pub enum Type {
6895        Unknown = 0,
6896        Normal = 1,
6897        Eval = 2,
6898        Module = 3,
6899        Native = 4,
6900        Extension = 5,
6901        Inspector = 6,
6902    }
6903    impl Type {
6904        /// String value of the enum field names used in the ProtoBuf definition.
6905        ///
6906        /// The values are not transformed in any way and thus are considered stable
6907        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6908        pub fn as_str_name(&self) -> &'static str {
6909            match self {
6910                Type::Unknown => "TYPE_UNKNOWN",
6911                Type::Normal => "TYPE_NORMAL",
6912                Type::Eval => "TYPE_EVAL",
6913                Type::Module => "TYPE_MODULE",
6914                Type::Native => "TYPE_NATIVE",
6915                Type::Extension => "TYPE_EXTENSION",
6916                Type::Inspector => "TYPE_INSPECTOR",
6917            }
6918        }
6919    }
6920}
6921#[derive(Clone, PartialEq, ::prost::Message)]
6922pub struct InternedV8WasmScript {
6923    #[prost(uint64, optional, tag="1")]
6924    pub iid: ::core::option::Option<u64>,
6925    /// Unique in a given isolate
6926    #[prost(int32, optional, tag="2")]
6927    pub script_id: ::core::option::Option<i32>,
6928    #[prost(string, optional, tag="3")]
6929    pub url: ::core::option::Option<::prost::alloc::string::String>,
6930    /// Raw transferred wasm native module wire bytes.
6931    #[prost(bytes="vec", optional, tag="4")]
6932    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6933}
6934#[derive(Clone, PartialEq, ::prost::Message)]
6935pub struct InternedV8JsFunction {
6936    #[prost(uint64, optional, tag="1")]
6937    pub iid: ::core::option::Option<u64>,
6938    #[prost(uint64, optional, tag="2")]
6939    pub v8_js_function_name_iid: ::core::option::Option<u64>,
6940    #[prost(uint64, optional, tag="3")]
6941    pub v8_js_script_iid: ::core::option::Option<u64>,
6942    #[prost(bool, optional, tag="4")]
6943    pub is_toplevel: ::core::option::Option<bool>,
6944    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
6945    pub kind: ::core::option::Option<i32>,
6946    /// Where in the script source this function is defined. This is counted in
6947    /// bytes not characters.
6948    #[prost(uint32, optional, tag="6")]
6949    pub byte_offset: ::core::option::Option<u32>,
6950    #[prost(uint32, optional, tag="7")]
6951    pub line: ::core::option::Option<u32>,
6952    #[prost(uint32, optional, tag="8")]
6953    pub column: ::core::option::Option<u32>,
6954}
6955/// Nested message and enum types in `InternedV8JsFunction`.
6956pub mod interned_v8_js_function {
6957    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6958    #[repr(i32)]
6959    pub enum Kind {
6960        Unknown = 0,
6961        NormalFunction = 1,
6962        Module = 2,
6963        AsyncModule = 3,
6964        BaseConstructor = 4,
6965        DefaultBaseConstructor = 5,
6966        DefaultDerivedConstructor = 6,
6967        DerivedConstructor = 7,
6968        GetterFunction = 8,
6969        StaticGetterFunction = 9,
6970        SetterFunction = 10,
6971        StaticSetterFunction = 11,
6972        ArrowFunction = 12,
6973        AsyncArrowFunction = 13,
6974        AsyncFunction = 14,
6975        AsyncConciseMethod = 15,
6976        StaticAsyncConciseMethod = 16,
6977        AsyncConciseGeneratorMethod = 17,
6978        StaticAsyncConciseGeneratorMethod = 18,
6979        AsyncGeneratorFunction = 19,
6980        GeneratorFunction = 20,
6981        ConciseGeneratorMethod = 21,
6982        StaticConciseGeneratorMethod = 22,
6983        ConciseMethod = 23,
6984        StaticConciseMethod = 24,
6985        ClassMembersInitializerFunction = 25,
6986        ClassStaticInitializerFunction = 26,
6987        Invalid = 27,
6988    }
6989    impl Kind {
6990        /// String value of the enum field names used in the ProtoBuf definition.
6991        ///
6992        /// The values are not transformed in any way and thus are considered stable
6993        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6994        pub fn as_str_name(&self) -> &'static str {
6995            match self {
6996                Kind::Unknown => "KIND_UNKNOWN",
6997                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
6998                Kind::Module => "KIND_MODULE",
6999                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7000                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7001                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7002                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7003                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7004                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7005                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7006                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7007                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7008                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7009                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7010                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7011                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7012                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7013                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7014                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7015                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7016                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7017                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7018                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7019                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7020                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7021                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7022                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7023                Kind::Invalid => "KIND_INVALID",
7024            }
7025        }
7026    }
7027}
7028/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7029/// engine.
7030#[derive(Clone, PartialEq, ::prost::Message)]
7031pub struct InternedV8Isolate {
7032    #[prost(uint64, optional, tag="1")]
7033    pub iid: ::core::option::Option<u64>,
7034    #[prost(uint32, optional, tag="2")]
7035    pub pid: ::core::option::Option<u32>,
7036    /// Process unique isolate id.
7037    #[prost(int32, optional, tag="3")]
7038    pub isolate_id: ::core::option::Option<i32>,
7039    #[prost(message, optional, tag="4")]
7040    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7041    /// The embedded blob holds code for built in functions that are precompiled in
7042    /// the V8 library.
7043    #[prost(uint64, optional, tag="5")]
7044    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7045    #[prost(uint64, optional, tag="6")]
7046    pub embedded_blob_code_size: ::core::option::Option<u64>,
7047}
7048/// Nested message and enum types in `InternedV8Isolate`.
7049pub mod interned_v8_isolate {
7050    /// A code range is a virtual memory cage that may contain executable code.
7051    /// Depending on the Isolate settings the Isolate might have one or not.
7052    /// See:
7053    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7054    /// If the isolate defines code range this will be tracked here.
7055    #[derive(Clone, PartialEq, ::prost::Message)]
7056    pub struct CodeRange {
7057        #[prost(uint64, optional, tag="1")]
7058        pub base_address: ::core::option::Option<u64>,
7059        #[prost(uint64, optional, tag="2")]
7060        pub size: ::core::option::Option<u64>,
7061        /// Used when short builtin calls are enabled, where embedded builtins are
7062        /// copied into the CodeRange so calls can be nearer.
7063        #[prost(uint64, optional, tag="3")]
7064        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7065        /// Whether this code range is shared with other Isolates in the same process
7066        #[prost(bool, optional, tag="4")]
7067        pub is_process_wide: ::core::option::Option<bool>,
7068    }
7069}
7070#[derive(Clone, PartialEq, ::prost::Message)]
7071pub struct V8JsCode {
7072    #[prost(uint64, optional, tag="1")]
7073    pub v8_isolate_iid: ::core::option::Option<u64>,
7074    #[prost(uint32, optional, tag="2")]
7075    pub tid: ::core::option::Option<u32>,
7076    #[prost(uint64, optional, tag="3")]
7077    pub v8_js_function_iid: ::core::option::Option<u64>,
7078    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7079    pub tier: ::core::option::Option<i32>,
7080    #[prost(uint64, optional, tag="5")]
7081    pub instruction_start: ::core::option::Option<u64>,
7082    #[prost(uint64, optional, tag="6")]
7083    pub instruction_size_bytes: ::core::option::Option<u64>,
7084    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7085    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7086}
7087/// Nested message and enum types in `V8JsCode`.
7088pub mod v8_js_code {
7089    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7090    #[repr(i32)]
7091    pub enum Tier {
7092        Unknown = 0,
7093        Ignition = 1,
7094        Sparkplug = 2,
7095        Maglev = 3,
7096        Turboshaft = 4,
7097        Turbofan = 5,
7098    }
7099    impl Tier {
7100        /// String value of the enum field names used in the ProtoBuf definition.
7101        ///
7102        /// The values are not transformed in any way and thus are considered stable
7103        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7104        pub fn as_str_name(&self) -> &'static str {
7105            match self {
7106                Tier::Unknown => "TIER_UNKNOWN",
7107                Tier::Ignition => "TIER_IGNITION",
7108                Tier::Sparkplug => "TIER_SPARKPLUG",
7109                Tier::Maglev => "TIER_MAGLEV",
7110                Tier::Turboshaft => "TIER_TURBOSHAFT",
7111                Tier::Turbofan => "TIER_TURBOFAN",
7112            }
7113        }
7114    }
7115    #[derive(Clone, PartialEq, ::prost::Oneof)]
7116    pub enum Instructions {
7117        #[prost(bytes, tag="7")]
7118        MachineCode(::prost::alloc::vec::Vec<u8>),
7119        #[prost(bytes, tag="8")]
7120        Bytecode(::prost::alloc::vec::Vec<u8>),
7121    }
7122}
7123#[derive(Clone, PartialEq, ::prost::Message)]
7124pub struct V8InternalCode {
7125    #[prost(uint64, optional, tag="1")]
7126    pub v8_isolate_iid: ::core::option::Option<u64>,
7127    #[prost(uint32, optional, tag="2")]
7128    pub tid: ::core::option::Option<u32>,
7129    #[prost(string, optional, tag="3")]
7130    pub name: ::core::option::Option<::prost::alloc::string::String>,
7131    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7132    pub r#type: ::core::option::Option<i32>,
7133    #[prost(int32, optional, tag="5")]
7134    pub builtin_id: ::core::option::Option<i32>,
7135    #[prost(uint64, optional, tag="6")]
7136    pub instruction_start: ::core::option::Option<u64>,
7137    #[prost(uint64, optional, tag="7")]
7138    pub instruction_size_bytes: ::core::option::Option<u64>,
7139    #[prost(bytes="vec", optional, tag="8")]
7140    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7141}
7142/// Nested message and enum types in `V8InternalCode`.
7143pub mod v8_internal_code {
7144    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7145    #[repr(i32)]
7146    pub enum Type {
7147        Unknown = 0,
7148        BytecodeHandler = 1,
7149        ForTesting = 2,
7150        Builtin = 3,
7151        WasmFunction = 4,
7152        WasmToCapiFunction = 5,
7153        WasmToJsFunction = 6,
7154        JsToWasmFunction = 7,
7155        JsToJsFunction = 8,
7156        CWasmEntry = 9,
7157    }
7158    impl Type {
7159        /// String value of the enum field names used in the ProtoBuf definition.
7160        ///
7161        /// The values are not transformed in any way and thus are considered stable
7162        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7163        pub fn as_str_name(&self) -> &'static str {
7164            match self {
7165                Type::Unknown => "TYPE_UNKNOWN",
7166                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7167                Type::ForTesting => "TYPE_FOR_TESTING",
7168                Type::Builtin => "TYPE_BUILTIN",
7169                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7170                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7171                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7172                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7173                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7174                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7175            }
7176        }
7177    }
7178}
7179#[derive(Clone, PartialEq, ::prost::Message)]
7180pub struct V8WasmCode {
7181    #[prost(uint64, optional, tag="1")]
7182    pub v8_isolate_iid: ::core::option::Option<u64>,
7183    #[prost(uint32, optional, tag="2")]
7184    pub tid: ::core::option::Option<u32>,
7185    #[prost(uint64, optional, tag="3")]
7186    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7187    #[prost(string, optional, tag="4")]
7188    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7189    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7190    pub tier: ::core::option::Option<i32>,
7191    #[prost(int32, optional, tag="6")]
7192    pub code_offset_in_module: ::core::option::Option<i32>,
7193    #[prost(uint64, optional, tag="7")]
7194    pub instruction_start: ::core::option::Option<u64>,
7195    #[prost(uint64, optional, tag="8")]
7196    pub instruction_size_bytes: ::core::option::Option<u64>,
7197    #[prost(bytes="vec", optional, tag="9")]
7198    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7199}
7200/// Nested message and enum types in `V8WasmCode`.
7201pub mod v8_wasm_code {
7202    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7203    #[repr(i32)]
7204    pub enum Tier {
7205        Unknown = 0,
7206        Liftoff = 1,
7207        Turbofan = 2,
7208    }
7209    impl Tier {
7210        /// String value of the enum field names used in the ProtoBuf definition.
7211        ///
7212        /// The values are not transformed in any way and thus are considered stable
7213        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7214        pub fn as_str_name(&self) -> &'static str {
7215            match self {
7216                Tier::Unknown => "TIER_UNKNOWN",
7217                Tier::Liftoff => "TIER_LIFTOFF",
7218                Tier::Turbofan => "TIER_TURBOFAN",
7219            }
7220        }
7221    }
7222}
7223#[derive(Clone, PartialEq, ::prost::Message)]
7224pub struct V8RegExpCode {
7225    #[prost(uint64, optional, tag="1")]
7226    pub v8_isolate_iid: ::core::option::Option<u64>,
7227    #[prost(uint32, optional, tag="2")]
7228    pub tid: ::core::option::Option<u32>,
7229    #[prost(message, optional, tag="3")]
7230    pub pattern: ::core::option::Option<V8String>,
7231    #[prost(uint64, optional, tag="4")]
7232    pub instruction_start: ::core::option::Option<u64>,
7233    #[prost(uint64, optional, tag="5")]
7234    pub instruction_size_bytes: ::core::option::Option<u64>,
7235    #[prost(bytes="vec", optional, tag="6")]
7236    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7237}
7238/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7239/// memory by V8's GC.
7240#[derive(Clone, PartialEq, ::prost::Message)]
7241pub struct V8CodeMove {
7242    #[prost(uint64, optional, tag="1")]
7243    pub isolate_iid: ::core::option::Option<u64>,
7244    #[prost(uint32, optional, tag="2")]
7245    pub tid: ::core::option::Option<u32>,
7246    #[prost(uint64, optional, tag="3")]
7247    pub from_instruction_start_address: ::core::option::Option<u64>,
7248    #[prost(uint64, optional, tag="4")]
7249    pub to_instruction_start_address: ::core::option::Option<u64>,
7250    #[prost(uint64, optional, tag="5")]
7251    pub instruction_size_bytes: ::core::option::Option<u64>,
7252    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7253    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7254}
7255/// Nested message and enum types in `V8CodeMove`.
7256pub mod v8_code_move {
7257    #[derive(Clone, PartialEq, ::prost::Oneof)]
7258    pub enum ToInstructions {
7259        #[prost(bytes, tag="6")]
7260        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7261        #[prost(bytes, tag="7")]
7262        ToBytecode(::prost::alloc::vec::Vec<u8>),
7263    }
7264}
7265#[derive(Clone, PartialEq, ::prost::Message)]
7266pub struct V8CodeDefaults {
7267    #[prost(uint32, optional, tag="1")]
7268    pub tid: ::core::option::Option<u32>,
7269}
7270// End of protos/perfetto/trace/chrome/v8.proto
7271
7272// Begin of protos/perfetto/trace/clock_snapshot.proto
7273
7274/// A snapshot of clock readings to allow for trace alignment.
7275#[derive(Clone, PartialEq, ::prost::Message)]
7276pub struct ClockSnapshot {
7277    #[prost(message, repeated, tag="1")]
7278    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
7279    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
7280    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
7281    /// attempt to translate packet/event timestamps from various data sources (and
7282    /// their chosen clock domains) to this domain during import.
7283    #[prost(enumeration="BuiltinClock", optional, tag="2")]
7284    pub primary_trace_clock: ::core::option::Option<i32>,
7285}
7286/// Nested message and enum types in `ClockSnapshot`.
7287pub mod clock_snapshot {
7288    #[derive(Clone, PartialEq, ::prost::Message)]
7289    pub struct Clock {
7290        /// Clock IDs have the following semantic:
7291        /// [1, 63]:    Builtin types, see BuiltinClock from
7292        ///              ../common/builtin_clock.proto.
7293        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
7294        ///              are only valid within the same |trusted_packet_sequence_id|
7295        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
7296        ///              that emitted the clock snapshot).
7297        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
7298        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
7299        #[prost(uint32, optional, tag="1")]
7300        pub clock_id: ::core::option::Option<u32>,
7301        /// Absolute timestamp. Unit is ns unless specified otherwise by the
7302        /// unit_multiplier_ns field below.
7303        #[prost(uint64, optional, tag="2")]
7304        pub timestamp: ::core::option::Option<u64>,
7305        /// When true each TracePacket's timestamp should be interpreted as a delta
7306        /// from the last TracePacket's timestamp (referencing this clock) emitted by
7307        /// the same packet_sequence_id. Should only be used for user-defined
7308        /// sequence-local clocks. The first packet timestamp after each
7309        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
7310        /// the ClockSnapshot.
7311        #[prost(bool, optional, tag="3")]
7312        pub is_incremental: ::core::option::Option<bool>,
7313        /// Allows to specify a custom unit different than the default (ns) for this
7314        /// clock domain. A multiplier of 1000 means that a timestamp = 3 should be
7315        /// interpreted as 3000 ns = 3 us. All snapshots for the same clock within a
7316        /// trace need to use the same unit.
7317        #[prost(uint64, optional, tag="4")]
7318        pub unit_multiplier_ns: ::core::option::Option<u64>,
7319    }
7320    /// Nested message and enum types in `Clock`.
7321    pub mod clock {
7322        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
7323        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7324        #[repr(i32)]
7325        pub enum BuiltinClocks {
7326            Unknown = 0,
7327            Realtime = 1,
7328            RealtimeCoarse = 2,
7329            Monotonic = 3,
7330            MonotonicCoarse = 4,
7331            MonotonicRaw = 5,
7332            Boottime = 6,
7333            BuiltinClockMaxId = 63,
7334        }
7335        impl BuiltinClocks {
7336            /// String value of the enum field names used in the ProtoBuf definition.
7337            ///
7338            /// The values are not transformed in any way and thus are considered stable
7339            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7340            pub fn as_str_name(&self) -> &'static str {
7341                match self {
7342                    BuiltinClocks::Unknown => "UNKNOWN",
7343                    BuiltinClocks::Realtime => "REALTIME",
7344                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
7345                    BuiltinClocks::Monotonic => "MONOTONIC",
7346                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
7347                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
7348                    BuiltinClocks::Boottime => "BOOTTIME",
7349                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
7350                }
7351            }
7352        }
7353    }
7354}
7355// End of protos/perfetto/trace/clock_snapshot.proto
7356
7357// Begin of protos/perfetto/trace/etw/etw.proto
7358
7359/// Proto definition based on the Thread_v2 CSwitch class definition
7360/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
7361#[derive(Clone, PartialEq, ::prost::Message)]
7362pub struct CSwitchEtwEvent {
7363    /// New thread ID after the switch.
7364    #[prost(uint32, optional, tag="1")]
7365    pub new_thread_id: ::core::option::Option<u32>,
7366    /// Previous thread ID.
7367    #[prost(uint32, optional, tag="2")]
7368    pub old_thread_id: ::core::option::Option<u32>,
7369    /// Thread priority of the new thread.
7370    #[prost(sint32, optional, tag="3")]
7371    pub new_thread_priority: ::core::option::Option<i32>,
7372    /// Thread priority of the previous thread.
7373    #[prost(sint32, optional, tag="4")]
7374    pub old_thread_priority: ::core::option::Option<i32>,
7375    /// The index of the C-state that was last used by the processor. A value of 0
7376    /// represents the lightest idle state with higher values representing deeper
7377    /// C-states.
7378    #[prost(uint32, optional, tag="5")]
7379    pub previous_c_state: ::core::option::Option<u32>,
7380    #[prost(enumeration="c_switch_etw_event::OldThreadWaitReason", optional, tag="6")]
7381    pub old_thread_wait_reason: ::core::option::Option<i32>,
7382    #[prost(enumeration="c_switch_etw_event::OldThreadWaitMode", optional, tag="7")]
7383    pub old_thread_wait_mode: ::core::option::Option<i32>,
7384    #[prost(enumeration="c_switch_etw_event::OldThreadState", optional, tag="8")]
7385    pub old_thread_state: ::core::option::Option<i32>,
7386    /// Ideal wait time of the previous thread.
7387    #[prost(sint32, optional, tag="9")]
7388    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
7389    /// Wait time for the new thread.
7390    #[prost(uint32, optional, tag="10")]
7391    pub new_thread_wait_time: ::core::option::Option<u32>,
7392}
7393/// Nested message and enum types in `CSwitchEtwEvent`.
7394pub mod c_switch_etw_event {
7395    /// Wait reason for the previous thread. The ordering is important as based on
7396    /// the OldThreadWaitReason definition from the link above. The following are
7397    /// the possible values:
7398    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7399    #[repr(i32)]
7400    pub enum OldThreadWaitReason {
7401        Executive = 0,
7402        FreePage = 1,
7403        PageIn = 2,
7404        PoolAllocation = 3,
7405        DelayExecution = 4,
7406        Suspend = 5,
7407        UserRequest = 6,
7408        WrExecutive = 7,
7409        WrFreePage = 8,
7410        WrPageIn = 9,
7411        WrPoolAllocation = 10,
7412        WrDelayExecution = 11,
7413        WrSuspended = 12,
7414        WrUserRequest = 13,
7415        WrEventPair = 14,
7416        WrQueue = 15,
7417        WrLpcReceiver = 16,
7418        WrLpcReply = 17,
7419        WrVirtualMemory = 18,
7420        WrPageOut = 19,
7421        WrRendezVous = 20,
7422        WrKeyedEvent = 21,
7423        WrTerminated = 22,
7424        WrProcessInSwap = 23,
7425        WrCpuRateControl = 24,
7426        WrCalloutStack = 25,
7427        WrKernel = 26,
7428        WrResource = 27,
7429        WrPushLock = 28,
7430        WrMutex = 29,
7431        WrQuantumEnd = 30,
7432        WrDispatchInt = 31,
7433        WrPreempted = 32,
7434        WrYieldExecution = 33,
7435        WrFastMutex = 34,
7436        WrGuardMutex = 35,
7437        WrRundown = 36,
7438        MaximumWaitReason = 37,
7439    }
7440    impl OldThreadWaitReason {
7441        /// String value of the enum field names used in the ProtoBuf definition.
7442        ///
7443        /// The values are not transformed in any way and thus are considered stable
7444        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7445        pub fn as_str_name(&self) -> &'static str {
7446            match self {
7447                OldThreadWaitReason::Executive => "EXECUTIVE",
7448                OldThreadWaitReason::FreePage => "FREE_PAGE",
7449                OldThreadWaitReason::PageIn => "PAGE_IN",
7450                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
7451                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
7452                OldThreadWaitReason::Suspend => "SUSPEND",
7453                OldThreadWaitReason::UserRequest => "USER_REQUEST",
7454                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
7455                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
7456                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
7457                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
7458                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
7459                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
7460                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
7461                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
7462                OldThreadWaitReason::WrQueue => "WR_QUEUE",
7463                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
7464                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
7465                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
7466                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
7467                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
7468                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
7469                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
7470                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
7471                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
7472                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
7473                OldThreadWaitReason::WrKernel => "WR_KERNEL",
7474                OldThreadWaitReason::WrResource => "WR_RESOURCE",
7475                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
7476                OldThreadWaitReason::WrMutex => "WR_MUTEX",
7477                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
7478                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
7479                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
7480                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
7481                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
7482                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
7483                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
7484                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
7485            }
7486        }
7487    }
7488    /// Wait mode for the previous thread. The ordering is important as based on
7489    /// the OldThreadWaitMode definition from the link above. The following are the
7490    /// possible values:
7491    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7492    #[repr(i32)]
7493    pub enum OldThreadWaitMode {
7494        KernelMode = 0,
7495        UserMode = 1,
7496    }
7497    impl OldThreadWaitMode {
7498        /// String value of the enum field names used in the ProtoBuf definition.
7499        ///
7500        /// The values are not transformed in any way and thus are considered stable
7501        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7502        pub fn as_str_name(&self) -> &'static str {
7503            match self {
7504                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
7505                OldThreadWaitMode::UserMode => "USER_MODE",
7506            }
7507        }
7508    }
7509    /// State of the previous thread. The ordering is important as based on the
7510    /// OldThreadState definition from the link above. The following are the
7511    /// possible state values:
7512    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7513    #[repr(i32)]
7514    pub enum OldThreadState {
7515        Initialized = 0,
7516        Ready = 1,
7517        Running = 2,
7518        Standby = 3,
7519        Terminated = 4,
7520        Waiting = 5,
7521        Transition = 6,
7522        DeferredReady = 7,
7523    }
7524    impl OldThreadState {
7525        /// String value of the enum field names used in the ProtoBuf definition.
7526        ///
7527        /// The values are not transformed in any way and thus are considered stable
7528        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7529        pub fn as_str_name(&self) -> &'static str {
7530            match self {
7531                OldThreadState::Initialized => "INITIALIZED",
7532                OldThreadState::Ready => "READY",
7533                OldThreadState::Running => "RUNNING",
7534                OldThreadState::Standby => "STANDBY",
7535                OldThreadState::Terminated => "TERMINATED",
7536                OldThreadState::Waiting => "WAITING",
7537                OldThreadState::Transition => "TRANSITION",
7538                OldThreadState::DeferredReady => "DEFERRED_READY",
7539            }
7540        }
7541    }
7542}
7543/// Proto definition based on the Thread_v2 CSwitch class definition
7544/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
7545#[derive(Clone, PartialEq, ::prost::Message)]
7546pub struct ReadyThreadEtwEvent {
7547    /// The thread identifier of the thread being readied for execution.
7548    #[prost(uint32, optional, tag="1")]
7549    pub t_thread_id: ::core::option::Option<u32>,
7550    #[prost(enumeration="ready_thread_etw_event::AdjustReason", optional, tag="2")]
7551    pub adjust_reason: ::core::option::Option<i32>,
7552    ///   The value by which the priority is being adjusted.
7553    #[prost(sint32, optional, tag="3")]
7554    pub adjust_increment: ::core::option::Option<i32>,
7555    #[prost(enumeration="ready_thread_etw_event::TraceFlag", optional, tag="4")]
7556    pub flag: ::core::option::Option<i32>,
7557}
7558/// Nested message and enum types in `ReadyThreadEtwEvent`.
7559pub mod ready_thread_etw_event {
7560    /// The reason for the priority boost. The ordering is important as based on
7561    /// the AdjustReason definition from the link above.
7562    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7563    #[repr(i32)]
7564    pub enum AdjustReason {
7565        IgnoreTheIncrement = 0,
7566        /// Apply the increment, which will decay incrementally at the end of each
7567        /// quantum.
7568        ApplyIncrement = 1,
7569        /// Apply the increment as a boost that will decay in its entirety at quantum
7570        /// (typically for priority donation).
7571        ApplyIncrementBoost = 2,
7572    }
7573    impl AdjustReason {
7574        /// String value of the enum field names used in the ProtoBuf definition.
7575        ///
7576        /// The values are not transformed in any way and thus are considered stable
7577        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7578        pub fn as_str_name(&self) -> &'static str {
7579            match self {
7580                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
7581                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
7582                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
7583            }
7584        }
7585    }
7586    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7587    #[repr(i32)]
7588    pub enum TraceFlag {
7589        Unspecified = 0,
7590        /// The thread has been readied from DPC (deferred procedure call).
7591        ThreadReadied = 1,
7592        /// The kernel stack is currently swapped out.
7593        KernelStackSwappedOut = 2,
7594        /// The process address space is swapped out.
7595        ProcessAddressSwappedOut = 4,
7596    }
7597    impl TraceFlag {
7598        /// String value of the enum field names used in the ProtoBuf definition.
7599        ///
7600        /// The values are not transformed in any way and thus are considered stable
7601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7602        pub fn as_str_name(&self) -> &'static str {
7603            match self {
7604                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
7605                TraceFlag::ThreadReadied => "THREAD_READIED",
7606                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
7607                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
7608            }
7609        }
7610    }
7611}
7612// Begin of protos/perfetto/trace/etw/etw_event.proto
7613
7614#[derive(Clone, PartialEq, ::prost::Message)]
7615pub struct EtwTraceEvent {
7616    #[prost(uint64, optional, tag="1")]
7617    pub timestamp: ::core::option::Option<u64>,
7618    #[prost(uint32, optional, tag="4")]
7619    pub cpu: ::core::option::Option<u32>,
7620    #[prost(oneof="etw_trace_event::Event", tags="2, 3")]
7621    pub event: ::core::option::Option<etw_trace_event::Event>,
7622}
7623/// Nested message and enum types in `EtwTraceEvent`.
7624pub mod etw_trace_event {
7625    #[derive(Clone, PartialEq, ::prost::Oneof)]
7626    pub enum Event {
7627        #[prost(message, tag="2")]
7628        CSwitch(super::CSwitchEtwEvent),
7629        #[prost(message, tag="3")]
7630        ReadyThread(super::ReadyThreadEtwEvent),
7631    }
7632}
7633// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
7634
7635/// The result of tracing one or more etw event uses per-processor buffers where
7636/// an in-use buffer is assigned to each processor at all times. Therefore,
7637/// collecting multiple events they should already be synchronized.
7638#[derive(Clone, PartialEq, ::prost::Message)]
7639pub struct EtwTraceEventBundle {
7640    #[prost(uint32, optional, tag="1")]
7641    pub cpu: ::core::option::Option<u32>,
7642    #[prost(message, repeated, tag="2")]
7643    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
7644}
7645// Begin of protos/perfetto/common/descriptor.proto
7646
7647/// The protocol compiler can output a FileDescriptorSet containing the .proto
7648/// files it parses.
7649#[derive(Clone, PartialEq, ::prost::Message)]
7650pub struct FileDescriptorSet {
7651    #[prost(message, repeated, tag="1")]
7652    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
7653}
7654/// Describes a complete .proto file.
7655#[derive(Clone, PartialEq, ::prost::Message)]
7656pub struct FileDescriptorProto {
7657    /// file name, relative to root of source tree
7658    #[prost(string, optional, tag="1")]
7659    pub name: ::core::option::Option<::prost::alloc::string::String>,
7660    /// e.g. "foo", "foo.bar", etc.
7661    #[prost(string, optional, tag="2")]
7662    pub package: ::core::option::Option<::prost::alloc::string::String>,
7663    /// Names of files imported by this file.
7664    #[prost(string, repeated, tag="3")]
7665    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7666    /// Indexes of the public imported files in the dependency list above.
7667    #[prost(int32, repeated, packed="false", tag="10")]
7668    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
7669    /// Indexes of the weak imported files in the dependency list.
7670    /// For Google-internal migration only. Do not use.
7671    #[prost(int32, repeated, packed="false", tag="11")]
7672    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
7673    /// All top-level definitions in this file.
7674    #[prost(message, repeated, tag="4")]
7675    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
7676    #[prost(message, repeated, tag="5")]
7677    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
7678    #[prost(message, repeated, tag="7")]
7679    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
7680}
7681/// Describes a message type.
7682#[derive(Clone, PartialEq, ::prost::Message)]
7683pub struct DescriptorProto {
7684    #[prost(string, optional, tag="1")]
7685    pub name: ::core::option::Option<::prost::alloc::string::String>,
7686    #[prost(message, repeated, tag="2")]
7687    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
7688    #[prost(message, repeated, tag="6")]
7689    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
7690    #[prost(message, repeated, tag="3")]
7691    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
7692    #[prost(message, repeated, tag="4")]
7693    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
7694    #[prost(message, repeated, tag="8")]
7695    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
7696    #[prost(message, repeated, tag="9")]
7697    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
7698    /// Reserved field names, which may not be used by fields in the same message.
7699    /// A given name may only be reserved once.
7700    #[prost(string, repeated, tag="10")]
7701    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7702}
7703/// Nested message and enum types in `DescriptorProto`.
7704pub mod descriptor_proto {
7705    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
7706    /// fields or extension ranges in the same message. Reserved ranges may
7707    /// not overlap.
7708    #[derive(Clone, PartialEq, ::prost::Message)]
7709    pub struct ReservedRange {
7710        /// Inclusive.
7711        #[prost(int32, optional, tag="1")]
7712        pub start: ::core::option::Option<i32>,
7713        /// Exclusive.
7714        #[prost(int32, optional, tag="2")]
7715        pub end: ::core::option::Option<i32>,
7716    }
7717}
7718/// A message representing a option the parser does not recognize. This only
7719/// appears in options protos created by the compiler::Parser class.
7720/// DescriptorPool resolves these when building Descriptor objects. Therefore,
7721/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
7722/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
7723/// in them.
7724#[derive(Clone, PartialEq, ::prost::Message)]
7725pub struct UninterpretedOption {
7726    #[prost(message, repeated, tag="2")]
7727    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
7728    /// The value of the uninterpreted option, in whatever type the tokenizer
7729    /// identified it as during parsing. Exactly one of these should be set.
7730    #[prost(string, optional, tag="3")]
7731    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
7732    #[prost(uint64, optional, tag="4")]
7733    pub positive_int_value: ::core::option::Option<u64>,
7734    #[prost(int64, optional, tag="5")]
7735    pub negative_int_value: ::core::option::Option<i64>,
7736    #[prost(double, optional, tag="6")]
7737    pub double_value: ::core::option::Option<f64>,
7738    #[prost(bytes="vec", optional, tag="7")]
7739    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7740    #[prost(string, optional, tag="8")]
7741    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
7742}
7743/// Nested message and enum types in `UninterpretedOption`.
7744pub mod uninterpreted_option {
7745    /// The name of the uninterpreted option.  Each string represents a segment in
7746    /// a dot-separated name.  is_extension is true iff a segment represents an
7747    /// extension (denoted with parentheses in options specs in .proto files).
7748    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
7749    /// "foo.(bar.baz).moo".
7750    #[derive(Clone, PartialEq, ::prost::Message)]
7751    pub struct NamePart {
7752        #[prost(string, optional, tag="1")]
7753        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
7754        #[prost(bool, optional, tag="2")]
7755        pub is_extension: ::core::option::Option<bool>,
7756    }
7757}
7758#[derive(Clone, PartialEq, ::prost::Message)]
7759pub struct FieldOptions {
7760    /// The packed option can be enabled for repeated primitive fields to enable
7761    /// a more efficient representation on the wire. Rather than repeatedly
7762    /// writing the tag and type for each element, the entire array is encoded as
7763    /// a single length-delimited blob. In proto3, only explicit setting it to
7764    /// false will avoid using packed encoding.
7765    #[prost(bool, optional, tag="2")]
7766    pub packed: ::core::option::Option<bool>,
7767    /// The parser stores options it doesn't recognize here. See above.
7768    #[prost(message, repeated, tag="999")]
7769    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
7770}
7771/// Describes a field within a message.
7772#[derive(Clone, PartialEq, ::prost::Message)]
7773pub struct FieldDescriptorProto {
7774    #[prost(string, optional, tag="1")]
7775    pub name: ::core::option::Option<::prost::alloc::string::String>,
7776    #[prost(int32, optional, tag="3")]
7777    pub number: ::core::option::Option<i32>,
7778    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
7779    pub label: ::core::option::Option<i32>,
7780    /// If type_name is set, this need not be set.  If both this and type_name
7781    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
7782    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
7783    pub r#type: ::core::option::Option<i32>,
7784    /// For message and enum types, this is the name of the type.  If the name
7785    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
7786    /// rules are used to find the type (i.e. first the nested types within this
7787    /// message are searched, then within the parent, on up to the root
7788    /// namespace).
7789    #[prost(string, optional, tag="6")]
7790    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
7791    /// For extensions, this is the name of the type being extended.  It is
7792    /// resolved in the same manner as type_name.
7793    #[prost(string, optional, tag="2")]
7794    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
7795    /// For numeric types, contains the original text representation of the value.
7796    /// For booleans, "true" or "false".
7797    /// For strings, contains the default text contents (not escaped in any way).
7798    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
7799    /// TODO(kenton):  Base-64 encode?
7800    #[prost(string, optional, tag="7")]
7801    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
7802    #[prost(message, optional, tag="8")]
7803    pub options: ::core::option::Option<FieldOptions>,
7804    /// If set, gives the index of a oneof in the containing type's oneof_decl
7805    /// list.  This field is a member of that oneof.
7806    #[prost(int32, optional, tag="9")]
7807    pub oneof_index: ::core::option::Option<i32>,
7808}
7809/// Nested message and enum types in `FieldDescriptorProto`.
7810pub mod field_descriptor_proto {
7811    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7812    #[repr(i32)]
7813    pub enum Type {
7814        /// 0 is reserved for errors.
7815        /// Order is weird for historical reasons.
7816        Double = 1,
7817        Float = 2,
7818        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
7819        /// negative values are likely.
7820        Int64 = 3,
7821        Uint64 = 4,
7822        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
7823        /// negative values are likely.
7824        Int32 = 5,
7825        Fixed64 = 6,
7826        Fixed32 = 7,
7827        Bool = 8,
7828        String = 9,
7829        /// Tag-delimited aggregate.
7830        /// Group type is deprecated and not supported in proto3. However, Proto3
7831        /// implementations should still be able to parse the group wire format and
7832        /// treat group fields as unknown fields.
7833        Group = 10,
7834        /// Length-delimited aggregate.
7835        Message = 11,
7836        /// New in version 2.
7837        Bytes = 12,
7838        Uint32 = 13,
7839        Enum = 14,
7840        Sfixed32 = 15,
7841        Sfixed64 = 16,
7842        /// Uses ZigZag encoding.
7843        Sint32 = 17,
7844        /// Uses ZigZag encoding.
7845        Sint64 = 18,
7846    }
7847    impl Type {
7848        /// String value of the enum field names used in the ProtoBuf definition.
7849        ///
7850        /// The values are not transformed in any way and thus are considered stable
7851        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7852        pub fn as_str_name(&self) -> &'static str {
7853            match self {
7854                Type::Double => "TYPE_DOUBLE",
7855                Type::Float => "TYPE_FLOAT",
7856                Type::Int64 => "TYPE_INT64",
7857                Type::Uint64 => "TYPE_UINT64",
7858                Type::Int32 => "TYPE_INT32",
7859                Type::Fixed64 => "TYPE_FIXED64",
7860                Type::Fixed32 => "TYPE_FIXED32",
7861                Type::Bool => "TYPE_BOOL",
7862                Type::String => "TYPE_STRING",
7863                Type::Group => "TYPE_GROUP",
7864                Type::Message => "TYPE_MESSAGE",
7865                Type::Bytes => "TYPE_BYTES",
7866                Type::Uint32 => "TYPE_UINT32",
7867                Type::Enum => "TYPE_ENUM",
7868                Type::Sfixed32 => "TYPE_SFIXED32",
7869                Type::Sfixed64 => "TYPE_SFIXED64",
7870                Type::Sint32 => "TYPE_SINT32",
7871                Type::Sint64 => "TYPE_SINT64",
7872            }
7873        }
7874    }
7875    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7876    #[repr(i32)]
7877    pub enum Label {
7878        /// 0 is reserved for errors
7879        Optional = 1,
7880        Required = 2,
7881        Repeated = 3,
7882    }
7883    impl Label {
7884        /// String value of the enum field names used in the ProtoBuf definition.
7885        ///
7886        /// The values are not transformed in any way and thus are considered stable
7887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7888        pub fn as_str_name(&self) -> &'static str {
7889            match self {
7890                Label::Optional => "LABEL_OPTIONAL",
7891                Label::Required => "LABEL_REQUIRED",
7892                Label::Repeated => "LABEL_REPEATED",
7893            }
7894        }
7895    }
7896}
7897/// Describes a oneof.
7898#[derive(Clone, PartialEq, ::prost::Message)]
7899pub struct OneofDescriptorProto {
7900    #[prost(string, optional, tag="1")]
7901    pub name: ::core::option::Option<::prost::alloc::string::String>,
7902    #[prost(message, optional, tag="2")]
7903    pub options: ::core::option::Option<OneofOptions>,
7904}
7905/// Describes an enum type.
7906#[derive(Clone, PartialEq, ::prost::Message)]
7907pub struct EnumDescriptorProto {
7908    #[prost(string, optional, tag="1")]
7909    pub name: ::core::option::Option<::prost::alloc::string::String>,
7910    #[prost(message, repeated, tag="2")]
7911    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
7912    /// Reserved enum value names, which may not be reused. A given name may only
7913    /// be reserved once.
7914    #[prost(string, repeated, tag="5")]
7915    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7916}
7917/// Describes a value within an enum.
7918#[derive(Clone, PartialEq, ::prost::Message)]
7919pub struct EnumValueDescriptorProto {
7920    #[prost(string, optional, tag="1")]
7921    pub name: ::core::option::Option<::prost::alloc::string::String>,
7922    #[prost(int32, optional, tag="2")]
7923    pub number: ::core::option::Option<i32>,
7924}
7925#[derive(Clone, PartialEq, ::prost::Message)]
7926pub struct OneofOptions {
7927}
7928// End of protos/perfetto/common/descriptor.proto
7929
7930// Begin of protos/perfetto/trace/extension_descriptor.proto
7931
7932/// This message contains descriptors used to parse extension fields of
7933/// TrackEvent.
7934///
7935/// See docs/design-docs/extensions.md for more details.
7936#[derive(Clone, PartialEq, ::prost::Message)]
7937pub struct ExtensionDescriptor {
7938    #[prost(message, optional, tag="1")]
7939    pub extension_set: ::core::option::Option<FileDescriptorSet>,
7940}
7941// End of protos/perfetto/trace/extension_descriptor.proto
7942
7943// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
7944
7945/// Represents the mapping between inode numbers in a block device and their path
7946/// on the filesystem
7947#[derive(Clone, PartialEq, ::prost::Message)]
7948pub struct InodeFileMap {
7949    #[prost(uint64, optional, tag="1")]
7950    pub block_device_id: ::core::option::Option<u64>,
7951    /// The mount points of the block device, e.g. \["system"\].
7952    #[prost(string, repeated, tag="2")]
7953    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7954    /// The list of all the entries from the block device
7955    #[prost(message, repeated, tag="3")]
7956    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
7957}
7958/// Nested message and enum types in `InodeFileMap`.
7959pub mod inode_file_map {
7960    /// Representation of Entry
7961    #[derive(Clone, PartialEq, ::prost::Message)]
7962    pub struct Entry {
7963        #[prost(uint64, optional, tag="1")]
7964        pub inode_number: ::core::option::Option<u64>,
7965        /// The path to the file, e.g. "etc/file.xml"
7966        /// List of strings for multiple hardlinks
7967        #[prost(string, repeated, tag="2")]
7968        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7969        #[prost(enumeration="entry::Type", optional, tag="3")]
7970        pub r#type: ::core::option::Option<i32>,
7971    }
7972    /// Nested message and enum types in `Entry`.
7973    pub mod entry {
7974        /// The file type
7975        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7976        #[repr(i32)]
7977        pub enum Type {
7978            Unknown = 0,
7979            File = 1,
7980            Directory = 2,
7981        }
7982        impl Type {
7983            /// String value of the enum field names used in the ProtoBuf definition.
7984            ///
7985            /// The values are not transformed in any way and thus are considered stable
7986            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7987            pub fn as_str_name(&self) -> &'static str {
7988                match self {
7989                    Type::Unknown => "UNKNOWN",
7990                    Type::File => "FILE",
7991                    Type::Directory => "DIRECTORY",
7992                }
7993            }
7994        }
7995    }
7996}
7997// End of protos/perfetto/trace/filesystem/inode_file_map.proto
7998
7999// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8000
8001#[derive(Clone, PartialEq, ::prost::Message)]
8002pub struct AndroidFsDatareadEndFtraceEvent {
8003    #[prost(int32, optional, tag="1")]
8004    pub bytes: ::core::option::Option<i32>,
8005    #[prost(uint64, optional, tag="2")]
8006    pub ino: ::core::option::Option<u64>,
8007    #[prost(int64, optional, tag="3")]
8008    pub offset: ::core::option::Option<i64>,
8009}
8010#[derive(Clone, PartialEq, ::prost::Message)]
8011pub struct AndroidFsDatareadStartFtraceEvent {
8012    #[prost(int32, optional, tag="1")]
8013    pub bytes: ::core::option::Option<i32>,
8014    #[prost(string, optional, tag="2")]
8015    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8016    #[prost(int64, optional, tag="3")]
8017    pub i_size: ::core::option::Option<i64>,
8018    #[prost(uint64, optional, tag="4")]
8019    pub ino: ::core::option::Option<u64>,
8020    #[prost(int64, optional, tag="5")]
8021    pub offset: ::core::option::Option<i64>,
8022    #[prost(string, optional, tag="6")]
8023    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8024    #[prost(int32, optional, tag="7")]
8025    pub pid: ::core::option::Option<i32>,
8026}
8027#[derive(Clone, PartialEq, ::prost::Message)]
8028pub struct AndroidFsDatawriteEndFtraceEvent {
8029    #[prost(int32, optional, tag="1")]
8030    pub bytes: ::core::option::Option<i32>,
8031    #[prost(uint64, optional, tag="2")]
8032    pub ino: ::core::option::Option<u64>,
8033    #[prost(int64, optional, tag="3")]
8034    pub offset: ::core::option::Option<i64>,
8035}
8036#[derive(Clone, PartialEq, ::prost::Message)]
8037pub struct AndroidFsDatawriteStartFtraceEvent {
8038    #[prost(int32, optional, tag="1")]
8039    pub bytes: ::core::option::Option<i32>,
8040    #[prost(string, optional, tag="2")]
8041    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8042    #[prost(int64, optional, tag="3")]
8043    pub i_size: ::core::option::Option<i64>,
8044    #[prost(uint64, optional, tag="4")]
8045    pub ino: ::core::option::Option<u64>,
8046    #[prost(int64, optional, tag="5")]
8047    pub offset: ::core::option::Option<i64>,
8048    #[prost(string, optional, tag="6")]
8049    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8050    #[prost(int32, optional, tag="7")]
8051    pub pid: ::core::option::Option<i32>,
8052}
8053#[derive(Clone, PartialEq, ::prost::Message)]
8054pub struct AndroidFsFsyncEndFtraceEvent {
8055    #[prost(int32, optional, tag="1")]
8056    pub bytes: ::core::option::Option<i32>,
8057    #[prost(uint64, optional, tag="2")]
8058    pub ino: ::core::option::Option<u64>,
8059    #[prost(int64, optional, tag="3")]
8060    pub offset: ::core::option::Option<i64>,
8061}
8062#[derive(Clone, PartialEq, ::prost::Message)]
8063pub struct AndroidFsFsyncStartFtraceEvent {
8064    #[prost(string, optional, tag="1")]
8065    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8066    #[prost(int64, optional, tag="2")]
8067    pub i_size: ::core::option::Option<i64>,
8068    #[prost(uint64, optional, tag="3")]
8069    pub ino: ::core::option::Option<u64>,
8070    #[prost(string, optional, tag="4")]
8071    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8072    #[prost(int32, optional, tag="5")]
8073    pub pid: ::core::option::Option<i32>,
8074}
8075// End of protos/perfetto/trace/ftrace/android_fs.proto
8076
8077// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
8078
8079#[derive(Clone, PartialEq, ::prost::Message)]
8080pub struct BclIrqTriggerFtraceEvent {
8081    #[prost(int32, optional, tag="1")]
8082    pub id: ::core::option::Option<i32>,
8083    #[prost(int32, optional, tag="2")]
8084    pub throttle: ::core::option::Option<i32>,
8085    #[prost(int32, optional, tag="3")]
8086    pub cpu0_limit: ::core::option::Option<i32>,
8087    #[prost(int32, optional, tag="4")]
8088    pub cpu1_limit: ::core::option::Option<i32>,
8089    #[prost(int32, optional, tag="5")]
8090    pub cpu2_limit: ::core::option::Option<i32>,
8091    #[prost(int32, optional, tag="6")]
8092    pub tpu_limit: ::core::option::Option<i32>,
8093    #[prost(int32, optional, tag="7")]
8094    pub gpu_limit: ::core::option::Option<i32>,
8095    #[prost(int32, optional, tag="8")]
8096    pub voltage: ::core::option::Option<i32>,
8097    #[prost(int32, optional, tag="9")]
8098    pub capacity: ::core::option::Option<i32>,
8099}
8100// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
8101
8102// Begin of protos/perfetto/trace/ftrace/binder.proto
8103
8104#[derive(Clone, PartialEq, ::prost::Message)]
8105pub struct BinderTransactionFtraceEvent {
8106    #[prost(int32, optional, tag="1")]
8107    pub debug_id: ::core::option::Option<i32>,
8108    #[prost(int32, optional, tag="2")]
8109    pub target_node: ::core::option::Option<i32>,
8110    #[prost(int32, optional, tag="3")]
8111    pub to_proc: ::core::option::Option<i32>,
8112    #[prost(int32, optional, tag="4")]
8113    pub to_thread: ::core::option::Option<i32>,
8114    #[prost(int32, optional, tag="5")]
8115    pub reply: ::core::option::Option<i32>,
8116    #[prost(uint32, optional, tag="6")]
8117    pub code: ::core::option::Option<u32>,
8118    #[prost(uint32, optional, tag="7")]
8119    pub flags: ::core::option::Option<u32>,
8120}
8121#[derive(Clone, PartialEq, ::prost::Message)]
8122pub struct BinderTransactionReceivedFtraceEvent {
8123    #[prost(int32, optional, tag="1")]
8124    pub debug_id: ::core::option::Option<i32>,
8125}
8126#[derive(Clone, PartialEq, ::prost::Message)]
8127pub struct BinderSetPriorityFtraceEvent {
8128    #[prost(int32, optional, tag="1")]
8129    pub proc: ::core::option::Option<i32>,
8130    #[prost(int32, optional, tag="2")]
8131    pub thread: ::core::option::Option<i32>,
8132    #[prost(uint32, optional, tag="3")]
8133    pub old_prio: ::core::option::Option<u32>,
8134    #[prost(uint32, optional, tag="4")]
8135    pub new_prio: ::core::option::Option<u32>,
8136    #[prost(uint32, optional, tag="5")]
8137    pub desired_prio: ::core::option::Option<u32>,
8138}
8139#[derive(Clone, PartialEq, ::prost::Message)]
8140pub struct BinderLockFtraceEvent {
8141    #[prost(string, optional, tag="1")]
8142    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8143}
8144#[derive(Clone, PartialEq, ::prost::Message)]
8145pub struct BinderLockedFtraceEvent {
8146    #[prost(string, optional, tag="1")]
8147    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8148}
8149#[derive(Clone, PartialEq, ::prost::Message)]
8150pub struct BinderUnlockFtraceEvent {
8151    #[prost(string, optional, tag="1")]
8152    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8153}
8154#[derive(Clone, PartialEq, ::prost::Message)]
8155pub struct BinderTransactionAllocBufFtraceEvent {
8156    #[prost(uint64, optional, tag="1")]
8157    pub data_size: ::core::option::Option<u64>,
8158    #[prost(int32, optional, tag="2")]
8159    pub debug_id: ::core::option::Option<i32>,
8160    #[prost(uint64, optional, tag="3")]
8161    pub offsets_size: ::core::option::Option<u64>,
8162    #[prost(uint64, optional, tag="4")]
8163    pub extra_buffers_size: ::core::option::Option<u64>,
8164}
8165#[derive(Clone, PartialEq, ::prost::Message)]
8166pub struct BinderCommandFtraceEvent {
8167    #[prost(uint32, optional, tag="1")]
8168    pub cmd: ::core::option::Option<u32>,
8169}
8170#[derive(Clone, PartialEq, ::prost::Message)]
8171pub struct BinderReturnFtraceEvent {
8172    #[prost(uint32, optional, tag="1")]
8173    pub cmd: ::core::option::Option<u32>,
8174}
8175// End of protos/perfetto/trace/ftrace/binder.proto
8176
8177// Begin of protos/perfetto/trace/ftrace/block.proto
8178
8179#[derive(Clone, PartialEq, ::prost::Message)]
8180pub struct BlockRqIssueFtraceEvent {
8181    #[prost(uint64, optional, tag="1")]
8182    pub dev: ::core::option::Option<u64>,
8183    #[prost(uint64, optional, tag="2")]
8184    pub sector: ::core::option::Option<u64>,
8185    #[prost(uint32, optional, tag="3")]
8186    pub nr_sector: ::core::option::Option<u32>,
8187    #[prost(uint32, optional, tag="4")]
8188    pub bytes: ::core::option::Option<u32>,
8189    #[prost(string, optional, tag="5")]
8190    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8191    #[prost(string, optional, tag="6")]
8192    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8193    #[prost(string, optional, tag="7")]
8194    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8195}
8196#[derive(Clone, PartialEq, ::prost::Message)]
8197pub struct BlockBioBackmergeFtraceEvent {
8198    #[prost(uint64, optional, tag="1")]
8199    pub dev: ::core::option::Option<u64>,
8200    #[prost(uint64, optional, tag="2")]
8201    pub sector: ::core::option::Option<u64>,
8202    #[prost(uint32, optional, tag="3")]
8203    pub nr_sector: ::core::option::Option<u32>,
8204    #[prost(string, optional, tag="4")]
8205    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8206    #[prost(string, optional, tag="5")]
8207    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8208}
8209#[derive(Clone, PartialEq, ::prost::Message)]
8210pub struct BlockBioBounceFtraceEvent {
8211    #[prost(uint64, optional, tag="1")]
8212    pub dev: ::core::option::Option<u64>,
8213    #[prost(uint64, optional, tag="2")]
8214    pub sector: ::core::option::Option<u64>,
8215    #[prost(uint32, optional, tag="3")]
8216    pub nr_sector: ::core::option::Option<u32>,
8217    #[prost(string, optional, tag="4")]
8218    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8219    #[prost(string, optional, tag="5")]
8220    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8221}
8222#[derive(Clone, PartialEq, ::prost::Message)]
8223pub struct BlockBioCompleteFtraceEvent {
8224    #[prost(uint64, optional, tag="1")]
8225    pub dev: ::core::option::Option<u64>,
8226    #[prost(uint64, optional, tag="2")]
8227    pub sector: ::core::option::Option<u64>,
8228    #[prost(uint32, optional, tag="3")]
8229    pub nr_sector: ::core::option::Option<u32>,
8230    #[prost(int32, optional, tag="4")]
8231    pub error: ::core::option::Option<i32>,
8232    #[prost(string, optional, tag="5")]
8233    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8234}
8235#[derive(Clone, PartialEq, ::prost::Message)]
8236pub struct BlockBioFrontmergeFtraceEvent {
8237    #[prost(uint64, optional, tag="1")]
8238    pub dev: ::core::option::Option<u64>,
8239    #[prost(uint64, optional, tag="2")]
8240    pub sector: ::core::option::Option<u64>,
8241    #[prost(uint32, optional, tag="3")]
8242    pub nr_sector: ::core::option::Option<u32>,
8243    #[prost(string, optional, tag="4")]
8244    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8245    #[prost(string, optional, tag="5")]
8246    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8247}
8248#[derive(Clone, PartialEq, ::prost::Message)]
8249pub struct BlockBioQueueFtraceEvent {
8250    #[prost(uint64, optional, tag="1")]
8251    pub dev: ::core::option::Option<u64>,
8252    #[prost(uint64, optional, tag="2")]
8253    pub sector: ::core::option::Option<u64>,
8254    #[prost(uint32, optional, tag="3")]
8255    pub nr_sector: ::core::option::Option<u32>,
8256    #[prost(string, optional, tag="4")]
8257    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8258    #[prost(string, optional, tag="5")]
8259    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8260}
8261#[derive(Clone, PartialEq, ::prost::Message)]
8262pub struct BlockBioRemapFtraceEvent {
8263    #[prost(uint64, optional, tag="1")]
8264    pub dev: ::core::option::Option<u64>,
8265    #[prost(uint64, optional, tag="2")]
8266    pub sector: ::core::option::Option<u64>,
8267    #[prost(uint32, optional, tag="3")]
8268    pub nr_sector: ::core::option::Option<u32>,
8269    #[prost(uint64, optional, tag="4")]
8270    pub old_dev: ::core::option::Option<u64>,
8271    #[prost(uint64, optional, tag="5")]
8272    pub old_sector: ::core::option::Option<u64>,
8273    #[prost(string, optional, tag="6")]
8274    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8275}
8276#[derive(Clone, PartialEq, ::prost::Message)]
8277pub struct BlockDirtyBufferFtraceEvent {
8278    #[prost(uint64, optional, tag="1")]
8279    pub dev: ::core::option::Option<u64>,
8280    #[prost(uint64, optional, tag="2")]
8281    pub sector: ::core::option::Option<u64>,
8282    #[prost(uint64, optional, tag="3")]
8283    pub size: ::core::option::Option<u64>,
8284}
8285#[derive(Clone, PartialEq, ::prost::Message)]
8286pub struct BlockGetrqFtraceEvent {
8287    #[prost(uint64, optional, tag="1")]
8288    pub dev: ::core::option::Option<u64>,
8289    #[prost(uint64, optional, tag="2")]
8290    pub sector: ::core::option::Option<u64>,
8291    #[prost(uint32, optional, tag="3")]
8292    pub nr_sector: ::core::option::Option<u32>,
8293    #[prost(string, optional, tag="4")]
8294    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8295    #[prost(string, optional, tag="5")]
8296    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8297}
8298#[derive(Clone, PartialEq, ::prost::Message)]
8299pub struct BlockPlugFtraceEvent {
8300    #[prost(string, optional, tag="1")]
8301    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8302}
8303#[derive(Clone, PartialEq, ::prost::Message)]
8304pub struct BlockRqAbortFtraceEvent {
8305    #[prost(uint64, optional, tag="1")]
8306    pub dev: ::core::option::Option<u64>,
8307    #[prost(uint64, optional, tag="2")]
8308    pub sector: ::core::option::Option<u64>,
8309    #[prost(uint32, optional, tag="3")]
8310    pub nr_sector: ::core::option::Option<u32>,
8311    #[prost(int32, optional, tag="4")]
8312    pub errors: ::core::option::Option<i32>,
8313    #[prost(string, optional, tag="5")]
8314    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8315    #[prost(string, optional, tag="6")]
8316    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8317}
8318#[derive(Clone, PartialEq, ::prost::Message)]
8319pub struct BlockRqCompleteFtraceEvent {
8320    #[prost(uint64, optional, tag="1")]
8321    pub dev: ::core::option::Option<u64>,
8322    #[prost(uint64, optional, tag="2")]
8323    pub sector: ::core::option::Option<u64>,
8324    #[prost(uint32, optional, tag="3")]
8325    pub nr_sector: ::core::option::Option<u32>,
8326    #[prost(int32, optional, tag="4")]
8327    pub errors: ::core::option::Option<i32>,
8328    #[prost(string, optional, tag="5")]
8329    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8330    #[prost(string, optional, tag="6")]
8331    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8332    #[prost(int32, optional, tag="7")]
8333    pub error: ::core::option::Option<i32>,
8334}
8335#[derive(Clone, PartialEq, ::prost::Message)]
8336pub struct BlockRqInsertFtraceEvent {
8337    #[prost(uint64, optional, tag="1")]
8338    pub dev: ::core::option::Option<u64>,
8339    #[prost(uint64, optional, tag="2")]
8340    pub sector: ::core::option::Option<u64>,
8341    #[prost(uint32, optional, tag="3")]
8342    pub nr_sector: ::core::option::Option<u32>,
8343    #[prost(uint32, optional, tag="4")]
8344    pub bytes: ::core::option::Option<u32>,
8345    #[prost(string, optional, tag="5")]
8346    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8347    #[prost(string, optional, tag="6")]
8348    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8349    #[prost(string, optional, tag="7")]
8350    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8351}
8352#[derive(Clone, PartialEq, ::prost::Message)]
8353pub struct BlockRqRemapFtraceEvent {
8354    #[prost(uint64, optional, tag="1")]
8355    pub dev: ::core::option::Option<u64>,
8356    #[prost(uint64, optional, tag="2")]
8357    pub sector: ::core::option::Option<u64>,
8358    #[prost(uint32, optional, tag="3")]
8359    pub nr_sector: ::core::option::Option<u32>,
8360    #[prost(uint64, optional, tag="4")]
8361    pub old_dev: ::core::option::Option<u64>,
8362    #[prost(uint64, optional, tag="5")]
8363    pub old_sector: ::core::option::Option<u64>,
8364    #[prost(uint32, optional, tag="6")]
8365    pub nr_bios: ::core::option::Option<u32>,
8366    #[prost(string, optional, tag="7")]
8367    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8368}
8369#[derive(Clone, PartialEq, ::prost::Message)]
8370pub struct BlockRqRequeueFtraceEvent {
8371    #[prost(uint64, optional, tag="1")]
8372    pub dev: ::core::option::Option<u64>,
8373    #[prost(uint64, optional, tag="2")]
8374    pub sector: ::core::option::Option<u64>,
8375    #[prost(uint32, optional, tag="3")]
8376    pub nr_sector: ::core::option::Option<u32>,
8377    #[prost(int32, optional, tag="4")]
8378    pub errors: ::core::option::Option<i32>,
8379    #[prost(string, optional, tag="5")]
8380    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8381    #[prost(string, optional, tag="6")]
8382    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8383}
8384#[derive(Clone, PartialEq, ::prost::Message)]
8385pub struct BlockSleeprqFtraceEvent {
8386    #[prost(uint64, optional, tag="1")]
8387    pub dev: ::core::option::Option<u64>,
8388    #[prost(uint64, optional, tag="2")]
8389    pub sector: ::core::option::Option<u64>,
8390    #[prost(uint32, optional, tag="3")]
8391    pub nr_sector: ::core::option::Option<u32>,
8392    #[prost(string, optional, tag="4")]
8393    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8394    #[prost(string, optional, tag="5")]
8395    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8396}
8397#[derive(Clone, PartialEq, ::prost::Message)]
8398pub struct BlockSplitFtraceEvent {
8399    #[prost(uint64, optional, tag="1")]
8400    pub dev: ::core::option::Option<u64>,
8401    #[prost(uint64, optional, tag="2")]
8402    pub sector: ::core::option::Option<u64>,
8403    #[prost(uint64, optional, tag="3")]
8404    pub new_sector: ::core::option::Option<u64>,
8405    #[prost(string, optional, tag="4")]
8406    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8407    #[prost(string, optional, tag="5")]
8408    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8409}
8410#[derive(Clone, PartialEq, ::prost::Message)]
8411pub struct BlockTouchBufferFtraceEvent {
8412    #[prost(uint64, optional, tag="1")]
8413    pub dev: ::core::option::Option<u64>,
8414    #[prost(uint64, optional, tag="2")]
8415    pub sector: ::core::option::Option<u64>,
8416    #[prost(uint64, optional, tag="3")]
8417    pub size: ::core::option::Option<u64>,
8418}
8419#[derive(Clone, PartialEq, ::prost::Message)]
8420pub struct BlockUnplugFtraceEvent {
8421    #[prost(int32, optional, tag="1")]
8422    pub nr_rq: ::core::option::Option<i32>,
8423    #[prost(string, optional, tag="2")]
8424    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8425}
8426#[derive(Clone, PartialEq, ::prost::Message)]
8427pub struct BlockIoStartFtraceEvent {
8428    #[prost(uint64, optional, tag="1")]
8429    pub dev: ::core::option::Option<u64>,
8430    #[prost(uint64, optional, tag="2")]
8431    pub sector: ::core::option::Option<u64>,
8432    #[prost(uint32, optional, tag="3")]
8433    pub nr_sector: ::core::option::Option<u32>,
8434    #[prost(uint32, optional, tag="4")]
8435    pub bytes: ::core::option::Option<u32>,
8436    #[prost(uint32, optional, tag="5")]
8437    pub ioprio: ::core::option::Option<u32>,
8438    #[prost(string, optional, tag="6")]
8439    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8440    #[prost(string, optional, tag="7")]
8441    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8442    #[prost(string, optional, tag="8")]
8443    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8444}
8445#[derive(Clone, PartialEq, ::prost::Message)]
8446pub struct BlockIoDoneFtraceEvent {
8447    #[prost(uint64, optional, tag="1")]
8448    pub dev: ::core::option::Option<u64>,
8449    #[prost(uint64, optional, tag="2")]
8450    pub sector: ::core::option::Option<u64>,
8451    #[prost(uint32, optional, tag="3")]
8452    pub nr_sector: ::core::option::Option<u32>,
8453    #[prost(uint32, optional, tag="4")]
8454    pub bytes: ::core::option::Option<u32>,
8455    #[prost(uint32, optional, tag="5")]
8456    pub ioprio: ::core::option::Option<u32>,
8457    #[prost(string, optional, tag="6")]
8458    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8459    #[prost(string, optional, tag="7")]
8460    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8461    #[prost(string, optional, tag="8")]
8462    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8463}
8464// End of protos/perfetto/trace/ftrace/block.proto
8465
8466// Begin of protos/perfetto/trace/ftrace/cgroup.proto
8467
8468#[derive(Clone, PartialEq, ::prost::Message)]
8469pub struct CgroupAttachTaskFtraceEvent {
8470    #[prost(int32, optional, tag="1")]
8471    pub dst_root: ::core::option::Option<i32>,
8472    #[prost(int32, optional, tag="2")]
8473    pub dst_id: ::core::option::Option<i32>,
8474    #[prost(int32, optional, tag="3")]
8475    pub pid: ::core::option::Option<i32>,
8476    #[prost(string, optional, tag="4")]
8477    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8478    #[prost(string, optional, tag="5")]
8479    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8480    #[prost(int32, optional, tag="6")]
8481    pub dst_level: ::core::option::Option<i32>,
8482    #[prost(string, optional, tag="7")]
8483    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
8484}
8485#[derive(Clone, PartialEq, ::prost::Message)]
8486pub struct CgroupMkdirFtraceEvent {
8487    #[prost(int32, optional, tag="1")]
8488    pub root: ::core::option::Option<i32>,
8489    #[prost(int32, optional, tag="2")]
8490    pub id: ::core::option::Option<i32>,
8491    #[prost(string, optional, tag="3")]
8492    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8493    #[prost(int32, optional, tag="4")]
8494    pub level: ::core::option::Option<i32>,
8495    #[prost(string, optional, tag="5")]
8496    pub path: ::core::option::Option<::prost::alloc::string::String>,
8497}
8498#[derive(Clone, PartialEq, ::prost::Message)]
8499pub struct CgroupRemountFtraceEvent {
8500    #[prost(int32, optional, tag="1")]
8501    pub root: ::core::option::Option<i32>,
8502    #[prost(uint32, optional, tag="2")]
8503    pub ss_mask: ::core::option::Option<u32>,
8504    #[prost(string, optional, tag="3")]
8505    pub name: ::core::option::Option<::prost::alloc::string::String>,
8506}
8507#[derive(Clone, PartialEq, ::prost::Message)]
8508pub struct CgroupRmdirFtraceEvent {
8509    #[prost(int32, optional, tag="1")]
8510    pub root: ::core::option::Option<i32>,
8511    #[prost(int32, optional, tag="2")]
8512    pub id: ::core::option::Option<i32>,
8513    #[prost(string, optional, tag="3")]
8514    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8515    #[prost(int32, optional, tag="4")]
8516    pub level: ::core::option::Option<i32>,
8517    #[prost(string, optional, tag="5")]
8518    pub path: ::core::option::Option<::prost::alloc::string::String>,
8519}
8520#[derive(Clone, PartialEq, ::prost::Message)]
8521pub struct CgroupTransferTasksFtraceEvent {
8522    #[prost(int32, optional, tag="1")]
8523    pub dst_root: ::core::option::Option<i32>,
8524    #[prost(int32, optional, tag="2")]
8525    pub dst_id: ::core::option::Option<i32>,
8526    #[prost(int32, optional, tag="3")]
8527    pub pid: ::core::option::Option<i32>,
8528    #[prost(string, optional, tag="4")]
8529    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8530    #[prost(string, optional, tag="5")]
8531    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8532    #[prost(int32, optional, tag="6")]
8533    pub dst_level: ::core::option::Option<i32>,
8534    #[prost(string, optional, tag="7")]
8535    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
8536}
8537#[derive(Clone, PartialEq, ::prost::Message)]
8538pub struct CgroupDestroyRootFtraceEvent {
8539    #[prost(int32, optional, tag="1")]
8540    pub root: ::core::option::Option<i32>,
8541    #[prost(uint32, optional, tag="2")]
8542    pub ss_mask: ::core::option::Option<u32>,
8543    #[prost(string, optional, tag="3")]
8544    pub name: ::core::option::Option<::prost::alloc::string::String>,
8545}
8546#[derive(Clone, PartialEq, ::prost::Message)]
8547pub struct CgroupReleaseFtraceEvent {
8548    #[prost(int32, optional, tag="1")]
8549    pub root: ::core::option::Option<i32>,
8550    #[prost(int32, optional, tag="2")]
8551    pub id: ::core::option::Option<i32>,
8552    #[prost(string, optional, tag="3")]
8553    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8554    #[prost(int32, optional, tag="4")]
8555    pub level: ::core::option::Option<i32>,
8556    #[prost(string, optional, tag="5")]
8557    pub path: ::core::option::Option<::prost::alloc::string::String>,
8558}
8559#[derive(Clone, PartialEq, ::prost::Message)]
8560pub struct CgroupRenameFtraceEvent {
8561    #[prost(int32, optional, tag="1")]
8562    pub root: ::core::option::Option<i32>,
8563    #[prost(int32, optional, tag="2")]
8564    pub id: ::core::option::Option<i32>,
8565    #[prost(string, optional, tag="3")]
8566    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8567    #[prost(int32, optional, tag="4")]
8568    pub level: ::core::option::Option<i32>,
8569    #[prost(string, optional, tag="5")]
8570    pub path: ::core::option::Option<::prost::alloc::string::String>,
8571}
8572#[derive(Clone, PartialEq, ::prost::Message)]
8573pub struct CgroupSetupRootFtraceEvent {
8574    #[prost(int32, optional, tag="1")]
8575    pub root: ::core::option::Option<i32>,
8576    #[prost(uint32, optional, tag="2")]
8577    pub ss_mask: ::core::option::Option<u32>,
8578    #[prost(string, optional, tag="3")]
8579    pub name: ::core::option::Option<::prost::alloc::string::String>,
8580}
8581// End of protos/perfetto/trace/ftrace/cgroup.proto
8582
8583// Begin of protos/perfetto/trace/ftrace/clk.proto
8584
8585#[derive(Clone, PartialEq, ::prost::Message)]
8586pub struct ClkEnableFtraceEvent {
8587    #[prost(string, optional, tag="1")]
8588    pub name: ::core::option::Option<::prost::alloc::string::String>,
8589}
8590#[derive(Clone, PartialEq, ::prost::Message)]
8591pub struct ClkDisableFtraceEvent {
8592    #[prost(string, optional, tag="1")]
8593    pub name: ::core::option::Option<::prost::alloc::string::String>,
8594}
8595#[derive(Clone, PartialEq, ::prost::Message)]
8596pub struct ClkSetRateFtraceEvent {
8597    #[prost(string, optional, tag="1")]
8598    pub name: ::core::option::Option<::prost::alloc::string::String>,
8599    #[prost(uint64, optional, tag="2")]
8600    pub rate: ::core::option::Option<u64>,
8601}
8602// End of protos/perfetto/trace/ftrace/clk.proto
8603
8604// Begin of protos/perfetto/trace/ftrace/cma.proto
8605
8606#[derive(Clone, PartialEq, ::prost::Message)]
8607pub struct CmaAllocStartFtraceEvent {
8608    #[prost(uint32, optional, tag="1")]
8609    pub align: ::core::option::Option<u32>,
8610    #[prost(uint32, optional, tag="2")]
8611    pub count: ::core::option::Option<u32>,
8612    #[prost(string, optional, tag="3")]
8613    pub name: ::core::option::Option<::prost::alloc::string::String>,
8614}
8615#[derive(Clone, PartialEq, ::prost::Message)]
8616pub struct CmaAllocInfoFtraceEvent {
8617    #[prost(uint32, optional, tag="1")]
8618    pub align: ::core::option::Option<u32>,
8619    #[prost(uint32, optional, tag="2")]
8620    pub count: ::core::option::Option<u32>,
8621    #[prost(uint32, optional, tag="3")]
8622    pub err_iso: ::core::option::Option<u32>,
8623    #[prost(uint32, optional, tag="4")]
8624    pub err_mig: ::core::option::Option<u32>,
8625    #[prost(uint32, optional, tag="5")]
8626    pub err_test: ::core::option::Option<u32>,
8627    #[prost(string, optional, tag="6")]
8628    pub name: ::core::option::Option<::prost::alloc::string::String>,
8629    #[prost(uint64, optional, tag="7")]
8630    pub nr_mapped: ::core::option::Option<u64>,
8631    #[prost(uint64, optional, tag="8")]
8632    pub nr_migrated: ::core::option::Option<u64>,
8633    #[prost(uint64, optional, tag="9")]
8634    pub nr_reclaimed: ::core::option::Option<u64>,
8635    #[prost(uint64, optional, tag="10")]
8636    pub pfn: ::core::option::Option<u64>,
8637}
8638// End of protos/perfetto/trace/ftrace/cma.proto
8639
8640// Begin of protos/perfetto/trace/ftrace/compaction.proto
8641
8642#[derive(Clone, PartialEq, ::prost::Message)]
8643pub struct MmCompactionBeginFtraceEvent {
8644    #[prost(uint64, optional, tag="1")]
8645    pub zone_start: ::core::option::Option<u64>,
8646    #[prost(uint64, optional, tag="2")]
8647    pub migrate_pfn: ::core::option::Option<u64>,
8648    #[prost(uint64, optional, tag="3")]
8649    pub free_pfn: ::core::option::Option<u64>,
8650    #[prost(uint64, optional, tag="4")]
8651    pub zone_end: ::core::option::Option<u64>,
8652    #[prost(uint32, optional, tag="5")]
8653    pub sync: ::core::option::Option<u32>,
8654}
8655#[derive(Clone, PartialEq, ::prost::Message)]
8656pub struct MmCompactionDeferCompactionFtraceEvent {
8657    #[prost(int32, optional, tag="1")]
8658    pub nid: ::core::option::Option<i32>,
8659    #[prost(uint32, optional, tag="2")]
8660    pub idx: ::core::option::Option<u32>,
8661    #[prost(int32, optional, tag="3")]
8662    pub order: ::core::option::Option<i32>,
8663    #[prost(uint32, optional, tag="4")]
8664    pub considered: ::core::option::Option<u32>,
8665    #[prost(uint32, optional, tag="5")]
8666    pub defer_shift: ::core::option::Option<u32>,
8667    #[prost(int32, optional, tag="6")]
8668    pub order_failed: ::core::option::Option<i32>,
8669}
8670#[derive(Clone, PartialEq, ::prost::Message)]
8671pub struct MmCompactionDeferredFtraceEvent {
8672    #[prost(int32, optional, tag="1")]
8673    pub nid: ::core::option::Option<i32>,
8674    #[prost(uint32, optional, tag="2")]
8675    pub idx: ::core::option::Option<u32>,
8676    #[prost(int32, optional, tag="3")]
8677    pub order: ::core::option::Option<i32>,
8678    #[prost(uint32, optional, tag="4")]
8679    pub considered: ::core::option::Option<u32>,
8680    #[prost(uint32, optional, tag="5")]
8681    pub defer_shift: ::core::option::Option<u32>,
8682    #[prost(int32, optional, tag="6")]
8683    pub order_failed: ::core::option::Option<i32>,
8684}
8685#[derive(Clone, PartialEq, ::prost::Message)]
8686pub struct MmCompactionDeferResetFtraceEvent {
8687    #[prost(int32, optional, tag="1")]
8688    pub nid: ::core::option::Option<i32>,
8689    #[prost(uint32, optional, tag="2")]
8690    pub idx: ::core::option::Option<u32>,
8691    #[prost(int32, optional, tag="3")]
8692    pub order: ::core::option::Option<i32>,
8693    #[prost(uint32, optional, tag="4")]
8694    pub considered: ::core::option::Option<u32>,
8695    #[prost(uint32, optional, tag="5")]
8696    pub defer_shift: ::core::option::Option<u32>,
8697    #[prost(int32, optional, tag="6")]
8698    pub order_failed: ::core::option::Option<i32>,
8699}
8700#[derive(Clone, PartialEq, ::prost::Message)]
8701pub struct MmCompactionEndFtraceEvent {
8702    #[prost(uint64, optional, tag="1")]
8703    pub zone_start: ::core::option::Option<u64>,
8704    #[prost(uint64, optional, tag="2")]
8705    pub migrate_pfn: ::core::option::Option<u64>,
8706    #[prost(uint64, optional, tag="3")]
8707    pub free_pfn: ::core::option::Option<u64>,
8708    #[prost(uint64, optional, tag="4")]
8709    pub zone_end: ::core::option::Option<u64>,
8710    #[prost(uint32, optional, tag="5")]
8711    pub sync: ::core::option::Option<u32>,
8712    #[prost(int32, optional, tag="6")]
8713    pub status: ::core::option::Option<i32>,
8714}
8715#[derive(Clone, PartialEq, ::prost::Message)]
8716pub struct MmCompactionFinishedFtraceEvent {
8717    #[prost(int32, optional, tag="1")]
8718    pub nid: ::core::option::Option<i32>,
8719    #[prost(uint32, optional, tag="2")]
8720    pub idx: ::core::option::Option<u32>,
8721    #[prost(int32, optional, tag="3")]
8722    pub order: ::core::option::Option<i32>,
8723    #[prost(int32, optional, tag="4")]
8724    pub ret: ::core::option::Option<i32>,
8725}
8726#[derive(Clone, PartialEq, ::prost::Message)]
8727pub struct MmCompactionIsolateFreepagesFtraceEvent {
8728    #[prost(uint64, optional, tag="1")]
8729    pub start_pfn: ::core::option::Option<u64>,
8730    #[prost(uint64, optional, tag="2")]
8731    pub end_pfn: ::core::option::Option<u64>,
8732    #[prost(uint64, optional, tag="3")]
8733    pub nr_scanned: ::core::option::Option<u64>,
8734    #[prost(uint64, optional, tag="4")]
8735    pub nr_taken: ::core::option::Option<u64>,
8736}
8737#[derive(Clone, PartialEq, ::prost::Message)]
8738pub struct MmCompactionIsolateMigratepagesFtraceEvent {
8739    #[prost(uint64, optional, tag="1")]
8740    pub start_pfn: ::core::option::Option<u64>,
8741    #[prost(uint64, optional, tag="2")]
8742    pub end_pfn: ::core::option::Option<u64>,
8743    #[prost(uint64, optional, tag="3")]
8744    pub nr_scanned: ::core::option::Option<u64>,
8745    #[prost(uint64, optional, tag="4")]
8746    pub nr_taken: ::core::option::Option<u64>,
8747}
8748#[derive(Clone, PartialEq, ::prost::Message)]
8749pub struct MmCompactionKcompactdSleepFtraceEvent {
8750    #[prost(int32, optional, tag="1")]
8751    pub nid: ::core::option::Option<i32>,
8752}
8753#[derive(Clone, PartialEq, ::prost::Message)]
8754pub struct MmCompactionKcompactdWakeFtraceEvent {
8755    #[prost(int32, optional, tag="1")]
8756    pub nid: ::core::option::Option<i32>,
8757    #[prost(int32, optional, tag="2")]
8758    pub order: ::core::option::Option<i32>,
8759    #[prost(uint32, optional, tag="3")]
8760    pub classzone_idx: ::core::option::Option<u32>,
8761    #[prost(uint32, optional, tag="4")]
8762    pub highest_zoneidx: ::core::option::Option<u32>,
8763}
8764#[derive(Clone, PartialEq, ::prost::Message)]
8765pub struct MmCompactionMigratepagesFtraceEvent {
8766    #[prost(uint64, optional, tag="1")]
8767    pub nr_migrated: ::core::option::Option<u64>,
8768    #[prost(uint64, optional, tag="2")]
8769    pub nr_failed: ::core::option::Option<u64>,
8770}
8771#[derive(Clone, PartialEq, ::prost::Message)]
8772pub struct MmCompactionSuitableFtraceEvent {
8773    #[prost(int32, optional, tag="1")]
8774    pub nid: ::core::option::Option<i32>,
8775    #[prost(uint32, optional, tag="2")]
8776    pub idx: ::core::option::Option<u32>,
8777    #[prost(int32, optional, tag="3")]
8778    pub order: ::core::option::Option<i32>,
8779    #[prost(int32, optional, tag="4")]
8780    pub ret: ::core::option::Option<i32>,
8781}
8782#[derive(Clone, PartialEq, ::prost::Message)]
8783pub struct MmCompactionTryToCompactPagesFtraceEvent {
8784    #[prost(int32, optional, tag="1")]
8785    pub order: ::core::option::Option<i32>,
8786    #[prost(uint32, optional, tag="2")]
8787    pub gfp_mask: ::core::option::Option<u32>,
8788    #[prost(uint32, optional, tag="3")]
8789    pub mode: ::core::option::Option<u32>,
8790    #[prost(int32, optional, tag="4")]
8791    pub prio: ::core::option::Option<i32>,
8792}
8793#[derive(Clone, PartialEq, ::prost::Message)]
8794pub struct MmCompactionWakeupKcompactdFtraceEvent {
8795    #[prost(int32, optional, tag="1")]
8796    pub nid: ::core::option::Option<i32>,
8797    #[prost(int32, optional, tag="2")]
8798    pub order: ::core::option::Option<i32>,
8799    #[prost(uint32, optional, tag="3")]
8800    pub classzone_idx: ::core::option::Option<u32>,
8801    #[prost(uint32, optional, tag="4")]
8802    pub highest_zoneidx: ::core::option::Option<u32>,
8803}
8804// End of protos/perfetto/trace/ftrace/compaction.proto
8805
8806// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
8807
8808#[derive(Clone, PartialEq, ::prost::Message)]
8809pub struct ParamSetValueCpmFtraceEvent {
8810    #[prost(string, optional, tag="1")]
8811    pub body: ::core::option::Option<::prost::alloc::string::String>,
8812    #[prost(uint32, optional, tag="2")]
8813    pub value: ::core::option::Option<u32>,
8814    #[prost(int64, optional, tag="3")]
8815    pub timestamp: ::core::option::Option<i64>,
8816}
8817// End of protos/perfetto/trace/ftrace/cpm_trace.proto
8818
8819// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
8820
8821#[derive(Clone, PartialEq, ::prost::Message)]
8822pub struct CpuhpExitFtraceEvent {
8823    #[prost(uint32, optional, tag="1")]
8824    pub cpu: ::core::option::Option<u32>,
8825    #[prost(int32, optional, tag="2")]
8826    pub idx: ::core::option::Option<i32>,
8827    #[prost(int32, optional, tag="3")]
8828    pub ret: ::core::option::Option<i32>,
8829    #[prost(int32, optional, tag="4")]
8830    pub state: ::core::option::Option<i32>,
8831}
8832#[derive(Clone, PartialEq, ::prost::Message)]
8833pub struct CpuhpMultiEnterFtraceEvent {
8834    #[prost(uint32, optional, tag="1")]
8835    pub cpu: ::core::option::Option<u32>,
8836    #[prost(uint64, optional, tag="2")]
8837    pub fun: ::core::option::Option<u64>,
8838    #[prost(int32, optional, tag="3")]
8839    pub idx: ::core::option::Option<i32>,
8840    #[prost(int32, optional, tag="4")]
8841    pub target: ::core::option::Option<i32>,
8842}
8843#[derive(Clone, PartialEq, ::prost::Message)]
8844pub struct CpuhpEnterFtraceEvent {
8845    #[prost(uint32, optional, tag="1")]
8846    pub cpu: ::core::option::Option<u32>,
8847    #[prost(uint64, optional, tag="2")]
8848    pub fun: ::core::option::Option<u64>,
8849    #[prost(int32, optional, tag="3")]
8850    pub idx: ::core::option::Option<i32>,
8851    #[prost(int32, optional, tag="4")]
8852    pub target: ::core::option::Option<i32>,
8853}
8854#[derive(Clone, PartialEq, ::prost::Message)]
8855pub struct CpuhpLatencyFtraceEvent {
8856    #[prost(uint32, optional, tag="1")]
8857    pub cpu: ::core::option::Option<u32>,
8858    #[prost(int32, optional, tag="2")]
8859    pub ret: ::core::option::Option<i32>,
8860    #[prost(uint32, optional, tag="3")]
8861    pub state: ::core::option::Option<u32>,
8862    #[prost(uint64, optional, tag="4")]
8863    pub time: ::core::option::Option<u64>,
8864}
8865#[derive(Clone, PartialEq, ::prost::Message)]
8866pub struct CpuhpPauseFtraceEvent {
8867    #[prost(uint32, optional, tag="1")]
8868    pub active_cpus: ::core::option::Option<u32>,
8869    #[prost(uint32, optional, tag="2")]
8870    pub cpus: ::core::option::Option<u32>,
8871    #[prost(uint32, optional, tag="3")]
8872    pub pause: ::core::option::Option<u32>,
8873    #[prost(uint32, optional, tag="4")]
8874    pub time: ::core::option::Option<u32>,
8875}
8876// End of protos/perfetto/trace/ftrace/cpuhp.proto
8877
8878// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
8879
8880#[derive(Clone, PartialEq, ::prost::Message)]
8881pub struct CrosEcSensorhubDataFtraceEvent {
8882    #[prost(int64, optional, tag="1")]
8883    pub current_time: ::core::option::Option<i64>,
8884    #[prost(int64, optional, tag="2")]
8885    pub current_timestamp: ::core::option::Option<i64>,
8886    #[prost(int64, optional, tag="3")]
8887    pub delta: ::core::option::Option<i64>,
8888    #[prost(uint32, optional, tag="4")]
8889    pub ec_fifo_timestamp: ::core::option::Option<u32>,
8890    #[prost(uint32, optional, tag="5")]
8891    pub ec_sensor_num: ::core::option::Option<u32>,
8892    #[prost(int64, optional, tag="6")]
8893    pub fifo_timestamp: ::core::option::Option<i64>,
8894}
8895// End of protos/perfetto/trace/ftrace/cros_ec.proto
8896
8897// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
8898
8899#[derive(Clone, PartialEq, ::prost::Message)]
8900pub struct DcvshFreqFtraceEvent {
8901    #[prost(uint64, optional, tag="1")]
8902    pub cpu: ::core::option::Option<u64>,
8903    #[prost(uint64, optional, tag="2")]
8904    pub freq: ::core::option::Option<u64>,
8905}
8906// End of protos/perfetto/trace/ftrace/dcvsh.proto
8907
8908// Begin of protos/perfetto/trace/ftrace/devfreq.proto
8909
8910#[derive(Clone, PartialEq, ::prost::Message)]
8911pub struct DevfreqFrequencyFtraceEvent {
8912    #[prost(string, optional, tag="1")]
8913    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
8914    #[prost(uint64, optional, tag="2")]
8915    pub freq: ::core::option::Option<u64>,
8916    #[prost(uint64, optional, tag="3")]
8917    pub prev_freq: ::core::option::Option<u64>,
8918    #[prost(uint64, optional, tag="4")]
8919    pub busy_time: ::core::option::Option<u64>,
8920    #[prost(uint64, optional, tag="5")]
8921    pub total_time: ::core::option::Option<u64>,
8922}
8923// End of protos/perfetto/trace/ftrace/devfreq.proto
8924
8925// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
8926
8927#[derive(Clone, PartialEq, ::prost::Message)]
8928pub struct DmaFenceInitFtraceEvent {
8929    #[prost(uint32, optional, tag="1")]
8930    pub context: ::core::option::Option<u32>,
8931    #[prost(string, optional, tag="2")]
8932    pub driver: ::core::option::Option<::prost::alloc::string::String>,
8933    #[prost(uint32, optional, tag="3")]
8934    pub seqno: ::core::option::Option<u32>,
8935    #[prost(string, optional, tag="4")]
8936    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
8937}
8938#[derive(Clone, PartialEq, ::prost::Message)]
8939pub struct DmaFenceEmitFtraceEvent {
8940    #[prost(uint32, optional, tag="1")]
8941    pub context: ::core::option::Option<u32>,
8942    #[prost(string, optional, tag="2")]
8943    pub driver: ::core::option::Option<::prost::alloc::string::String>,
8944    #[prost(uint32, optional, tag="3")]
8945    pub seqno: ::core::option::Option<u32>,
8946    #[prost(string, optional, tag="4")]
8947    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
8948}
8949#[derive(Clone, PartialEq, ::prost::Message)]
8950pub struct DmaFenceSignaledFtraceEvent {
8951    #[prost(uint32, optional, tag="1")]
8952    pub context: ::core::option::Option<u32>,
8953    #[prost(string, optional, tag="2")]
8954    pub driver: ::core::option::Option<::prost::alloc::string::String>,
8955    #[prost(uint32, optional, tag="3")]
8956    pub seqno: ::core::option::Option<u32>,
8957    #[prost(string, optional, tag="4")]
8958    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
8959}
8960#[derive(Clone, PartialEq, ::prost::Message)]
8961pub struct DmaFenceWaitStartFtraceEvent {
8962    #[prost(uint32, optional, tag="1")]
8963    pub context: ::core::option::Option<u32>,
8964    #[prost(string, optional, tag="2")]
8965    pub driver: ::core::option::Option<::prost::alloc::string::String>,
8966    #[prost(uint32, optional, tag="3")]
8967    pub seqno: ::core::option::Option<u32>,
8968    #[prost(string, optional, tag="4")]
8969    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
8970}
8971#[derive(Clone, PartialEq, ::prost::Message)]
8972pub struct DmaFenceWaitEndFtraceEvent {
8973    #[prost(uint32, optional, tag="1")]
8974    pub context: ::core::option::Option<u32>,
8975    #[prost(string, optional, tag="2")]
8976    pub driver: ::core::option::Option<::prost::alloc::string::String>,
8977    #[prost(uint32, optional, tag="3")]
8978    pub seqno: ::core::option::Option<u32>,
8979    #[prost(string, optional, tag="4")]
8980    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
8981}
8982// End of protos/perfetto/trace/ftrace/dma_fence.proto
8983
8984// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
8985
8986#[derive(Clone, PartialEq, ::prost::Message)]
8987pub struct DmaHeapStatFtraceEvent {
8988    #[prost(uint64, optional, tag="1")]
8989    pub inode: ::core::option::Option<u64>,
8990    #[prost(int64, optional, tag="2")]
8991    pub len: ::core::option::Option<i64>,
8992    #[prost(uint64, optional, tag="3")]
8993    pub total_allocated: ::core::option::Option<u64>,
8994}
8995// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
8996
8997// Begin of protos/perfetto/trace/ftrace/dpu.proto
8998
8999#[derive(Clone, PartialEq, ::prost::Message)]
9000pub struct DpuTracingMarkWriteFtraceEvent {
9001    #[prost(int32, optional, tag="1")]
9002    pub pid: ::core::option::Option<i32>,
9003    #[prost(string, optional, tag="2")]
9004    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
9005    #[prost(uint32, optional, tag="3")]
9006    pub trace_begin: ::core::option::Option<u32>,
9007    #[prost(string, optional, tag="4")]
9008    pub name: ::core::option::Option<::prost::alloc::string::String>,
9009    #[prost(uint32, optional, tag="5")]
9010    pub r#type: ::core::option::Option<u32>,
9011    #[prost(int32, optional, tag="6")]
9012    pub value: ::core::option::Option<i32>,
9013}
9014#[derive(Clone, PartialEq, ::prost::Message)]
9015pub struct DpuDsiCmdFifoStatusFtraceEvent {
9016    #[prost(uint32, optional, tag="1")]
9017    pub header: ::core::option::Option<u32>,
9018    #[prost(uint32, optional, tag="2")]
9019    pub payload: ::core::option::Option<u32>,
9020}
9021#[derive(Clone, PartialEq, ::prost::Message)]
9022pub struct DpuDsiRxFtraceEvent {
9023    #[prost(uint32, optional, tag="1")]
9024    pub cmd: ::core::option::Option<u32>,
9025    #[prost(uint32, optional, tag="2")]
9026    pub rx_buf: ::core::option::Option<u32>,
9027}
9028#[derive(Clone, PartialEq, ::prost::Message)]
9029pub struct DpuDsiTxFtraceEvent {
9030    #[prost(uint32, optional, tag="1")]
9031    pub r#type: ::core::option::Option<u32>,
9032    #[prost(uint32, optional, tag="2")]
9033    pub tx_buf: ::core::option::Option<u32>,
9034    #[prost(uint32, optional, tag="3")]
9035    pub last: ::core::option::Option<u32>,
9036    #[prost(uint32, optional, tag="4")]
9037    pub delay_ms: ::core::option::Option<u32>,
9038}
9039#[derive(Clone, PartialEq, ::prost::Message)]
9040pub struct DpuDispDpuUnderrunFtraceEvent {
9041    #[prost(int32, optional, tag="1")]
9042    pub id: ::core::option::Option<i32>,
9043    #[prost(int32, optional, tag="2")]
9044    pub frames_pending: ::core::option::Option<i32>,
9045    #[prost(int32, optional, tag="3")]
9046    pub vsync_count: ::core::option::Option<i32>,
9047}
9048#[derive(Clone, PartialEq, ::prost::Message)]
9049pub struct DpuDispVblankIrqEnableFtraceEvent {
9050    #[prost(int32, optional, tag="1")]
9051    pub id: ::core::option::Option<i32>,
9052    #[prost(int32, optional, tag="2")]
9053    pub output_id: ::core::option::Option<i32>,
9054    #[prost(int32, optional, tag="3")]
9055    pub enable: ::core::option::Option<i32>,
9056}
9057// End of protos/perfetto/trace/ftrace/dpu.proto
9058
9059// Begin of protos/perfetto/trace/ftrace/drm.proto
9060
9061#[derive(Clone, PartialEq, ::prost::Message)]
9062pub struct DrmVblankEventFtraceEvent {
9063    #[prost(int32, optional, tag="1")]
9064    pub crtc: ::core::option::Option<i32>,
9065    #[prost(uint32, optional, tag="2")]
9066    pub high_prec: ::core::option::Option<u32>,
9067    #[prost(uint32, optional, tag="3")]
9068    pub seq: ::core::option::Option<u32>,
9069    #[prost(int64, optional, tag="4")]
9070    pub time: ::core::option::Option<i64>,
9071}
9072#[derive(Clone, PartialEq, ::prost::Message)]
9073pub struct DrmVblankEventDeliveredFtraceEvent {
9074    #[prost(int32, optional, tag="1")]
9075    pub crtc: ::core::option::Option<i32>,
9076    #[prost(uint64, optional, tag="2")]
9077    pub file: ::core::option::Option<u64>,
9078    #[prost(uint32, optional, tag="3")]
9079    pub seq: ::core::option::Option<u32>,
9080}
9081// End of protos/perfetto/trace/ftrace/drm.proto
9082
9083// Begin of protos/perfetto/trace/ftrace/ext4.proto
9084
9085#[derive(Clone, PartialEq, ::prost::Message)]
9086pub struct Ext4DaWriteBeginFtraceEvent {
9087    #[prost(uint64, optional, tag="1")]
9088    pub dev: ::core::option::Option<u64>,
9089    #[prost(uint64, optional, tag="2")]
9090    pub ino: ::core::option::Option<u64>,
9091    #[prost(int64, optional, tag="3")]
9092    pub pos: ::core::option::Option<i64>,
9093    #[prost(uint32, optional, tag="4")]
9094    pub len: ::core::option::Option<u32>,
9095    #[prost(uint32, optional, tag="5")]
9096    pub flags: ::core::option::Option<u32>,
9097}
9098#[derive(Clone, PartialEq, ::prost::Message)]
9099pub struct Ext4DaWriteEndFtraceEvent {
9100    #[prost(uint64, optional, tag="1")]
9101    pub dev: ::core::option::Option<u64>,
9102    #[prost(uint64, optional, tag="2")]
9103    pub ino: ::core::option::Option<u64>,
9104    #[prost(int64, optional, tag="3")]
9105    pub pos: ::core::option::Option<i64>,
9106    #[prost(uint32, optional, tag="4")]
9107    pub len: ::core::option::Option<u32>,
9108    #[prost(uint32, optional, tag="5")]
9109    pub copied: ::core::option::Option<u32>,
9110}
9111#[derive(Clone, PartialEq, ::prost::Message)]
9112pub struct Ext4SyncFileEnterFtraceEvent {
9113    #[prost(uint64, optional, tag="1")]
9114    pub dev: ::core::option::Option<u64>,
9115    #[prost(uint64, optional, tag="2")]
9116    pub ino: ::core::option::Option<u64>,
9117    #[prost(uint64, optional, tag="3")]
9118    pub parent: ::core::option::Option<u64>,
9119    #[prost(int32, optional, tag="4")]
9120    pub datasync: ::core::option::Option<i32>,
9121}
9122#[derive(Clone, PartialEq, ::prost::Message)]
9123pub struct Ext4SyncFileExitFtraceEvent {
9124    #[prost(uint64, optional, tag="1")]
9125    pub dev: ::core::option::Option<u64>,
9126    #[prost(uint64, optional, tag="2")]
9127    pub ino: ::core::option::Option<u64>,
9128    #[prost(int32, optional, tag="3")]
9129    pub ret: ::core::option::Option<i32>,
9130}
9131#[derive(Clone, PartialEq, ::prost::Message)]
9132pub struct Ext4AllocDaBlocksFtraceEvent {
9133    #[prost(uint64, optional, tag="1")]
9134    pub dev: ::core::option::Option<u64>,
9135    #[prost(uint64, optional, tag="2")]
9136    pub ino: ::core::option::Option<u64>,
9137    #[prost(uint32, optional, tag="3")]
9138    pub data_blocks: ::core::option::Option<u32>,
9139    #[prost(uint32, optional, tag="4")]
9140    pub meta_blocks: ::core::option::Option<u32>,
9141}
9142#[derive(Clone, PartialEq, ::prost::Message)]
9143pub struct Ext4AllocateBlocksFtraceEvent {
9144    #[prost(uint64, optional, tag="1")]
9145    pub dev: ::core::option::Option<u64>,
9146    #[prost(uint64, optional, tag="2")]
9147    pub ino: ::core::option::Option<u64>,
9148    #[prost(uint64, optional, tag="3")]
9149    pub block: ::core::option::Option<u64>,
9150    #[prost(uint32, optional, tag="4")]
9151    pub len: ::core::option::Option<u32>,
9152    #[prost(uint32, optional, tag="5")]
9153    pub logical: ::core::option::Option<u32>,
9154    #[prost(uint32, optional, tag="6")]
9155    pub lleft: ::core::option::Option<u32>,
9156    #[prost(uint32, optional, tag="7")]
9157    pub lright: ::core::option::Option<u32>,
9158    #[prost(uint64, optional, tag="8")]
9159    pub goal: ::core::option::Option<u64>,
9160    #[prost(uint64, optional, tag="9")]
9161    pub pleft: ::core::option::Option<u64>,
9162    #[prost(uint64, optional, tag="10")]
9163    pub pright: ::core::option::Option<u64>,
9164    #[prost(uint32, optional, tag="11")]
9165    pub flags: ::core::option::Option<u32>,
9166}
9167#[derive(Clone, PartialEq, ::prost::Message)]
9168pub struct Ext4AllocateInodeFtraceEvent {
9169    #[prost(uint64, optional, tag="1")]
9170    pub dev: ::core::option::Option<u64>,
9171    #[prost(uint64, optional, tag="2")]
9172    pub ino: ::core::option::Option<u64>,
9173    #[prost(uint64, optional, tag="3")]
9174    pub dir: ::core::option::Option<u64>,
9175    #[prost(uint32, optional, tag="4")]
9176    pub mode: ::core::option::Option<u32>,
9177}
9178#[derive(Clone, PartialEq, ::prost::Message)]
9179pub struct Ext4BeginOrderedTruncateFtraceEvent {
9180    #[prost(uint64, optional, tag="1")]
9181    pub dev: ::core::option::Option<u64>,
9182    #[prost(uint64, optional, tag="2")]
9183    pub ino: ::core::option::Option<u64>,
9184    #[prost(int64, optional, tag="3")]
9185    pub new_size: ::core::option::Option<i64>,
9186}
9187#[derive(Clone, PartialEq, ::prost::Message)]
9188pub struct Ext4CollapseRangeFtraceEvent {
9189    #[prost(uint64, optional, tag="1")]
9190    pub dev: ::core::option::Option<u64>,
9191    #[prost(uint64, optional, tag="2")]
9192    pub ino: ::core::option::Option<u64>,
9193    #[prost(int64, optional, tag="3")]
9194    pub offset: ::core::option::Option<i64>,
9195    #[prost(int64, optional, tag="4")]
9196    pub len: ::core::option::Option<i64>,
9197}
9198#[derive(Clone, PartialEq, ::prost::Message)]
9199pub struct Ext4DaReleaseSpaceFtraceEvent {
9200    #[prost(uint64, optional, tag="1")]
9201    pub dev: ::core::option::Option<u64>,
9202    #[prost(uint64, optional, tag="2")]
9203    pub ino: ::core::option::Option<u64>,
9204    #[prost(uint64, optional, tag="3")]
9205    pub i_blocks: ::core::option::Option<u64>,
9206    #[prost(int32, optional, tag="4")]
9207    pub freed_blocks: ::core::option::Option<i32>,
9208    #[prost(int32, optional, tag="5")]
9209    pub reserved_data_blocks: ::core::option::Option<i32>,
9210    #[prost(int32, optional, tag="6")]
9211    pub reserved_meta_blocks: ::core::option::Option<i32>,
9212    #[prost(int32, optional, tag="7")]
9213    pub allocated_meta_blocks: ::core::option::Option<i32>,
9214    #[prost(uint32, optional, tag="8")]
9215    pub mode: ::core::option::Option<u32>,
9216}
9217#[derive(Clone, PartialEq, ::prost::Message)]
9218pub struct Ext4DaReserveSpaceFtraceEvent {
9219    #[prost(uint64, optional, tag="1")]
9220    pub dev: ::core::option::Option<u64>,
9221    #[prost(uint64, optional, tag="2")]
9222    pub ino: ::core::option::Option<u64>,
9223    #[prost(uint64, optional, tag="3")]
9224    pub i_blocks: ::core::option::Option<u64>,
9225    #[prost(int32, optional, tag="4")]
9226    pub reserved_data_blocks: ::core::option::Option<i32>,
9227    #[prost(int32, optional, tag="5")]
9228    pub reserved_meta_blocks: ::core::option::Option<i32>,
9229    #[prost(uint32, optional, tag="6")]
9230    pub mode: ::core::option::Option<u32>,
9231    #[prost(int32, optional, tag="7")]
9232    pub md_needed: ::core::option::Option<i32>,
9233}
9234#[derive(Clone, PartialEq, ::prost::Message)]
9235pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
9236    #[prost(uint64, optional, tag="1")]
9237    pub dev: ::core::option::Option<u64>,
9238    #[prost(uint64, optional, tag="2")]
9239    pub ino: ::core::option::Option<u64>,
9240    #[prost(uint64, optional, tag="3")]
9241    pub i_blocks: ::core::option::Option<u64>,
9242    #[prost(int32, optional, tag="4")]
9243    pub used_blocks: ::core::option::Option<i32>,
9244    #[prost(int32, optional, tag="5")]
9245    pub reserved_data_blocks: ::core::option::Option<i32>,
9246    #[prost(int32, optional, tag="6")]
9247    pub reserved_meta_blocks: ::core::option::Option<i32>,
9248    #[prost(int32, optional, tag="7")]
9249    pub allocated_meta_blocks: ::core::option::Option<i32>,
9250    #[prost(int32, optional, tag="8")]
9251    pub quota_claim: ::core::option::Option<i32>,
9252    #[prost(uint32, optional, tag="9")]
9253    pub mode: ::core::option::Option<u32>,
9254}
9255#[derive(Clone, PartialEq, ::prost::Message)]
9256pub struct Ext4DaWritePagesFtraceEvent {
9257    #[prost(uint64, optional, tag="1")]
9258    pub dev: ::core::option::Option<u64>,
9259    #[prost(uint64, optional, tag="2")]
9260    pub ino: ::core::option::Option<u64>,
9261    #[prost(uint64, optional, tag="3")]
9262    pub first_page: ::core::option::Option<u64>,
9263    #[prost(int64, optional, tag="4")]
9264    pub nr_to_write: ::core::option::Option<i64>,
9265    #[prost(int32, optional, tag="5")]
9266    pub sync_mode: ::core::option::Option<i32>,
9267    #[prost(uint64, optional, tag="6")]
9268    pub b_blocknr: ::core::option::Option<u64>,
9269    #[prost(uint32, optional, tag="7")]
9270    pub b_size: ::core::option::Option<u32>,
9271    #[prost(uint32, optional, tag="8")]
9272    pub b_state: ::core::option::Option<u32>,
9273    #[prost(int32, optional, tag="9")]
9274    pub io_done: ::core::option::Option<i32>,
9275    #[prost(int32, optional, tag="10")]
9276    pub pages_written: ::core::option::Option<i32>,
9277}
9278#[derive(Clone, PartialEq, ::prost::Message)]
9279pub struct Ext4DaWritePagesExtentFtraceEvent {
9280    #[prost(uint64, optional, tag="1")]
9281    pub dev: ::core::option::Option<u64>,
9282    #[prost(uint64, optional, tag="2")]
9283    pub ino: ::core::option::Option<u64>,
9284    #[prost(uint64, optional, tag="3")]
9285    pub lblk: ::core::option::Option<u64>,
9286    #[prost(uint32, optional, tag="4")]
9287    pub len: ::core::option::Option<u32>,
9288    #[prost(uint32, optional, tag="5")]
9289    pub flags: ::core::option::Option<u32>,
9290}
9291#[derive(Clone, PartialEq, ::prost::Message)]
9292pub struct Ext4DirectIoEnterFtraceEvent {
9293    #[prost(uint64, optional, tag="1")]
9294    pub dev: ::core::option::Option<u64>,
9295    #[prost(uint64, optional, tag="2")]
9296    pub ino: ::core::option::Option<u64>,
9297    #[prost(int64, optional, tag="3")]
9298    pub pos: ::core::option::Option<i64>,
9299    #[prost(uint64, optional, tag="4")]
9300    pub len: ::core::option::Option<u64>,
9301    #[prost(int32, optional, tag="5")]
9302    pub rw: ::core::option::Option<i32>,
9303}
9304#[derive(Clone, PartialEq, ::prost::Message)]
9305pub struct Ext4DirectIoExitFtraceEvent {
9306    #[prost(uint64, optional, tag="1")]
9307    pub dev: ::core::option::Option<u64>,
9308    #[prost(uint64, optional, tag="2")]
9309    pub ino: ::core::option::Option<u64>,
9310    #[prost(int64, optional, tag="3")]
9311    pub pos: ::core::option::Option<i64>,
9312    #[prost(uint64, optional, tag="4")]
9313    pub len: ::core::option::Option<u64>,
9314    #[prost(int32, optional, tag="5")]
9315    pub rw: ::core::option::Option<i32>,
9316    #[prost(int32, optional, tag="6")]
9317    pub ret: ::core::option::Option<i32>,
9318}
9319#[derive(Clone, PartialEq, ::prost::Message)]
9320pub struct Ext4DiscardBlocksFtraceEvent {
9321    #[prost(uint64, optional, tag="1")]
9322    pub dev: ::core::option::Option<u64>,
9323    #[prost(uint64, optional, tag="2")]
9324    pub blk: ::core::option::Option<u64>,
9325    #[prost(uint64, optional, tag="3")]
9326    pub count: ::core::option::Option<u64>,
9327}
9328#[derive(Clone, PartialEq, ::prost::Message)]
9329pub struct Ext4DiscardPreallocationsFtraceEvent {
9330    #[prost(uint64, optional, tag="1")]
9331    pub dev: ::core::option::Option<u64>,
9332    #[prost(uint64, optional, tag="2")]
9333    pub ino: ::core::option::Option<u64>,
9334    #[prost(uint32, optional, tag="3")]
9335    pub len: ::core::option::Option<u32>,
9336    #[prost(uint32, optional, tag="4")]
9337    pub needed: ::core::option::Option<u32>,
9338}
9339#[derive(Clone, PartialEq, ::prost::Message)]
9340pub struct Ext4DropInodeFtraceEvent {
9341    #[prost(uint64, optional, tag="1")]
9342    pub dev: ::core::option::Option<u64>,
9343    #[prost(uint64, optional, tag="2")]
9344    pub ino: ::core::option::Option<u64>,
9345    #[prost(int32, optional, tag="3")]
9346    pub drop: ::core::option::Option<i32>,
9347}
9348#[derive(Clone, PartialEq, ::prost::Message)]
9349pub struct Ext4EsCacheExtentFtraceEvent {
9350    #[prost(uint64, optional, tag="1")]
9351    pub dev: ::core::option::Option<u64>,
9352    #[prost(uint64, optional, tag="2")]
9353    pub ino: ::core::option::Option<u64>,
9354    #[prost(uint32, optional, tag="3")]
9355    pub lblk: ::core::option::Option<u32>,
9356    #[prost(uint32, optional, tag="4")]
9357    pub len: ::core::option::Option<u32>,
9358    #[prost(uint64, optional, tag="5")]
9359    pub pblk: ::core::option::Option<u64>,
9360    #[prost(uint32, optional, tag="6")]
9361    pub status: ::core::option::Option<u32>,
9362}
9363#[derive(Clone, PartialEq, ::prost::Message)]
9364pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
9365    #[prost(uint64, optional, tag="1")]
9366    pub dev: ::core::option::Option<u64>,
9367    #[prost(uint64, optional, tag="2")]
9368    pub ino: ::core::option::Option<u64>,
9369    #[prost(uint32, optional, tag="3")]
9370    pub lblk: ::core::option::Option<u32>,
9371}
9372#[derive(Clone, PartialEq, ::prost::Message)]
9373pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
9374    #[prost(uint64, optional, tag="1")]
9375    pub dev: ::core::option::Option<u64>,
9376    #[prost(uint64, optional, tag="2")]
9377    pub ino: ::core::option::Option<u64>,
9378    #[prost(uint32, optional, tag="3")]
9379    pub lblk: ::core::option::Option<u32>,
9380    #[prost(uint32, optional, tag="4")]
9381    pub len: ::core::option::Option<u32>,
9382    #[prost(uint64, optional, tag="5")]
9383    pub pblk: ::core::option::Option<u64>,
9384    #[prost(uint64, optional, tag="6")]
9385    pub status: ::core::option::Option<u64>,
9386}
9387#[derive(Clone, PartialEq, ::prost::Message)]
9388pub struct Ext4EsInsertExtentFtraceEvent {
9389    #[prost(uint64, optional, tag="1")]
9390    pub dev: ::core::option::Option<u64>,
9391    #[prost(uint64, optional, tag="2")]
9392    pub ino: ::core::option::Option<u64>,
9393    #[prost(uint32, optional, tag="3")]
9394    pub lblk: ::core::option::Option<u32>,
9395    #[prost(uint32, optional, tag="4")]
9396    pub len: ::core::option::Option<u32>,
9397    #[prost(uint64, optional, tag="5")]
9398    pub pblk: ::core::option::Option<u64>,
9399    #[prost(uint64, optional, tag="6")]
9400    pub status: ::core::option::Option<u64>,
9401}
9402#[derive(Clone, PartialEq, ::prost::Message)]
9403pub struct Ext4EsLookupExtentEnterFtraceEvent {
9404    #[prost(uint64, optional, tag="1")]
9405    pub dev: ::core::option::Option<u64>,
9406    #[prost(uint64, optional, tag="2")]
9407    pub ino: ::core::option::Option<u64>,
9408    #[prost(uint32, optional, tag="3")]
9409    pub lblk: ::core::option::Option<u32>,
9410}
9411#[derive(Clone, PartialEq, ::prost::Message)]
9412pub struct Ext4EsLookupExtentExitFtraceEvent {
9413    #[prost(uint64, optional, tag="1")]
9414    pub dev: ::core::option::Option<u64>,
9415    #[prost(uint64, optional, tag="2")]
9416    pub ino: ::core::option::Option<u64>,
9417    #[prost(uint32, optional, tag="3")]
9418    pub lblk: ::core::option::Option<u32>,
9419    #[prost(uint32, optional, tag="4")]
9420    pub len: ::core::option::Option<u32>,
9421    #[prost(uint64, optional, tag="5")]
9422    pub pblk: ::core::option::Option<u64>,
9423    #[prost(uint64, optional, tag="6")]
9424    pub status: ::core::option::Option<u64>,
9425    #[prost(int32, optional, tag="7")]
9426    pub found: ::core::option::Option<i32>,
9427}
9428#[derive(Clone, PartialEq, ::prost::Message)]
9429pub struct Ext4EsRemoveExtentFtraceEvent {
9430    #[prost(uint64, optional, tag="1")]
9431    pub dev: ::core::option::Option<u64>,
9432    #[prost(uint64, optional, tag="2")]
9433    pub ino: ::core::option::Option<u64>,
9434    #[prost(int64, optional, tag="3")]
9435    pub lblk: ::core::option::Option<i64>,
9436    #[prost(int64, optional, tag="4")]
9437    pub len: ::core::option::Option<i64>,
9438}
9439#[derive(Clone, PartialEq, ::prost::Message)]
9440pub struct Ext4EsShrinkFtraceEvent {
9441    #[prost(uint64, optional, tag="1")]
9442    pub dev: ::core::option::Option<u64>,
9443    #[prost(int32, optional, tag="2")]
9444    pub nr_shrunk: ::core::option::Option<i32>,
9445    #[prost(uint64, optional, tag="3")]
9446    pub scan_time: ::core::option::Option<u64>,
9447    #[prost(int32, optional, tag="4")]
9448    pub nr_skipped: ::core::option::Option<i32>,
9449    #[prost(int32, optional, tag="5")]
9450    pub retried: ::core::option::Option<i32>,
9451}
9452#[derive(Clone, PartialEq, ::prost::Message)]
9453pub struct Ext4EsShrinkCountFtraceEvent {
9454    #[prost(uint64, optional, tag="1")]
9455    pub dev: ::core::option::Option<u64>,
9456    #[prost(int32, optional, tag="2")]
9457    pub nr_to_scan: ::core::option::Option<i32>,
9458    #[prost(int32, optional, tag="3")]
9459    pub cache_cnt: ::core::option::Option<i32>,
9460}
9461#[derive(Clone, PartialEq, ::prost::Message)]
9462pub struct Ext4EsShrinkScanEnterFtraceEvent {
9463    #[prost(uint64, optional, tag="1")]
9464    pub dev: ::core::option::Option<u64>,
9465    #[prost(int32, optional, tag="2")]
9466    pub nr_to_scan: ::core::option::Option<i32>,
9467    #[prost(int32, optional, tag="3")]
9468    pub cache_cnt: ::core::option::Option<i32>,
9469}
9470#[derive(Clone, PartialEq, ::prost::Message)]
9471pub struct Ext4EsShrinkScanExitFtraceEvent {
9472    #[prost(uint64, optional, tag="1")]
9473    pub dev: ::core::option::Option<u64>,
9474    #[prost(int32, optional, tag="2")]
9475    pub nr_shrunk: ::core::option::Option<i32>,
9476    #[prost(int32, optional, tag="3")]
9477    pub cache_cnt: ::core::option::Option<i32>,
9478}
9479#[derive(Clone, PartialEq, ::prost::Message)]
9480pub struct Ext4EvictInodeFtraceEvent {
9481    #[prost(uint64, optional, tag="1")]
9482    pub dev: ::core::option::Option<u64>,
9483    #[prost(uint64, optional, tag="2")]
9484    pub ino: ::core::option::Option<u64>,
9485    #[prost(int32, optional, tag="3")]
9486    pub nlink: ::core::option::Option<i32>,
9487}
9488#[derive(Clone, PartialEq, ::prost::Message)]
9489pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
9490    #[prost(uint64, optional, tag="1")]
9491    pub dev: ::core::option::Option<u64>,
9492    #[prost(uint64, optional, tag="2")]
9493    pub ino: ::core::option::Option<u64>,
9494    #[prost(uint32, optional, tag="3")]
9495    pub m_lblk: ::core::option::Option<u32>,
9496    #[prost(uint32, optional, tag="4")]
9497    pub m_len: ::core::option::Option<u32>,
9498    #[prost(uint32, optional, tag="5")]
9499    pub u_lblk: ::core::option::Option<u32>,
9500    #[prost(uint32, optional, tag="6")]
9501    pub u_len: ::core::option::Option<u32>,
9502    #[prost(uint64, optional, tag="7")]
9503    pub u_pblk: ::core::option::Option<u64>,
9504}
9505#[derive(Clone, PartialEq, ::prost::Message)]
9506pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
9507    #[prost(uint64, optional, tag="1")]
9508    pub dev: ::core::option::Option<u64>,
9509    #[prost(uint64, optional, tag="2")]
9510    pub ino: ::core::option::Option<u64>,
9511    #[prost(uint32, optional, tag="3")]
9512    pub m_lblk: ::core::option::Option<u32>,
9513    #[prost(uint32, optional, tag="4")]
9514    pub m_len: ::core::option::Option<u32>,
9515    #[prost(uint32, optional, tag="5")]
9516    pub u_lblk: ::core::option::Option<u32>,
9517    #[prost(uint32, optional, tag="6")]
9518    pub u_len: ::core::option::Option<u32>,
9519    #[prost(uint64, optional, tag="7")]
9520    pub u_pblk: ::core::option::Option<u64>,
9521    #[prost(uint32, optional, tag="8")]
9522    pub i_lblk: ::core::option::Option<u32>,
9523    #[prost(uint32, optional, tag="9")]
9524    pub i_len: ::core::option::Option<u32>,
9525    #[prost(uint64, optional, tag="10")]
9526    pub i_pblk: ::core::option::Option<u64>,
9527}
9528#[derive(Clone, PartialEq, ::prost::Message)]
9529pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
9530    #[prost(uint64, optional, tag="1")]
9531    pub dev: ::core::option::Option<u64>,
9532    #[prost(uint64, optional, tag="2")]
9533    pub ino: ::core::option::Option<u64>,
9534    #[prost(int32, optional, tag="3")]
9535    pub flags: ::core::option::Option<i32>,
9536    #[prost(uint32, optional, tag="4")]
9537    pub lblk: ::core::option::Option<u32>,
9538    #[prost(uint64, optional, tag="5")]
9539    pub pblk: ::core::option::Option<u64>,
9540    #[prost(uint32, optional, tag="6")]
9541    pub len: ::core::option::Option<u32>,
9542    #[prost(uint32, optional, tag="7")]
9543    pub allocated: ::core::option::Option<u32>,
9544    #[prost(uint64, optional, tag="8")]
9545    pub newblk: ::core::option::Option<u64>,
9546}
9547#[derive(Clone, PartialEq, ::prost::Message)]
9548pub struct Ext4ExtInCacheFtraceEvent {
9549    #[prost(uint64, optional, tag="1")]
9550    pub dev: ::core::option::Option<u64>,
9551    #[prost(uint64, optional, tag="2")]
9552    pub ino: ::core::option::Option<u64>,
9553    #[prost(uint32, optional, tag="3")]
9554    pub lblk: ::core::option::Option<u32>,
9555    #[prost(int32, optional, tag="4")]
9556    pub ret: ::core::option::Option<i32>,
9557}
9558#[derive(Clone, PartialEq, ::prost::Message)]
9559pub struct Ext4ExtLoadExtentFtraceEvent {
9560    #[prost(uint64, optional, tag="1")]
9561    pub dev: ::core::option::Option<u64>,
9562    #[prost(uint64, optional, tag="2")]
9563    pub ino: ::core::option::Option<u64>,
9564    #[prost(uint64, optional, tag="3")]
9565    pub pblk: ::core::option::Option<u64>,
9566    #[prost(uint32, optional, tag="4")]
9567    pub lblk: ::core::option::Option<u32>,
9568}
9569#[derive(Clone, PartialEq, ::prost::Message)]
9570pub struct Ext4ExtMapBlocksEnterFtraceEvent {
9571    #[prost(uint64, optional, tag="1")]
9572    pub dev: ::core::option::Option<u64>,
9573    #[prost(uint64, optional, tag="2")]
9574    pub ino: ::core::option::Option<u64>,
9575    #[prost(uint32, optional, tag="3")]
9576    pub lblk: ::core::option::Option<u32>,
9577    #[prost(uint32, optional, tag="4")]
9578    pub len: ::core::option::Option<u32>,
9579    #[prost(uint32, optional, tag="5")]
9580    pub flags: ::core::option::Option<u32>,
9581}
9582#[derive(Clone, PartialEq, ::prost::Message)]
9583pub struct Ext4ExtMapBlocksExitFtraceEvent {
9584    #[prost(uint64, optional, tag="1")]
9585    pub dev: ::core::option::Option<u64>,
9586    #[prost(uint64, optional, tag="2")]
9587    pub ino: ::core::option::Option<u64>,
9588    #[prost(uint32, optional, tag="3")]
9589    pub flags: ::core::option::Option<u32>,
9590    #[prost(uint64, optional, tag="4")]
9591    pub pblk: ::core::option::Option<u64>,
9592    #[prost(uint32, optional, tag="5")]
9593    pub lblk: ::core::option::Option<u32>,
9594    #[prost(uint32, optional, tag="6")]
9595    pub len: ::core::option::Option<u32>,
9596    #[prost(uint32, optional, tag="7")]
9597    pub mflags: ::core::option::Option<u32>,
9598    #[prost(int32, optional, tag="8")]
9599    pub ret: ::core::option::Option<i32>,
9600}
9601#[derive(Clone, PartialEq, ::prost::Message)]
9602pub struct Ext4ExtPutInCacheFtraceEvent {
9603    #[prost(uint64, optional, tag="1")]
9604    pub dev: ::core::option::Option<u64>,
9605    #[prost(uint64, optional, tag="2")]
9606    pub ino: ::core::option::Option<u64>,
9607    #[prost(uint32, optional, tag="3")]
9608    pub lblk: ::core::option::Option<u32>,
9609    #[prost(uint32, optional, tag="4")]
9610    pub len: ::core::option::Option<u32>,
9611    #[prost(uint64, optional, tag="5")]
9612    pub start: ::core::option::Option<u64>,
9613}
9614#[derive(Clone, PartialEq, ::prost::Message)]
9615pub struct Ext4ExtRemoveSpaceFtraceEvent {
9616    #[prost(uint64, optional, tag="1")]
9617    pub dev: ::core::option::Option<u64>,
9618    #[prost(uint64, optional, tag="2")]
9619    pub ino: ::core::option::Option<u64>,
9620    #[prost(uint32, optional, tag="3")]
9621    pub start: ::core::option::Option<u32>,
9622    #[prost(uint32, optional, tag="4")]
9623    pub end: ::core::option::Option<u32>,
9624    #[prost(int32, optional, tag="5")]
9625    pub depth: ::core::option::Option<i32>,
9626}
9627#[derive(Clone, PartialEq, ::prost::Message)]
9628pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
9629    #[prost(uint64, optional, tag="1")]
9630    pub dev: ::core::option::Option<u64>,
9631    #[prost(uint64, optional, tag="2")]
9632    pub ino: ::core::option::Option<u64>,
9633    #[prost(uint32, optional, tag="3")]
9634    pub start: ::core::option::Option<u32>,
9635    #[prost(uint32, optional, tag="4")]
9636    pub end: ::core::option::Option<u32>,
9637    #[prost(int32, optional, tag="5")]
9638    pub depth: ::core::option::Option<i32>,
9639    #[prost(int64, optional, tag="6")]
9640    pub partial: ::core::option::Option<i64>,
9641    #[prost(uint32, optional, tag="7")]
9642    pub eh_entries: ::core::option::Option<u32>,
9643    #[prost(uint32, optional, tag="8")]
9644    pub pc_lblk: ::core::option::Option<u32>,
9645    #[prost(uint64, optional, tag="9")]
9646    pub pc_pclu: ::core::option::Option<u64>,
9647    #[prost(int32, optional, tag="10")]
9648    pub pc_state: ::core::option::Option<i32>,
9649}
9650#[derive(Clone, PartialEq, ::prost::Message)]
9651pub struct Ext4ExtRmIdxFtraceEvent {
9652    #[prost(uint64, optional, tag="1")]
9653    pub dev: ::core::option::Option<u64>,
9654    #[prost(uint64, optional, tag="2")]
9655    pub ino: ::core::option::Option<u64>,
9656    #[prost(uint64, optional, tag="3")]
9657    pub pblk: ::core::option::Option<u64>,
9658}
9659#[derive(Clone, PartialEq, ::prost::Message)]
9660pub struct Ext4ExtRmLeafFtraceEvent {
9661    #[prost(uint64, optional, tag="1")]
9662    pub dev: ::core::option::Option<u64>,
9663    #[prost(uint64, optional, tag="2")]
9664    pub ino: ::core::option::Option<u64>,
9665    #[prost(int64, optional, tag="3")]
9666    pub partial: ::core::option::Option<i64>,
9667    #[prost(uint32, optional, tag="4")]
9668    pub start: ::core::option::Option<u32>,
9669    #[prost(uint32, optional, tag="5")]
9670    pub ee_lblk: ::core::option::Option<u32>,
9671    #[prost(uint64, optional, tag="6")]
9672    pub ee_pblk: ::core::option::Option<u64>,
9673    #[prost(int32, optional, tag="7")]
9674    pub ee_len: ::core::option::Option<i32>,
9675    #[prost(uint32, optional, tag="8")]
9676    pub pc_lblk: ::core::option::Option<u32>,
9677    #[prost(uint64, optional, tag="9")]
9678    pub pc_pclu: ::core::option::Option<u64>,
9679    #[prost(int32, optional, tag="10")]
9680    pub pc_state: ::core::option::Option<i32>,
9681}
9682#[derive(Clone, PartialEq, ::prost::Message)]
9683pub struct Ext4ExtShowExtentFtraceEvent {
9684    #[prost(uint64, optional, tag="1")]
9685    pub dev: ::core::option::Option<u64>,
9686    #[prost(uint64, optional, tag="2")]
9687    pub ino: ::core::option::Option<u64>,
9688    #[prost(uint64, optional, tag="3")]
9689    pub pblk: ::core::option::Option<u64>,
9690    #[prost(uint32, optional, tag="4")]
9691    pub lblk: ::core::option::Option<u32>,
9692    #[prost(uint32, optional, tag="5")]
9693    pub len: ::core::option::Option<u32>,
9694}
9695#[derive(Clone, PartialEq, ::prost::Message)]
9696pub struct Ext4FallocateEnterFtraceEvent {
9697    #[prost(uint64, optional, tag="1")]
9698    pub dev: ::core::option::Option<u64>,
9699    #[prost(uint64, optional, tag="2")]
9700    pub ino: ::core::option::Option<u64>,
9701    #[prost(int64, optional, tag="3")]
9702    pub offset: ::core::option::Option<i64>,
9703    #[prost(int64, optional, tag="4")]
9704    pub len: ::core::option::Option<i64>,
9705    #[prost(int32, optional, tag="5")]
9706    pub mode: ::core::option::Option<i32>,
9707    #[prost(int64, optional, tag="6")]
9708    pub pos: ::core::option::Option<i64>,
9709}
9710#[derive(Clone, PartialEq, ::prost::Message)]
9711pub struct Ext4FallocateExitFtraceEvent {
9712    #[prost(uint64, optional, tag="1")]
9713    pub dev: ::core::option::Option<u64>,
9714    #[prost(uint64, optional, tag="2")]
9715    pub ino: ::core::option::Option<u64>,
9716    #[prost(int64, optional, tag="3")]
9717    pub pos: ::core::option::Option<i64>,
9718    #[prost(uint32, optional, tag="4")]
9719    pub blocks: ::core::option::Option<u32>,
9720    #[prost(int32, optional, tag="5")]
9721    pub ret: ::core::option::Option<i32>,
9722}
9723#[derive(Clone, PartialEq, ::prost::Message)]
9724pub struct Ext4FindDelallocRangeFtraceEvent {
9725    #[prost(uint64, optional, tag="1")]
9726    pub dev: ::core::option::Option<u64>,
9727    #[prost(uint64, optional, tag="2")]
9728    pub ino: ::core::option::Option<u64>,
9729    #[prost(uint32, optional, tag="3")]
9730    pub from: ::core::option::Option<u32>,
9731    #[prost(uint32, optional, tag="4")]
9732    pub to: ::core::option::Option<u32>,
9733    #[prost(int32, optional, tag="5")]
9734    pub reverse: ::core::option::Option<i32>,
9735    #[prost(int32, optional, tag="6")]
9736    pub found: ::core::option::Option<i32>,
9737    #[prost(uint32, optional, tag="7")]
9738    pub found_blk: ::core::option::Option<u32>,
9739}
9740#[derive(Clone, PartialEq, ::prost::Message)]
9741pub struct Ext4ForgetFtraceEvent {
9742    #[prost(uint64, optional, tag="1")]
9743    pub dev: ::core::option::Option<u64>,
9744    #[prost(uint64, optional, tag="2")]
9745    pub ino: ::core::option::Option<u64>,
9746    #[prost(uint64, optional, tag="3")]
9747    pub block: ::core::option::Option<u64>,
9748    #[prost(int32, optional, tag="4")]
9749    pub is_metadata: ::core::option::Option<i32>,
9750    #[prost(uint32, optional, tag="5")]
9751    pub mode: ::core::option::Option<u32>,
9752}
9753#[derive(Clone, PartialEq, ::prost::Message)]
9754pub struct Ext4FreeBlocksFtraceEvent {
9755    #[prost(uint64, optional, tag="1")]
9756    pub dev: ::core::option::Option<u64>,
9757    #[prost(uint64, optional, tag="2")]
9758    pub ino: ::core::option::Option<u64>,
9759    #[prost(uint64, optional, tag="3")]
9760    pub block: ::core::option::Option<u64>,
9761    #[prost(uint64, optional, tag="4")]
9762    pub count: ::core::option::Option<u64>,
9763    #[prost(int32, optional, tag="5")]
9764    pub flags: ::core::option::Option<i32>,
9765    #[prost(uint32, optional, tag="6")]
9766    pub mode: ::core::option::Option<u32>,
9767}
9768#[derive(Clone, PartialEq, ::prost::Message)]
9769pub struct Ext4FreeInodeFtraceEvent {
9770    #[prost(uint64, optional, tag="1")]
9771    pub dev: ::core::option::Option<u64>,
9772    #[prost(uint64, optional, tag="2")]
9773    pub ino: ::core::option::Option<u64>,
9774    #[prost(uint32, optional, tag="3")]
9775    pub uid: ::core::option::Option<u32>,
9776    #[prost(uint32, optional, tag="4")]
9777    pub gid: ::core::option::Option<u32>,
9778    #[prost(uint64, optional, tag="5")]
9779    pub blocks: ::core::option::Option<u64>,
9780    #[prost(uint32, optional, tag="6")]
9781    pub mode: ::core::option::Option<u32>,
9782}
9783#[derive(Clone, PartialEq, ::prost::Message)]
9784pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
9785    #[prost(uint64, optional, tag="1")]
9786    pub dev: ::core::option::Option<u64>,
9787    #[prost(uint32, optional, tag="2")]
9788    pub flags: ::core::option::Option<u32>,
9789    #[prost(uint32, optional, tag="3")]
9790    pub lblk: ::core::option::Option<u32>,
9791    #[prost(uint64, optional, tag="4")]
9792    pub pblk: ::core::option::Option<u64>,
9793    #[prost(uint32, optional, tag="5")]
9794    pub len: ::core::option::Option<u32>,
9795    #[prost(int32, optional, tag="6")]
9796    pub ret: ::core::option::Option<i32>,
9797}
9798#[derive(Clone, PartialEq, ::prost::Message)]
9799pub struct Ext4GetReservedClusterAllocFtraceEvent {
9800    #[prost(uint64, optional, tag="1")]
9801    pub dev: ::core::option::Option<u64>,
9802    #[prost(uint64, optional, tag="2")]
9803    pub ino: ::core::option::Option<u64>,
9804    #[prost(uint32, optional, tag="3")]
9805    pub lblk: ::core::option::Option<u32>,
9806    #[prost(uint32, optional, tag="4")]
9807    pub len: ::core::option::Option<u32>,
9808}
9809#[derive(Clone, PartialEq, ::prost::Message)]
9810pub struct Ext4IndMapBlocksEnterFtraceEvent {
9811    #[prost(uint64, optional, tag="1")]
9812    pub dev: ::core::option::Option<u64>,
9813    #[prost(uint64, optional, tag="2")]
9814    pub ino: ::core::option::Option<u64>,
9815    #[prost(uint32, optional, tag="3")]
9816    pub lblk: ::core::option::Option<u32>,
9817    #[prost(uint32, optional, tag="4")]
9818    pub len: ::core::option::Option<u32>,
9819    #[prost(uint32, optional, tag="5")]
9820    pub flags: ::core::option::Option<u32>,
9821}
9822#[derive(Clone, PartialEq, ::prost::Message)]
9823pub struct Ext4IndMapBlocksExitFtraceEvent {
9824    #[prost(uint64, optional, tag="1")]
9825    pub dev: ::core::option::Option<u64>,
9826    #[prost(uint64, optional, tag="2")]
9827    pub ino: ::core::option::Option<u64>,
9828    #[prost(uint32, optional, tag="3")]
9829    pub flags: ::core::option::Option<u32>,
9830    #[prost(uint64, optional, tag="4")]
9831    pub pblk: ::core::option::Option<u64>,
9832    #[prost(uint32, optional, tag="5")]
9833    pub lblk: ::core::option::Option<u32>,
9834    #[prost(uint32, optional, tag="6")]
9835    pub len: ::core::option::Option<u32>,
9836    #[prost(uint32, optional, tag="7")]
9837    pub mflags: ::core::option::Option<u32>,
9838    #[prost(int32, optional, tag="8")]
9839    pub ret: ::core::option::Option<i32>,
9840}
9841#[derive(Clone, PartialEq, ::prost::Message)]
9842pub struct Ext4InsertRangeFtraceEvent {
9843    #[prost(uint64, optional, tag="1")]
9844    pub dev: ::core::option::Option<u64>,
9845    #[prost(uint64, optional, tag="2")]
9846    pub ino: ::core::option::Option<u64>,
9847    #[prost(int64, optional, tag="3")]
9848    pub offset: ::core::option::Option<i64>,
9849    #[prost(int64, optional, tag="4")]
9850    pub len: ::core::option::Option<i64>,
9851}
9852#[derive(Clone, PartialEq, ::prost::Message)]
9853pub struct Ext4InvalidatepageFtraceEvent {
9854    #[prost(uint64, optional, tag="1")]
9855    pub dev: ::core::option::Option<u64>,
9856    #[prost(uint64, optional, tag="2")]
9857    pub ino: ::core::option::Option<u64>,
9858    #[prost(uint64, optional, tag="3")]
9859    pub index: ::core::option::Option<u64>,
9860    #[prost(uint64, optional, tag="4")]
9861    pub offset: ::core::option::Option<u64>,
9862    #[prost(uint32, optional, tag="5")]
9863    pub length: ::core::option::Option<u32>,
9864}
9865#[derive(Clone, PartialEq, ::prost::Message)]
9866pub struct Ext4JournalStartFtraceEvent {
9867    #[prost(uint64, optional, tag="1")]
9868    pub dev: ::core::option::Option<u64>,
9869    #[prost(uint64, optional, tag="2")]
9870    pub ip: ::core::option::Option<u64>,
9871    #[prost(int32, optional, tag="3")]
9872    pub blocks: ::core::option::Option<i32>,
9873    #[prost(int32, optional, tag="4")]
9874    pub rsv_blocks: ::core::option::Option<i32>,
9875    #[prost(int32, optional, tag="5")]
9876    pub nblocks: ::core::option::Option<i32>,
9877    #[prost(int32, optional, tag="6")]
9878    pub revoke_creds: ::core::option::Option<i32>,
9879}
9880#[derive(Clone, PartialEq, ::prost::Message)]
9881pub struct Ext4JournalStartReservedFtraceEvent {
9882    #[prost(uint64, optional, tag="1")]
9883    pub dev: ::core::option::Option<u64>,
9884    #[prost(uint64, optional, tag="2")]
9885    pub ip: ::core::option::Option<u64>,
9886    #[prost(int32, optional, tag="3")]
9887    pub blocks: ::core::option::Option<i32>,
9888}
9889#[derive(Clone, PartialEq, ::prost::Message)]
9890pub struct Ext4JournalledInvalidatepageFtraceEvent {
9891    #[prost(uint64, optional, tag="1")]
9892    pub dev: ::core::option::Option<u64>,
9893    #[prost(uint64, optional, tag="2")]
9894    pub ino: ::core::option::Option<u64>,
9895    #[prost(uint64, optional, tag="3")]
9896    pub index: ::core::option::Option<u64>,
9897    #[prost(uint64, optional, tag="4")]
9898    pub offset: ::core::option::Option<u64>,
9899    #[prost(uint32, optional, tag="5")]
9900    pub length: ::core::option::Option<u32>,
9901}
9902#[derive(Clone, PartialEq, ::prost::Message)]
9903pub struct Ext4JournalledWriteEndFtraceEvent {
9904    #[prost(uint64, optional, tag="1")]
9905    pub dev: ::core::option::Option<u64>,
9906    #[prost(uint64, optional, tag="2")]
9907    pub ino: ::core::option::Option<u64>,
9908    #[prost(int64, optional, tag="3")]
9909    pub pos: ::core::option::Option<i64>,
9910    #[prost(uint32, optional, tag="4")]
9911    pub len: ::core::option::Option<u32>,
9912    #[prost(uint32, optional, tag="5")]
9913    pub copied: ::core::option::Option<u32>,
9914}
9915#[derive(Clone, PartialEq, ::prost::Message)]
9916pub struct Ext4LoadInodeFtraceEvent {
9917    #[prost(uint64, optional, tag="1")]
9918    pub dev: ::core::option::Option<u64>,
9919    #[prost(uint64, optional, tag="2")]
9920    pub ino: ::core::option::Option<u64>,
9921}
9922#[derive(Clone, PartialEq, ::prost::Message)]
9923pub struct Ext4LoadInodeBitmapFtraceEvent {
9924    #[prost(uint64, optional, tag="1")]
9925    pub dev: ::core::option::Option<u64>,
9926    #[prost(uint32, optional, tag="2")]
9927    pub group: ::core::option::Option<u32>,
9928}
9929#[derive(Clone, PartialEq, ::prost::Message)]
9930pub struct Ext4MarkInodeDirtyFtraceEvent {
9931    #[prost(uint64, optional, tag="1")]
9932    pub dev: ::core::option::Option<u64>,
9933    #[prost(uint64, optional, tag="2")]
9934    pub ino: ::core::option::Option<u64>,
9935    #[prost(uint64, optional, tag="3")]
9936    pub ip: ::core::option::Option<u64>,
9937}
9938#[derive(Clone, PartialEq, ::prost::Message)]
9939pub struct Ext4MbBitmapLoadFtraceEvent {
9940    #[prost(uint64, optional, tag="1")]
9941    pub dev: ::core::option::Option<u64>,
9942    #[prost(uint32, optional, tag="2")]
9943    pub group: ::core::option::Option<u32>,
9944}
9945#[derive(Clone, PartialEq, ::prost::Message)]
9946pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
9947    #[prost(uint64, optional, tag="1")]
9948    pub dev: ::core::option::Option<u64>,
9949    #[prost(uint32, optional, tag="2")]
9950    pub group: ::core::option::Option<u32>,
9951}
9952#[derive(Clone, PartialEq, ::prost::Message)]
9953pub struct Ext4MbDiscardPreallocationsFtraceEvent {
9954    #[prost(uint64, optional, tag="1")]
9955    pub dev: ::core::option::Option<u64>,
9956    #[prost(int32, optional, tag="2")]
9957    pub needed: ::core::option::Option<i32>,
9958}
9959#[derive(Clone, PartialEq, ::prost::Message)]
9960pub struct Ext4MbNewGroupPaFtraceEvent {
9961    #[prost(uint64, optional, tag="1")]
9962    pub dev: ::core::option::Option<u64>,
9963    #[prost(uint64, optional, tag="2")]
9964    pub ino: ::core::option::Option<u64>,
9965    #[prost(uint64, optional, tag="3")]
9966    pub pa_pstart: ::core::option::Option<u64>,
9967    #[prost(uint64, optional, tag="4")]
9968    pub pa_lstart: ::core::option::Option<u64>,
9969    #[prost(uint32, optional, tag="5")]
9970    pub pa_len: ::core::option::Option<u32>,
9971}
9972#[derive(Clone, PartialEq, ::prost::Message)]
9973pub struct Ext4MbNewInodePaFtraceEvent {
9974    #[prost(uint64, optional, tag="1")]
9975    pub dev: ::core::option::Option<u64>,
9976    #[prost(uint64, optional, tag="2")]
9977    pub ino: ::core::option::Option<u64>,
9978    #[prost(uint64, optional, tag="3")]
9979    pub pa_pstart: ::core::option::Option<u64>,
9980    #[prost(uint64, optional, tag="4")]
9981    pub pa_lstart: ::core::option::Option<u64>,
9982    #[prost(uint32, optional, tag="5")]
9983    pub pa_len: ::core::option::Option<u32>,
9984}
9985#[derive(Clone, PartialEq, ::prost::Message)]
9986pub struct Ext4MbReleaseGroupPaFtraceEvent {
9987    #[prost(uint64, optional, tag="1")]
9988    pub dev: ::core::option::Option<u64>,
9989    #[prost(uint64, optional, tag="2")]
9990    pub pa_pstart: ::core::option::Option<u64>,
9991    #[prost(uint32, optional, tag="3")]
9992    pub pa_len: ::core::option::Option<u32>,
9993}
9994#[derive(Clone, PartialEq, ::prost::Message)]
9995pub struct Ext4MbReleaseInodePaFtraceEvent {
9996    #[prost(uint64, optional, tag="1")]
9997    pub dev: ::core::option::Option<u64>,
9998    #[prost(uint64, optional, tag="2")]
9999    pub ino: ::core::option::Option<u64>,
10000    #[prost(uint64, optional, tag="3")]
10001    pub block: ::core::option::Option<u64>,
10002    #[prost(uint32, optional, tag="4")]
10003    pub count: ::core::option::Option<u32>,
10004}
10005#[derive(Clone, PartialEq, ::prost::Message)]
10006pub struct Ext4MballocAllocFtraceEvent {
10007    #[prost(uint64, optional, tag="1")]
10008    pub dev: ::core::option::Option<u64>,
10009    #[prost(uint64, optional, tag="2")]
10010    pub ino: ::core::option::Option<u64>,
10011    #[prost(uint32, optional, tag="3")]
10012    pub orig_logical: ::core::option::Option<u32>,
10013    #[prost(int32, optional, tag="4")]
10014    pub orig_start: ::core::option::Option<i32>,
10015    #[prost(uint32, optional, tag="5")]
10016    pub orig_group: ::core::option::Option<u32>,
10017    #[prost(int32, optional, tag="6")]
10018    pub orig_len: ::core::option::Option<i32>,
10019    #[prost(uint32, optional, tag="7")]
10020    pub goal_logical: ::core::option::Option<u32>,
10021    #[prost(int32, optional, tag="8")]
10022    pub goal_start: ::core::option::Option<i32>,
10023    #[prost(uint32, optional, tag="9")]
10024    pub goal_group: ::core::option::Option<u32>,
10025    #[prost(int32, optional, tag="10")]
10026    pub goal_len: ::core::option::Option<i32>,
10027    #[prost(uint32, optional, tag="11")]
10028    pub result_logical: ::core::option::Option<u32>,
10029    #[prost(int32, optional, tag="12")]
10030    pub result_start: ::core::option::Option<i32>,
10031    #[prost(uint32, optional, tag="13")]
10032    pub result_group: ::core::option::Option<u32>,
10033    #[prost(int32, optional, tag="14")]
10034    pub result_len: ::core::option::Option<i32>,
10035    #[prost(uint32, optional, tag="15")]
10036    pub found: ::core::option::Option<u32>,
10037    #[prost(uint32, optional, tag="16")]
10038    pub groups: ::core::option::Option<u32>,
10039    #[prost(uint32, optional, tag="17")]
10040    pub buddy: ::core::option::Option<u32>,
10041    #[prost(uint32, optional, tag="18")]
10042    pub flags: ::core::option::Option<u32>,
10043    #[prost(uint32, optional, tag="19")]
10044    pub tail: ::core::option::Option<u32>,
10045    #[prost(uint32, optional, tag="20")]
10046    pub cr: ::core::option::Option<u32>,
10047}
10048#[derive(Clone, PartialEq, ::prost::Message)]
10049pub struct Ext4MballocDiscardFtraceEvent {
10050    #[prost(uint64, optional, tag="1")]
10051    pub dev: ::core::option::Option<u64>,
10052    #[prost(uint64, optional, tag="2")]
10053    pub ino: ::core::option::Option<u64>,
10054    #[prost(int32, optional, tag="3")]
10055    pub result_start: ::core::option::Option<i32>,
10056    #[prost(uint32, optional, tag="4")]
10057    pub result_group: ::core::option::Option<u32>,
10058    #[prost(int32, optional, tag="5")]
10059    pub result_len: ::core::option::Option<i32>,
10060}
10061#[derive(Clone, PartialEq, ::prost::Message)]
10062pub struct Ext4MballocFreeFtraceEvent {
10063    #[prost(uint64, optional, tag="1")]
10064    pub dev: ::core::option::Option<u64>,
10065    #[prost(uint64, optional, tag="2")]
10066    pub ino: ::core::option::Option<u64>,
10067    #[prost(int32, optional, tag="3")]
10068    pub result_start: ::core::option::Option<i32>,
10069    #[prost(uint32, optional, tag="4")]
10070    pub result_group: ::core::option::Option<u32>,
10071    #[prost(int32, optional, tag="5")]
10072    pub result_len: ::core::option::Option<i32>,
10073}
10074#[derive(Clone, PartialEq, ::prost::Message)]
10075pub struct Ext4MballocPreallocFtraceEvent {
10076    #[prost(uint64, optional, tag="1")]
10077    pub dev: ::core::option::Option<u64>,
10078    #[prost(uint64, optional, tag="2")]
10079    pub ino: ::core::option::Option<u64>,
10080    #[prost(uint32, optional, tag="3")]
10081    pub orig_logical: ::core::option::Option<u32>,
10082    #[prost(int32, optional, tag="4")]
10083    pub orig_start: ::core::option::Option<i32>,
10084    #[prost(uint32, optional, tag="5")]
10085    pub orig_group: ::core::option::Option<u32>,
10086    #[prost(int32, optional, tag="6")]
10087    pub orig_len: ::core::option::Option<i32>,
10088    #[prost(uint32, optional, tag="7")]
10089    pub result_logical: ::core::option::Option<u32>,
10090    #[prost(int32, optional, tag="8")]
10091    pub result_start: ::core::option::Option<i32>,
10092    #[prost(uint32, optional, tag="9")]
10093    pub result_group: ::core::option::Option<u32>,
10094    #[prost(int32, optional, tag="10")]
10095    pub result_len: ::core::option::Option<i32>,
10096}
10097#[derive(Clone, PartialEq, ::prost::Message)]
10098pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
10099    #[prost(uint64, optional, tag="1")]
10100    pub dev: ::core::option::Option<u64>,
10101    #[prost(uint64, optional, tag="2")]
10102    pub ino: ::core::option::Option<u64>,
10103    #[prost(uint64, optional, tag="3")]
10104    pub orig_ino: ::core::option::Option<u64>,
10105    #[prost(uint32, optional, tag="4")]
10106    pub uid: ::core::option::Option<u32>,
10107    #[prost(uint32, optional, tag="5")]
10108    pub gid: ::core::option::Option<u32>,
10109    #[prost(uint32, optional, tag="6")]
10110    pub mode: ::core::option::Option<u32>,
10111}
10112#[derive(Clone, PartialEq, ::prost::Message)]
10113pub struct Ext4PunchHoleFtraceEvent {
10114    #[prost(uint64, optional, tag="1")]
10115    pub dev: ::core::option::Option<u64>,
10116    #[prost(uint64, optional, tag="2")]
10117    pub ino: ::core::option::Option<u64>,
10118    #[prost(int64, optional, tag="3")]
10119    pub offset: ::core::option::Option<i64>,
10120    #[prost(int64, optional, tag="4")]
10121    pub len: ::core::option::Option<i64>,
10122    #[prost(int32, optional, tag="5")]
10123    pub mode: ::core::option::Option<i32>,
10124}
10125#[derive(Clone, PartialEq, ::prost::Message)]
10126pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
10127    #[prost(uint64, optional, tag="1")]
10128    pub dev: ::core::option::Option<u64>,
10129    #[prost(uint32, optional, tag="2")]
10130    pub group: ::core::option::Option<u32>,
10131    #[prost(uint32, optional, tag="3")]
10132    pub prefetch: ::core::option::Option<u32>,
10133}
10134#[derive(Clone, PartialEq, ::prost::Message)]
10135pub struct Ext4ReadpageFtraceEvent {
10136    #[prost(uint64, optional, tag="1")]
10137    pub dev: ::core::option::Option<u64>,
10138    #[prost(uint64, optional, tag="2")]
10139    pub ino: ::core::option::Option<u64>,
10140    #[prost(uint64, optional, tag="3")]
10141    pub index: ::core::option::Option<u64>,
10142}
10143#[derive(Clone, PartialEq, ::prost::Message)]
10144pub struct Ext4ReleasepageFtraceEvent {
10145    #[prost(uint64, optional, tag="1")]
10146    pub dev: ::core::option::Option<u64>,
10147    #[prost(uint64, optional, tag="2")]
10148    pub ino: ::core::option::Option<u64>,
10149    #[prost(uint64, optional, tag="3")]
10150    pub index: ::core::option::Option<u64>,
10151}
10152#[derive(Clone, PartialEq, ::prost::Message)]
10153pub struct Ext4RemoveBlocksFtraceEvent {
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 from: ::core::option::Option<u32>,
10160    #[prost(uint32, optional, tag="4")]
10161    pub to: ::core::option::Option<u32>,
10162    #[prost(int64, optional, tag="5")]
10163    pub partial: ::core::option::Option<i64>,
10164    #[prost(uint64, optional, tag="6")]
10165    pub ee_pblk: ::core::option::Option<u64>,
10166    #[prost(uint32, optional, tag="7")]
10167    pub ee_lblk: ::core::option::Option<u32>,
10168    #[prost(uint32, optional, tag="8")]
10169    pub ee_len: ::core::option::Option<u32>,
10170    #[prost(uint32, optional, tag="9")]
10171    pub pc_lblk: ::core::option::Option<u32>,
10172    #[prost(uint64, optional, tag="10")]
10173    pub pc_pclu: ::core::option::Option<u64>,
10174    #[prost(int32, optional, tag="11")]
10175    pub pc_state: ::core::option::Option<i32>,
10176}
10177#[derive(Clone, PartialEq, ::prost::Message)]
10178pub struct Ext4RequestBlocksFtraceEvent {
10179    #[prost(uint64, optional, tag="1")]
10180    pub dev: ::core::option::Option<u64>,
10181    #[prost(uint64, optional, tag="2")]
10182    pub ino: ::core::option::Option<u64>,
10183    #[prost(uint32, optional, tag="3")]
10184    pub len: ::core::option::Option<u32>,
10185    #[prost(uint32, optional, tag="4")]
10186    pub logical: ::core::option::Option<u32>,
10187    #[prost(uint32, optional, tag="5")]
10188    pub lleft: ::core::option::Option<u32>,
10189    #[prost(uint32, optional, tag="6")]
10190    pub lright: ::core::option::Option<u32>,
10191    #[prost(uint64, optional, tag="7")]
10192    pub goal: ::core::option::Option<u64>,
10193    #[prost(uint64, optional, tag="8")]
10194    pub pleft: ::core::option::Option<u64>,
10195    #[prost(uint64, optional, tag="9")]
10196    pub pright: ::core::option::Option<u64>,
10197    #[prost(uint32, optional, tag="10")]
10198    pub flags: ::core::option::Option<u32>,
10199}
10200#[derive(Clone, PartialEq, ::prost::Message)]
10201pub struct Ext4RequestInodeFtraceEvent {
10202    #[prost(uint64, optional, tag="1")]
10203    pub dev: ::core::option::Option<u64>,
10204    #[prost(uint64, optional, tag="2")]
10205    pub dir: ::core::option::Option<u64>,
10206    #[prost(uint32, optional, tag="3")]
10207    pub mode: ::core::option::Option<u32>,
10208}
10209#[derive(Clone, PartialEq, ::prost::Message)]
10210pub struct Ext4SyncFsFtraceEvent {
10211    #[prost(uint64, optional, tag="1")]
10212    pub dev: ::core::option::Option<u64>,
10213    #[prost(int32, optional, tag="2")]
10214    pub wait: ::core::option::Option<i32>,
10215}
10216#[derive(Clone, PartialEq, ::prost::Message)]
10217pub struct Ext4TrimAllFreeFtraceEvent {
10218    #[prost(int32, optional, tag="1")]
10219    pub dev_major: ::core::option::Option<i32>,
10220    #[prost(int32, optional, tag="2")]
10221    pub dev_minor: ::core::option::Option<i32>,
10222    #[prost(uint32, optional, tag="3")]
10223    pub group: ::core::option::Option<u32>,
10224    #[prost(int32, optional, tag="4")]
10225    pub start: ::core::option::Option<i32>,
10226    #[prost(int32, optional, tag="5")]
10227    pub len: ::core::option::Option<i32>,
10228}
10229#[derive(Clone, PartialEq, ::prost::Message)]
10230pub struct Ext4TrimExtentFtraceEvent {
10231    #[prost(int32, optional, tag="1")]
10232    pub dev_major: ::core::option::Option<i32>,
10233    #[prost(int32, optional, tag="2")]
10234    pub dev_minor: ::core::option::Option<i32>,
10235    #[prost(uint32, optional, tag="3")]
10236    pub group: ::core::option::Option<u32>,
10237    #[prost(int32, optional, tag="4")]
10238    pub start: ::core::option::Option<i32>,
10239    #[prost(int32, optional, tag="5")]
10240    pub len: ::core::option::Option<i32>,
10241}
10242#[derive(Clone, PartialEq, ::prost::Message)]
10243pub struct Ext4TruncateEnterFtraceEvent {
10244    #[prost(uint64, optional, tag="1")]
10245    pub dev: ::core::option::Option<u64>,
10246    #[prost(uint64, optional, tag="2")]
10247    pub ino: ::core::option::Option<u64>,
10248    #[prost(uint64, optional, tag="3")]
10249    pub blocks: ::core::option::Option<u64>,
10250}
10251#[derive(Clone, PartialEq, ::prost::Message)]
10252pub struct Ext4TruncateExitFtraceEvent {
10253    #[prost(uint64, optional, tag="1")]
10254    pub dev: ::core::option::Option<u64>,
10255    #[prost(uint64, optional, tag="2")]
10256    pub ino: ::core::option::Option<u64>,
10257    #[prost(uint64, optional, tag="3")]
10258    pub blocks: ::core::option::Option<u64>,
10259}
10260#[derive(Clone, PartialEq, ::prost::Message)]
10261pub struct Ext4UnlinkEnterFtraceEvent {
10262    #[prost(uint64, optional, tag="1")]
10263    pub dev: ::core::option::Option<u64>,
10264    #[prost(uint64, optional, tag="2")]
10265    pub ino: ::core::option::Option<u64>,
10266    #[prost(uint64, optional, tag="3")]
10267    pub parent: ::core::option::Option<u64>,
10268    #[prost(int64, optional, tag="4")]
10269    pub size: ::core::option::Option<i64>,
10270}
10271#[derive(Clone, PartialEq, ::prost::Message)]
10272pub struct Ext4UnlinkExitFtraceEvent {
10273    #[prost(uint64, optional, tag="1")]
10274    pub dev: ::core::option::Option<u64>,
10275    #[prost(uint64, optional, tag="2")]
10276    pub ino: ::core::option::Option<u64>,
10277    #[prost(int32, optional, tag="3")]
10278    pub ret: ::core::option::Option<i32>,
10279}
10280#[derive(Clone, PartialEq, ::prost::Message)]
10281pub struct Ext4WriteBeginFtraceEvent {
10282    #[prost(uint64, optional, tag="1")]
10283    pub dev: ::core::option::Option<u64>,
10284    #[prost(uint64, optional, tag="2")]
10285    pub ino: ::core::option::Option<u64>,
10286    #[prost(int64, optional, tag="3")]
10287    pub pos: ::core::option::Option<i64>,
10288    #[prost(uint32, optional, tag="4")]
10289    pub len: ::core::option::Option<u32>,
10290    #[prost(uint32, optional, tag="5")]
10291    pub flags: ::core::option::Option<u32>,
10292}
10293#[derive(Clone, PartialEq, ::prost::Message)]
10294pub struct Ext4WriteEndFtraceEvent {
10295    #[prost(uint64, optional, tag="1")]
10296    pub dev: ::core::option::Option<u64>,
10297    #[prost(uint64, optional, tag="2")]
10298    pub ino: ::core::option::Option<u64>,
10299    #[prost(int64, optional, tag="3")]
10300    pub pos: ::core::option::Option<i64>,
10301    #[prost(uint32, optional, tag="4")]
10302    pub len: ::core::option::Option<u32>,
10303    #[prost(uint32, optional, tag="5")]
10304    pub copied: ::core::option::Option<u32>,
10305}
10306#[derive(Clone, PartialEq, ::prost::Message)]
10307pub struct Ext4WritepageFtraceEvent {
10308    #[prost(uint64, optional, tag="1")]
10309    pub dev: ::core::option::Option<u64>,
10310    #[prost(uint64, optional, tag="2")]
10311    pub ino: ::core::option::Option<u64>,
10312    #[prost(uint64, optional, tag="3")]
10313    pub index: ::core::option::Option<u64>,
10314}
10315#[derive(Clone, PartialEq, ::prost::Message)]
10316pub struct Ext4WritepagesFtraceEvent {
10317    #[prost(uint64, optional, tag="1")]
10318    pub dev: ::core::option::Option<u64>,
10319    #[prost(uint64, optional, tag="2")]
10320    pub ino: ::core::option::Option<u64>,
10321    #[prost(int64, optional, tag="3")]
10322    pub nr_to_write: ::core::option::Option<i64>,
10323    #[prost(int64, optional, tag="4")]
10324    pub pages_skipped: ::core::option::Option<i64>,
10325    #[prost(int64, optional, tag="5")]
10326    pub range_start: ::core::option::Option<i64>,
10327    #[prost(int64, optional, tag="6")]
10328    pub range_end: ::core::option::Option<i64>,
10329    #[prost(uint64, optional, tag="7")]
10330    pub writeback_index: ::core::option::Option<u64>,
10331    #[prost(int32, optional, tag="8")]
10332    pub sync_mode: ::core::option::Option<i32>,
10333    #[prost(uint32, optional, tag="9")]
10334    pub for_kupdate: ::core::option::Option<u32>,
10335    #[prost(uint32, optional, tag="10")]
10336    pub range_cyclic: ::core::option::Option<u32>,
10337}
10338#[derive(Clone, PartialEq, ::prost::Message)]
10339pub struct Ext4WritepagesResultFtraceEvent {
10340    #[prost(uint64, optional, tag="1")]
10341    pub dev: ::core::option::Option<u64>,
10342    #[prost(uint64, optional, tag="2")]
10343    pub ino: ::core::option::Option<u64>,
10344    #[prost(int32, optional, tag="3")]
10345    pub ret: ::core::option::Option<i32>,
10346    #[prost(int32, optional, tag="4")]
10347    pub pages_written: ::core::option::Option<i32>,
10348    #[prost(int64, optional, tag="5")]
10349    pub pages_skipped: ::core::option::Option<i64>,
10350    #[prost(uint64, optional, tag="6")]
10351    pub writeback_index: ::core::option::Option<u64>,
10352    #[prost(int32, optional, tag="7")]
10353    pub sync_mode: ::core::option::Option<i32>,
10354}
10355#[derive(Clone, PartialEq, ::prost::Message)]
10356pub struct Ext4ZeroRangeFtraceEvent {
10357    #[prost(uint64, optional, tag="1")]
10358    pub dev: ::core::option::Option<u64>,
10359    #[prost(uint64, optional, tag="2")]
10360    pub ino: ::core::option::Option<u64>,
10361    #[prost(int64, optional, tag="3")]
10362    pub offset: ::core::option::Option<i64>,
10363    #[prost(int64, optional, tag="4")]
10364    pub len: ::core::option::Option<i64>,
10365    #[prost(int32, optional, tag="5")]
10366    pub mode: ::core::option::Option<i32>,
10367}
10368// End of protos/perfetto/trace/ftrace/ext4.proto
10369
10370// Begin of protos/perfetto/trace/ftrace/f2fs.proto
10371
10372#[derive(Clone, PartialEq, ::prost::Message)]
10373pub struct F2fsDoSubmitBioFtraceEvent {
10374    #[prost(uint64, optional, tag="1")]
10375    pub dev: ::core::option::Option<u64>,
10376    #[prost(int32, optional, tag="2")]
10377    pub btype: ::core::option::Option<i32>,
10378    #[prost(uint32, optional, tag="3")]
10379    pub sync: ::core::option::Option<u32>,
10380    #[prost(uint64, optional, tag="4")]
10381    pub sector: ::core::option::Option<u64>,
10382    #[prost(uint32, optional, tag="5")]
10383    pub size: ::core::option::Option<u32>,
10384}
10385#[derive(Clone, PartialEq, ::prost::Message)]
10386pub struct F2fsEvictInodeFtraceEvent {
10387    #[prost(uint64, optional, tag="1")]
10388    pub dev: ::core::option::Option<u64>,
10389    #[prost(uint64, optional, tag="2")]
10390    pub ino: ::core::option::Option<u64>,
10391    #[prost(uint64, optional, tag="3")]
10392    pub pino: ::core::option::Option<u64>,
10393    #[prost(uint32, optional, tag="4")]
10394    pub mode: ::core::option::Option<u32>,
10395    #[prost(int64, optional, tag="5")]
10396    pub size: ::core::option::Option<i64>,
10397    #[prost(uint32, optional, tag="6")]
10398    pub nlink: ::core::option::Option<u32>,
10399    #[prost(uint64, optional, tag="7")]
10400    pub blocks: ::core::option::Option<u64>,
10401    #[prost(uint32, optional, tag="8")]
10402    pub advise: ::core::option::Option<u32>,
10403}
10404#[derive(Clone, PartialEq, ::prost::Message)]
10405pub struct F2fsFallocateFtraceEvent {
10406    #[prost(uint64, optional, tag="1")]
10407    pub dev: ::core::option::Option<u64>,
10408    #[prost(uint64, optional, tag="2")]
10409    pub ino: ::core::option::Option<u64>,
10410    #[prost(int32, optional, tag="3")]
10411    pub mode: ::core::option::Option<i32>,
10412    #[prost(int64, optional, tag="4")]
10413    pub offset: ::core::option::Option<i64>,
10414    #[prost(int64, optional, tag="5")]
10415    pub len: ::core::option::Option<i64>,
10416    #[prost(int64, optional, tag="6")]
10417    pub size: ::core::option::Option<i64>,
10418    #[prost(uint64, optional, tag="7")]
10419    pub blocks: ::core::option::Option<u64>,
10420    #[prost(int32, optional, tag="8")]
10421    pub ret: ::core::option::Option<i32>,
10422}
10423#[derive(Clone, PartialEq, ::prost::Message)]
10424pub struct F2fsGetDataBlockFtraceEvent {
10425    #[prost(uint64, optional, tag="1")]
10426    pub dev: ::core::option::Option<u64>,
10427    #[prost(uint64, optional, tag="2")]
10428    pub ino: ::core::option::Option<u64>,
10429    #[prost(uint64, optional, tag="3")]
10430    pub iblock: ::core::option::Option<u64>,
10431    #[prost(uint64, optional, tag="4")]
10432    pub bh_start: ::core::option::Option<u64>,
10433    #[prost(uint64, optional, tag="5")]
10434    pub bh_size: ::core::option::Option<u64>,
10435    #[prost(int32, optional, tag="6")]
10436    pub ret: ::core::option::Option<i32>,
10437}
10438#[derive(Clone, PartialEq, ::prost::Message)]
10439pub struct F2fsGetVictimFtraceEvent {
10440    #[prost(uint64, optional, tag="1")]
10441    pub dev: ::core::option::Option<u64>,
10442    #[prost(int32, optional, tag="2")]
10443    pub r#type: ::core::option::Option<i32>,
10444    #[prost(int32, optional, tag="3")]
10445    pub gc_type: ::core::option::Option<i32>,
10446    #[prost(int32, optional, tag="4")]
10447    pub alloc_mode: ::core::option::Option<i32>,
10448    #[prost(int32, optional, tag="5")]
10449    pub gc_mode: ::core::option::Option<i32>,
10450    #[prost(uint32, optional, tag="6")]
10451    pub victim: ::core::option::Option<u32>,
10452    #[prost(uint32, optional, tag="7")]
10453    pub ofs_unit: ::core::option::Option<u32>,
10454    #[prost(uint32, optional, tag="8")]
10455    pub pre_victim: ::core::option::Option<u32>,
10456    #[prost(uint32, optional, tag="9")]
10457    pub prefree: ::core::option::Option<u32>,
10458    #[prost(uint32, optional, tag="10")]
10459    pub free: ::core::option::Option<u32>,
10460    #[prost(uint32, optional, tag="11")]
10461    pub cost: ::core::option::Option<u32>,
10462}
10463#[derive(Clone, PartialEq, ::prost::Message)]
10464pub struct F2fsIgetFtraceEvent {
10465    #[prost(uint64, optional, tag="1")]
10466    pub dev: ::core::option::Option<u64>,
10467    #[prost(uint64, optional, tag="2")]
10468    pub ino: ::core::option::Option<u64>,
10469    #[prost(uint64, optional, tag="3")]
10470    pub pino: ::core::option::Option<u64>,
10471    #[prost(uint32, optional, tag="4")]
10472    pub mode: ::core::option::Option<u32>,
10473    #[prost(int64, optional, tag="5")]
10474    pub size: ::core::option::Option<i64>,
10475    #[prost(uint32, optional, tag="6")]
10476    pub nlink: ::core::option::Option<u32>,
10477    #[prost(uint64, optional, tag="7")]
10478    pub blocks: ::core::option::Option<u64>,
10479    #[prost(uint32, optional, tag="8")]
10480    pub advise: ::core::option::Option<u32>,
10481}
10482#[derive(Clone, PartialEq, ::prost::Message)]
10483pub struct F2fsIgetExitFtraceEvent {
10484    #[prost(uint64, optional, tag="1")]
10485    pub dev: ::core::option::Option<u64>,
10486    #[prost(uint64, optional, tag="2")]
10487    pub ino: ::core::option::Option<u64>,
10488    #[prost(int32, optional, tag="3")]
10489    pub ret: ::core::option::Option<i32>,
10490}
10491#[derive(Clone, PartialEq, ::prost::Message)]
10492pub struct F2fsNewInodeFtraceEvent {
10493    #[prost(uint64, optional, tag="1")]
10494    pub dev: ::core::option::Option<u64>,
10495    #[prost(uint64, optional, tag="2")]
10496    pub ino: ::core::option::Option<u64>,
10497    #[prost(int32, optional, tag="3")]
10498    pub ret: ::core::option::Option<i32>,
10499}
10500#[derive(Clone, PartialEq, ::prost::Message)]
10501pub struct F2fsReadpageFtraceEvent {
10502    #[prost(uint64, optional, tag="1")]
10503    pub dev: ::core::option::Option<u64>,
10504    #[prost(uint64, optional, tag="2")]
10505    pub ino: ::core::option::Option<u64>,
10506    #[prost(uint64, optional, tag="3")]
10507    pub index: ::core::option::Option<u64>,
10508    #[prost(uint64, optional, tag="4")]
10509    pub blkaddr: ::core::option::Option<u64>,
10510    #[prost(int32, optional, tag="5")]
10511    pub r#type: ::core::option::Option<i32>,
10512    #[prost(int32, optional, tag="6")]
10513    pub dir: ::core::option::Option<i32>,
10514    #[prost(int32, optional, tag="7")]
10515    pub dirty: ::core::option::Option<i32>,
10516    #[prost(int32, optional, tag="8")]
10517    pub uptodate: ::core::option::Option<i32>,
10518}
10519#[derive(Clone, PartialEq, ::prost::Message)]
10520pub struct F2fsReserveNewBlockFtraceEvent {
10521    #[prost(uint64, optional, tag="1")]
10522    pub dev: ::core::option::Option<u64>,
10523    #[prost(uint32, optional, tag="2")]
10524    pub nid: ::core::option::Option<u32>,
10525    #[prost(uint32, optional, tag="3")]
10526    pub ofs_in_node: ::core::option::Option<u32>,
10527}
10528#[derive(Clone, PartialEq, ::prost::Message)]
10529pub struct F2fsSetPageDirtyFtraceEvent {
10530    #[prost(uint64, optional, tag="1")]
10531    pub dev: ::core::option::Option<u64>,
10532    #[prost(uint64, optional, tag="2")]
10533    pub ino: ::core::option::Option<u64>,
10534    #[prost(int32, optional, tag="3")]
10535    pub r#type: ::core::option::Option<i32>,
10536    #[prost(int32, optional, tag="4")]
10537    pub dir: ::core::option::Option<i32>,
10538    #[prost(uint64, optional, tag="5")]
10539    pub index: ::core::option::Option<u64>,
10540    #[prost(int32, optional, tag="6")]
10541    pub dirty: ::core::option::Option<i32>,
10542    #[prost(int32, optional, tag="7")]
10543    pub uptodate: ::core::option::Option<i32>,
10544}
10545#[derive(Clone, PartialEq, ::prost::Message)]
10546pub struct F2fsSubmitWritePageFtraceEvent {
10547    #[prost(uint64, optional, tag="1")]
10548    pub dev: ::core::option::Option<u64>,
10549    #[prost(uint64, optional, tag="2")]
10550    pub ino: ::core::option::Option<u64>,
10551    #[prost(int32, optional, tag="3")]
10552    pub r#type: ::core::option::Option<i32>,
10553    #[prost(uint64, optional, tag="4")]
10554    pub index: ::core::option::Option<u64>,
10555    #[prost(uint32, optional, tag="5")]
10556    pub block: ::core::option::Option<u32>,
10557}
10558#[derive(Clone, PartialEq, ::prost::Message)]
10559pub struct F2fsSyncFileEnterFtraceEvent {
10560    #[prost(uint64, optional, tag="1")]
10561    pub dev: ::core::option::Option<u64>,
10562    #[prost(uint64, optional, tag="2")]
10563    pub ino: ::core::option::Option<u64>,
10564    #[prost(uint64, optional, tag="3")]
10565    pub pino: ::core::option::Option<u64>,
10566    #[prost(uint32, optional, tag="4")]
10567    pub mode: ::core::option::Option<u32>,
10568    #[prost(int64, optional, tag="5")]
10569    pub size: ::core::option::Option<i64>,
10570    #[prost(uint32, optional, tag="6")]
10571    pub nlink: ::core::option::Option<u32>,
10572    #[prost(uint64, optional, tag="7")]
10573    pub blocks: ::core::option::Option<u64>,
10574    #[prost(uint32, optional, tag="8")]
10575    pub advise: ::core::option::Option<u32>,
10576}
10577#[derive(Clone, PartialEq, ::prost::Message)]
10578pub struct F2fsSyncFileExitFtraceEvent {
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(uint32, optional, tag="3")]
10584    pub need_cp: ::core::option::Option<u32>,
10585    #[prost(int32, optional, tag="4")]
10586    pub datasync: ::core::option::Option<i32>,
10587    #[prost(int32, optional, tag="5")]
10588    pub ret: ::core::option::Option<i32>,
10589    #[prost(int32, optional, tag="6")]
10590    pub cp_reason: ::core::option::Option<i32>,
10591}
10592#[derive(Clone, PartialEq, ::prost::Message)]
10593pub struct F2fsSyncFsFtraceEvent {
10594    #[prost(uint64, optional, tag="1")]
10595    pub dev: ::core::option::Option<u64>,
10596    #[prost(int32, optional, tag="2")]
10597    pub dirty: ::core::option::Option<i32>,
10598    #[prost(int32, optional, tag="3")]
10599    pub wait: ::core::option::Option<i32>,
10600}
10601#[derive(Clone, PartialEq, ::prost::Message)]
10602pub struct F2fsTruncateFtraceEvent {
10603    #[prost(uint64, optional, tag="1")]
10604    pub dev: ::core::option::Option<u64>,
10605    #[prost(uint64, optional, tag="2")]
10606    pub ino: ::core::option::Option<u64>,
10607    #[prost(uint64, optional, tag="3")]
10608    pub pino: ::core::option::Option<u64>,
10609    #[prost(uint32, optional, tag="4")]
10610    pub mode: ::core::option::Option<u32>,
10611    #[prost(int64, optional, tag="5")]
10612    pub size: ::core::option::Option<i64>,
10613    #[prost(uint32, optional, tag="6")]
10614    pub nlink: ::core::option::Option<u32>,
10615    #[prost(uint64, optional, tag="7")]
10616    pub blocks: ::core::option::Option<u64>,
10617    #[prost(uint32, optional, tag="8")]
10618    pub advise: ::core::option::Option<u32>,
10619}
10620#[derive(Clone, PartialEq, ::prost::Message)]
10621pub struct F2fsTruncateBlocksEnterFtraceEvent {
10622    #[prost(uint64, optional, tag="1")]
10623    pub dev: ::core::option::Option<u64>,
10624    #[prost(uint64, optional, tag="2")]
10625    pub ino: ::core::option::Option<u64>,
10626    #[prost(int64, optional, tag="3")]
10627    pub size: ::core::option::Option<i64>,
10628    #[prost(uint64, optional, tag="4")]
10629    pub blocks: ::core::option::Option<u64>,
10630    #[prost(uint64, optional, tag="5")]
10631    pub from: ::core::option::Option<u64>,
10632}
10633#[derive(Clone, PartialEq, ::prost::Message)]
10634pub struct F2fsTruncateBlocksExitFtraceEvent {
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(int32, optional, tag="3")]
10640    pub ret: ::core::option::Option<i32>,
10641}
10642#[derive(Clone, PartialEq, ::prost::Message)]
10643pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
10644    #[prost(uint64, optional, tag="1")]
10645    pub dev: ::core::option::Option<u64>,
10646    #[prost(uint64, optional, tag="2")]
10647    pub ino: ::core::option::Option<u64>,
10648    #[prost(uint32, optional, tag="3")]
10649    pub nid: ::core::option::Option<u32>,
10650    #[prost(uint32, optional, tag="4")]
10651    pub ofs: ::core::option::Option<u32>,
10652    #[prost(int32, optional, tag="5")]
10653    pub free: ::core::option::Option<i32>,
10654}
10655#[derive(Clone, PartialEq, ::prost::Message)]
10656pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
10657    #[prost(uint64, optional, tag="1")]
10658    pub dev: ::core::option::Option<u64>,
10659    #[prost(uint64, optional, tag="2")]
10660    pub ino: ::core::option::Option<u64>,
10661    #[prost(int64, optional, tag="3")]
10662    pub size: ::core::option::Option<i64>,
10663    #[prost(uint64, optional, tag="4")]
10664    pub blocks: ::core::option::Option<u64>,
10665    #[prost(uint64, optional, tag="5")]
10666    pub from: ::core::option::Option<u64>,
10667}
10668#[derive(Clone, PartialEq, ::prost::Message)]
10669pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
10670    #[prost(uint64, optional, tag="1")]
10671    pub dev: ::core::option::Option<u64>,
10672    #[prost(uint64, optional, tag="2")]
10673    pub ino: ::core::option::Option<u64>,
10674    #[prost(int32, optional, tag="3")]
10675    pub ret: ::core::option::Option<i32>,
10676}
10677#[derive(Clone, PartialEq, ::prost::Message)]
10678pub struct F2fsTruncateNodeFtraceEvent {
10679    #[prost(uint64, optional, tag="1")]
10680    pub dev: ::core::option::Option<u64>,
10681    #[prost(uint64, optional, tag="2")]
10682    pub ino: ::core::option::Option<u64>,
10683    #[prost(uint32, optional, tag="3")]
10684    pub nid: ::core::option::Option<u32>,
10685    #[prost(uint32, optional, tag="4")]
10686    pub blk_addr: ::core::option::Option<u32>,
10687}
10688#[derive(Clone, PartialEq, ::prost::Message)]
10689pub struct F2fsTruncateNodesEnterFtraceEvent {
10690    #[prost(uint64, optional, tag="1")]
10691    pub dev: ::core::option::Option<u64>,
10692    #[prost(uint64, optional, tag="2")]
10693    pub ino: ::core::option::Option<u64>,
10694    #[prost(uint32, optional, tag="3")]
10695    pub nid: ::core::option::Option<u32>,
10696    #[prost(uint32, optional, tag="4")]
10697    pub blk_addr: ::core::option::Option<u32>,
10698}
10699#[derive(Clone, PartialEq, ::prost::Message)]
10700pub struct F2fsTruncateNodesExitFtraceEvent {
10701    #[prost(uint64, optional, tag="1")]
10702    pub dev: ::core::option::Option<u64>,
10703    #[prost(uint64, optional, tag="2")]
10704    pub ino: ::core::option::Option<u64>,
10705    #[prost(int32, optional, tag="3")]
10706    pub ret: ::core::option::Option<i32>,
10707}
10708#[derive(Clone, PartialEq, ::prost::Message)]
10709pub struct F2fsTruncatePartialNodesFtraceEvent {
10710    #[prost(uint64, optional, tag="1")]
10711    pub dev: ::core::option::Option<u64>,
10712    #[prost(uint64, optional, tag="2")]
10713    pub ino: ::core::option::Option<u64>,
10714    #[prost(uint32, optional, tag="3")]
10715    pub nid: ::core::option::Option<u32>,
10716    #[prost(int32, optional, tag="4")]
10717    pub depth: ::core::option::Option<i32>,
10718    #[prost(int32, optional, tag="5")]
10719    pub err: ::core::option::Option<i32>,
10720}
10721#[derive(Clone, PartialEq, ::prost::Message)]
10722pub struct F2fsUnlinkEnterFtraceEvent {
10723    #[prost(uint64, optional, tag="1")]
10724    pub dev: ::core::option::Option<u64>,
10725    #[prost(uint64, optional, tag="2")]
10726    pub ino: ::core::option::Option<u64>,
10727    #[prost(int64, optional, tag="3")]
10728    pub size: ::core::option::Option<i64>,
10729    #[prost(uint64, optional, tag="4")]
10730    pub blocks: ::core::option::Option<u64>,
10731    #[prost(string, optional, tag="5")]
10732    pub name: ::core::option::Option<::prost::alloc::string::String>,
10733}
10734#[derive(Clone, PartialEq, ::prost::Message)]
10735pub struct F2fsUnlinkExitFtraceEvent {
10736    #[prost(uint64, optional, tag="1")]
10737    pub dev: ::core::option::Option<u64>,
10738    #[prost(uint64, optional, tag="2")]
10739    pub ino: ::core::option::Option<u64>,
10740    #[prost(int32, optional, tag="3")]
10741    pub ret: ::core::option::Option<i32>,
10742}
10743#[derive(Clone, PartialEq, ::prost::Message)]
10744pub struct F2fsVmPageMkwriteFtraceEvent {
10745    #[prost(uint64, optional, tag="1")]
10746    pub dev: ::core::option::Option<u64>,
10747    #[prost(uint64, optional, tag="2")]
10748    pub ino: ::core::option::Option<u64>,
10749    #[prost(int32, optional, tag="3")]
10750    pub r#type: ::core::option::Option<i32>,
10751    #[prost(int32, optional, tag="4")]
10752    pub dir: ::core::option::Option<i32>,
10753    #[prost(uint64, optional, tag="5")]
10754    pub index: ::core::option::Option<u64>,
10755    #[prost(int32, optional, tag="6")]
10756    pub dirty: ::core::option::Option<i32>,
10757    #[prost(int32, optional, tag="7")]
10758    pub uptodate: ::core::option::Option<i32>,
10759}
10760#[derive(Clone, PartialEq, ::prost::Message)]
10761pub struct F2fsWriteBeginFtraceEvent {
10762    #[prost(uint64, optional, tag="1")]
10763    pub dev: ::core::option::Option<u64>,
10764    #[prost(uint64, optional, tag="2")]
10765    pub ino: ::core::option::Option<u64>,
10766    #[prost(int64, optional, tag="3")]
10767    pub pos: ::core::option::Option<i64>,
10768    #[prost(uint32, optional, tag="4")]
10769    pub len: ::core::option::Option<u32>,
10770    #[prost(uint32, optional, tag="5")]
10771    pub flags: ::core::option::Option<u32>,
10772}
10773#[derive(Clone, PartialEq, ::prost::Message)]
10774pub struct F2fsWriteCheckpointFtraceEvent {
10775    #[prost(uint64, optional, tag="1")]
10776    pub dev: ::core::option::Option<u64>,
10777    #[prost(uint32, optional, tag="2")]
10778    pub is_umount: ::core::option::Option<u32>,
10779    #[prost(string, optional, tag="3")]
10780    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10781    #[prost(int32, optional, tag="4")]
10782    pub reason: ::core::option::Option<i32>,
10783}
10784#[derive(Clone, PartialEq, ::prost::Message)]
10785pub struct F2fsWriteEndFtraceEvent {
10786    #[prost(uint64, optional, tag="1")]
10787    pub dev: ::core::option::Option<u64>,
10788    #[prost(uint64, optional, tag="2")]
10789    pub ino: ::core::option::Option<u64>,
10790    #[prost(int64, optional, tag="3")]
10791    pub pos: ::core::option::Option<i64>,
10792    #[prost(uint32, optional, tag="4")]
10793    pub len: ::core::option::Option<u32>,
10794    #[prost(uint32, optional, tag="5")]
10795    pub copied: ::core::option::Option<u32>,
10796}
10797#[derive(Clone, PartialEq, ::prost::Message)]
10798pub struct F2fsIostatFtraceEvent {
10799    #[prost(uint64, optional, tag="1")]
10800    pub app_bio: ::core::option::Option<u64>,
10801    #[prost(uint64, optional, tag="2")]
10802    pub app_brio: ::core::option::Option<u64>,
10803    #[prost(uint64, optional, tag="3")]
10804    pub app_dio: ::core::option::Option<u64>,
10805    #[prost(uint64, optional, tag="4")]
10806    pub app_drio: ::core::option::Option<u64>,
10807    #[prost(uint64, optional, tag="5")]
10808    pub app_mio: ::core::option::Option<u64>,
10809    #[prost(uint64, optional, tag="6")]
10810    pub app_mrio: ::core::option::Option<u64>,
10811    #[prost(uint64, optional, tag="7")]
10812    pub app_rio: ::core::option::Option<u64>,
10813    #[prost(uint64, optional, tag="8")]
10814    pub app_wio: ::core::option::Option<u64>,
10815    #[prost(uint64, optional, tag="9")]
10816    pub dev: ::core::option::Option<u64>,
10817    #[prost(uint64, optional, tag="10")]
10818    pub fs_cdrio: ::core::option::Option<u64>,
10819    #[prost(uint64, optional, tag="11")]
10820    pub fs_cp_dio: ::core::option::Option<u64>,
10821    #[prost(uint64, optional, tag="12")]
10822    pub fs_cp_mio: ::core::option::Option<u64>,
10823    #[prost(uint64, optional, tag="13")]
10824    pub fs_cp_nio: ::core::option::Option<u64>,
10825    #[prost(uint64, optional, tag="14")]
10826    pub fs_dio: ::core::option::Option<u64>,
10827    #[prost(uint64, optional, tag="15")]
10828    pub fs_discard: ::core::option::Option<u64>,
10829    #[prost(uint64, optional, tag="16")]
10830    pub fs_drio: ::core::option::Option<u64>,
10831    #[prost(uint64, optional, tag="17")]
10832    pub fs_gc_dio: ::core::option::Option<u64>,
10833    #[prost(uint64, optional, tag="18")]
10834    pub fs_gc_nio: ::core::option::Option<u64>,
10835    #[prost(uint64, optional, tag="19")]
10836    pub fs_gdrio: ::core::option::Option<u64>,
10837    #[prost(uint64, optional, tag="20")]
10838    pub fs_mio: ::core::option::Option<u64>,
10839    #[prost(uint64, optional, tag="21")]
10840    pub fs_mrio: ::core::option::Option<u64>,
10841    #[prost(uint64, optional, tag="22")]
10842    pub fs_nio: ::core::option::Option<u64>,
10843    #[prost(uint64, optional, tag="23")]
10844    pub fs_nrio: ::core::option::Option<u64>,
10845}
10846#[derive(Clone, PartialEq, ::prost::Message)]
10847pub struct F2fsIostatLatencyFtraceEvent {
10848    #[prost(uint32, optional, tag="1")]
10849    pub d_rd_avg: ::core::option::Option<u32>,
10850    #[prost(uint32, optional, tag="2")]
10851    pub d_rd_cnt: ::core::option::Option<u32>,
10852    #[prost(uint32, optional, tag="3")]
10853    pub d_rd_peak: ::core::option::Option<u32>,
10854    #[prost(uint32, optional, tag="4")]
10855    pub d_wr_as_avg: ::core::option::Option<u32>,
10856    #[prost(uint32, optional, tag="5")]
10857    pub d_wr_as_cnt: ::core::option::Option<u32>,
10858    #[prost(uint32, optional, tag="6")]
10859    pub d_wr_as_peak: ::core::option::Option<u32>,
10860    #[prost(uint32, optional, tag="7")]
10861    pub d_wr_s_avg: ::core::option::Option<u32>,
10862    #[prost(uint32, optional, tag="8")]
10863    pub d_wr_s_cnt: ::core::option::Option<u32>,
10864    #[prost(uint32, optional, tag="9")]
10865    pub d_wr_s_peak: ::core::option::Option<u32>,
10866    #[prost(uint64, optional, tag="10")]
10867    pub dev: ::core::option::Option<u64>,
10868    #[prost(uint32, optional, tag="11")]
10869    pub m_rd_avg: ::core::option::Option<u32>,
10870    #[prost(uint32, optional, tag="12")]
10871    pub m_rd_cnt: ::core::option::Option<u32>,
10872    #[prost(uint32, optional, tag="13")]
10873    pub m_rd_peak: ::core::option::Option<u32>,
10874    #[prost(uint32, optional, tag="14")]
10875    pub m_wr_as_avg: ::core::option::Option<u32>,
10876    #[prost(uint32, optional, tag="15")]
10877    pub m_wr_as_cnt: ::core::option::Option<u32>,
10878    #[prost(uint32, optional, tag="16")]
10879    pub m_wr_as_peak: ::core::option::Option<u32>,
10880    #[prost(uint32, optional, tag="17")]
10881    pub m_wr_s_avg: ::core::option::Option<u32>,
10882    #[prost(uint32, optional, tag="18")]
10883    pub m_wr_s_cnt: ::core::option::Option<u32>,
10884    #[prost(uint32, optional, tag="19")]
10885    pub m_wr_s_peak: ::core::option::Option<u32>,
10886    #[prost(uint32, optional, tag="20")]
10887    pub n_rd_avg: ::core::option::Option<u32>,
10888    #[prost(uint32, optional, tag="21")]
10889    pub n_rd_cnt: ::core::option::Option<u32>,
10890    #[prost(uint32, optional, tag="22")]
10891    pub n_rd_peak: ::core::option::Option<u32>,
10892    #[prost(uint32, optional, tag="23")]
10893    pub n_wr_as_avg: ::core::option::Option<u32>,
10894    #[prost(uint32, optional, tag="24")]
10895    pub n_wr_as_cnt: ::core::option::Option<u32>,
10896    #[prost(uint32, optional, tag="25")]
10897    pub n_wr_as_peak: ::core::option::Option<u32>,
10898    #[prost(uint32, optional, tag="26")]
10899    pub n_wr_s_avg: ::core::option::Option<u32>,
10900    #[prost(uint32, optional, tag="27")]
10901    pub n_wr_s_cnt: ::core::option::Option<u32>,
10902    #[prost(uint32, optional, tag="28")]
10903    pub n_wr_s_peak: ::core::option::Option<u32>,
10904}
10905#[derive(Clone, PartialEq, ::prost::Message)]
10906pub struct F2fsBackgroundGcFtraceEvent {
10907    #[prost(uint64, optional, tag="1")]
10908    pub dev: ::core::option::Option<u64>,
10909    #[prost(uint32, optional, tag="2")]
10910    pub wait_ms: ::core::option::Option<u32>,
10911    #[prost(uint32, optional, tag="3")]
10912    pub prefree: ::core::option::Option<u32>,
10913    #[prost(uint32, optional, tag="4")]
10914    pub free: ::core::option::Option<u32>,
10915}
10916#[derive(Clone, PartialEq, ::prost::Message)]
10917pub struct F2fsGcBeginFtraceEvent {
10918    #[prost(uint64, optional, tag="1")]
10919    pub dev: ::core::option::Option<u64>,
10920    #[prost(uint32, optional, tag="2")]
10921    pub sync: ::core::option::Option<u32>,
10922    #[prost(uint32, optional, tag="3")]
10923    pub background: ::core::option::Option<u32>,
10924    #[prost(int64, optional, tag="4")]
10925    pub dirty_nodes: ::core::option::Option<i64>,
10926    #[prost(int64, optional, tag="5")]
10927    pub dirty_dents: ::core::option::Option<i64>,
10928    #[prost(int64, optional, tag="6")]
10929    pub dirty_imeta: ::core::option::Option<i64>,
10930    #[prost(uint32, optional, tag="7")]
10931    pub free_sec: ::core::option::Option<u32>,
10932    #[prost(uint32, optional, tag="8")]
10933    pub free_seg: ::core::option::Option<u32>,
10934    #[prost(int32, optional, tag="9")]
10935    pub reserved_seg: ::core::option::Option<i32>,
10936    #[prost(uint32, optional, tag="10")]
10937    pub prefree_seg: ::core::option::Option<u32>,
10938    #[prost(int32, optional, tag="11")]
10939    pub gc_type: ::core::option::Option<i32>,
10940    #[prost(uint32, optional, tag="12")]
10941    pub no_bg_gc: ::core::option::Option<u32>,
10942    #[prost(uint32, optional, tag="13")]
10943    pub nr_free_secs: ::core::option::Option<u32>,
10944}
10945#[derive(Clone, PartialEq, ::prost::Message)]
10946pub struct F2fsGcEndFtraceEvent {
10947    #[prost(uint64, optional, tag="1")]
10948    pub dev: ::core::option::Option<u64>,
10949    #[prost(int32, optional, tag="2")]
10950    pub ret: ::core::option::Option<i32>,
10951    #[prost(int32, optional, tag="3")]
10952    pub seg_freed: ::core::option::Option<i32>,
10953    #[prost(int32, optional, tag="4")]
10954    pub sec_freed: ::core::option::Option<i32>,
10955    #[prost(int64, optional, tag="5")]
10956    pub dirty_nodes: ::core::option::Option<i64>,
10957    #[prost(int64, optional, tag="6")]
10958    pub dirty_dents: ::core::option::Option<i64>,
10959    #[prost(int64, optional, tag="7")]
10960    pub dirty_imeta: ::core::option::Option<i64>,
10961    #[prost(uint32, optional, tag="8")]
10962    pub free_sec: ::core::option::Option<u32>,
10963    #[prost(uint32, optional, tag="9")]
10964    pub free_seg: ::core::option::Option<u32>,
10965    #[prost(int32, optional, tag="10")]
10966    pub reserved_seg: ::core::option::Option<i32>,
10967    #[prost(uint32, optional, tag="11")]
10968    pub prefree_seg: ::core::option::Option<u32>,
10969}
10970// End of protos/perfetto/trace/ftrace/f2fs.proto
10971
10972// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
10973
10974#[derive(Clone, PartialEq, ::prost::Message)]
10975pub struct FastrpcDmaStatFtraceEvent {
10976    #[prost(int32, optional, tag="1")]
10977    pub cid: ::core::option::Option<i32>,
10978    #[prost(int64, optional, tag="2")]
10979    pub len: ::core::option::Option<i64>,
10980    #[prost(uint64, optional, tag="3")]
10981    pub total_allocated: ::core::option::Option<u64>,
10982}
10983#[derive(Clone, PartialEq, ::prost::Message)]
10984pub struct FastrpcDmaFreeFtraceEvent {
10985    #[prost(int32, optional, tag="1")]
10986    pub cid: ::core::option::Option<i32>,
10987    #[prost(uint64, optional, tag="2")]
10988    pub phys: ::core::option::Option<u64>,
10989    #[prost(uint64, optional, tag="3")]
10990    pub size: ::core::option::Option<u64>,
10991}
10992#[derive(Clone, PartialEq, ::prost::Message)]
10993pub struct FastrpcDmaAllocFtraceEvent {
10994    #[prost(int32, optional, tag="1")]
10995    pub cid: ::core::option::Option<i32>,
10996    #[prost(uint64, optional, tag="2")]
10997    pub phys: ::core::option::Option<u64>,
10998    #[prost(uint64, optional, tag="3")]
10999    pub size: ::core::option::Option<u64>,
11000    #[prost(uint64, optional, tag="4")]
11001    pub attr: ::core::option::Option<u64>,
11002    #[prost(int32, optional, tag="5")]
11003    pub mflags: ::core::option::Option<i32>,
11004}
11005#[derive(Clone, PartialEq, ::prost::Message)]
11006pub struct FastrpcDmaUnmapFtraceEvent {
11007    #[prost(int32, optional, tag="1")]
11008    pub cid: ::core::option::Option<i32>,
11009    #[prost(uint64, optional, tag="2")]
11010    pub phys: ::core::option::Option<u64>,
11011    #[prost(uint64, optional, tag="3")]
11012    pub size: ::core::option::Option<u64>,
11013}
11014#[derive(Clone, PartialEq, ::prost::Message)]
11015pub struct FastrpcDmaMapFtraceEvent {
11016    #[prost(int32, optional, tag="1")]
11017    pub cid: ::core::option::Option<i32>,
11018    #[prost(int32, optional, tag="2")]
11019    pub fd: ::core::option::Option<i32>,
11020    #[prost(uint64, optional, tag="3")]
11021    pub phys: ::core::option::Option<u64>,
11022    #[prost(uint64, optional, tag="4")]
11023    pub size: ::core::option::Option<u64>,
11024    #[prost(uint64, optional, tag="5")]
11025    pub len: ::core::option::Option<u64>,
11026    #[prost(uint32, optional, tag="6")]
11027    pub attr: ::core::option::Option<u32>,
11028    #[prost(int32, optional, tag="7")]
11029    pub mflags: ::core::option::Option<i32>,
11030}
11031// End of protos/perfetto/trace/ftrace/fastrpc.proto
11032
11033// Begin of protos/perfetto/trace/ftrace/fence.proto
11034
11035#[derive(Clone, PartialEq, ::prost::Message)]
11036pub struct FenceInitFtraceEvent {
11037    #[prost(uint32, optional, tag="1")]
11038    pub context: ::core::option::Option<u32>,
11039    #[prost(string, optional, tag="2")]
11040    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11041    #[prost(uint32, optional, tag="3")]
11042    pub seqno: ::core::option::Option<u32>,
11043    #[prost(string, optional, tag="4")]
11044    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11045}
11046#[derive(Clone, PartialEq, ::prost::Message)]
11047pub struct FenceDestroyFtraceEvent {
11048    #[prost(uint32, optional, tag="1")]
11049    pub context: ::core::option::Option<u32>,
11050    #[prost(string, optional, tag="2")]
11051    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11052    #[prost(uint32, optional, tag="3")]
11053    pub seqno: ::core::option::Option<u32>,
11054    #[prost(string, optional, tag="4")]
11055    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11056}
11057#[derive(Clone, PartialEq, ::prost::Message)]
11058pub struct FenceEnableSignalFtraceEvent {
11059    #[prost(uint32, optional, tag="1")]
11060    pub context: ::core::option::Option<u32>,
11061    #[prost(string, optional, tag="2")]
11062    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11063    #[prost(uint32, optional, tag="3")]
11064    pub seqno: ::core::option::Option<u32>,
11065    #[prost(string, optional, tag="4")]
11066    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11067}
11068#[derive(Clone, PartialEq, ::prost::Message)]
11069pub struct FenceSignaledFtraceEvent {
11070    #[prost(uint32, optional, tag="1")]
11071    pub context: ::core::option::Option<u32>,
11072    #[prost(string, optional, tag="2")]
11073    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11074    #[prost(uint32, optional, tag="3")]
11075    pub seqno: ::core::option::Option<u32>,
11076    #[prost(string, optional, tag="4")]
11077    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11078}
11079// End of protos/perfetto/trace/ftrace/fence.proto
11080
11081// Begin of protos/perfetto/trace/ftrace/filemap.proto
11082
11083#[derive(Clone, PartialEq, ::prost::Message)]
11084pub struct MmFilemapAddToPageCacheFtraceEvent {
11085    #[prost(uint64, optional, tag="1")]
11086    pub pfn: ::core::option::Option<u64>,
11087    #[prost(uint64, optional, tag="2")]
11088    pub i_ino: ::core::option::Option<u64>,
11089    #[prost(uint64, optional, tag="3")]
11090    pub index: ::core::option::Option<u64>,
11091    #[prost(uint64, optional, tag="4")]
11092    pub s_dev: ::core::option::Option<u64>,
11093    #[prost(uint64, optional, tag="5")]
11094    pub page: ::core::option::Option<u64>,
11095}
11096#[derive(Clone, PartialEq, ::prost::Message)]
11097pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
11098    #[prost(uint64, optional, tag="1")]
11099    pub pfn: ::core::option::Option<u64>,
11100    #[prost(uint64, optional, tag="2")]
11101    pub i_ino: ::core::option::Option<u64>,
11102    #[prost(uint64, optional, tag="3")]
11103    pub index: ::core::option::Option<u64>,
11104    #[prost(uint64, optional, tag="4")]
11105    pub s_dev: ::core::option::Option<u64>,
11106    #[prost(uint64, optional, tag="5")]
11107    pub page: ::core::option::Option<u64>,
11108}
11109// End of protos/perfetto/trace/ftrace/filemap.proto
11110
11111// Begin of protos/perfetto/trace/ftrace/fs.proto
11112
11113#[derive(Clone, PartialEq, ::prost::Message)]
11114pub struct DoSysOpenFtraceEvent {
11115    #[prost(string, optional, tag="1")]
11116    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11117    #[prost(int32, optional, tag="2")]
11118    pub flags: ::core::option::Option<i32>,
11119    #[prost(int32, optional, tag="3")]
11120    pub mode: ::core::option::Option<i32>,
11121}
11122#[derive(Clone, PartialEq, ::prost::Message)]
11123pub struct OpenExecFtraceEvent {
11124    #[prost(string, optional, tag="1")]
11125    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11126}
11127// End of protos/perfetto/trace/ftrace/fs.proto
11128
11129// Begin of protos/perfetto/trace/ftrace/ftrace.proto
11130
11131#[derive(Clone, PartialEq, ::prost::Message)]
11132pub struct PrintFtraceEvent {
11133    #[prost(uint64, optional, tag="1")]
11134    pub ip: ::core::option::Option<u64>,
11135    #[prost(string, optional, tag="2")]
11136    pub buf: ::core::option::Option<::prost::alloc::string::String>,
11137}
11138#[derive(Clone, PartialEq, ::prost::Message)]
11139pub struct FuncgraphEntryFtraceEvent {
11140    #[prost(int32, optional, tag="1")]
11141    pub depth: ::core::option::Option<i32>,
11142    #[prost(uint64, optional, tag="2")]
11143    pub func: ::core::option::Option<u64>,
11144}
11145#[derive(Clone, PartialEq, ::prost::Message)]
11146pub struct FuncgraphExitFtraceEvent {
11147    #[prost(uint64, optional, tag="1")]
11148    pub calltime: ::core::option::Option<u64>,
11149    #[prost(int32, optional, tag="2")]
11150    pub depth: ::core::option::Option<i32>,
11151    #[prost(uint64, optional, tag="3")]
11152    pub func: ::core::option::Option<u64>,
11153    #[prost(uint64, optional, tag="4")]
11154    pub overrun: ::core::option::Option<u64>,
11155    #[prost(uint64, optional, tag="5")]
11156    pub rettime: ::core::option::Option<u64>,
11157}
11158// End of protos/perfetto/trace/ftrace/ftrace.proto
11159
11160// Begin of protos/perfetto/trace/ftrace/g2d.proto
11161
11162#[derive(Clone, PartialEq, ::prost::Message)]
11163pub struct G2dTracingMarkWriteFtraceEvent {
11164    #[prost(int32, optional, tag="1")]
11165    pub pid: ::core::option::Option<i32>,
11166    #[prost(string, optional, tag="4")]
11167    pub name: ::core::option::Option<::prost::alloc::string::String>,
11168    #[prost(uint32, optional, tag="5")]
11169    pub r#type: ::core::option::Option<u32>,
11170    #[prost(int32, optional, tag="6")]
11171    pub value: ::core::option::Option<i32>,
11172}
11173// End of protos/perfetto/trace/ftrace/g2d.proto
11174
11175// Begin of protos/perfetto/trace/ftrace/generic.proto
11176
11177/// This generic proto is used to output events in the trace
11178/// when a specific proto for that event does not exist.
11179#[derive(Clone, PartialEq, ::prost::Message)]
11180pub struct GenericFtraceEvent {
11181    #[prost(string, optional, tag="1")]
11182    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
11183    #[prost(message, repeated, tag="2")]
11184    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
11185}
11186/// Nested message and enum types in `GenericFtraceEvent`.
11187pub mod generic_ftrace_event {
11188    #[derive(Clone, PartialEq, ::prost::Message)]
11189    pub struct Field {
11190        #[prost(string, optional, tag="1")]
11191        pub name: ::core::option::Option<::prost::alloc::string::String>,
11192        #[prost(oneof="field::Value", tags="3, 4, 5")]
11193        pub value: ::core::option::Option<field::Value>,
11194    }
11195    /// Nested message and enum types in `Field`.
11196    pub mod field {
11197        #[derive(Clone, PartialEq, ::prost::Oneof)]
11198        pub enum Value {
11199            #[prost(string, tag="3")]
11200            StrValue(::prost::alloc::string::String),
11201            #[prost(int64, tag="4")]
11202            IntValue(i64),
11203            #[prost(uint64, tag="5")]
11204            UintValue(u64),
11205        }
11206    }
11207}
11208#[derive(Clone, PartialEq, ::prost::Message)]
11209pub struct KprobeEvent {
11210    #[prost(string, optional, tag="1")]
11211    pub name: ::core::option::Option<::prost::alloc::string::String>,
11212    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
11213    pub r#type: ::core::option::Option<i32>,
11214}
11215/// Nested message and enum types in `KprobeEvent`.
11216pub mod kprobe_event {
11217    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11218    #[repr(i32)]
11219    pub enum KprobeType {
11220        Unknown = 0,
11221        Begin = 1,
11222        End = 2,
11223        Instant = 3,
11224    }
11225    impl KprobeType {
11226        /// String value of the enum field names used in the ProtoBuf definition.
11227        ///
11228        /// The values are not transformed in any way and thus are considered stable
11229        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11230        pub fn as_str_name(&self) -> &'static str {
11231            match self {
11232                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
11233                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
11234                KprobeType::End => "KPROBE_TYPE_END",
11235                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
11236            }
11237        }
11238    }
11239}
11240// End of protos/perfetto/trace/ftrace/generic.proto
11241
11242// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
11243
11244#[derive(Clone, PartialEq, ::prost::Message)]
11245pub struct GoogleIccEventFtraceEvent {
11246    #[prost(string, optional, tag="1")]
11247    pub event: ::core::option::Option<::prost::alloc::string::String>,
11248    #[prost(uint64, optional, tag="2")]
11249    pub timestamp: ::core::option::Option<u64>,
11250}
11251// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
11252
11253// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
11254
11255#[derive(Clone, PartialEq, ::prost::Message)]
11256pub struct GoogleIrmEventFtraceEvent {
11257    #[prost(string, optional, tag="1")]
11258    pub event: ::core::option::Option<::prost::alloc::string::String>,
11259    #[prost(uint64, optional, tag="2")]
11260    pub timestamp: ::core::option::Option<u64>,
11261}
11262// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
11263
11264// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
11265
11266#[derive(Clone, PartialEq, ::prost::Message)]
11267pub struct GpuMemTotalFtraceEvent {
11268    #[prost(uint32, optional, tag="1")]
11269    pub gpu_id: ::core::option::Option<u32>,
11270    #[prost(uint32, optional, tag="2")]
11271    pub pid: ::core::option::Option<u32>,
11272    #[prost(uint64, optional, tag="3")]
11273    pub size: ::core::option::Option<u64>,
11274}
11275// End of protos/perfetto/trace/ftrace/gpu_mem.proto
11276
11277// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
11278
11279#[derive(Clone, PartialEq, ::prost::Message)]
11280pub struct DrmSchedJobFtraceEvent {
11281    #[prost(uint64, optional, tag="1")]
11282    pub entity: ::core::option::Option<u64>,
11283    #[prost(uint64, optional, tag="2")]
11284    pub fence: ::core::option::Option<u64>,
11285    #[prost(int32, optional, tag="3")]
11286    pub hw_job_count: ::core::option::Option<i32>,
11287    #[prost(uint64, optional, tag="4")]
11288    pub id: ::core::option::Option<u64>,
11289    #[prost(uint32, optional, tag="5")]
11290    pub job_count: ::core::option::Option<u32>,
11291    #[prost(string, optional, tag="6")]
11292    pub name: ::core::option::Option<::prost::alloc::string::String>,
11293}
11294#[derive(Clone, PartialEq, ::prost::Message)]
11295pub struct DrmRunJobFtraceEvent {
11296    #[prost(uint64, optional, tag="1")]
11297    pub entity: ::core::option::Option<u64>,
11298    #[prost(uint64, optional, tag="2")]
11299    pub fence: ::core::option::Option<u64>,
11300    #[prost(int32, optional, tag="3")]
11301    pub hw_job_count: ::core::option::Option<i32>,
11302    #[prost(uint64, optional, tag="4")]
11303    pub id: ::core::option::Option<u64>,
11304    #[prost(uint32, optional, tag="5")]
11305    pub job_count: ::core::option::Option<u32>,
11306    #[prost(string, optional, tag="6")]
11307    pub name: ::core::option::Option<::prost::alloc::string::String>,
11308}
11309#[derive(Clone, PartialEq, ::prost::Message)]
11310pub struct DrmSchedProcessJobFtraceEvent {
11311    #[prost(uint64, optional, tag="1")]
11312    pub fence: ::core::option::Option<u64>,
11313}
11314// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
11315
11316// Begin of protos/perfetto/trace/ftrace/hyp.proto
11317
11318#[derive(Clone, PartialEq, ::prost::Message)]
11319pub struct HypEnterFtraceEvent {
11320}
11321#[derive(Clone, PartialEq, ::prost::Message)]
11322pub struct HypExitFtraceEvent {
11323}
11324#[derive(Clone, PartialEq, ::prost::Message)]
11325pub struct HostHcallFtraceEvent {
11326    #[prost(uint32, optional, tag="1")]
11327    pub id: ::core::option::Option<u32>,
11328    #[prost(uint32, optional, tag="2")]
11329    pub invalid: ::core::option::Option<u32>,
11330}
11331#[derive(Clone, PartialEq, ::prost::Message)]
11332pub struct HostSmcFtraceEvent {
11333    #[prost(uint64, optional, tag="1")]
11334    pub id: ::core::option::Option<u64>,
11335    #[prost(uint32, optional, tag="2")]
11336    pub forwarded: ::core::option::Option<u32>,
11337}
11338#[derive(Clone, PartialEq, ::prost::Message)]
11339pub struct HostMemAbortFtraceEvent {
11340    #[prost(uint64, optional, tag="1")]
11341    pub esr: ::core::option::Option<u64>,
11342    #[prost(uint64, optional, tag="2")]
11343    pub addr: ::core::option::Option<u64>,
11344}
11345// End of protos/perfetto/trace/ftrace/hyp.proto
11346
11347// Begin of protos/perfetto/trace/ftrace/i2c.proto
11348
11349#[derive(Clone, PartialEq, ::prost::Message)]
11350pub struct I2cReadFtraceEvent {
11351    #[prost(int32, optional, tag="1")]
11352    pub adapter_nr: ::core::option::Option<i32>,
11353    #[prost(uint32, optional, tag="2")]
11354    pub msg_nr: ::core::option::Option<u32>,
11355    #[prost(uint32, optional, tag="3")]
11356    pub addr: ::core::option::Option<u32>,
11357    #[prost(uint32, optional, tag="4")]
11358    pub flags: ::core::option::Option<u32>,
11359    #[prost(uint32, optional, tag="5")]
11360    pub len: ::core::option::Option<u32>,
11361}
11362#[derive(Clone, PartialEq, ::prost::Message)]
11363pub struct I2cWriteFtraceEvent {
11364    #[prost(int32, optional, tag="1")]
11365    pub adapter_nr: ::core::option::Option<i32>,
11366    #[prost(uint32, optional, tag="2")]
11367    pub msg_nr: ::core::option::Option<u32>,
11368    #[prost(uint32, optional, tag="3")]
11369    pub addr: ::core::option::Option<u32>,
11370    #[prost(uint32, optional, tag="4")]
11371    pub flags: ::core::option::Option<u32>,
11372    #[prost(uint32, optional, tag="5")]
11373    pub len: ::core::option::Option<u32>,
11374    #[prost(uint32, optional, tag="6")]
11375    pub buf: ::core::option::Option<u32>,
11376}
11377#[derive(Clone, PartialEq, ::prost::Message)]
11378pub struct I2cResultFtraceEvent {
11379    #[prost(int32, optional, tag="1")]
11380    pub adapter_nr: ::core::option::Option<i32>,
11381    #[prost(uint32, optional, tag="2")]
11382    pub nr_msgs: ::core::option::Option<u32>,
11383    #[prost(int32, optional, tag="3")]
11384    pub ret: ::core::option::Option<i32>,
11385}
11386#[derive(Clone, PartialEq, ::prost::Message)]
11387pub struct I2cReplyFtraceEvent {
11388    #[prost(int32, optional, tag="1")]
11389    pub adapter_nr: ::core::option::Option<i32>,
11390    #[prost(uint32, optional, tag="2")]
11391    pub msg_nr: ::core::option::Option<u32>,
11392    #[prost(uint32, optional, tag="3")]
11393    pub addr: ::core::option::Option<u32>,
11394    #[prost(uint32, optional, tag="4")]
11395    pub flags: ::core::option::Option<u32>,
11396    #[prost(uint32, optional, tag="5")]
11397    pub len: ::core::option::Option<u32>,
11398    #[prost(uint32, optional, tag="6")]
11399    pub buf: ::core::option::Option<u32>,
11400}
11401#[derive(Clone, PartialEq, ::prost::Message)]
11402pub struct SmbusReadFtraceEvent {
11403    #[prost(int32, optional, tag="1")]
11404    pub adapter_nr: ::core::option::Option<i32>,
11405    #[prost(uint32, optional, tag="2")]
11406    pub flags: ::core::option::Option<u32>,
11407    #[prost(uint32, optional, tag="3")]
11408    pub addr: ::core::option::Option<u32>,
11409    #[prost(uint32, optional, tag="4")]
11410    pub command: ::core::option::Option<u32>,
11411    #[prost(uint32, optional, tag="5")]
11412    pub protocol: ::core::option::Option<u32>,
11413}
11414#[derive(Clone, PartialEq, ::prost::Message)]
11415pub struct SmbusWriteFtraceEvent {
11416    #[prost(int32, optional, tag="1")]
11417    pub adapter_nr: ::core::option::Option<i32>,
11418    #[prost(uint32, optional, tag="2")]
11419    pub addr: ::core::option::Option<u32>,
11420    #[prost(uint32, optional, tag="3")]
11421    pub flags: ::core::option::Option<u32>,
11422    #[prost(uint32, optional, tag="4")]
11423    pub command: ::core::option::Option<u32>,
11424    #[prost(uint32, optional, tag="5")]
11425    pub len: ::core::option::Option<u32>,
11426    #[prost(uint32, optional, tag="6")]
11427    pub protocol: ::core::option::Option<u32>,
11428}
11429#[derive(Clone, PartialEq, ::prost::Message)]
11430pub struct SmbusResultFtraceEvent {
11431    #[prost(int32, optional, tag="1")]
11432    pub adapter_nr: ::core::option::Option<i32>,
11433    #[prost(uint32, optional, tag="2")]
11434    pub addr: ::core::option::Option<u32>,
11435    #[prost(uint32, optional, tag="3")]
11436    pub flags: ::core::option::Option<u32>,
11437    #[prost(uint32, optional, tag="4")]
11438    pub read_write: ::core::option::Option<u32>,
11439    #[prost(uint32, optional, tag="5")]
11440    pub command: ::core::option::Option<u32>,
11441    #[prost(int32, optional, tag="6")]
11442    pub res: ::core::option::Option<i32>,
11443    #[prost(uint32, optional, tag="7")]
11444    pub protocol: ::core::option::Option<u32>,
11445}
11446#[derive(Clone, PartialEq, ::prost::Message)]
11447pub struct SmbusReplyFtraceEvent {
11448    #[prost(int32, optional, tag="1")]
11449    pub adapter_nr: ::core::option::Option<i32>,
11450    #[prost(uint32, optional, tag="2")]
11451    pub addr: ::core::option::Option<u32>,
11452    #[prost(uint32, optional, tag="3")]
11453    pub flags: ::core::option::Option<u32>,
11454    #[prost(uint32, optional, tag="4")]
11455    pub command: ::core::option::Option<u32>,
11456    #[prost(uint32, optional, tag="5")]
11457    pub len: ::core::option::Option<u32>,
11458    #[prost(uint32, optional, tag="6")]
11459    pub protocol: ::core::option::Option<u32>,
11460}
11461// End of protos/perfetto/trace/ftrace/i2c.proto
11462
11463// Begin of protos/perfetto/trace/ftrace/ion.proto
11464
11465#[derive(Clone, PartialEq, ::prost::Message)]
11466pub struct IonStatFtraceEvent {
11467    #[prost(uint32, optional, tag="1")]
11468    pub buffer_id: ::core::option::Option<u32>,
11469    #[prost(int64, optional, tag="2")]
11470    pub len: ::core::option::Option<i64>,
11471    #[prost(uint64, optional, tag="3")]
11472    pub total_allocated: ::core::option::Option<u64>,
11473}
11474// End of protos/perfetto/trace/ftrace/ion.proto
11475
11476// Begin of protos/perfetto/trace/ftrace/ipi.proto
11477
11478#[derive(Clone, PartialEq, ::prost::Message)]
11479pub struct IpiEntryFtraceEvent {
11480    #[prost(string, optional, tag="1")]
11481    pub reason: ::core::option::Option<::prost::alloc::string::String>,
11482}
11483#[derive(Clone, PartialEq, ::prost::Message)]
11484pub struct IpiExitFtraceEvent {
11485    #[prost(string, optional, tag="1")]
11486    pub reason: ::core::option::Option<::prost::alloc::string::String>,
11487}
11488#[derive(Clone, PartialEq, ::prost::Message)]
11489pub struct IpiRaiseFtraceEvent {
11490    #[prost(uint32, optional, tag="1")]
11491    pub target_cpus: ::core::option::Option<u32>,
11492    #[prost(string, optional, tag="2")]
11493    pub reason: ::core::option::Option<::prost::alloc::string::String>,
11494}
11495// End of protos/perfetto/trace/ftrace/ipi.proto
11496
11497// Begin of protos/perfetto/trace/ftrace/irq.proto
11498
11499#[derive(Clone, PartialEq, ::prost::Message)]
11500pub struct SoftirqEntryFtraceEvent {
11501    #[prost(uint32, optional, tag="1")]
11502    pub vec: ::core::option::Option<u32>,
11503}
11504#[derive(Clone, PartialEq, ::prost::Message)]
11505pub struct SoftirqExitFtraceEvent {
11506    #[prost(uint32, optional, tag="1")]
11507    pub vec: ::core::option::Option<u32>,
11508}
11509#[derive(Clone, PartialEq, ::prost::Message)]
11510pub struct SoftirqRaiseFtraceEvent {
11511    #[prost(uint32, optional, tag="1")]
11512    pub vec: ::core::option::Option<u32>,
11513}
11514#[derive(Clone, PartialEq, ::prost::Message)]
11515pub struct IrqHandlerEntryFtraceEvent {
11516    #[prost(int32, optional, tag="1")]
11517    pub irq: ::core::option::Option<i32>,
11518    #[prost(string, optional, tag="2")]
11519    pub name: ::core::option::Option<::prost::alloc::string::String>,
11520    #[prost(uint32, optional, tag="3")]
11521    pub handler: ::core::option::Option<u32>,
11522}
11523#[derive(Clone, PartialEq, ::prost::Message)]
11524pub struct IrqHandlerExitFtraceEvent {
11525    #[prost(int32, optional, tag="1")]
11526    pub irq: ::core::option::Option<i32>,
11527    #[prost(int32, optional, tag="2")]
11528    pub ret: ::core::option::Option<i32>,
11529}
11530// End of protos/perfetto/trace/ftrace/irq.proto
11531
11532// Begin of protos/perfetto/trace/ftrace/kgsl.proto
11533
11534#[derive(Clone, PartialEq, ::prost::Message)]
11535pub struct KgslGpuFrequencyFtraceEvent {
11536    #[prost(uint32, optional, tag="1")]
11537    pub gpu_freq: ::core::option::Option<u32>,
11538    #[prost(uint32, optional, tag="2")]
11539    pub gpu_id: ::core::option::Option<u32>,
11540}
11541#[derive(Clone, PartialEq, ::prost::Message)]
11542pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
11543    #[prost(uint32, optional, tag="1")]
11544    pub id: ::core::option::Option<u32>,
11545    #[prost(uint32, optional, tag="2")]
11546    pub timestamp: ::core::option::Option<u32>,
11547    #[prost(uint32, optional, tag="3")]
11548    pub queued: ::core::option::Option<u32>,
11549    #[prost(uint32, optional, tag="4")]
11550    pub flags: ::core::option::Option<u32>,
11551    #[prost(uint32, optional, tag="5")]
11552    pub prio: ::core::option::Option<u32>,
11553}
11554#[derive(Clone, PartialEq, ::prost::Message)]
11555pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
11556    #[prost(uint32, optional, tag="1")]
11557    pub id: ::core::option::Option<u32>,
11558    #[prost(uint32, optional, tag="2")]
11559    pub timestamp: ::core::option::Option<u32>,
11560    #[prost(int64, optional, tag="3")]
11561    pub inflight: ::core::option::Option<i64>,
11562    #[prost(uint32, optional, tag="4")]
11563    pub flags: ::core::option::Option<u32>,
11564    #[prost(uint64, optional, tag="5")]
11565    pub ticks: ::core::option::Option<u64>,
11566    #[prost(uint64, optional, tag="6")]
11567    pub secs: ::core::option::Option<u64>,
11568    #[prost(uint64, optional, tag="7")]
11569    pub usecs: ::core::option::Option<u64>,
11570    #[prost(int32, optional, tag="8")]
11571    pub prio: ::core::option::Option<i32>,
11572    #[prost(int32, optional, tag="9")]
11573    pub rb_id: ::core::option::Option<i32>,
11574    #[prost(uint32, optional, tag="10")]
11575    pub rptr: ::core::option::Option<u32>,
11576    #[prost(uint32, optional, tag="11")]
11577    pub wptr: ::core::option::Option<u32>,
11578    #[prost(int32, optional, tag="12")]
11579    pub q_inflight: ::core::option::Option<i32>,
11580    #[prost(int32, optional, tag="13")]
11581    pub dispatch_queue: ::core::option::Option<i32>,
11582}
11583#[derive(Clone, PartialEq, ::prost::Message)]
11584pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
11585    #[prost(uint32, optional, tag="1")]
11586    pub id: ::core::option::Option<u32>,
11587    #[prost(uint32, optional, tag="2")]
11588    pub timestamp: ::core::option::Option<u32>,
11589    #[prost(uint64, optional, tag="3")]
11590    pub ticks: ::core::option::Option<u64>,
11591    #[prost(int32, optional, tag="4")]
11592    pub prio: ::core::option::Option<i32>,
11593}
11594#[derive(Clone, PartialEq, ::prost::Message)]
11595pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
11596    #[prost(uint32, optional, tag="1")]
11597    pub id: ::core::option::Option<u32>,
11598    #[prost(uint32, optional, tag="2")]
11599    pub timestamp: ::core::option::Option<u32>,
11600    #[prost(int64, optional, tag="3")]
11601    pub inflight: ::core::option::Option<i64>,
11602    #[prost(uint32, optional, tag="4")]
11603    pub recovery: ::core::option::Option<u32>,
11604    #[prost(uint32, optional, tag="5")]
11605    pub flags: ::core::option::Option<u32>,
11606    #[prost(uint64, optional, tag="6")]
11607    pub start: ::core::option::Option<u64>,
11608    #[prost(uint64, optional, tag="7")]
11609    pub retire: ::core::option::Option<u64>,
11610    #[prost(int32, optional, tag="8")]
11611    pub prio: ::core::option::Option<i32>,
11612    #[prost(int32, optional, tag="9")]
11613    pub rb_id: ::core::option::Option<i32>,
11614    #[prost(uint32, optional, tag="10")]
11615    pub rptr: ::core::option::Option<u32>,
11616    #[prost(uint32, optional, tag="11")]
11617    pub wptr: ::core::option::Option<u32>,
11618    #[prost(int32, optional, tag="12")]
11619    pub q_inflight: ::core::option::Option<i32>,
11620    #[prost(uint64, optional, tag="13")]
11621    pub fault_recovery: ::core::option::Option<u64>,
11622    #[prost(uint32, optional, tag="14")]
11623    pub dispatch_queue: ::core::option::Option<u32>,
11624    #[prost(uint64, optional, tag="15")]
11625    pub submitted_to_rb: ::core::option::Option<u64>,
11626    #[prost(uint64, optional, tag="16")]
11627    pub retired_on_gmu: ::core::option::Option<u64>,
11628    #[prost(uint64, optional, tag="17")]
11629    pub active: ::core::option::Option<u64>,
11630}
11631// End of protos/perfetto/trace/ftrace/kgsl.proto
11632
11633// Begin of protos/perfetto/trace/ftrace/kmem.proto
11634
11635#[derive(Clone, PartialEq, ::prost::Message)]
11636pub struct AllocPagesIommuEndFtraceEvent {
11637    #[prost(uint32, optional, tag="1")]
11638    pub gfp_flags: ::core::option::Option<u32>,
11639    #[prost(uint32, optional, tag="2")]
11640    pub order: ::core::option::Option<u32>,
11641}
11642#[derive(Clone, PartialEq, ::prost::Message)]
11643pub struct AllocPagesIommuFailFtraceEvent {
11644    #[prost(uint32, optional, tag="1")]
11645    pub gfp_flags: ::core::option::Option<u32>,
11646    #[prost(uint32, optional, tag="2")]
11647    pub order: ::core::option::Option<u32>,
11648}
11649#[derive(Clone, PartialEq, ::prost::Message)]
11650pub struct AllocPagesIommuStartFtraceEvent {
11651    #[prost(uint32, optional, tag="1")]
11652    pub gfp_flags: ::core::option::Option<u32>,
11653    #[prost(uint32, optional, tag="2")]
11654    pub order: ::core::option::Option<u32>,
11655}
11656#[derive(Clone, PartialEq, ::prost::Message)]
11657pub struct AllocPagesSysEndFtraceEvent {
11658    #[prost(uint32, optional, tag="1")]
11659    pub gfp_flags: ::core::option::Option<u32>,
11660    #[prost(uint32, optional, tag="2")]
11661    pub order: ::core::option::Option<u32>,
11662}
11663#[derive(Clone, PartialEq, ::prost::Message)]
11664pub struct AllocPagesSysFailFtraceEvent {
11665    #[prost(uint32, optional, tag="1")]
11666    pub gfp_flags: ::core::option::Option<u32>,
11667    #[prost(uint32, optional, tag="2")]
11668    pub order: ::core::option::Option<u32>,
11669}
11670#[derive(Clone, PartialEq, ::prost::Message)]
11671pub struct AllocPagesSysStartFtraceEvent {
11672    #[prost(uint32, optional, tag="1")]
11673    pub gfp_flags: ::core::option::Option<u32>,
11674    #[prost(uint32, optional, tag="2")]
11675    pub order: ::core::option::Option<u32>,
11676}
11677#[derive(Clone, PartialEq, ::prost::Message)]
11678pub struct DmaAllocContiguousRetryFtraceEvent {
11679    #[prost(int32, optional, tag="1")]
11680    pub tries: ::core::option::Option<i32>,
11681}
11682#[derive(Clone, PartialEq, ::prost::Message)]
11683pub struct IommuMapRangeFtraceEvent {
11684    #[prost(uint64, optional, tag="1")]
11685    pub chunk_size: ::core::option::Option<u64>,
11686    #[prost(uint64, optional, tag="2")]
11687    pub len: ::core::option::Option<u64>,
11688    #[prost(uint64, optional, tag="3")]
11689    pub pa: ::core::option::Option<u64>,
11690    #[prost(uint64, optional, tag="4")]
11691    pub va: ::core::option::Option<u64>,
11692}
11693#[derive(Clone, PartialEq, ::prost::Message)]
11694pub struct IommuSecPtblMapRangeEndFtraceEvent {
11695    #[prost(uint64, optional, tag="1")]
11696    pub len: ::core::option::Option<u64>,
11697    #[prost(int32, optional, tag="2")]
11698    pub num: ::core::option::Option<i32>,
11699    #[prost(uint32, optional, tag="3")]
11700    pub pa: ::core::option::Option<u32>,
11701    #[prost(int32, optional, tag="4")]
11702    pub sec_id: ::core::option::Option<i32>,
11703    #[prost(uint64, optional, tag="5")]
11704    pub va: ::core::option::Option<u64>,
11705}
11706#[derive(Clone, PartialEq, ::prost::Message)]
11707pub struct IommuSecPtblMapRangeStartFtraceEvent {
11708    #[prost(uint64, optional, tag="1")]
11709    pub len: ::core::option::Option<u64>,
11710    #[prost(int32, optional, tag="2")]
11711    pub num: ::core::option::Option<i32>,
11712    #[prost(uint32, optional, tag="3")]
11713    pub pa: ::core::option::Option<u32>,
11714    #[prost(int32, optional, tag="4")]
11715    pub sec_id: ::core::option::Option<i32>,
11716    #[prost(uint64, optional, tag="5")]
11717    pub va: ::core::option::Option<u64>,
11718}
11719#[derive(Clone, PartialEq, ::prost::Message)]
11720pub struct IonAllocBufferEndFtraceEvent {
11721    #[prost(string, optional, tag="1")]
11722    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
11723    #[prost(uint32, optional, tag="2")]
11724    pub flags: ::core::option::Option<u32>,
11725    #[prost(string, optional, tag="3")]
11726    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11727    #[prost(uint64, optional, tag="4")]
11728    pub len: ::core::option::Option<u64>,
11729    #[prost(uint32, optional, tag="5")]
11730    pub mask: ::core::option::Option<u32>,
11731}
11732#[derive(Clone, PartialEq, ::prost::Message)]
11733pub struct IonAllocBufferFailFtraceEvent {
11734    #[prost(string, optional, tag="1")]
11735    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
11736    #[prost(int64, optional, tag="2")]
11737    pub error: ::core::option::Option<i64>,
11738    #[prost(uint32, optional, tag="3")]
11739    pub flags: ::core::option::Option<u32>,
11740    #[prost(string, optional, tag="4")]
11741    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11742    #[prost(uint64, optional, tag="5")]
11743    pub len: ::core::option::Option<u64>,
11744    #[prost(uint32, optional, tag="6")]
11745    pub mask: ::core::option::Option<u32>,
11746}
11747#[derive(Clone, PartialEq, ::prost::Message)]
11748pub struct IonAllocBufferFallbackFtraceEvent {
11749    #[prost(string, optional, tag="1")]
11750    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
11751    #[prost(int64, optional, tag="2")]
11752    pub error: ::core::option::Option<i64>,
11753    #[prost(uint32, optional, tag="3")]
11754    pub flags: ::core::option::Option<u32>,
11755    #[prost(string, optional, tag="4")]
11756    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11757    #[prost(uint64, optional, tag="5")]
11758    pub len: ::core::option::Option<u64>,
11759    #[prost(uint32, optional, tag="6")]
11760    pub mask: ::core::option::Option<u32>,
11761}
11762#[derive(Clone, PartialEq, ::prost::Message)]
11763pub struct IonAllocBufferStartFtraceEvent {
11764    #[prost(string, optional, tag="1")]
11765    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
11766    #[prost(uint32, optional, tag="2")]
11767    pub flags: ::core::option::Option<u32>,
11768    #[prost(string, optional, tag="3")]
11769    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11770    #[prost(uint64, optional, tag="4")]
11771    pub len: ::core::option::Option<u64>,
11772    #[prost(uint32, optional, tag="5")]
11773    pub mask: ::core::option::Option<u32>,
11774}
11775#[derive(Clone, PartialEq, ::prost::Message)]
11776pub struct IonCpAllocRetryFtraceEvent {
11777    #[prost(int32, optional, tag="1")]
11778    pub tries: ::core::option::Option<i32>,
11779}
11780#[derive(Clone, PartialEq, ::prost::Message)]
11781pub struct IonCpSecureBufferEndFtraceEvent {
11782    #[prost(uint64, optional, tag="1")]
11783    pub align: ::core::option::Option<u64>,
11784    #[prost(uint64, optional, tag="2")]
11785    pub flags: ::core::option::Option<u64>,
11786    #[prost(string, optional, tag="3")]
11787    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11788    #[prost(uint64, optional, tag="4")]
11789    pub len: ::core::option::Option<u64>,
11790}
11791#[derive(Clone, PartialEq, ::prost::Message)]
11792pub struct IonCpSecureBufferStartFtraceEvent {
11793    #[prost(uint64, optional, tag="1")]
11794    pub align: ::core::option::Option<u64>,
11795    #[prost(uint64, optional, tag="2")]
11796    pub flags: ::core::option::Option<u64>,
11797    #[prost(string, optional, tag="3")]
11798    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11799    #[prost(uint64, optional, tag="4")]
11800    pub len: ::core::option::Option<u64>,
11801}
11802#[derive(Clone, PartialEq, ::prost::Message)]
11803pub struct IonPrefetchingFtraceEvent {
11804    #[prost(uint64, optional, tag="1")]
11805    pub len: ::core::option::Option<u64>,
11806}
11807#[derive(Clone, PartialEq, ::prost::Message)]
11808pub struct IonSecureCmaAddToPoolEndFtraceEvent {
11809    #[prost(uint32, optional, tag="1")]
11810    pub is_prefetch: ::core::option::Option<u32>,
11811    #[prost(uint64, optional, tag="2")]
11812    pub len: ::core::option::Option<u64>,
11813    #[prost(int32, optional, tag="3")]
11814    pub pool_total: ::core::option::Option<i32>,
11815}
11816#[derive(Clone, PartialEq, ::prost::Message)]
11817pub struct IonSecureCmaAddToPoolStartFtraceEvent {
11818    #[prost(uint32, optional, tag="1")]
11819    pub is_prefetch: ::core::option::Option<u32>,
11820    #[prost(uint64, optional, tag="2")]
11821    pub len: ::core::option::Option<u64>,
11822    #[prost(int32, optional, tag="3")]
11823    pub pool_total: ::core::option::Option<i32>,
11824}
11825#[derive(Clone, PartialEq, ::prost::Message)]
11826pub struct IonSecureCmaAllocateEndFtraceEvent {
11827    #[prost(uint64, optional, tag="1")]
11828    pub align: ::core::option::Option<u64>,
11829    #[prost(uint64, optional, tag="2")]
11830    pub flags: ::core::option::Option<u64>,
11831    #[prost(string, optional, tag="3")]
11832    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11833    #[prost(uint64, optional, tag="4")]
11834    pub len: ::core::option::Option<u64>,
11835}
11836#[derive(Clone, PartialEq, ::prost::Message)]
11837pub struct IonSecureCmaAllocateStartFtraceEvent {
11838    #[prost(uint64, optional, tag="1")]
11839    pub align: ::core::option::Option<u64>,
11840    #[prost(uint64, optional, tag="2")]
11841    pub flags: ::core::option::Option<u64>,
11842    #[prost(string, optional, tag="3")]
11843    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
11844    #[prost(uint64, optional, tag="4")]
11845    pub len: ::core::option::Option<u64>,
11846}
11847#[derive(Clone, PartialEq, ::prost::Message)]
11848pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
11849    #[prost(uint64, optional, tag="1")]
11850    pub drained_size: ::core::option::Option<u64>,
11851    #[prost(uint64, optional, tag="2")]
11852    pub skipped_size: ::core::option::Option<u64>,
11853}
11854#[derive(Clone, PartialEq, ::prost::Message)]
11855pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
11856    #[prost(uint64, optional, tag="1")]
11857    pub drained_size: ::core::option::Option<u64>,
11858    #[prost(uint64, optional, tag="2")]
11859    pub skipped_size: ::core::option::Option<u64>,
11860}
11861#[derive(Clone, PartialEq, ::prost::Message)]
11862pub struct KfreeFtraceEvent {
11863    #[prost(uint64, optional, tag="1")]
11864    pub call_site: ::core::option::Option<u64>,
11865    #[prost(uint64, optional, tag="2")]
11866    pub ptr: ::core::option::Option<u64>,
11867}
11868#[derive(Clone, PartialEq, ::prost::Message)]
11869pub struct KmallocFtraceEvent {
11870    #[prost(uint64, optional, tag="1")]
11871    pub bytes_alloc: ::core::option::Option<u64>,
11872    #[prost(uint64, optional, tag="2")]
11873    pub bytes_req: ::core::option::Option<u64>,
11874    #[prost(uint64, optional, tag="3")]
11875    pub call_site: ::core::option::Option<u64>,
11876    #[prost(uint32, optional, tag="4")]
11877    pub gfp_flags: ::core::option::Option<u32>,
11878    #[prost(uint64, optional, tag="5")]
11879    pub ptr: ::core::option::Option<u64>,
11880}
11881#[derive(Clone, PartialEq, ::prost::Message)]
11882pub struct KmallocNodeFtraceEvent {
11883    #[prost(uint64, optional, tag="1")]
11884    pub bytes_alloc: ::core::option::Option<u64>,
11885    #[prost(uint64, optional, tag="2")]
11886    pub bytes_req: ::core::option::Option<u64>,
11887    #[prost(uint64, optional, tag="3")]
11888    pub call_site: ::core::option::Option<u64>,
11889    #[prost(uint32, optional, tag="4")]
11890    pub gfp_flags: ::core::option::Option<u32>,
11891    #[prost(int32, optional, tag="5")]
11892    pub node: ::core::option::Option<i32>,
11893    #[prost(uint64, optional, tag="6")]
11894    pub ptr: ::core::option::Option<u64>,
11895}
11896#[derive(Clone, PartialEq, ::prost::Message)]
11897pub struct KmemCacheAllocFtraceEvent {
11898    #[prost(uint64, optional, tag="1")]
11899    pub bytes_alloc: ::core::option::Option<u64>,
11900    #[prost(uint64, optional, tag="2")]
11901    pub bytes_req: ::core::option::Option<u64>,
11902    #[prost(uint64, optional, tag="3")]
11903    pub call_site: ::core::option::Option<u64>,
11904    #[prost(uint32, optional, tag="4")]
11905    pub gfp_flags: ::core::option::Option<u32>,
11906    #[prost(uint64, optional, tag="5")]
11907    pub ptr: ::core::option::Option<u64>,
11908}
11909#[derive(Clone, PartialEq, ::prost::Message)]
11910pub struct KmemCacheAllocNodeFtraceEvent {
11911    #[prost(uint64, optional, tag="1")]
11912    pub bytes_alloc: ::core::option::Option<u64>,
11913    #[prost(uint64, optional, tag="2")]
11914    pub bytes_req: ::core::option::Option<u64>,
11915    #[prost(uint64, optional, tag="3")]
11916    pub call_site: ::core::option::Option<u64>,
11917    #[prost(uint32, optional, tag="4")]
11918    pub gfp_flags: ::core::option::Option<u32>,
11919    #[prost(int32, optional, tag="5")]
11920    pub node: ::core::option::Option<i32>,
11921    #[prost(uint64, optional, tag="6")]
11922    pub ptr: ::core::option::Option<u64>,
11923}
11924#[derive(Clone, PartialEq, ::prost::Message)]
11925pub struct KmemCacheFreeFtraceEvent {
11926    #[prost(uint64, optional, tag="1")]
11927    pub call_site: ::core::option::Option<u64>,
11928    #[prost(uint64, optional, tag="2")]
11929    pub ptr: ::core::option::Option<u64>,
11930}
11931#[derive(Clone, PartialEq, ::prost::Message)]
11932pub struct MigratePagesEndFtraceEvent {
11933    #[prost(int32, optional, tag="1")]
11934    pub mode: ::core::option::Option<i32>,
11935}
11936#[derive(Clone, PartialEq, ::prost::Message)]
11937pub struct MigratePagesStartFtraceEvent {
11938    #[prost(int32, optional, tag="1")]
11939    pub mode: ::core::option::Option<i32>,
11940}
11941#[derive(Clone, PartialEq, ::prost::Message)]
11942pub struct MigrateRetryFtraceEvent {
11943    #[prost(int32, optional, tag="1")]
11944    pub tries: ::core::option::Option<i32>,
11945}
11946#[derive(Clone, PartialEq, ::prost::Message)]
11947pub struct MmPageAllocFtraceEvent {
11948    #[prost(uint32, optional, tag="1")]
11949    pub gfp_flags: ::core::option::Option<u32>,
11950    #[prost(int32, optional, tag="2")]
11951    pub migratetype: ::core::option::Option<i32>,
11952    #[prost(uint32, optional, tag="3")]
11953    pub order: ::core::option::Option<u32>,
11954    #[prost(uint64, optional, tag="4")]
11955    pub page: ::core::option::Option<u64>,
11956    #[prost(uint64, optional, tag="5")]
11957    pub pfn: ::core::option::Option<u64>,
11958}
11959#[derive(Clone, PartialEq, ::prost::Message)]
11960pub struct MmPageAllocExtfragFtraceEvent {
11961    #[prost(int32, optional, tag="1")]
11962    pub alloc_migratetype: ::core::option::Option<i32>,
11963    #[prost(int32, optional, tag="2")]
11964    pub alloc_order: ::core::option::Option<i32>,
11965    #[prost(int32, optional, tag="3")]
11966    pub fallback_migratetype: ::core::option::Option<i32>,
11967    #[prost(int32, optional, tag="4")]
11968    pub fallback_order: ::core::option::Option<i32>,
11969    #[prost(uint64, optional, tag="5")]
11970    pub page: ::core::option::Option<u64>,
11971    #[prost(int32, optional, tag="6")]
11972    pub change_ownership: ::core::option::Option<i32>,
11973    #[prost(uint64, optional, tag="7")]
11974    pub pfn: ::core::option::Option<u64>,
11975}
11976#[derive(Clone, PartialEq, ::prost::Message)]
11977pub struct MmPageAllocZoneLockedFtraceEvent {
11978    #[prost(int32, optional, tag="1")]
11979    pub migratetype: ::core::option::Option<i32>,
11980    #[prost(uint32, optional, tag="2")]
11981    pub order: ::core::option::Option<u32>,
11982    #[prost(uint64, optional, tag="3")]
11983    pub page: ::core::option::Option<u64>,
11984    #[prost(uint64, optional, tag="4")]
11985    pub pfn: ::core::option::Option<u64>,
11986}
11987#[derive(Clone, PartialEq, ::prost::Message)]
11988pub struct MmPageFreeFtraceEvent {
11989    #[prost(uint32, optional, tag="1")]
11990    pub order: ::core::option::Option<u32>,
11991    #[prost(uint64, optional, tag="2")]
11992    pub page: ::core::option::Option<u64>,
11993    #[prost(uint64, optional, tag="3")]
11994    pub pfn: ::core::option::Option<u64>,
11995}
11996#[derive(Clone, PartialEq, ::prost::Message)]
11997pub struct MmPageFreeBatchedFtraceEvent {
11998    #[prost(int32, optional, tag="1")]
11999    pub cold: ::core::option::Option<i32>,
12000    #[prost(uint64, optional, tag="2")]
12001    pub page: ::core::option::Option<u64>,
12002    #[prost(uint64, optional, tag="3")]
12003    pub pfn: ::core::option::Option<u64>,
12004}
12005#[derive(Clone, PartialEq, ::prost::Message)]
12006pub struct MmPagePcpuDrainFtraceEvent {
12007    #[prost(int32, optional, tag="1")]
12008    pub migratetype: ::core::option::Option<i32>,
12009    #[prost(uint32, optional, tag="2")]
12010    pub order: ::core::option::Option<u32>,
12011    #[prost(uint64, optional, tag="3")]
12012    pub page: ::core::option::Option<u64>,
12013    #[prost(uint64, optional, tag="4")]
12014    pub pfn: ::core::option::Option<u64>,
12015}
12016#[derive(Clone, PartialEq, ::prost::Message)]
12017pub struct RssStatFtraceEvent {
12018    #[prost(int32, optional, tag="1")]
12019    pub member: ::core::option::Option<i32>,
12020    #[prost(int64, optional, tag="2")]
12021    pub size: ::core::option::Option<i64>,
12022    #[prost(uint32, optional, tag="3")]
12023    pub curr: ::core::option::Option<u32>,
12024    #[prost(uint32, optional, tag="4")]
12025    pub mm_id: ::core::option::Option<u32>,
12026}
12027#[derive(Clone, PartialEq, ::prost::Message)]
12028pub struct IonHeapShrinkFtraceEvent {
12029    #[prost(string, optional, tag="1")]
12030    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12031    #[prost(uint64, optional, tag="2")]
12032    pub len: ::core::option::Option<u64>,
12033    #[prost(int64, optional, tag="3")]
12034    pub total_allocated: ::core::option::Option<i64>,
12035}
12036#[derive(Clone, PartialEq, ::prost::Message)]
12037pub struct IonHeapGrowFtraceEvent {
12038    #[prost(string, optional, tag="1")]
12039    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12040    #[prost(uint64, optional, tag="2")]
12041    pub len: ::core::option::Option<u64>,
12042    #[prost(int64, optional, tag="3")]
12043    pub total_allocated: ::core::option::Option<i64>,
12044}
12045#[derive(Clone, PartialEq, ::prost::Message)]
12046pub struct IonBufferCreateFtraceEvent {
12047    #[prost(uint64, optional, tag="1")]
12048    pub addr: ::core::option::Option<u64>,
12049    #[prost(uint64, optional, tag="2")]
12050    pub len: ::core::option::Option<u64>,
12051}
12052#[derive(Clone, PartialEq, ::prost::Message)]
12053pub struct IonBufferDestroyFtraceEvent {
12054    #[prost(uint64, optional, tag="1")]
12055    pub addr: ::core::option::Option<u64>,
12056    #[prost(uint64, optional, tag="2")]
12057    pub len: ::core::option::Option<u64>,
12058}
12059// End of protos/perfetto/trace/ftrace/kmem.proto
12060
12061// Begin of protos/perfetto/trace/ftrace/kvm.proto
12062
12063#[derive(Clone, PartialEq, ::prost::Message)]
12064pub struct KvmAccessFaultFtraceEvent {
12065    #[prost(uint64, optional, tag="1")]
12066    pub ipa: ::core::option::Option<u64>,
12067}
12068#[derive(Clone, PartialEq, ::prost::Message)]
12069pub struct KvmAckIrqFtraceEvent {
12070    #[prost(uint32, optional, tag="1")]
12071    pub irqchip: ::core::option::Option<u32>,
12072    #[prost(uint32, optional, tag="2")]
12073    pub pin: ::core::option::Option<u32>,
12074}
12075#[derive(Clone, PartialEq, ::prost::Message)]
12076pub struct KvmAgeHvaFtraceEvent {
12077    #[prost(uint64, optional, tag="1")]
12078    pub end: ::core::option::Option<u64>,
12079    #[prost(uint64, optional, tag="2")]
12080    pub start: ::core::option::Option<u64>,
12081}
12082#[derive(Clone, PartialEq, ::prost::Message)]
12083pub struct KvmAgePageFtraceEvent {
12084    #[prost(uint64, optional, tag="1")]
12085    pub gfn: ::core::option::Option<u64>,
12086    #[prost(uint64, optional, tag="2")]
12087    pub hva: ::core::option::Option<u64>,
12088    #[prost(uint32, optional, tag="3")]
12089    pub level: ::core::option::Option<u32>,
12090    #[prost(uint32, optional, tag="4")]
12091    pub referenced: ::core::option::Option<u32>,
12092}
12093#[derive(Clone, PartialEq, ::prost::Message)]
12094pub struct KvmArmClearDebugFtraceEvent {
12095    #[prost(uint32, optional, tag="1")]
12096    pub guest_debug: ::core::option::Option<u32>,
12097}
12098#[derive(Clone, PartialEq, ::prost::Message)]
12099pub struct KvmArmSetDreg32FtraceEvent {
12100    #[prost(string, optional, tag="1")]
12101    pub name: ::core::option::Option<::prost::alloc::string::String>,
12102    #[prost(uint32, optional, tag="2")]
12103    pub value: ::core::option::Option<u32>,
12104}
12105#[derive(Clone, PartialEq, ::prost::Message)]
12106pub struct KvmArmSetRegsetFtraceEvent {
12107    #[prost(int32, optional, tag="1")]
12108    pub len: ::core::option::Option<i32>,
12109    #[prost(string, optional, tag="2")]
12110    pub name: ::core::option::Option<::prost::alloc::string::String>,
12111}
12112#[derive(Clone, PartialEq, ::prost::Message)]
12113pub struct KvmArmSetupDebugFtraceEvent {
12114    #[prost(uint32, optional, tag="1")]
12115    pub guest_debug: ::core::option::Option<u32>,
12116    #[prost(uint64, optional, tag="2")]
12117    pub vcpu: ::core::option::Option<u64>,
12118}
12119#[derive(Clone, PartialEq, ::prost::Message)]
12120pub struct KvmEntryFtraceEvent {
12121    #[prost(uint64, optional, tag="1")]
12122    pub vcpu_pc: ::core::option::Option<u64>,
12123}
12124#[derive(Clone, PartialEq, ::prost::Message)]
12125pub struct KvmExitFtraceEvent {
12126    #[prost(uint32, optional, tag="1")]
12127    pub esr_ec: ::core::option::Option<u32>,
12128    #[prost(int32, optional, tag="2")]
12129    pub ret: ::core::option::Option<i32>,
12130    #[prost(uint64, optional, tag="3")]
12131    pub vcpu_pc: ::core::option::Option<u64>,
12132}
12133#[derive(Clone, PartialEq, ::prost::Message)]
12134pub struct KvmFpuFtraceEvent {
12135    #[prost(uint32, optional, tag="1")]
12136    pub load: ::core::option::Option<u32>,
12137}
12138#[derive(Clone, PartialEq, ::prost::Message)]
12139pub struct KvmGetTimerMapFtraceEvent {
12140    #[prost(int32, optional, tag="1")]
12141    pub direct_ptimer: ::core::option::Option<i32>,
12142    #[prost(int32, optional, tag="2")]
12143    pub direct_vtimer: ::core::option::Option<i32>,
12144    #[prost(int32, optional, tag="3")]
12145    pub emul_ptimer: ::core::option::Option<i32>,
12146    #[prost(uint64, optional, tag="4")]
12147    pub vcpu_id: ::core::option::Option<u64>,
12148}
12149#[derive(Clone, PartialEq, ::prost::Message)]
12150pub struct KvmGuestFaultFtraceEvent {
12151    #[prost(uint64, optional, tag="1")]
12152    pub hsr: ::core::option::Option<u64>,
12153    #[prost(uint64, optional, tag="2")]
12154    pub hxfar: ::core::option::Option<u64>,
12155    #[prost(uint64, optional, tag="3")]
12156    pub ipa: ::core::option::Option<u64>,
12157    #[prost(uint64, optional, tag="4")]
12158    pub vcpu_pc: ::core::option::Option<u64>,
12159}
12160#[derive(Clone, PartialEq, ::prost::Message)]
12161pub struct KvmHandleSysRegFtraceEvent {
12162    #[prost(uint64, optional, tag="1")]
12163    pub hsr: ::core::option::Option<u64>,
12164}
12165#[derive(Clone, PartialEq, ::prost::Message)]
12166pub struct KvmHvcArm64FtraceEvent {
12167    #[prost(uint64, optional, tag="1")]
12168    pub imm: ::core::option::Option<u64>,
12169    #[prost(uint64, optional, tag="2")]
12170    pub r0: ::core::option::Option<u64>,
12171    #[prost(uint64, optional, tag="3")]
12172    pub vcpu_pc: ::core::option::Option<u64>,
12173}
12174#[derive(Clone, PartialEq, ::prost::Message)]
12175pub struct KvmIrqLineFtraceEvent {
12176    #[prost(int32, optional, tag="1")]
12177    pub irq_num: ::core::option::Option<i32>,
12178    #[prost(int32, optional, tag="2")]
12179    pub level: ::core::option::Option<i32>,
12180    #[prost(uint32, optional, tag="3")]
12181    pub r#type: ::core::option::Option<u32>,
12182    #[prost(int32, optional, tag="4")]
12183    pub vcpu_idx: ::core::option::Option<i32>,
12184}
12185#[derive(Clone, PartialEq, ::prost::Message)]
12186pub struct KvmMmioFtraceEvent {
12187    #[prost(uint64, optional, tag="1")]
12188    pub gpa: ::core::option::Option<u64>,
12189    #[prost(uint32, optional, tag="2")]
12190    pub len: ::core::option::Option<u32>,
12191    #[prost(uint32, optional, tag="3")]
12192    pub r#type: ::core::option::Option<u32>,
12193    #[prost(uint64, optional, tag="4")]
12194    pub val: ::core::option::Option<u64>,
12195}
12196#[derive(Clone, PartialEq, ::prost::Message)]
12197pub struct KvmMmioEmulateFtraceEvent {
12198    #[prost(uint64, optional, tag="1")]
12199    pub cpsr: ::core::option::Option<u64>,
12200    #[prost(uint64, optional, tag="2")]
12201    pub instr: ::core::option::Option<u64>,
12202    #[prost(uint64, optional, tag="3")]
12203    pub vcpu_pc: ::core::option::Option<u64>,
12204}
12205#[derive(Clone, PartialEq, ::prost::Message)]
12206pub struct KvmSetGuestDebugFtraceEvent {
12207    #[prost(uint32, optional, tag="1")]
12208    pub guest_debug: ::core::option::Option<u32>,
12209    #[prost(uint64, optional, tag="2")]
12210    pub vcpu: ::core::option::Option<u64>,
12211}
12212#[derive(Clone, PartialEq, ::prost::Message)]
12213pub struct KvmSetIrqFtraceEvent {
12214    #[prost(uint32, optional, tag="1")]
12215    pub gsi: ::core::option::Option<u32>,
12216    #[prost(int32, optional, tag="2")]
12217    pub irq_source_id: ::core::option::Option<i32>,
12218    #[prost(int32, optional, tag="3")]
12219    pub level: ::core::option::Option<i32>,
12220}
12221#[derive(Clone, PartialEq, ::prost::Message)]
12222pub struct KvmSetSpteHvaFtraceEvent {
12223    #[prost(uint64, optional, tag="1")]
12224    pub hva: ::core::option::Option<u64>,
12225}
12226#[derive(Clone, PartialEq, ::prost::Message)]
12227pub struct KvmSetWayFlushFtraceEvent {
12228    #[prost(uint32, optional, tag="1")]
12229    pub cache: ::core::option::Option<u32>,
12230    #[prost(uint64, optional, tag="2")]
12231    pub vcpu_pc: ::core::option::Option<u64>,
12232}
12233#[derive(Clone, PartialEq, ::prost::Message)]
12234pub struct KvmSysAccessFtraceEvent {
12235    #[prost(uint32, optional, tag="1")]
12236    pub c_rm: ::core::option::Option<u32>,
12237    #[prost(uint32, optional, tag="2")]
12238    pub c_rn: ::core::option::Option<u32>,
12239    #[prost(uint32, optional, tag="3")]
12240    pub op0: ::core::option::Option<u32>,
12241    #[prost(uint32, optional, tag="4")]
12242    pub op1: ::core::option::Option<u32>,
12243    #[prost(uint32, optional, tag="5")]
12244    pub op2: ::core::option::Option<u32>,
12245    #[prost(uint32, optional, tag="6")]
12246    pub is_write: ::core::option::Option<u32>,
12247    #[prost(string, optional, tag="7")]
12248    pub name: ::core::option::Option<::prost::alloc::string::String>,
12249    #[prost(uint64, optional, tag="8")]
12250    pub vcpu_pc: ::core::option::Option<u64>,
12251}
12252#[derive(Clone, PartialEq, ::prost::Message)]
12253pub struct KvmTestAgeHvaFtraceEvent {
12254    #[prost(uint64, optional, tag="1")]
12255    pub hva: ::core::option::Option<u64>,
12256}
12257#[derive(Clone, PartialEq, ::prost::Message)]
12258pub struct KvmTimerEmulateFtraceEvent {
12259    #[prost(uint32, optional, tag="1")]
12260    pub should_fire: ::core::option::Option<u32>,
12261    #[prost(int32, optional, tag="2")]
12262    pub timer_idx: ::core::option::Option<i32>,
12263}
12264#[derive(Clone, PartialEq, ::prost::Message)]
12265pub struct KvmTimerHrtimerExpireFtraceEvent {
12266    #[prost(int32, optional, tag="1")]
12267    pub timer_idx: ::core::option::Option<i32>,
12268}
12269#[derive(Clone, PartialEq, ::prost::Message)]
12270pub struct KvmTimerRestoreStateFtraceEvent {
12271    #[prost(uint64, optional, tag="1")]
12272    pub ctl: ::core::option::Option<u64>,
12273    #[prost(uint64, optional, tag="2")]
12274    pub cval: ::core::option::Option<u64>,
12275    #[prost(int32, optional, tag="3")]
12276    pub timer_idx: ::core::option::Option<i32>,
12277}
12278#[derive(Clone, PartialEq, ::prost::Message)]
12279pub struct KvmTimerSaveStateFtraceEvent {
12280    #[prost(uint64, optional, tag="1")]
12281    pub ctl: ::core::option::Option<u64>,
12282    #[prost(uint64, optional, tag="2")]
12283    pub cval: ::core::option::Option<u64>,
12284    #[prost(int32, optional, tag="3")]
12285    pub timer_idx: ::core::option::Option<i32>,
12286}
12287#[derive(Clone, PartialEq, ::prost::Message)]
12288pub struct KvmTimerUpdateIrqFtraceEvent {
12289    #[prost(uint32, optional, tag="1")]
12290    pub irq: ::core::option::Option<u32>,
12291    #[prost(int32, optional, tag="2")]
12292    pub level: ::core::option::Option<i32>,
12293    #[prost(uint64, optional, tag="3")]
12294    pub vcpu_id: ::core::option::Option<u64>,
12295}
12296#[derive(Clone, PartialEq, ::prost::Message)]
12297pub struct KvmToggleCacheFtraceEvent {
12298    #[prost(uint32, optional, tag="1")]
12299    pub now: ::core::option::Option<u32>,
12300    #[prost(uint64, optional, tag="2")]
12301    pub vcpu_pc: ::core::option::Option<u64>,
12302    #[prost(uint32, optional, tag="3")]
12303    pub was: ::core::option::Option<u32>,
12304}
12305#[derive(Clone, PartialEq, ::prost::Message)]
12306pub struct KvmUnmapHvaRangeFtraceEvent {
12307    #[prost(uint64, optional, tag="1")]
12308    pub end: ::core::option::Option<u64>,
12309    #[prost(uint64, optional, tag="2")]
12310    pub start: ::core::option::Option<u64>,
12311}
12312#[derive(Clone, PartialEq, ::prost::Message)]
12313pub struct KvmUserspaceExitFtraceEvent {
12314    #[prost(uint32, optional, tag="1")]
12315    pub reason: ::core::option::Option<u32>,
12316}
12317#[derive(Clone, PartialEq, ::prost::Message)]
12318pub struct KvmVcpuWakeupFtraceEvent {
12319    #[prost(uint64, optional, tag="1")]
12320    pub ns: ::core::option::Option<u64>,
12321    #[prost(uint32, optional, tag="2")]
12322    pub valid: ::core::option::Option<u32>,
12323    #[prost(uint32, optional, tag="3")]
12324    pub waited: ::core::option::Option<u32>,
12325}
12326#[derive(Clone, PartialEq, ::prost::Message)]
12327pub struct KvmWfxArm64FtraceEvent {
12328    #[prost(uint32, optional, tag="1")]
12329    pub is_wfe: ::core::option::Option<u32>,
12330    #[prost(uint64, optional, tag="2")]
12331    pub vcpu_pc: ::core::option::Option<u64>,
12332}
12333#[derive(Clone, PartialEq, ::prost::Message)]
12334pub struct TrapRegFtraceEvent {
12335    #[prost(string, optional, tag="1")]
12336    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
12337    #[prost(uint32, optional, tag="2")]
12338    pub is_write: ::core::option::Option<u32>,
12339    #[prost(int32, optional, tag="3")]
12340    pub reg: ::core::option::Option<i32>,
12341    #[prost(uint64, optional, tag="4")]
12342    pub write_value: ::core::option::Option<u64>,
12343}
12344#[derive(Clone, PartialEq, ::prost::Message)]
12345pub struct VgicUpdateIrqPendingFtraceEvent {
12346    #[prost(uint32, optional, tag="1")]
12347    pub irq: ::core::option::Option<u32>,
12348    #[prost(uint32, optional, tag="2")]
12349    pub level: ::core::option::Option<u32>,
12350    #[prost(uint64, optional, tag="3")]
12351    pub vcpu_id: ::core::option::Option<u64>,
12352}
12353// End of protos/perfetto/trace/ftrace/kvm.proto
12354
12355// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
12356
12357#[derive(Clone, PartialEq, ::prost::Message)]
12358pub struct LowmemoryKillFtraceEvent {
12359    #[prost(string, optional, tag="1")]
12360    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12361    #[prost(int32, optional, tag="2")]
12362    pub pid: ::core::option::Option<i32>,
12363    #[prost(int64, optional, tag="3")]
12364    pub pagecache_size: ::core::option::Option<i64>,
12365    #[prost(int64, optional, tag="4")]
12366    pub pagecache_limit: ::core::option::Option<i64>,
12367    #[prost(int64, optional, tag="5")]
12368    pub free: ::core::option::Option<i64>,
12369}
12370// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
12371
12372// Begin of protos/perfetto/trace/ftrace/lwis.proto
12373
12374#[derive(Clone, PartialEq, ::prost::Message)]
12375pub struct LwisTracingMarkWriteFtraceEvent {
12376    #[prost(string, optional, tag="1")]
12377    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
12378    #[prost(uint32, optional, tag="2")]
12379    pub r#type: ::core::option::Option<u32>,
12380    #[prost(int32, optional, tag="3")]
12381    pub pid: ::core::option::Option<i32>,
12382    #[prost(string, optional, tag="4")]
12383    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
12384    #[prost(int64, optional, tag="5")]
12385    pub value: ::core::option::Option<i64>,
12386}
12387// End of protos/perfetto/trace/ftrace/lwis.proto
12388
12389// Begin of protos/perfetto/trace/ftrace/mali.proto
12390
12391#[derive(Clone, PartialEq, ::prost::Message)]
12392pub struct MaliTracingMarkWriteFtraceEvent {
12393    #[prost(string, optional, tag="1")]
12394    pub name: ::core::option::Option<::prost::alloc::string::String>,
12395    #[prost(int32, optional, tag="2")]
12396    pub pid: ::core::option::Option<i32>,
12397    #[prost(uint32, optional, tag="3")]
12398    pub r#type: ::core::option::Option<u32>,
12399    #[prost(int32, optional, tag="4")]
12400    pub value: ::core::option::Option<i32>,
12401}
12402#[derive(Clone, PartialEq, ::prost::Message)]
12403pub struct MaliMaliKcpucqssetFtraceEvent {
12404    #[prost(uint32, optional, tag="1")]
12405    pub id: ::core::option::Option<u32>,
12406    #[prost(uint64, optional, tag="2")]
12407    pub info_val1: ::core::option::Option<u64>,
12408    #[prost(uint64, optional, tag="3")]
12409    pub info_val2: ::core::option::Option<u64>,
12410    #[prost(uint32, optional, tag="4")]
12411    pub kctx_id: ::core::option::Option<u32>,
12412    #[prost(int32, optional, tag="5")]
12413    pub kctx_tgid: ::core::option::Option<i32>,
12414}
12415#[derive(Clone, PartialEq, ::prost::Message)]
12416pub struct MaliMaliKcpucqswaitstartFtraceEvent {
12417    #[prost(uint32, optional, tag="1")]
12418    pub id: ::core::option::Option<u32>,
12419    #[prost(uint64, optional, tag="2")]
12420    pub info_val1: ::core::option::Option<u64>,
12421    #[prost(uint64, optional, tag="3")]
12422    pub info_val2: ::core::option::Option<u64>,
12423    #[prost(uint32, optional, tag="4")]
12424    pub kctx_id: ::core::option::Option<u32>,
12425    #[prost(int32, optional, tag="5")]
12426    pub kctx_tgid: ::core::option::Option<i32>,
12427}
12428#[derive(Clone, PartialEq, ::prost::Message)]
12429pub struct MaliMaliKcpucqswaitendFtraceEvent {
12430    #[prost(uint32, optional, tag="1")]
12431    pub id: ::core::option::Option<u32>,
12432    #[prost(uint64, optional, tag="2")]
12433    pub info_val1: ::core::option::Option<u64>,
12434    #[prost(uint64, optional, tag="3")]
12435    pub info_val2: ::core::option::Option<u64>,
12436    #[prost(uint32, optional, tag="4")]
12437    pub kctx_id: ::core::option::Option<u32>,
12438    #[prost(int32, optional, tag="5")]
12439    pub kctx_tgid: ::core::option::Option<i32>,
12440}
12441#[derive(Clone, PartialEq, ::prost::Message)]
12442pub struct MaliMaliKcpufencesignalFtraceEvent {
12443    #[prost(uint64, optional, tag="1")]
12444    pub info_val1: ::core::option::Option<u64>,
12445    #[prost(uint64, optional, tag="2")]
12446    pub info_val2: ::core::option::Option<u64>,
12447    #[prost(int32, optional, tag="3")]
12448    pub kctx_tgid: ::core::option::Option<i32>,
12449    #[prost(uint32, optional, tag="4")]
12450    pub kctx_id: ::core::option::Option<u32>,
12451    #[prost(uint32, optional, tag="5")]
12452    pub id: ::core::option::Option<u32>,
12453}
12454#[derive(Clone, PartialEq, ::prost::Message)]
12455pub struct MaliMaliKcpufencewaitstartFtraceEvent {
12456    #[prost(uint64, optional, tag="1")]
12457    pub info_val1: ::core::option::Option<u64>,
12458    #[prost(uint64, optional, tag="2")]
12459    pub info_val2: ::core::option::Option<u64>,
12460    #[prost(int32, optional, tag="3")]
12461    pub kctx_tgid: ::core::option::Option<i32>,
12462    #[prost(uint32, optional, tag="4")]
12463    pub kctx_id: ::core::option::Option<u32>,
12464    #[prost(uint32, optional, tag="5")]
12465    pub id: ::core::option::Option<u32>,
12466}
12467#[derive(Clone, PartialEq, ::prost::Message)]
12468pub struct MaliMaliKcpufencewaitendFtraceEvent {
12469    #[prost(uint64, optional, tag="1")]
12470    pub info_val1: ::core::option::Option<u64>,
12471    #[prost(uint64, optional, tag="2")]
12472    pub info_val2: ::core::option::Option<u64>,
12473    #[prost(int32, optional, tag="3")]
12474    pub kctx_tgid: ::core::option::Option<i32>,
12475    #[prost(uint32, optional, tag="4")]
12476    pub kctx_id: ::core::option::Option<u32>,
12477    #[prost(uint32, optional, tag="5")]
12478    pub id: ::core::option::Option<u32>,
12479}
12480#[derive(Clone, PartialEq, ::prost::Message)]
12481pub struct MaliMaliCsfinterruptstartFtraceEvent {
12482    #[prost(int32, optional, tag="1")]
12483    pub kctx_tgid: ::core::option::Option<i32>,
12484    #[prost(uint32, optional, tag="2")]
12485    pub kctx_id: ::core::option::Option<u32>,
12486    #[prost(uint64, optional, tag="3")]
12487    pub info_val: ::core::option::Option<u64>,
12488}
12489#[derive(Clone, PartialEq, ::prost::Message)]
12490pub struct MaliMaliCsfinterruptendFtraceEvent {
12491    #[prost(int32, optional, tag="1")]
12492    pub kctx_tgid: ::core::option::Option<i32>,
12493    #[prost(uint32, optional, tag="2")]
12494    pub kctx_id: ::core::option::Option<u32>,
12495    #[prost(uint64, optional, tag="3")]
12496    pub info_val: ::core::option::Option<u64>,
12497}
12498#[derive(Clone, PartialEq, ::prost::Message)]
12499pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
12500    #[prost(int32, optional, tag="1")]
12501    pub kctx_tgid: ::core::option::Option<i32>,
12502    #[prost(uint32, optional, tag="2")]
12503    pub kctx_id: ::core::option::Option<u32>,
12504    #[prost(uint64, optional, tag="3")]
12505    pub info_val: ::core::option::Option<u64>,
12506}
12507#[derive(Clone, PartialEq, ::prost::Message)]
12508pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
12509    #[prost(int32, optional, tag="1")]
12510    pub kctx_tgid: ::core::option::Option<i32>,
12511    #[prost(uint32, optional, tag="2")]
12512    pub kctx_id: ::core::option::Option<u32>,
12513    #[prost(uint64, optional, tag="3")]
12514    pub info_val: ::core::option::Option<u64>,
12515}
12516#[derive(Clone, PartialEq, ::prost::Message)]
12517pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
12518    #[prost(int32, optional, tag="1")]
12519    pub kctx_tgid: ::core::option::Option<i32>,
12520    #[prost(uint32, optional, tag="2")]
12521    pub kctx_id: ::core::option::Option<u32>,
12522    #[prost(uint64, optional, tag="3")]
12523    pub info_val: ::core::option::Option<u64>,
12524}
12525#[derive(Clone, PartialEq, ::prost::Message)]
12526pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
12527    #[prost(int32, optional, tag="1")]
12528    pub kctx_tgid: ::core::option::Option<i32>,
12529    #[prost(uint32, optional, tag="2")]
12530    pub kctx_id: ::core::option::Option<u32>,
12531    #[prost(uint64, optional, tag="3")]
12532    pub info_val: ::core::option::Option<u64>,
12533}
12534#[derive(Clone, PartialEq, ::prost::Message)]
12535pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
12536    #[prost(int32, optional, tag="1")]
12537    pub kctx_tgid: ::core::option::Option<i32>,
12538    #[prost(uint32, optional, tag="2")]
12539    pub kctx_id: ::core::option::Option<u32>,
12540    #[prost(uint64, optional, tag="3")]
12541    pub info_val: ::core::option::Option<u64>,
12542}
12543#[derive(Clone, PartialEq, ::prost::Message)]
12544pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
12545    #[prost(int32, optional, tag="1")]
12546    pub kctx_tgid: ::core::option::Option<i32>,
12547    #[prost(uint32, optional, tag="2")]
12548    pub kctx_id: ::core::option::Option<u32>,
12549    #[prost(uint64, optional, tag="3")]
12550    pub info_val: ::core::option::Option<u64>,
12551}
12552#[derive(Clone, PartialEq, ::prost::Message)]
12553pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
12554    #[prost(int32, optional, tag="1")]
12555    pub kctx_tgid: ::core::option::Option<i32>,
12556    #[prost(uint32, optional, tag="2")]
12557    pub kctx_id: ::core::option::Option<u32>,
12558    #[prost(uint64, optional, tag="3")]
12559    pub info_val: ::core::option::Option<u64>,
12560}
12561#[derive(Clone, PartialEq, ::prost::Message)]
12562pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
12563    #[prost(int32, optional, tag="1")]
12564    pub kctx_tgid: ::core::option::Option<i32>,
12565    #[prost(uint32, optional, tag="2")]
12566    pub kctx_id: ::core::option::Option<u32>,
12567    #[prost(uint64, optional, tag="3")]
12568    pub info_val: ::core::option::Option<u64>,
12569}
12570#[derive(Clone, PartialEq, ::prost::Message)]
12571pub struct MaliMaliPmmcuinsleepFtraceEvent {
12572    #[prost(int32, optional, tag="1")]
12573    pub kctx_tgid: ::core::option::Option<i32>,
12574    #[prost(uint32, optional, tag="2")]
12575    pub kctx_id: ::core::option::Option<u32>,
12576    #[prost(uint64, optional, tag="3")]
12577    pub info_val: ::core::option::Option<u64>,
12578}
12579#[derive(Clone, PartialEq, ::prost::Message)]
12580pub struct MaliMaliPmmcuoffFtraceEvent {
12581    #[prost(int32, optional, tag="1")]
12582    pub kctx_tgid: ::core::option::Option<i32>,
12583    #[prost(uint32, optional, tag="2")]
12584    pub kctx_id: ::core::option::Option<u32>,
12585    #[prost(uint64, optional, tag="3")]
12586    pub info_val: ::core::option::Option<u64>,
12587}
12588#[derive(Clone, PartialEq, ::prost::Message)]
12589pub struct MaliMaliPmmcuonFtraceEvent {
12590    #[prost(int32, optional, tag="1")]
12591    pub kctx_tgid: ::core::option::Option<i32>,
12592    #[prost(uint32, optional, tag="2")]
12593    pub kctx_id: ::core::option::Option<u32>,
12594    #[prost(uint64, optional, tag="3")]
12595    pub info_val: ::core::option::Option<u64>,
12596}
12597#[derive(Clone, PartialEq, ::prost::Message)]
12598pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
12599    #[prost(int32, optional, tag="1")]
12600    pub kctx_tgid: ::core::option::Option<i32>,
12601    #[prost(uint32, optional, tag="2")]
12602    pub kctx_id: ::core::option::Option<u32>,
12603    #[prost(uint64, optional, tag="3")]
12604    pub info_val: ::core::option::Option<u64>,
12605}
12606#[derive(Clone, PartialEq, ::prost::Message)]
12607pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
12608    #[prost(int32, optional, tag="1")]
12609    pub kctx_tgid: ::core::option::Option<i32>,
12610    #[prost(uint32, optional, tag="2")]
12611    pub kctx_id: ::core::option::Option<u32>,
12612    #[prost(uint64, optional, tag="3")]
12613    pub info_val: ::core::option::Option<u64>,
12614}
12615#[derive(Clone, PartialEq, ::prost::Message)]
12616pub struct MaliMaliPmmcuonhaltFtraceEvent {
12617    #[prost(int32, optional, tag="1")]
12618    pub kctx_tgid: ::core::option::Option<i32>,
12619    #[prost(uint32, optional, tag="2")]
12620    pub kctx_id: ::core::option::Option<u32>,
12621    #[prost(uint64, optional, tag="3")]
12622    pub info_val: ::core::option::Option<u64>,
12623}
12624#[derive(Clone, PartialEq, ::prost::Message)]
12625pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
12626    #[prost(int32, optional, tag="1")]
12627    pub kctx_tgid: ::core::option::Option<i32>,
12628    #[prost(uint32, optional, tag="2")]
12629    pub kctx_id: ::core::option::Option<u32>,
12630    #[prost(uint64, optional, tag="3")]
12631    pub info_val: ::core::option::Option<u64>,
12632}
12633#[derive(Clone, PartialEq, ::prost::Message)]
12634pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
12635    #[prost(int32, optional, tag="1")]
12636    pub kctx_tgid: ::core::option::Option<i32>,
12637    #[prost(uint32, optional, tag="2")]
12638    pub kctx_id: ::core::option::Option<u32>,
12639    #[prost(uint64, optional, tag="3")]
12640    pub info_val: ::core::option::Option<u64>,
12641}
12642#[derive(Clone, PartialEq, ::prost::Message)]
12643pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
12644    #[prost(int32, optional, tag="1")]
12645    pub kctx_tgid: ::core::option::Option<i32>,
12646    #[prost(uint32, optional, tag="2")]
12647    pub kctx_id: ::core::option::Option<u32>,
12648    #[prost(uint64, optional, tag="3")]
12649    pub info_val: ::core::option::Option<u64>,
12650}
12651#[derive(Clone, PartialEq, ::prost::Message)]
12652pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
12653    #[prost(int32, optional, tag="1")]
12654    pub kctx_tgid: ::core::option::Option<i32>,
12655    #[prost(uint32, optional, tag="2")]
12656    pub kctx_id: ::core::option::Option<u32>,
12657    #[prost(uint64, optional, tag="3")]
12658    pub info_val: ::core::option::Option<u64>,
12659}
12660#[derive(Clone, PartialEq, ::prost::Message)]
12661pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
12662    #[prost(int32, optional, tag="1")]
12663    pub kctx_tgid: ::core::option::Option<i32>,
12664    #[prost(uint32, optional, tag="2")]
12665    pub kctx_id: ::core::option::Option<u32>,
12666    #[prost(uint64, optional, tag="3")]
12667    pub info_val: ::core::option::Option<u64>,
12668}
12669#[derive(Clone, PartialEq, ::prost::Message)]
12670pub struct MaliMaliPmmcupendoffFtraceEvent {
12671    #[prost(int32, optional, tag="1")]
12672    pub kctx_tgid: ::core::option::Option<i32>,
12673    #[prost(uint32, optional, tag="2")]
12674    pub kctx_id: ::core::option::Option<u32>,
12675    #[prost(uint64, optional, tag="3")]
12676    pub info_val: ::core::option::Option<u64>,
12677}
12678#[derive(Clone, PartialEq, ::prost::Message)]
12679pub struct MaliMaliPmmcupendonreloadFtraceEvent {
12680    #[prost(int32, optional, tag="1")]
12681    pub kctx_tgid: ::core::option::Option<i32>,
12682    #[prost(uint32, optional, tag="2")]
12683    pub kctx_id: ::core::option::Option<u32>,
12684    #[prost(uint64, optional, tag="3")]
12685    pub info_val: ::core::option::Option<u64>,
12686}
12687#[derive(Clone, PartialEq, ::prost::Message)]
12688pub struct MaliMaliPmmcupowerdownFtraceEvent {
12689    #[prost(int32, optional, tag="1")]
12690    pub kctx_tgid: ::core::option::Option<i32>,
12691    #[prost(uint32, optional, tag="2")]
12692    pub kctx_id: ::core::option::Option<u32>,
12693    #[prost(uint64, optional, tag="3")]
12694    pub info_val: ::core::option::Option<u64>,
12695}
12696#[derive(Clone, PartialEq, ::prost::Message)]
12697pub struct MaliMaliPmmcuresetwaitFtraceEvent {
12698    #[prost(int32, optional, tag="1")]
12699    pub kctx_tgid: ::core::option::Option<i32>,
12700    #[prost(uint32, optional, tag="2")]
12701    pub kctx_id: ::core::option::Option<u32>,
12702    #[prost(uint64, optional, tag="3")]
12703    pub info_val: ::core::option::Option<u64>,
12704}
12705#[derive(Clone, PartialEq, ::prost::Message)]
12706pub struct MaliGpuPowerStateFtraceEvent {
12707    #[prost(uint64, optional, tag="1")]
12708    pub change_ns: ::core::option::Option<u64>,
12709    #[prost(int32, optional, tag="2")]
12710    pub from_state: ::core::option::Option<i32>,
12711    #[prost(int32, optional, tag="3")]
12712    pub to_state: ::core::option::Option<i32>,
12713}
12714// End of protos/perfetto/trace/ftrace/mali.proto
12715
12716// Begin of protos/perfetto/trace/ftrace/mdss.proto
12717
12718#[derive(Clone, PartialEq, ::prost::Message)]
12719pub struct MdpCmdKickoffFtraceEvent {
12720    #[prost(uint32, optional, tag="1")]
12721    pub ctl_num: ::core::option::Option<u32>,
12722    #[prost(int32, optional, tag="2")]
12723    pub kickoff_cnt: ::core::option::Option<i32>,
12724}
12725#[derive(Clone, PartialEq, ::prost::Message)]
12726pub struct MdpCommitFtraceEvent {
12727    #[prost(uint32, optional, tag="1")]
12728    pub num: ::core::option::Option<u32>,
12729    #[prost(uint32, optional, tag="2")]
12730    pub play_cnt: ::core::option::Option<u32>,
12731    #[prost(uint32, optional, tag="3")]
12732    pub clk_rate: ::core::option::Option<u32>,
12733    #[prost(uint64, optional, tag="4")]
12734    pub bandwidth: ::core::option::Option<u64>,
12735}
12736#[derive(Clone, PartialEq, ::prost::Message)]
12737pub struct MdpPerfSetOtFtraceEvent {
12738    #[prost(uint32, optional, tag="1")]
12739    pub pnum: ::core::option::Option<u32>,
12740    #[prost(uint32, optional, tag="2")]
12741    pub xin_id: ::core::option::Option<u32>,
12742    #[prost(uint32, optional, tag="3")]
12743    pub rd_lim: ::core::option::Option<u32>,
12744    #[prost(uint32, optional, tag="4")]
12745    pub is_vbif_rt: ::core::option::Option<u32>,
12746}
12747#[derive(Clone, PartialEq, ::prost::Message)]
12748pub struct MdpSsppChangeFtraceEvent {
12749    #[prost(uint32, optional, tag="1")]
12750    pub num: ::core::option::Option<u32>,
12751    #[prost(uint32, optional, tag="2")]
12752    pub play_cnt: ::core::option::Option<u32>,
12753    #[prost(uint32, optional, tag="3")]
12754    pub mixer: ::core::option::Option<u32>,
12755    #[prost(uint32, optional, tag="4")]
12756    pub stage: ::core::option::Option<u32>,
12757    #[prost(uint32, optional, tag="5")]
12758    pub flags: ::core::option::Option<u32>,
12759    #[prost(uint32, optional, tag="6")]
12760    pub format: ::core::option::Option<u32>,
12761    #[prost(uint32, optional, tag="7")]
12762    pub img_w: ::core::option::Option<u32>,
12763    #[prost(uint32, optional, tag="8")]
12764    pub img_h: ::core::option::Option<u32>,
12765    #[prost(uint32, optional, tag="9")]
12766    pub src_x: ::core::option::Option<u32>,
12767    #[prost(uint32, optional, tag="10")]
12768    pub src_y: ::core::option::Option<u32>,
12769    #[prost(uint32, optional, tag="11")]
12770    pub src_w: ::core::option::Option<u32>,
12771    #[prost(uint32, optional, tag="12")]
12772    pub src_h: ::core::option::Option<u32>,
12773    #[prost(uint32, optional, tag="13")]
12774    pub dst_x: ::core::option::Option<u32>,
12775    #[prost(uint32, optional, tag="14")]
12776    pub dst_y: ::core::option::Option<u32>,
12777    #[prost(uint32, optional, tag="15")]
12778    pub dst_w: ::core::option::Option<u32>,
12779    #[prost(uint32, optional, tag="16")]
12780    pub dst_h: ::core::option::Option<u32>,
12781}
12782#[derive(Clone, PartialEq, ::prost::Message)]
12783pub struct TracingMarkWriteFtraceEvent {
12784    #[prost(int32, optional, tag="1")]
12785    pub pid: ::core::option::Option<i32>,
12786    #[prost(string, optional, tag="2")]
12787    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
12788    #[prost(uint32, optional, tag="3")]
12789    pub trace_begin: ::core::option::Option<u32>,
12790}
12791#[derive(Clone, PartialEq, ::prost::Message)]
12792pub struct MdpCmdPingpongDoneFtraceEvent {
12793    #[prost(uint32, optional, tag="1")]
12794    pub ctl_num: ::core::option::Option<u32>,
12795    #[prost(uint32, optional, tag="2")]
12796    pub intf_num: ::core::option::Option<u32>,
12797    #[prost(uint32, optional, tag="3")]
12798    pub pp_num: ::core::option::Option<u32>,
12799    #[prost(int32, optional, tag="4")]
12800    pub koff_cnt: ::core::option::Option<i32>,
12801}
12802#[derive(Clone, PartialEq, ::prost::Message)]
12803pub struct MdpCompareBwFtraceEvent {
12804    #[prost(uint64, optional, tag="1")]
12805    pub new_ab: ::core::option::Option<u64>,
12806    #[prost(uint64, optional, tag="2")]
12807    pub new_ib: ::core::option::Option<u64>,
12808    #[prost(uint64, optional, tag="3")]
12809    pub new_wb: ::core::option::Option<u64>,
12810    #[prost(uint64, optional, tag="4")]
12811    pub old_ab: ::core::option::Option<u64>,
12812    #[prost(uint64, optional, tag="5")]
12813    pub old_ib: ::core::option::Option<u64>,
12814    #[prost(uint64, optional, tag="6")]
12815    pub old_wb: ::core::option::Option<u64>,
12816    #[prost(uint32, optional, tag="7")]
12817    pub params_changed: ::core::option::Option<u32>,
12818    #[prost(uint32, optional, tag="8")]
12819    pub update_bw: ::core::option::Option<u32>,
12820}
12821#[derive(Clone, PartialEq, ::prost::Message)]
12822pub struct MdpPerfSetPanicLutsFtraceEvent {
12823    #[prost(uint32, optional, tag="1")]
12824    pub pnum: ::core::option::Option<u32>,
12825    #[prost(uint32, optional, tag="2")]
12826    pub fmt: ::core::option::Option<u32>,
12827    #[prost(uint32, optional, tag="3")]
12828    pub mode: ::core::option::Option<u32>,
12829    #[prost(uint32, optional, tag="4")]
12830    pub panic_lut: ::core::option::Option<u32>,
12831    #[prost(uint32, optional, tag="5")]
12832    pub robust_lut: ::core::option::Option<u32>,
12833}
12834#[derive(Clone, PartialEq, ::prost::Message)]
12835pub struct MdpSsppSetFtraceEvent {
12836    #[prost(uint32, optional, tag="1")]
12837    pub num: ::core::option::Option<u32>,
12838    #[prost(uint32, optional, tag="2")]
12839    pub play_cnt: ::core::option::Option<u32>,
12840    #[prost(uint32, optional, tag="3")]
12841    pub mixer: ::core::option::Option<u32>,
12842    #[prost(uint32, optional, tag="4")]
12843    pub stage: ::core::option::Option<u32>,
12844    #[prost(uint32, optional, tag="5")]
12845    pub flags: ::core::option::Option<u32>,
12846    #[prost(uint32, optional, tag="6")]
12847    pub format: ::core::option::Option<u32>,
12848    #[prost(uint32, optional, tag="7")]
12849    pub img_w: ::core::option::Option<u32>,
12850    #[prost(uint32, optional, tag="8")]
12851    pub img_h: ::core::option::Option<u32>,
12852    #[prost(uint32, optional, tag="9")]
12853    pub src_x: ::core::option::Option<u32>,
12854    #[prost(uint32, optional, tag="10")]
12855    pub src_y: ::core::option::Option<u32>,
12856    #[prost(uint32, optional, tag="11")]
12857    pub src_w: ::core::option::Option<u32>,
12858    #[prost(uint32, optional, tag="12")]
12859    pub src_h: ::core::option::Option<u32>,
12860    #[prost(uint32, optional, tag="13")]
12861    pub dst_x: ::core::option::Option<u32>,
12862    #[prost(uint32, optional, tag="14")]
12863    pub dst_y: ::core::option::Option<u32>,
12864    #[prost(uint32, optional, tag="15")]
12865    pub dst_w: ::core::option::Option<u32>,
12866    #[prost(uint32, optional, tag="16")]
12867    pub dst_h: ::core::option::Option<u32>,
12868}
12869#[derive(Clone, PartialEq, ::prost::Message)]
12870pub struct MdpCmdReadptrDoneFtraceEvent {
12871    #[prost(uint32, optional, tag="1")]
12872    pub ctl_num: ::core::option::Option<u32>,
12873    #[prost(int32, optional, tag="2")]
12874    pub koff_cnt: ::core::option::Option<i32>,
12875}
12876#[derive(Clone, PartialEq, ::prost::Message)]
12877pub struct MdpMisrCrcFtraceEvent {
12878    #[prost(uint32, optional, tag="1")]
12879    pub block_id: ::core::option::Option<u32>,
12880    #[prost(uint32, optional, tag="2")]
12881    pub vsync_cnt: ::core::option::Option<u32>,
12882    #[prost(uint32, optional, tag="3")]
12883    pub crc: ::core::option::Option<u32>,
12884}
12885#[derive(Clone, PartialEq, ::prost::Message)]
12886pub struct MdpPerfSetQosLutsFtraceEvent {
12887    #[prost(uint32, optional, tag="1")]
12888    pub pnum: ::core::option::Option<u32>,
12889    #[prost(uint32, optional, tag="2")]
12890    pub fmt: ::core::option::Option<u32>,
12891    #[prost(uint32, optional, tag="3")]
12892    pub intf: ::core::option::Option<u32>,
12893    #[prost(uint32, optional, tag="4")]
12894    pub rot: ::core::option::Option<u32>,
12895    #[prost(uint32, optional, tag="5")]
12896    pub fl: ::core::option::Option<u32>,
12897    #[prost(uint32, optional, tag="6")]
12898    pub lut: ::core::option::Option<u32>,
12899    #[prost(uint32, optional, tag="7")]
12900    pub linear: ::core::option::Option<u32>,
12901}
12902#[derive(Clone, PartialEq, ::prost::Message)]
12903pub struct MdpTraceCounterFtraceEvent {
12904    #[prost(int32, optional, tag="1")]
12905    pub pid: ::core::option::Option<i32>,
12906    #[prost(string, optional, tag="2")]
12907    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
12908    #[prost(int32, optional, tag="3")]
12909    pub value: ::core::option::Option<i32>,
12910}
12911#[derive(Clone, PartialEq, ::prost::Message)]
12912pub struct MdpCmdReleaseBwFtraceEvent {
12913    #[prost(uint32, optional, tag="1")]
12914    pub ctl_num: ::core::option::Option<u32>,
12915}
12916#[derive(Clone, PartialEq, ::prost::Message)]
12917pub struct MdpMixerUpdateFtraceEvent {
12918    #[prost(uint32, optional, tag="1")]
12919    pub mixer_num: ::core::option::Option<u32>,
12920}
12921#[derive(Clone, PartialEq, ::prost::Message)]
12922pub struct MdpPerfSetWmLevelsFtraceEvent {
12923    #[prost(uint32, optional, tag="1")]
12924    pub pnum: ::core::option::Option<u32>,
12925    #[prost(uint32, optional, tag="2")]
12926    pub use_space: ::core::option::Option<u32>,
12927    #[prost(uint32, optional, tag="3")]
12928    pub priority_bytes: ::core::option::Option<u32>,
12929    #[prost(uint32, optional, tag="4")]
12930    pub wm0: ::core::option::Option<u32>,
12931    #[prost(uint32, optional, tag="5")]
12932    pub wm1: ::core::option::Option<u32>,
12933    #[prost(uint32, optional, tag="6")]
12934    pub wm2: ::core::option::Option<u32>,
12935    #[prost(uint32, optional, tag="7")]
12936    pub mb_cnt: ::core::option::Option<u32>,
12937    #[prost(uint32, optional, tag="8")]
12938    pub mb_size: ::core::option::Option<u32>,
12939}
12940#[derive(Clone, PartialEq, ::prost::Message)]
12941pub struct MdpVideoUnderrunDoneFtraceEvent {
12942    #[prost(uint32, optional, tag="1")]
12943    pub ctl_num: ::core::option::Option<u32>,
12944    #[prost(uint32, optional, tag="2")]
12945    pub underrun_cnt: ::core::option::Option<u32>,
12946}
12947#[derive(Clone, PartialEq, ::prost::Message)]
12948pub struct MdpCmdWaitPingpongFtraceEvent {
12949    #[prost(uint32, optional, tag="1")]
12950    pub ctl_num: ::core::option::Option<u32>,
12951    #[prost(int32, optional, tag="2")]
12952    pub kickoff_cnt: ::core::option::Option<i32>,
12953}
12954#[derive(Clone, PartialEq, ::prost::Message)]
12955pub struct MdpPerfPrefillCalcFtraceEvent {
12956    #[prost(uint32, optional, tag="1")]
12957    pub pnum: ::core::option::Option<u32>,
12958    #[prost(uint32, optional, tag="2")]
12959    pub latency_buf: ::core::option::Option<u32>,
12960    #[prost(uint32, optional, tag="3")]
12961    pub ot: ::core::option::Option<u32>,
12962    #[prost(uint32, optional, tag="4")]
12963    pub y_buf: ::core::option::Option<u32>,
12964    #[prost(uint32, optional, tag="5")]
12965    pub y_scaler: ::core::option::Option<u32>,
12966    #[prost(uint32, optional, tag="6")]
12967    pub pp_lines: ::core::option::Option<u32>,
12968    #[prost(uint32, optional, tag="7")]
12969    pub pp_bytes: ::core::option::Option<u32>,
12970    #[prost(uint32, optional, tag="8")]
12971    pub post_sc: ::core::option::Option<u32>,
12972    #[prost(uint32, optional, tag="9")]
12973    pub fbc_bytes: ::core::option::Option<u32>,
12974    #[prost(uint32, optional, tag="10")]
12975    pub prefill_bytes: ::core::option::Option<u32>,
12976}
12977#[derive(Clone, PartialEq, ::prost::Message)]
12978pub struct MdpPerfUpdateBusFtraceEvent {
12979    #[prost(int32, optional, tag="1")]
12980    pub client: ::core::option::Option<i32>,
12981    #[prost(uint64, optional, tag="2")]
12982    pub ab_quota: ::core::option::Option<u64>,
12983    #[prost(uint64, optional, tag="3")]
12984    pub ib_quota: ::core::option::Option<u64>,
12985}
12986#[derive(Clone, PartialEq, ::prost::Message)]
12987pub struct RotatorBwAoAsContextFtraceEvent {
12988    #[prost(uint32, optional, tag="1")]
12989    pub state: ::core::option::Option<u32>,
12990}
12991// End of protos/perfetto/trace/ftrace/mdss.proto
12992
12993// Begin of protos/perfetto/trace/ftrace/mm_event.proto
12994
12995#[derive(Clone, PartialEq, ::prost::Message)]
12996pub struct MmEventRecordFtraceEvent {
12997    #[prost(uint32, optional, tag="1")]
12998    pub avg_lat: ::core::option::Option<u32>,
12999    #[prost(uint32, optional, tag="2")]
13000    pub count: ::core::option::Option<u32>,
13001    #[prost(uint32, optional, tag="3")]
13002    pub max_lat: ::core::option::Option<u32>,
13003    #[prost(uint32, optional, tag="4")]
13004    pub r#type: ::core::option::Option<u32>,
13005}
13006// End of protos/perfetto/trace/ftrace/mm_event.proto
13007
13008// Begin of protos/perfetto/trace/ftrace/net.proto
13009
13010#[derive(Clone, PartialEq, ::prost::Message)]
13011pub struct NetifReceiveSkbFtraceEvent {
13012    #[prost(uint32, optional, tag="1")]
13013    pub len: ::core::option::Option<u32>,
13014    #[prost(string, optional, tag="2")]
13015    pub name: ::core::option::Option<::prost::alloc::string::String>,
13016    #[prost(uint64, optional, tag="3")]
13017    pub skbaddr: ::core::option::Option<u64>,
13018}
13019#[derive(Clone, PartialEq, ::prost::Message)]
13020pub struct NetDevXmitFtraceEvent {
13021    #[prost(uint32, optional, tag="1")]
13022    pub len: ::core::option::Option<u32>,
13023    #[prost(string, optional, tag="2")]
13024    pub name: ::core::option::Option<::prost::alloc::string::String>,
13025    #[prost(int32, optional, tag="3")]
13026    pub rc: ::core::option::Option<i32>,
13027    #[prost(uint64, optional, tag="4")]
13028    pub skbaddr: ::core::option::Option<u64>,
13029}
13030#[derive(Clone, PartialEq, ::prost::Message)]
13031pub struct NapiGroReceiveEntryFtraceEvent {
13032    #[prost(uint32, optional, tag="1")]
13033    pub data_len: ::core::option::Option<u32>,
13034    #[prost(uint32, optional, tag="2")]
13035    pub gso_size: ::core::option::Option<u32>,
13036    #[prost(uint32, optional, tag="3")]
13037    pub gso_type: ::core::option::Option<u32>,
13038    #[prost(uint32, optional, tag="4")]
13039    pub hash: ::core::option::Option<u32>,
13040    #[prost(uint32, optional, tag="5")]
13041    pub ip_summed: ::core::option::Option<u32>,
13042    #[prost(uint32, optional, tag="6")]
13043    pub l4_hash: ::core::option::Option<u32>,
13044    #[prost(uint32, optional, tag="7")]
13045    pub len: ::core::option::Option<u32>,
13046    #[prost(int32, optional, tag="8")]
13047    pub mac_header: ::core::option::Option<i32>,
13048    #[prost(uint32, optional, tag="9")]
13049    pub mac_header_valid: ::core::option::Option<u32>,
13050    #[prost(string, optional, tag="10")]
13051    pub name: ::core::option::Option<::prost::alloc::string::String>,
13052    #[prost(uint32, optional, tag="11")]
13053    pub napi_id: ::core::option::Option<u32>,
13054    #[prost(uint32, optional, tag="12")]
13055    pub nr_frags: ::core::option::Option<u32>,
13056    #[prost(uint32, optional, tag="13")]
13057    pub protocol: ::core::option::Option<u32>,
13058    #[prost(uint32, optional, tag="14")]
13059    pub queue_mapping: ::core::option::Option<u32>,
13060    #[prost(uint64, optional, tag="15")]
13061    pub skbaddr: ::core::option::Option<u64>,
13062    #[prost(uint32, optional, tag="16")]
13063    pub truesize: ::core::option::Option<u32>,
13064    #[prost(uint32, optional, tag="17")]
13065    pub vlan_proto: ::core::option::Option<u32>,
13066    #[prost(uint32, optional, tag="18")]
13067    pub vlan_tagged: ::core::option::Option<u32>,
13068    #[prost(uint32, optional, tag="19")]
13069    pub vlan_tci: ::core::option::Option<u32>,
13070}
13071#[derive(Clone, PartialEq, ::prost::Message)]
13072pub struct NapiGroReceiveExitFtraceEvent {
13073    #[prost(int32, optional, tag="1")]
13074    pub ret: ::core::option::Option<i32>,
13075}
13076// End of protos/perfetto/trace/ftrace/net.proto
13077
13078// Begin of protos/perfetto/trace/ftrace/oom.proto
13079
13080#[derive(Clone, PartialEq, ::prost::Message)]
13081pub struct OomScoreAdjUpdateFtraceEvent {
13082    #[prost(string, optional, tag="1")]
13083    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13084    #[prost(int32, optional, tag="2")]
13085    pub oom_score_adj: ::core::option::Option<i32>,
13086    #[prost(int32, optional, tag="3")]
13087    pub pid: ::core::option::Option<i32>,
13088}
13089#[derive(Clone, PartialEq, ::prost::Message)]
13090pub struct MarkVictimFtraceEvent {
13091    #[prost(int32, optional, tag="1")]
13092    pub pid: ::core::option::Option<i32>,
13093}
13094// End of protos/perfetto/trace/ftrace/oom.proto
13095
13096// Begin of protos/perfetto/trace/ftrace/panel.proto
13097
13098#[derive(Clone, PartialEq, ::prost::Message)]
13099pub struct DsiCmdFifoStatusFtraceEvent {
13100    #[prost(uint32, optional, tag="1")]
13101    pub header: ::core::option::Option<u32>,
13102    #[prost(uint32, optional, tag="2")]
13103    pub payload: ::core::option::Option<u32>,
13104}
13105#[derive(Clone, PartialEq, ::prost::Message)]
13106pub struct DsiRxFtraceEvent {
13107    #[prost(uint32, optional, tag="1")]
13108    pub cmd: ::core::option::Option<u32>,
13109    #[prost(uint32, optional, tag="2")]
13110    pub rx_buf: ::core::option::Option<u32>,
13111}
13112#[derive(Clone, PartialEq, ::prost::Message)]
13113pub struct DsiTxFtraceEvent {
13114    #[prost(uint32, optional, tag="1")]
13115    pub last: ::core::option::Option<u32>,
13116    #[prost(uint32, optional, tag="2")]
13117    pub tx_buf: ::core::option::Option<u32>,
13118    #[prost(uint32, optional, tag="3")]
13119    pub r#type: ::core::option::Option<u32>,
13120}
13121#[derive(Clone, PartialEq, ::prost::Message)]
13122pub struct PanelWriteGenericFtraceEvent {
13123    #[prost(int32, optional, tag="1")]
13124    pub pid: ::core::option::Option<i32>,
13125    #[prost(string, optional, tag="2")]
13126    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13127    #[prost(uint32, optional, tag="3")]
13128    pub trace_begin: ::core::option::Option<u32>,
13129    #[prost(string, optional, tag="4")]
13130    pub name: ::core::option::Option<::prost::alloc::string::String>,
13131    #[prost(uint32, optional, tag="5")]
13132    pub r#type: ::core::option::Option<u32>,
13133    #[prost(int32, optional, tag="6")]
13134    pub value: ::core::option::Option<i32>,
13135}
13136// End of protos/perfetto/trace/ftrace/panel.proto
13137
13138// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
13139
13140#[derive(Clone, PartialEq, ::prost::Message)]
13141pub struct SchedSwitchWithCtrsFtraceEvent {
13142    #[prost(int32, optional, tag="1")]
13143    pub old_pid: ::core::option::Option<i32>,
13144    #[prost(int32, optional, tag="2")]
13145    pub new_pid: ::core::option::Option<i32>,
13146    #[prost(uint64, optional, tag="3")]
13147    pub cctr: ::core::option::Option<u64>,
13148    #[prost(uint64, optional, tag="4")]
13149    pub ctr0: ::core::option::Option<u64>,
13150    #[prost(uint64, optional, tag="5")]
13151    pub ctr1: ::core::option::Option<u64>,
13152    #[prost(uint64, optional, tag="6")]
13153    pub ctr2: ::core::option::Option<u64>,
13154    #[prost(uint64, optional, tag="7")]
13155    pub ctr3: ::core::option::Option<u64>,
13156    #[prost(uint32, optional, tag="8")]
13157    pub lctr0: ::core::option::Option<u32>,
13158    #[prost(uint32, optional, tag="9")]
13159    pub lctr1: ::core::option::Option<u32>,
13160    #[prost(uint64, optional, tag="10")]
13161    pub ctr4: ::core::option::Option<u64>,
13162    #[prost(uint64, optional, tag="11")]
13163    pub ctr5: ::core::option::Option<u64>,
13164    #[prost(string, optional, tag="12")]
13165    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
13166    #[prost(int32, optional, tag="13")]
13167    pub prev_pid: ::core::option::Option<i32>,
13168    #[prost(uint32, optional, tag="14")]
13169    pub cyc: ::core::option::Option<u32>,
13170    #[prost(uint32, optional, tag="15")]
13171    pub inst: ::core::option::Option<u32>,
13172    #[prost(uint32, optional, tag="16")]
13173    pub stallbm: ::core::option::Option<u32>,
13174    #[prost(uint32, optional, tag="17")]
13175    pub l3dm: ::core::option::Option<u32>,
13176    #[prost(int32, optional, tag="18")]
13177    pub next_pid: ::core::option::Option<i32>,
13178    #[prost(string, optional, tag="19")]
13179    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
13180    #[prost(int64, optional, tag="20")]
13181    pub prev_state: ::core::option::Option<i64>,
13182    #[prost(uint64, optional, tag="21")]
13183    pub amu0: ::core::option::Option<u64>,
13184    #[prost(uint64, optional, tag="22")]
13185    pub amu1: ::core::option::Option<u64>,
13186    #[prost(uint64, optional, tag="23")]
13187    pub amu2: ::core::option::Option<u64>,
13188}
13189// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
13190
13191// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
13192
13193#[derive(Clone, PartialEq, ::prost::Message)]
13194pub struct PixelMmKswapdWakeFtraceEvent {
13195    #[prost(int32, optional, tag="1")]
13196    pub whatever: ::core::option::Option<i32>,
13197}
13198#[derive(Clone, PartialEq, ::prost::Message)]
13199pub struct PixelMmKswapdDoneFtraceEvent {
13200    #[prost(uint64, optional, tag="1")]
13201    pub delta_nr_scanned: ::core::option::Option<u64>,
13202    #[prost(uint64, optional, tag="2")]
13203    pub delta_nr_reclaimed: ::core::option::Option<u64>,
13204}
13205// End of protos/perfetto/trace/ftrace/pixel_mm.proto
13206
13207// Begin of protos/perfetto/trace/ftrace/power.proto
13208
13209#[derive(Clone, PartialEq, ::prost::Message)]
13210pub struct CpuFrequencyFtraceEvent {
13211    #[prost(uint32, optional, tag="1")]
13212    pub state: ::core::option::Option<u32>,
13213    #[prost(uint32, optional, tag="2")]
13214    pub cpu_id: ::core::option::Option<u32>,
13215}
13216#[derive(Clone, PartialEq, ::prost::Message)]
13217pub struct CpuFrequencyLimitsFtraceEvent {
13218    #[prost(uint32, optional, tag="1")]
13219    pub min_freq: ::core::option::Option<u32>,
13220    #[prost(uint32, optional, tag="2")]
13221    pub max_freq: ::core::option::Option<u32>,
13222    #[prost(uint32, optional, tag="3")]
13223    pub cpu_id: ::core::option::Option<u32>,
13224}
13225#[derive(Clone, PartialEq, ::prost::Message)]
13226pub struct CpuIdleFtraceEvent {
13227    #[prost(uint32, optional, tag="1")]
13228    pub state: ::core::option::Option<u32>,
13229    #[prost(uint32, optional, tag="2")]
13230    pub cpu_id: ::core::option::Option<u32>,
13231}
13232#[derive(Clone, PartialEq, ::prost::Message)]
13233pub struct ClockEnableFtraceEvent {
13234    #[prost(string, optional, tag="1")]
13235    pub name: ::core::option::Option<::prost::alloc::string::String>,
13236    #[prost(uint64, optional, tag="2")]
13237    pub state: ::core::option::Option<u64>,
13238    #[prost(uint64, optional, tag="3")]
13239    pub cpu_id: ::core::option::Option<u64>,
13240}
13241#[derive(Clone, PartialEq, ::prost::Message)]
13242pub struct ClockDisableFtraceEvent {
13243    #[prost(string, optional, tag="1")]
13244    pub name: ::core::option::Option<::prost::alloc::string::String>,
13245    #[prost(uint64, optional, tag="2")]
13246    pub state: ::core::option::Option<u64>,
13247    #[prost(uint64, optional, tag="3")]
13248    pub cpu_id: ::core::option::Option<u64>,
13249}
13250#[derive(Clone, PartialEq, ::prost::Message)]
13251pub struct ClockSetRateFtraceEvent {
13252    #[prost(string, optional, tag="1")]
13253    pub name: ::core::option::Option<::prost::alloc::string::String>,
13254    #[prost(uint64, optional, tag="2")]
13255    pub state: ::core::option::Option<u64>,
13256    #[prost(uint64, optional, tag="3")]
13257    pub cpu_id: ::core::option::Option<u64>,
13258}
13259#[derive(Clone, PartialEq, ::prost::Message)]
13260pub struct SuspendResumeFtraceEvent {
13261    #[prost(string, optional, tag="1")]
13262    pub action: ::core::option::Option<::prost::alloc::string::String>,
13263    #[prost(int32, optional, tag="2")]
13264    pub val: ::core::option::Option<i32>,
13265    #[prost(uint32, optional, tag="3")]
13266    pub start: ::core::option::Option<u32>,
13267}
13268#[derive(Clone, PartialEq, ::prost::Message)]
13269pub struct GpuFrequencyFtraceEvent {
13270    #[prost(uint32, optional, tag="1")]
13271    pub gpu_id: ::core::option::Option<u32>,
13272    #[prost(uint32, optional, tag="2")]
13273    pub state: ::core::option::Option<u32>,
13274}
13275#[derive(Clone, PartialEq, ::prost::Message)]
13276pub struct WakeupSourceActivateFtraceEvent {
13277    #[prost(string, optional, tag="1")]
13278    pub name: ::core::option::Option<::prost::alloc::string::String>,
13279    #[prost(uint64, optional, tag="2")]
13280    pub state: ::core::option::Option<u64>,
13281}
13282#[derive(Clone, PartialEq, ::prost::Message)]
13283pub struct WakeupSourceDeactivateFtraceEvent {
13284    #[prost(string, optional, tag="1")]
13285    pub name: ::core::option::Option<::prost::alloc::string::String>,
13286    #[prost(uint64, optional, tag="2")]
13287    pub state: ::core::option::Option<u64>,
13288}
13289#[derive(Clone, PartialEq, ::prost::Message)]
13290pub struct GpuWorkPeriodFtraceEvent {
13291    #[prost(uint32, optional, tag="1")]
13292    pub gpu_id: ::core::option::Option<u32>,
13293    #[prost(uint32, optional, tag="2")]
13294    pub uid: ::core::option::Option<u32>,
13295    #[prost(uint64, optional, tag="3")]
13296    pub start_time_ns: ::core::option::Option<u64>,
13297    #[prost(uint64, optional, tag="4")]
13298    pub end_time_ns: ::core::option::Option<u64>,
13299    #[prost(uint64, optional, tag="5")]
13300    pub total_active_duration_ns: ::core::option::Option<u64>,
13301}
13302#[derive(Clone, PartialEq, ::prost::Message)]
13303pub struct DevicePmCallbackStartFtraceEvent {
13304    #[prost(string, optional, tag="1")]
13305    pub device: ::core::option::Option<::prost::alloc::string::String>,
13306    #[prost(string, optional, tag="2")]
13307    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13308    #[prost(string, optional, tag="3")]
13309    pub parent: ::core::option::Option<::prost::alloc::string::String>,
13310    #[prost(string, optional, tag="4")]
13311    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
13312    #[prost(int32, optional, tag="5")]
13313    pub event: ::core::option::Option<i32>,
13314}
13315#[derive(Clone, PartialEq, ::prost::Message)]
13316pub struct DevicePmCallbackEndFtraceEvent {
13317    #[prost(string, optional, tag="1")]
13318    pub device: ::core::option::Option<::prost::alloc::string::String>,
13319    #[prost(string, optional, tag="2")]
13320    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13321    #[prost(int32, optional, tag="3")]
13322    pub error: ::core::option::Option<i32>,
13323}
13324// End of protos/perfetto/trace/ftrace/power.proto
13325
13326// Begin of protos/perfetto/trace/ftrace/printk.proto
13327
13328#[derive(Clone, PartialEq, ::prost::Message)]
13329pub struct ConsoleFtraceEvent {
13330    #[prost(string, optional, tag="1")]
13331    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13332}
13333// End of protos/perfetto/trace/ftrace/printk.proto
13334
13335// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
13336
13337#[derive(Clone, PartialEq, ::prost::Message)]
13338pub struct SysEnterFtraceEvent {
13339    #[prost(int64, optional, tag="1")]
13340    pub id: ::core::option::Option<i64>,
13341    #[prost(uint64, repeated, packed="false", tag="2")]
13342    pub args: ::prost::alloc::vec::Vec<u64>,
13343}
13344#[derive(Clone, PartialEq, ::prost::Message)]
13345pub struct SysExitFtraceEvent {
13346    #[prost(int64, optional, tag="1")]
13347    pub id: ::core::option::Option<i64>,
13348    #[prost(int64, optional, tag="2")]
13349    pub ret: ::core::option::Option<i64>,
13350}
13351// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
13352
13353// Begin of protos/perfetto/trace/ftrace/regulator.proto
13354
13355#[derive(Clone, PartialEq, ::prost::Message)]
13356pub struct RegulatorDisableFtraceEvent {
13357    #[prost(string, optional, tag="1")]
13358    pub name: ::core::option::Option<::prost::alloc::string::String>,
13359}
13360#[derive(Clone, PartialEq, ::prost::Message)]
13361pub struct RegulatorDisableCompleteFtraceEvent {
13362    #[prost(string, optional, tag="1")]
13363    pub name: ::core::option::Option<::prost::alloc::string::String>,
13364}
13365#[derive(Clone, PartialEq, ::prost::Message)]
13366pub struct RegulatorEnableFtraceEvent {
13367    #[prost(string, optional, tag="1")]
13368    pub name: ::core::option::Option<::prost::alloc::string::String>,
13369}
13370#[derive(Clone, PartialEq, ::prost::Message)]
13371pub struct RegulatorEnableCompleteFtraceEvent {
13372    #[prost(string, optional, tag="1")]
13373    pub name: ::core::option::Option<::prost::alloc::string::String>,
13374}
13375#[derive(Clone, PartialEq, ::prost::Message)]
13376pub struct RegulatorEnableDelayFtraceEvent {
13377    #[prost(string, optional, tag="1")]
13378    pub name: ::core::option::Option<::prost::alloc::string::String>,
13379}
13380#[derive(Clone, PartialEq, ::prost::Message)]
13381pub struct RegulatorSetVoltageFtraceEvent {
13382    #[prost(string, optional, tag="1")]
13383    pub name: ::core::option::Option<::prost::alloc::string::String>,
13384    #[prost(int32, optional, tag="2")]
13385    pub min: ::core::option::Option<i32>,
13386    #[prost(int32, optional, tag="3")]
13387    pub max: ::core::option::Option<i32>,
13388}
13389#[derive(Clone, PartialEq, ::prost::Message)]
13390pub struct RegulatorSetVoltageCompleteFtraceEvent {
13391    #[prost(string, optional, tag="1")]
13392    pub name: ::core::option::Option<::prost::alloc::string::String>,
13393    #[prost(uint32, optional, tag="2")]
13394    pub val: ::core::option::Option<u32>,
13395}
13396// End of protos/perfetto/trace/ftrace/regulator.proto
13397
13398// Begin of protos/perfetto/trace/ftrace/rpm.proto
13399
13400#[derive(Clone, PartialEq, ::prost::Message)]
13401pub struct RpmStatusFtraceEvent {
13402    #[prost(string, optional, tag="1")]
13403    pub name: ::core::option::Option<::prost::alloc::string::String>,
13404    #[prost(int32, optional, tag="2")]
13405    pub status: ::core::option::Option<i32>,
13406}
13407// End of protos/perfetto/trace/ftrace/rpm.proto
13408
13409// Begin of protos/perfetto/trace/ftrace/samsung.proto
13410
13411#[derive(Clone, PartialEq, ::prost::Message)]
13412pub struct SamsungTracingMarkWriteFtraceEvent {
13413    #[prost(int32, optional, tag="1")]
13414    pub pid: ::core::option::Option<i32>,
13415    #[prost(string, optional, tag="2")]
13416    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13417    #[prost(uint32, optional, tag="3")]
13418    pub trace_begin: ::core::option::Option<u32>,
13419    #[prost(uint32, optional, tag="4")]
13420    pub trace_type: ::core::option::Option<u32>,
13421    #[prost(int32, optional, tag="5")]
13422    pub value: ::core::option::Option<i32>,
13423}
13424// End of protos/perfetto/trace/ftrace/samsung.proto
13425
13426// Begin of protos/perfetto/trace/ftrace/sched.proto
13427
13428#[derive(Clone, PartialEq, ::prost::Message)]
13429pub struct SchedSwitchFtraceEvent {
13430    #[prost(string, optional, tag="1")]
13431    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
13432    #[prost(int32, optional, tag="2")]
13433    pub prev_pid: ::core::option::Option<i32>,
13434    #[prost(int32, optional, tag="3")]
13435    pub prev_prio: ::core::option::Option<i32>,
13436    #[prost(int64, optional, tag="4")]
13437    pub prev_state: ::core::option::Option<i64>,
13438    #[prost(string, optional, tag="5")]
13439    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
13440    #[prost(int32, optional, tag="6")]
13441    pub next_pid: ::core::option::Option<i32>,
13442    #[prost(int32, optional, tag="7")]
13443    pub next_prio: ::core::option::Option<i32>,
13444}
13445#[derive(Clone, PartialEq, ::prost::Message)]
13446pub struct SchedWakeupFtraceEvent {
13447    #[prost(string, optional, tag="1")]
13448    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13449    #[prost(int32, optional, tag="2")]
13450    pub pid: ::core::option::Option<i32>,
13451    #[prost(int32, optional, tag="3")]
13452    pub prio: ::core::option::Option<i32>,
13453    #[prost(int32, optional, tag="4")]
13454    pub success: ::core::option::Option<i32>,
13455    #[prost(int32, optional, tag="5")]
13456    pub target_cpu: ::core::option::Option<i32>,
13457}
13458#[derive(Clone, PartialEq, ::prost::Message)]
13459pub struct SchedBlockedReasonFtraceEvent {
13460    #[prost(int32, optional, tag="1")]
13461    pub pid: ::core::option::Option<i32>,
13462    #[prost(uint64, optional, tag="2")]
13463    pub caller: ::core::option::Option<u64>,
13464    #[prost(uint32, optional, tag="3")]
13465    pub io_wait: ::core::option::Option<u32>,
13466}
13467#[derive(Clone, PartialEq, ::prost::Message)]
13468pub struct SchedCpuHotplugFtraceEvent {
13469    #[prost(int32, optional, tag="1")]
13470    pub affected_cpu: ::core::option::Option<i32>,
13471    #[prost(int32, optional, tag="2")]
13472    pub error: ::core::option::Option<i32>,
13473    #[prost(int32, optional, tag="3")]
13474    pub status: ::core::option::Option<i32>,
13475}
13476#[derive(Clone, PartialEq, ::prost::Message)]
13477pub struct SchedWakingFtraceEvent {
13478    #[prost(string, optional, tag="1")]
13479    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13480    #[prost(int32, optional, tag="2")]
13481    pub pid: ::core::option::Option<i32>,
13482    #[prost(int32, optional, tag="3")]
13483    pub prio: ::core::option::Option<i32>,
13484    #[prost(int32, optional, tag="4")]
13485    pub success: ::core::option::Option<i32>,
13486    #[prost(int32, optional, tag="5")]
13487    pub target_cpu: ::core::option::Option<i32>,
13488}
13489#[derive(Clone, PartialEq, ::prost::Message)]
13490pub struct SchedWakeupNewFtraceEvent {
13491    #[prost(string, optional, tag="1")]
13492    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13493    #[prost(int32, optional, tag="2")]
13494    pub pid: ::core::option::Option<i32>,
13495    #[prost(int32, optional, tag="3")]
13496    pub prio: ::core::option::Option<i32>,
13497    #[prost(int32, optional, tag="4")]
13498    pub success: ::core::option::Option<i32>,
13499    #[prost(int32, optional, tag="5")]
13500    pub target_cpu: ::core::option::Option<i32>,
13501}
13502#[derive(Clone, PartialEq, ::prost::Message)]
13503pub struct SchedProcessExecFtraceEvent {
13504    #[prost(string, optional, tag="1")]
13505    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13506    #[prost(int32, optional, tag="2")]
13507    pub pid: ::core::option::Option<i32>,
13508    #[prost(int32, optional, tag="3")]
13509    pub old_pid: ::core::option::Option<i32>,
13510}
13511#[derive(Clone, PartialEq, ::prost::Message)]
13512pub struct SchedProcessExitFtraceEvent {
13513    #[prost(string, optional, tag="1")]
13514    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13515    #[prost(int32, optional, tag="2")]
13516    pub pid: ::core::option::Option<i32>,
13517    #[prost(int32, optional, tag="3")]
13518    pub tgid: ::core::option::Option<i32>,
13519    #[prost(int32, optional, tag="4")]
13520    pub prio: ::core::option::Option<i32>,
13521}
13522#[derive(Clone, PartialEq, ::prost::Message)]
13523pub struct SchedProcessForkFtraceEvent {
13524    #[prost(string, optional, tag="1")]
13525    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
13526    #[prost(int32, optional, tag="2")]
13527    pub parent_pid: ::core::option::Option<i32>,
13528    #[prost(string, optional, tag="3")]
13529    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
13530    #[prost(int32, optional, tag="4")]
13531    pub child_pid: ::core::option::Option<i32>,
13532}
13533#[derive(Clone, PartialEq, ::prost::Message)]
13534pub struct SchedProcessFreeFtraceEvent {
13535    #[prost(string, optional, tag="1")]
13536    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13537    #[prost(int32, optional, tag="2")]
13538    pub pid: ::core::option::Option<i32>,
13539    #[prost(int32, optional, tag="3")]
13540    pub prio: ::core::option::Option<i32>,
13541}
13542#[derive(Clone, PartialEq, ::prost::Message)]
13543pub struct SchedProcessHangFtraceEvent {
13544    #[prost(string, optional, tag="1")]
13545    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13546    #[prost(int32, optional, tag="2")]
13547    pub pid: ::core::option::Option<i32>,
13548}
13549#[derive(Clone, PartialEq, ::prost::Message)]
13550pub struct SchedProcessWaitFtraceEvent {
13551    #[prost(string, optional, tag="1")]
13552    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13553    #[prost(int32, optional, tag="2")]
13554    pub pid: ::core::option::Option<i32>,
13555    #[prost(int32, optional, tag="3")]
13556    pub prio: ::core::option::Option<i32>,
13557}
13558#[derive(Clone, PartialEq, ::prost::Message)]
13559pub struct SchedPiSetprioFtraceEvent {
13560    #[prost(string, optional, tag="1")]
13561    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13562    #[prost(int32, optional, tag="2")]
13563    pub newprio: ::core::option::Option<i32>,
13564    #[prost(int32, optional, tag="3")]
13565    pub oldprio: ::core::option::Option<i32>,
13566    #[prost(int32, optional, tag="4")]
13567    pub pid: ::core::option::Option<i32>,
13568}
13569#[derive(Clone, PartialEq, ::prost::Message)]
13570pub struct SchedCpuUtilCfsFtraceEvent {
13571    #[prost(int32, optional, tag="1")]
13572    pub active: ::core::option::Option<i32>,
13573    #[prost(uint64, optional, tag="2")]
13574    pub capacity: ::core::option::Option<u64>,
13575    #[prost(uint64, optional, tag="3")]
13576    pub capacity_orig: ::core::option::Option<u64>,
13577    #[prost(uint32, optional, tag="4")]
13578    pub cpu: ::core::option::Option<u32>,
13579    #[prost(uint64, optional, tag="5")]
13580    pub cpu_importance: ::core::option::Option<u64>,
13581    #[prost(uint64, optional, tag="6")]
13582    pub cpu_util: ::core::option::Option<u64>,
13583    #[prost(uint32, optional, tag="7")]
13584    pub exit_lat: ::core::option::Option<u32>,
13585    #[prost(uint64, optional, tag="8")]
13586    pub group_capacity: ::core::option::Option<u64>,
13587    #[prost(uint32, optional, tag="9")]
13588    pub grp_overutilized: ::core::option::Option<u32>,
13589    #[prost(uint32, optional, tag="10")]
13590    pub idle_cpu: ::core::option::Option<u32>,
13591    #[prost(uint32, optional, tag="11")]
13592    pub nr_running: ::core::option::Option<u32>,
13593    #[prost(int64, optional, tag="12")]
13594    pub spare_cap: ::core::option::Option<i64>,
13595    #[prost(uint32, optional, tag="13")]
13596    pub task_fits: ::core::option::Option<u32>,
13597    #[prost(uint64, optional, tag="14")]
13598    pub wake_group_util: ::core::option::Option<u64>,
13599    #[prost(uint64, optional, tag="15")]
13600    pub wake_util: ::core::option::Option<u64>,
13601}
13602#[derive(Clone, PartialEq, ::prost::Message)]
13603pub struct SchedMigrateTaskFtraceEvent {
13604    #[prost(string, optional, tag="1")]
13605    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13606    #[prost(int32, optional, tag="2")]
13607    pub pid: ::core::option::Option<i32>,
13608    #[prost(int32, optional, tag="3")]
13609    pub prio: ::core::option::Option<i32>,
13610    #[prost(int32, optional, tag="4")]
13611    pub orig_cpu: ::core::option::Option<i32>,
13612    #[prost(int32, optional, tag="5")]
13613    pub dest_cpu: ::core::option::Option<i32>,
13614    #[prost(int32, optional, tag="6")]
13615    pub running: ::core::option::Option<i32>,
13616    #[prost(uint32, optional, tag="7")]
13617    pub load: ::core::option::Option<u32>,
13618}
13619#[derive(Clone, PartialEq, ::prost::Message)]
13620pub struct SchedWakeupTaskAttrFtraceEvent {
13621    #[prost(int32, optional, tag="1")]
13622    pub pid: ::core::option::Option<i32>,
13623    #[prost(uint64, optional, tag="2")]
13624    pub cpu_affinity: ::core::option::Option<u64>,
13625    #[prost(uint64, optional, tag="3")]
13626    pub task_util: ::core::option::Option<u64>,
13627    #[prost(uint64, optional, tag="4")]
13628    pub uclamp_min: ::core::option::Option<u64>,
13629    #[prost(uint64, optional, tag="5")]
13630    pub vruntime: ::core::option::Option<u64>,
13631}
13632// End of protos/perfetto/trace/ftrace/sched.proto
13633
13634// Begin of protos/perfetto/trace/ftrace/scm.proto
13635
13636#[derive(Clone, PartialEq, ::prost::Message)]
13637pub struct ScmCallStartFtraceEvent {
13638    #[prost(uint32, optional, tag="1")]
13639    pub arginfo: ::core::option::Option<u32>,
13640    #[prost(uint64, optional, tag="2")]
13641    pub x0: ::core::option::Option<u64>,
13642    #[prost(uint64, optional, tag="3")]
13643    pub x5: ::core::option::Option<u64>,
13644}
13645#[derive(Clone, PartialEq, ::prost::Message)]
13646pub struct ScmCallEndFtraceEvent {
13647}
13648// End of protos/perfetto/trace/ftrace/scm.proto
13649
13650// Begin of protos/perfetto/trace/ftrace/sde.proto
13651
13652#[derive(Clone, PartialEq, ::prost::Message)]
13653pub struct SdeTracingMarkWriteFtraceEvent {
13654    #[prost(int32, optional, tag="1")]
13655    pub pid: ::core::option::Option<i32>,
13656    #[prost(string, optional, tag="2")]
13657    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13658    #[prost(uint32, optional, tag="3")]
13659    pub trace_type: ::core::option::Option<u32>,
13660    #[prost(int32, optional, tag="4")]
13661    pub value: ::core::option::Option<i32>,
13662    #[prost(uint32, optional, tag="5")]
13663    pub trace_begin: ::core::option::Option<u32>,
13664}
13665#[derive(Clone, PartialEq, ::prost::Message)]
13666pub struct SdeSdeEvtlogFtraceEvent {
13667    #[prost(string, optional, tag="1")]
13668    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
13669    #[prost(int32, optional, tag="2")]
13670    pub pid: ::core::option::Option<i32>,
13671    #[prost(uint32, optional, tag="3")]
13672    pub tag_id: ::core::option::Option<u32>,
13673}
13674#[derive(Clone, PartialEq, ::prost::Message)]
13675pub struct SdeSdePerfCalcCrtcFtraceEvent {
13676    #[prost(uint64, optional, tag="1")]
13677    pub bw_ctl_ebi: ::core::option::Option<u64>,
13678    #[prost(uint64, optional, tag="2")]
13679    pub bw_ctl_llcc: ::core::option::Option<u64>,
13680    #[prost(uint64, optional, tag="3")]
13681    pub bw_ctl_mnoc: ::core::option::Option<u64>,
13682    #[prost(uint32, optional, tag="4")]
13683    pub core_clk_rate: ::core::option::Option<u32>,
13684    #[prost(uint32, optional, tag="5")]
13685    pub crtc: ::core::option::Option<u32>,
13686    #[prost(uint64, optional, tag="6")]
13687    pub ib_ebi: ::core::option::Option<u64>,
13688    #[prost(uint64, optional, tag="7")]
13689    pub ib_llcc: ::core::option::Option<u64>,
13690    #[prost(uint64, optional, tag="8")]
13691    pub ib_mnoc: ::core::option::Option<u64>,
13692}
13693#[derive(Clone, PartialEq, ::prost::Message)]
13694pub struct SdeSdePerfCrtcUpdateFtraceEvent {
13695    #[prost(uint64, optional, tag="1")]
13696    pub bw_ctl_ebi: ::core::option::Option<u64>,
13697    #[prost(uint64, optional, tag="2")]
13698    pub bw_ctl_llcc: ::core::option::Option<u64>,
13699    #[prost(uint64, optional, tag="3")]
13700    pub bw_ctl_mnoc: ::core::option::Option<u64>,
13701    #[prost(uint32, optional, tag="4")]
13702    pub core_clk_rate: ::core::option::Option<u32>,
13703    #[prost(uint32, optional, tag="5")]
13704    pub crtc: ::core::option::Option<u32>,
13705    #[prost(int32, optional, tag="6")]
13706    pub params: ::core::option::Option<i32>,
13707    #[prost(uint64, optional, tag="7")]
13708    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
13709    #[prost(uint64, optional, tag="8")]
13710    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
13711    #[prost(uint64, optional, tag="9")]
13712    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
13713    #[prost(uint32, optional, tag="10")]
13714    pub stop_req: ::core::option::Option<u32>,
13715    #[prost(uint32, optional, tag="11")]
13716    pub update_bus: ::core::option::Option<u32>,
13717    #[prost(uint32, optional, tag="12")]
13718    pub update_clk: ::core::option::Option<u32>,
13719}
13720#[derive(Clone, PartialEq, ::prost::Message)]
13721pub struct SdeSdePerfSetQosLutsFtraceEvent {
13722    #[prost(uint32, optional, tag="1")]
13723    pub fl: ::core::option::Option<u32>,
13724    #[prost(uint32, optional, tag="2")]
13725    pub fmt: ::core::option::Option<u32>,
13726    #[prost(uint64, optional, tag="3")]
13727    pub lut: ::core::option::Option<u64>,
13728    #[prost(uint32, optional, tag="4")]
13729    pub lut_usage: ::core::option::Option<u32>,
13730    #[prost(uint32, optional, tag="5")]
13731    pub pnum: ::core::option::Option<u32>,
13732    #[prost(uint32, optional, tag="6")]
13733    pub rt: ::core::option::Option<u32>,
13734}
13735#[derive(Clone, PartialEq, ::prost::Message)]
13736pub struct SdeSdePerfUpdateBusFtraceEvent {
13737    #[prost(uint64, optional, tag="1")]
13738    pub ab_quota: ::core::option::Option<u64>,
13739    #[prost(uint32, optional, tag="2")]
13740    pub bus_id: ::core::option::Option<u32>,
13741    #[prost(int32, optional, tag="3")]
13742    pub client: ::core::option::Option<i32>,
13743    #[prost(uint64, optional, tag="4")]
13744    pub ib_quota: ::core::option::Option<u64>,
13745}
13746// End of protos/perfetto/trace/ftrace/sde.proto
13747
13748// Begin of protos/perfetto/trace/ftrace/signal.proto
13749
13750#[derive(Clone, PartialEq, ::prost::Message)]
13751pub struct SignalDeliverFtraceEvent {
13752    #[prost(int32, optional, tag="1")]
13753    pub code: ::core::option::Option<i32>,
13754    #[prost(uint64, optional, tag="2")]
13755    pub sa_flags: ::core::option::Option<u64>,
13756    #[prost(int32, optional, tag="3")]
13757    pub sig: ::core::option::Option<i32>,
13758}
13759#[derive(Clone, PartialEq, ::prost::Message)]
13760pub struct SignalGenerateFtraceEvent {
13761    #[prost(int32, optional, tag="1")]
13762    pub code: ::core::option::Option<i32>,
13763    #[prost(string, optional, tag="2")]
13764    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13765    #[prost(int32, optional, tag="3")]
13766    pub group: ::core::option::Option<i32>,
13767    #[prost(int32, optional, tag="4")]
13768    pub pid: ::core::option::Option<i32>,
13769    #[prost(int32, optional, tag="5")]
13770    pub result: ::core::option::Option<i32>,
13771    #[prost(int32, optional, tag="6")]
13772    pub sig: ::core::option::Option<i32>,
13773}
13774// End of protos/perfetto/trace/ftrace/signal.proto
13775
13776// Begin of protos/perfetto/trace/ftrace/skb.proto
13777
13778#[derive(Clone, PartialEq, ::prost::Message)]
13779pub struct KfreeSkbFtraceEvent {
13780    #[prost(uint64, optional, tag="1")]
13781    pub location: ::core::option::Option<u64>,
13782    #[prost(uint32, optional, tag="2")]
13783    pub protocol: ::core::option::Option<u32>,
13784    #[prost(uint64, optional, tag="3")]
13785    pub skbaddr: ::core::option::Option<u64>,
13786}
13787// End of protos/perfetto/trace/ftrace/skb.proto
13788
13789// Begin of protos/perfetto/trace/ftrace/sock.proto
13790
13791#[derive(Clone, PartialEq, ::prost::Message)]
13792pub struct InetSockSetStateFtraceEvent {
13793    #[prost(uint32, optional, tag="1")]
13794    pub daddr: ::core::option::Option<u32>,
13795    #[prost(uint32, optional, tag="2")]
13796    pub dport: ::core::option::Option<u32>,
13797    #[prost(uint32, optional, tag="3")]
13798    pub family: ::core::option::Option<u32>,
13799    #[prost(int32, optional, tag="4")]
13800    pub newstate: ::core::option::Option<i32>,
13801    #[prost(int32, optional, tag="5")]
13802    pub oldstate: ::core::option::Option<i32>,
13803    #[prost(uint32, optional, tag="6")]
13804    pub protocol: ::core::option::Option<u32>,
13805    #[prost(uint32, optional, tag="7")]
13806    pub saddr: ::core::option::Option<u32>,
13807    #[prost(uint64, optional, tag="8")]
13808    pub skaddr: ::core::option::Option<u64>,
13809    #[prost(uint32, optional, tag="9")]
13810    pub sport: ::core::option::Option<u32>,
13811}
13812// End of protos/perfetto/trace/ftrace/sock.proto
13813
13814// Begin of protos/perfetto/trace/ftrace/sync.proto
13815
13816#[derive(Clone, PartialEq, ::prost::Message)]
13817pub struct SyncPtFtraceEvent {
13818    #[prost(string, optional, tag="1")]
13819    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13820    #[prost(string, optional, tag="2")]
13821    pub value: ::core::option::Option<::prost::alloc::string::String>,
13822}
13823#[derive(Clone, PartialEq, ::prost::Message)]
13824pub struct SyncTimelineFtraceEvent {
13825    #[prost(string, optional, tag="1")]
13826    pub name: ::core::option::Option<::prost::alloc::string::String>,
13827    #[prost(string, optional, tag="2")]
13828    pub value: ::core::option::Option<::prost::alloc::string::String>,
13829}
13830#[derive(Clone, PartialEq, ::prost::Message)]
13831pub struct SyncWaitFtraceEvent {
13832    #[prost(string, optional, tag="1")]
13833    pub name: ::core::option::Option<::prost::alloc::string::String>,
13834    #[prost(int32, optional, tag="2")]
13835    pub status: ::core::option::Option<i32>,
13836    #[prost(uint32, optional, tag="3")]
13837    pub begin: ::core::option::Option<u32>,
13838}
13839// End of protos/perfetto/trace/ftrace/sync.proto
13840
13841// Begin of protos/perfetto/trace/ftrace/synthetic.proto
13842
13843#[derive(Clone, PartialEq, ::prost::Message)]
13844pub struct RssStatThrottledFtraceEvent {
13845    #[prost(uint32, optional, tag="1")]
13846    pub curr: ::core::option::Option<u32>,
13847    #[prost(int32, optional, tag="2")]
13848    pub member: ::core::option::Option<i32>,
13849    #[prost(uint32, optional, tag="3")]
13850    pub mm_id: ::core::option::Option<u32>,
13851    #[prost(int64, optional, tag="4")]
13852    pub size: ::core::option::Option<i64>,
13853}
13854#[derive(Clone, PartialEq, ::prost::Message)]
13855pub struct SuspendResumeMinimalFtraceEvent {
13856    #[prost(uint32, optional, tag="1")]
13857    pub start: ::core::option::Option<u32>,
13858}
13859// End of protos/perfetto/trace/ftrace/synthetic.proto
13860
13861// Begin of protos/perfetto/trace/ftrace/systrace.proto
13862
13863#[derive(Clone, PartialEq, ::prost::Message)]
13864pub struct ZeroFtraceEvent {
13865    #[prost(int32, optional, tag="1")]
13866    pub flag: ::core::option::Option<i32>,
13867    #[prost(string, optional, tag="2")]
13868    pub name: ::core::option::Option<::prost::alloc::string::String>,
13869    #[prost(int32, optional, tag="3")]
13870    pub pid: ::core::option::Option<i32>,
13871    #[prost(int64, optional, tag="4")]
13872    pub value: ::core::option::Option<i64>,
13873}
13874// End of protos/perfetto/trace/ftrace/systrace.proto
13875
13876// Begin of protos/perfetto/trace/ftrace/task.proto
13877
13878#[derive(Clone, PartialEq, ::prost::Message)]
13879pub struct TaskNewtaskFtraceEvent {
13880    #[prost(int32, optional, tag="1")]
13881    pub pid: ::core::option::Option<i32>,
13882    #[prost(string, optional, tag="2")]
13883    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13884    #[prost(uint64, optional, tag="3")]
13885    pub clone_flags: ::core::option::Option<u64>,
13886    #[prost(int32, optional, tag="4")]
13887    pub oom_score_adj: ::core::option::Option<i32>,
13888}
13889#[derive(Clone, PartialEq, ::prost::Message)]
13890pub struct TaskRenameFtraceEvent {
13891    #[prost(int32, optional, tag="1")]
13892    pub pid: ::core::option::Option<i32>,
13893    #[prost(string, optional, tag="2")]
13894    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
13895    #[prost(string, optional, tag="3")]
13896    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
13897    #[prost(int32, optional, tag="4")]
13898    pub oom_score_adj: ::core::option::Option<i32>,
13899}
13900// End of protos/perfetto/trace/ftrace/task.proto
13901
13902// Begin of protos/perfetto/trace/ftrace/tcp.proto
13903
13904#[derive(Clone, PartialEq, ::prost::Message)]
13905pub struct TcpRetransmitSkbFtraceEvent {
13906    #[prost(uint32, optional, tag="1")]
13907    pub daddr: ::core::option::Option<u32>,
13908    #[prost(uint32, optional, tag="2")]
13909    pub dport: ::core::option::Option<u32>,
13910    #[prost(uint32, optional, tag="3")]
13911    pub saddr: ::core::option::Option<u32>,
13912    #[prost(uint64, optional, tag="4")]
13913    pub skaddr: ::core::option::Option<u64>,
13914    #[prost(uint64, optional, tag="5")]
13915    pub skbaddr: ::core::option::Option<u64>,
13916    #[prost(uint32, optional, tag="6")]
13917    pub sport: ::core::option::Option<u32>,
13918    #[prost(int32, optional, tag="7")]
13919    pub state: ::core::option::Option<i32>,
13920}
13921// End of protos/perfetto/trace/ftrace/tcp.proto
13922
13923// Begin of protos/perfetto/trace/ftrace/thermal.proto
13924
13925#[derive(Clone, PartialEq, ::prost::Message)]
13926pub struct ThermalTemperatureFtraceEvent {
13927    #[prost(int32, optional, tag="1")]
13928    pub id: ::core::option::Option<i32>,
13929    #[prost(int32, optional, tag="2")]
13930    pub temp: ::core::option::Option<i32>,
13931    #[prost(int32, optional, tag="3")]
13932    pub temp_prev: ::core::option::Option<i32>,
13933    #[prost(string, optional, tag="4")]
13934    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
13935}
13936#[derive(Clone, PartialEq, ::prost::Message)]
13937pub struct CdevUpdateFtraceEvent {
13938    #[prost(uint64, optional, tag="1")]
13939    pub target: ::core::option::Option<u64>,
13940    #[prost(string, optional, tag="2")]
13941    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
13942}
13943// End of protos/perfetto/trace/ftrace/thermal.proto
13944
13945// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
13946
13947#[derive(Clone, PartialEq, ::prost::Message)]
13948pub struct ThermalExynosAcpmBulkFtraceEvent {
13949    #[prost(uint32, optional, tag="1")]
13950    pub tz_id: ::core::option::Option<u32>,
13951    #[prost(uint32, optional, tag="2")]
13952    pub current_temp: ::core::option::Option<u32>,
13953    #[prost(uint32, optional, tag="3")]
13954    pub ctrl_temp: ::core::option::Option<u32>,
13955    #[prost(uint32, optional, tag="4")]
13956    pub cdev_state: ::core::option::Option<u32>,
13957    #[prost(int32, optional, tag="5")]
13958    pub pid_et_p: ::core::option::Option<i32>,
13959    #[prost(int32, optional, tag="6")]
13960    pub pid_power_range: ::core::option::Option<i32>,
13961    #[prost(int32, optional, tag="7")]
13962    pub pid_p: ::core::option::Option<i32>,
13963    #[prost(int32, optional, tag="8")]
13964    pub pid_i: ::core::option::Option<i32>,
13965    #[prost(int32, optional, tag="9")]
13966    pub k_p: ::core::option::Option<i32>,
13967    #[prost(int32, optional, tag="10")]
13968    pub k_i: ::core::option::Option<i32>,
13969    #[prost(uint64, optional, tag="11")]
13970    pub timestamp: ::core::option::Option<u64>,
13971}
13972#[derive(Clone, PartialEq, ::prost::Message)]
13973pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
13974    #[prost(int32, optional, tag="1")]
13975    pub tz_id: ::core::option::Option<i32>,
13976    #[prost(uint32, optional, tag="2")]
13977    pub current_temp: ::core::option::Option<u32>,
13978    #[prost(uint32, optional, tag="3")]
13979    pub ctrl_temp: ::core::option::Option<u32>,
13980    #[prost(uint32, optional, tag="4")]
13981    pub cdev_state: ::core::option::Option<u32>,
13982    #[prost(int32, optional, tag="5")]
13983    pub pid_et_p: ::core::option::Option<i32>,
13984    #[prost(int32, optional, tag="6")]
13985    pub k_p: ::core::option::Option<i32>,
13986    #[prost(int32, optional, tag="7")]
13987    pub k_i: ::core::option::Option<i32>,
13988}
13989// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
13990
13991// Begin of protos/perfetto/trace/ftrace/trusty.proto
13992
13993#[derive(Clone, PartialEq, ::prost::Message)]
13994pub struct TrustySmcFtraceEvent {
13995    #[prost(uint64, optional, tag="1")]
13996    pub r0: ::core::option::Option<u64>,
13997    #[prost(uint64, optional, tag="2")]
13998    pub r1: ::core::option::Option<u64>,
13999    #[prost(uint64, optional, tag="3")]
14000    pub r2: ::core::option::Option<u64>,
14001    #[prost(uint64, optional, tag="4")]
14002    pub r3: ::core::option::Option<u64>,
14003}
14004#[derive(Clone, PartialEq, ::prost::Message)]
14005pub struct TrustySmcDoneFtraceEvent {
14006    #[prost(uint64, optional, tag="1")]
14007    pub ret: ::core::option::Option<u64>,
14008}
14009#[derive(Clone, PartialEq, ::prost::Message)]
14010pub struct TrustyStdCall32FtraceEvent {
14011    #[prost(uint64, optional, tag="1")]
14012    pub r0: ::core::option::Option<u64>,
14013    #[prost(uint64, optional, tag="2")]
14014    pub r1: ::core::option::Option<u64>,
14015    #[prost(uint64, optional, tag="3")]
14016    pub r2: ::core::option::Option<u64>,
14017    #[prost(uint64, optional, tag="4")]
14018    pub r3: ::core::option::Option<u64>,
14019}
14020#[derive(Clone, PartialEq, ::prost::Message)]
14021pub struct TrustyStdCall32DoneFtraceEvent {
14022    #[prost(int64, optional, tag="1")]
14023    pub ret: ::core::option::Option<i64>,
14024}
14025#[derive(Clone, PartialEq, ::prost::Message)]
14026pub struct TrustyShareMemoryFtraceEvent {
14027    #[prost(uint64, optional, tag="1")]
14028    pub len: ::core::option::Option<u64>,
14029    #[prost(uint32, optional, tag="2")]
14030    pub lend: ::core::option::Option<u32>,
14031    #[prost(uint32, optional, tag="3")]
14032    pub nents: ::core::option::Option<u32>,
14033}
14034#[derive(Clone, PartialEq, ::prost::Message)]
14035pub struct TrustyShareMemoryDoneFtraceEvent {
14036    #[prost(uint64, optional, tag="1")]
14037    pub handle: ::core::option::Option<u64>,
14038    #[prost(uint64, optional, tag="2")]
14039    pub len: ::core::option::Option<u64>,
14040    #[prost(uint32, optional, tag="3")]
14041    pub lend: ::core::option::Option<u32>,
14042    #[prost(uint32, optional, tag="4")]
14043    pub nents: ::core::option::Option<u32>,
14044    #[prost(int32, optional, tag="5")]
14045    pub ret: ::core::option::Option<i32>,
14046}
14047#[derive(Clone, PartialEq, ::prost::Message)]
14048pub struct TrustyReclaimMemoryFtraceEvent {
14049    #[prost(uint64, optional, tag="1")]
14050    pub id: ::core::option::Option<u64>,
14051}
14052#[derive(Clone, PartialEq, ::prost::Message)]
14053pub struct TrustyReclaimMemoryDoneFtraceEvent {
14054    #[prost(uint64, optional, tag="1")]
14055    pub id: ::core::option::Option<u64>,
14056    #[prost(int32, optional, tag="2")]
14057    pub ret: ::core::option::Option<i32>,
14058}
14059#[derive(Clone, PartialEq, ::prost::Message)]
14060pub struct TrustyIrqFtraceEvent {
14061    #[prost(int32, optional, tag="1")]
14062    pub irq: ::core::option::Option<i32>,
14063}
14064#[derive(Clone, PartialEq, ::prost::Message)]
14065pub struct TrustyIpcHandleEventFtraceEvent {
14066    #[prost(uint32, optional, tag="1")]
14067    pub chan: ::core::option::Option<u32>,
14068    #[prost(uint32, optional, tag="2")]
14069    pub event_id: ::core::option::Option<u32>,
14070    #[prost(string, optional, tag="3")]
14071    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14072}
14073#[derive(Clone, PartialEq, ::prost::Message)]
14074pub struct TrustyIpcConnectFtraceEvent {
14075    #[prost(uint32, optional, tag="1")]
14076    pub chan: ::core::option::Option<u32>,
14077    #[prost(string, optional, tag="2")]
14078    pub port: ::core::option::Option<::prost::alloc::string::String>,
14079    #[prost(int32, optional, tag="3")]
14080    pub state: ::core::option::Option<i32>,
14081}
14082#[derive(Clone, PartialEq, ::prost::Message)]
14083pub struct TrustyIpcConnectEndFtraceEvent {
14084    #[prost(uint32, optional, tag="1")]
14085    pub chan: ::core::option::Option<u32>,
14086    #[prost(int32, optional, tag="2")]
14087    pub err: ::core::option::Option<i32>,
14088    #[prost(int32, optional, tag="3")]
14089    pub state: ::core::option::Option<i32>,
14090}
14091#[derive(Clone, PartialEq, ::prost::Message)]
14092pub struct TrustyIpcWriteFtraceEvent {
14093    #[prost(uint64, optional, tag="1")]
14094    pub buf_id: ::core::option::Option<u64>,
14095    #[prost(uint32, optional, tag="2")]
14096    pub chan: ::core::option::Option<u32>,
14097    #[prost(int32, optional, tag="3")]
14098    pub kind_shm: ::core::option::Option<i32>,
14099    #[prost(int32, optional, tag="4")]
14100    pub len_or_err: ::core::option::Option<i32>,
14101    #[prost(uint64, optional, tag="5")]
14102    pub shm_cnt: ::core::option::Option<u64>,
14103    #[prost(string, optional, tag="6")]
14104    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14105}
14106#[derive(Clone, PartialEq, ::prost::Message)]
14107pub struct TrustyIpcPollFtraceEvent {
14108    #[prost(uint32, optional, tag="1")]
14109    pub chan: ::core::option::Option<u32>,
14110    #[prost(uint32, optional, tag="2")]
14111    pub poll_mask: ::core::option::Option<u32>,
14112    #[prost(string, optional, tag="3")]
14113    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14114}
14115#[derive(Clone, PartialEq, ::prost::Message)]
14116pub struct TrustyIpcReadFtraceEvent {
14117    #[prost(uint32, optional, tag="1")]
14118    pub chan: ::core::option::Option<u32>,
14119    #[prost(string, optional, tag="2")]
14120    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14121}
14122#[derive(Clone, PartialEq, ::prost::Message)]
14123pub struct TrustyIpcReadEndFtraceEvent {
14124    #[prost(uint64, optional, tag="1")]
14125    pub buf_id: ::core::option::Option<u64>,
14126    #[prost(uint32, optional, tag="2")]
14127    pub chan: ::core::option::Option<u32>,
14128    #[prost(int32, optional, tag="3")]
14129    pub len_or_err: ::core::option::Option<i32>,
14130    #[prost(uint64, optional, tag="4")]
14131    pub shm_cnt: ::core::option::Option<u64>,
14132    #[prost(string, optional, tag="5")]
14133    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14134}
14135#[derive(Clone, PartialEq, ::prost::Message)]
14136pub struct TrustyIpcRxFtraceEvent {
14137    #[prost(uint64, optional, tag="1")]
14138    pub buf_id: ::core::option::Option<u64>,
14139    #[prost(uint32, optional, tag="2")]
14140    pub chan: ::core::option::Option<u32>,
14141    #[prost(string, optional, tag="3")]
14142    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14143}
14144#[derive(Clone, PartialEq, ::prost::Message)]
14145pub struct TrustyEnqueueNopFtraceEvent {
14146    #[prost(uint32, optional, tag="1")]
14147    pub arg1: ::core::option::Option<u32>,
14148    #[prost(uint32, optional, tag="2")]
14149    pub arg2: ::core::option::Option<u32>,
14150    #[prost(uint32, optional, tag="3")]
14151    pub arg3: ::core::option::Option<u32>,
14152}
14153// End of protos/perfetto/trace/ftrace/trusty.proto
14154
14155// Begin of protos/perfetto/trace/ftrace/ufs.proto
14156
14157#[derive(Clone, PartialEq, ::prost::Message)]
14158pub struct UfshcdCommandFtraceEvent {
14159    #[prost(string, optional, tag="1")]
14160    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
14161    #[prost(uint32, optional, tag="2")]
14162    pub doorbell: ::core::option::Option<u32>,
14163    #[prost(uint32, optional, tag="3")]
14164    pub intr: ::core::option::Option<u32>,
14165    #[prost(uint64, optional, tag="4")]
14166    pub lba: ::core::option::Option<u64>,
14167    #[prost(uint32, optional, tag="5")]
14168    pub opcode: ::core::option::Option<u32>,
14169    #[prost(string, optional, tag="6")]
14170    pub str: ::core::option::Option<::prost::alloc::string::String>,
14171    #[prost(uint32, optional, tag="7")]
14172    pub tag: ::core::option::Option<u32>,
14173    #[prost(int32, optional, tag="8")]
14174    pub transfer_len: ::core::option::Option<i32>,
14175    #[prost(uint32, optional, tag="9")]
14176    pub group_id: ::core::option::Option<u32>,
14177    #[prost(uint32, optional, tag="10")]
14178    pub str_t: ::core::option::Option<u32>,
14179}
14180#[derive(Clone, PartialEq, ::prost::Message)]
14181pub struct UfshcdClkGatingFtraceEvent {
14182    #[prost(string, optional, tag="1")]
14183    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
14184    #[prost(int32, optional, tag="2")]
14185    pub state: ::core::option::Option<i32>,
14186}
14187// End of protos/perfetto/trace/ftrace/ufs.proto
14188
14189// Begin of protos/perfetto/trace/ftrace/v4l2.proto
14190
14191#[derive(Clone, PartialEq, ::prost::Message)]
14192pub struct V4l2QbufFtraceEvent {
14193    #[prost(uint32, optional, tag="1")]
14194    pub bytesused: ::core::option::Option<u32>,
14195    #[prost(uint32, optional, tag="2")]
14196    pub field: ::core::option::Option<u32>,
14197    #[prost(uint32, optional, tag="3")]
14198    pub flags: ::core::option::Option<u32>,
14199    #[prost(uint32, optional, tag="4")]
14200    pub index: ::core::option::Option<u32>,
14201    #[prost(int32, optional, tag="5")]
14202    pub minor: ::core::option::Option<i32>,
14203    #[prost(uint32, optional, tag="6")]
14204    pub sequence: ::core::option::Option<u32>,
14205    #[prost(uint32, optional, tag="7")]
14206    pub timecode_flags: ::core::option::Option<u32>,
14207    #[prost(uint32, optional, tag="8")]
14208    pub timecode_frames: ::core::option::Option<u32>,
14209    #[prost(uint32, optional, tag="9")]
14210    pub timecode_hours: ::core::option::Option<u32>,
14211    #[prost(uint32, optional, tag="10")]
14212    pub timecode_minutes: ::core::option::Option<u32>,
14213    #[prost(uint32, optional, tag="11")]
14214    pub timecode_seconds: ::core::option::Option<u32>,
14215    #[prost(uint32, optional, tag="12")]
14216    pub timecode_type: ::core::option::Option<u32>,
14217    #[prost(uint32, optional, tag="13")]
14218    pub timecode_userbits0: ::core::option::Option<u32>,
14219    #[prost(uint32, optional, tag="14")]
14220    pub timecode_userbits1: ::core::option::Option<u32>,
14221    #[prost(uint32, optional, tag="15")]
14222    pub timecode_userbits2: ::core::option::Option<u32>,
14223    #[prost(uint32, optional, tag="16")]
14224    pub timecode_userbits3: ::core::option::Option<u32>,
14225    #[prost(int64, optional, tag="17")]
14226    pub timestamp: ::core::option::Option<i64>,
14227    #[prost(uint32, optional, tag="18")]
14228    pub r#type: ::core::option::Option<u32>,
14229}
14230#[derive(Clone, PartialEq, ::prost::Message)]
14231pub struct V4l2DqbufFtraceEvent {
14232    #[prost(uint32, optional, tag="1")]
14233    pub bytesused: ::core::option::Option<u32>,
14234    #[prost(uint32, optional, tag="2")]
14235    pub field: ::core::option::Option<u32>,
14236    #[prost(uint32, optional, tag="3")]
14237    pub flags: ::core::option::Option<u32>,
14238    #[prost(uint32, optional, tag="4")]
14239    pub index: ::core::option::Option<u32>,
14240    #[prost(int32, optional, tag="5")]
14241    pub minor: ::core::option::Option<i32>,
14242    #[prost(uint32, optional, tag="6")]
14243    pub sequence: ::core::option::Option<u32>,
14244    #[prost(uint32, optional, tag="7")]
14245    pub timecode_flags: ::core::option::Option<u32>,
14246    #[prost(uint32, optional, tag="8")]
14247    pub timecode_frames: ::core::option::Option<u32>,
14248    #[prost(uint32, optional, tag="9")]
14249    pub timecode_hours: ::core::option::Option<u32>,
14250    #[prost(uint32, optional, tag="10")]
14251    pub timecode_minutes: ::core::option::Option<u32>,
14252    #[prost(uint32, optional, tag="11")]
14253    pub timecode_seconds: ::core::option::Option<u32>,
14254    #[prost(uint32, optional, tag="12")]
14255    pub timecode_type: ::core::option::Option<u32>,
14256    #[prost(uint32, optional, tag="13")]
14257    pub timecode_userbits0: ::core::option::Option<u32>,
14258    #[prost(uint32, optional, tag="14")]
14259    pub timecode_userbits1: ::core::option::Option<u32>,
14260    #[prost(uint32, optional, tag="15")]
14261    pub timecode_userbits2: ::core::option::Option<u32>,
14262    #[prost(uint32, optional, tag="16")]
14263    pub timecode_userbits3: ::core::option::Option<u32>,
14264    #[prost(int64, optional, tag="17")]
14265    pub timestamp: ::core::option::Option<i64>,
14266    #[prost(uint32, optional, tag="18")]
14267    pub r#type: ::core::option::Option<u32>,
14268}
14269#[derive(Clone, PartialEq, ::prost::Message)]
14270pub struct Vb2V4l2BufQueueFtraceEvent {
14271    #[prost(uint32, optional, tag="1")]
14272    pub field: ::core::option::Option<u32>,
14273    #[prost(uint32, optional, tag="2")]
14274    pub flags: ::core::option::Option<u32>,
14275    #[prost(int32, optional, tag="3")]
14276    pub minor: ::core::option::Option<i32>,
14277    #[prost(uint32, optional, tag="4")]
14278    pub sequence: ::core::option::Option<u32>,
14279    #[prost(uint32, optional, tag="5")]
14280    pub timecode_flags: ::core::option::Option<u32>,
14281    #[prost(uint32, optional, tag="6")]
14282    pub timecode_frames: ::core::option::Option<u32>,
14283    #[prost(uint32, optional, tag="7")]
14284    pub timecode_hours: ::core::option::Option<u32>,
14285    #[prost(uint32, optional, tag="8")]
14286    pub timecode_minutes: ::core::option::Option<u32>,
14287    #[prost(uint32, optional, tag="9")]
14288    pub timecode_seconds: ::core::option::Option<u32>,
14289    #[prost(uint32, optional, tag="10")]
14290    pub timecode_type: ::core::option::Option<u32>,
14291    #[prost(uint32, optional, tag="11")]
14292    pub timecode_userbits0: ::core::option::Option<u32>,
14293    #[prost(uint32, optional, tag="12")]
14294    pub timecode_userbits1: ::core::option::Option<u32>,
14295    #[prost(uint32, optional, tag="13")]
14296    pub timecode_userbits2: ::core::option::Option<u32>,
14297    #[prost(uint32, optional, tag="14")]
14298    pub timecode_userbits3: ::core::option::Option<u32>,
14299    #[prost(int64, optional, tag="15")]
14300    pub timestamp: ::core::option::Option<i64>,
14301}
14302#[derive(Clone, PartialEq, ::prost::Message)]
14303pub struct Vb2V4l2BufDoneFtraceEvent {
14304    #[prost(uint32, optional, tag="1")]
14305    pub field: ::core::option::Option<u32>,
14306    #[prost(uint32, optional, tag="2")]
14307    pub flags: ::core::option::Option<u32>,
14308    #[prost(int32, optional, tag="3")]
14309    pub minor: ::core::option::Option<i32>,
14310    #[prost(uint32, optional, tag="4")]
14311    pub sequence: ::core::option::Option<u32>,
14312    #[prost(uint32, optional, tag="5")]
14313    pub timecode_flags: ::core::option::Option<u32>,
14314    #[prost(uint32, optional, tag="6")]
14315    pub timecode_frames: ::core::option::Option<u32>,
14316    #[prost(uint32, optional, tag="7")]
14317    pub timecode_hours: ::core::option::Option<u32>,
14318    #[prost(uint32, optional, tag="8")]
14319    pub timecode_minutes: ::core::option::Option<u32>,
14320    #[prost(uint32, optional, tag="9")]
14321    pub timecode_seconds: ::core::option::Option<u32>,
14322    #[prost(uint32, optional, tag="10")]
14323    pub timecode_type: ::core::option::Option<u32>,
14324    #[prost(uint32, optional, tag="11")]
14325    pub timecode_userbits0: ::core::option::Option<u32>,
14326    #[prost(uint32, optional, tag="12")]
14327    pub timecode_userbits1: ::core::option::Option<u32>,
14328    #[prost(uint32, optional, tag="13")]
14329    pub timecode_userbits2: ::core::option::Option<u32>,
14330    #[prost(uint32, optional, tag="14")]
14331    pub timecode_userbits3: ::core::option::Option<u32>,
14332    #[prost(int64, optional, tag="15")]
14333    pub timestamp: ::core::option::Option<i64>,
14334}
14335#[derive(Clone, PartialEq, ::prost::Message)]
14336pub struct Vb2V4l2QbufFtraceEvent {
14337    #[prost(uint32, optional, tag="1")]
14338    pub field: ::core::option::Option<u32>,
14339    #[prost(uint32, optional, tag="2")]
14340    pub flags: ::core::option::Option<u32>,
14341    #[prost(int32, optional, tag="3")]
14342    pub minor: ::core::option::Option<i32>,
14343    #[prost(uint32, optional, tag="4")]
14344    pub sequence: ::core::option::Option<u32>,
14345    #[prost(uint32, optional, tag="5")]
14346    pub timecode_flags: ::core::option::Option<u32>,
14347    #[prost(uint32, optional, tag="6")]
14348    pub timecode_frames: ::core::option::Option<u32>,
14349    #[prost(uint32, optional, tag="7")]
14350    pub timecode_hours: ::core::option::Option<u32>,
14351    #[prost(uint32, optional, tag="8")]
14352    pub timecode_minutes: ::core::option::Option<u32>,
14353    #[prost(uint32, optional, tag="9")]
14354    pub timecode_seconds: ::core::option::Option<u32>,
14355    #[prost(uint32, optional, tag="10")]
14356    pub timecode_type: ::core::option::Option<u32>,
14357    #[prost(uint32, optional, tag="11")]
14358    pub timecode_userbits0: ::core::option::Option<u32>,
14359    #[prost(uint32, optional, tag="12")]
14360    pub timecode_userbits1: ::core::option::Option<u32>,
14361    #[prost(uint32, optional, tag="13")]
14362    pub timecode_userbits2: ::core::option::Option<u32>,
14363    #[prost(uint32, optional, tag="14")]
14364    pub timecode_userbits3: ::core::option::Option<u32>,
14365    #[prost(int64, optional, tag="15")]
14366    pub timestamp: ::core::option::Option<i64>,
14367}
14368#[derive(Clone, PartialEq, ::prost::Message)]
14369pub struct Vb2V4l2DqbufFtraceEvent {
14370    #[prost(uint32, optional, tag="1")]
14371    pub field: ::core::option::Option<u32>,
14372    #[prost(uint32, optional, tag="2")]
14373    pub flags: ::core::option::Option<u32>,
14374    #[prost(int32, optional, tag="3")]
14375    pub minor: ::core::option::Option<i32>,
14376    #[prost(uint32, optional, tag="4")]
14377    pub sequence: ::core::option::Option<u32>,
14378    #[prost(uint32, optional, tag="5")]
14379    pub timecode_flags: ::core::option::Option<u32>,
14380    #[prost(uint32, optional, tag="6")]
14381    pub timecode_frames: ::core::option::Option<u32>,
14382    #[prost(uint32, optional, tag="7")]
14383    pub timecode_hours: ::core::option::Option<u32>,
14384    #[prost(uint32, optional, tag="8")]
14385    pub timecode_minutes: ::core::option::Option<u32>,
14386    #[prost(uint32, optional, tag="9")]
14387    pub timecode_seconds: ::core::option::Option<u32>,
14388    #[prost(uint32, optional, tag="10")]
14389    pub timecode_type: ::core::option::Option<u32>,
14390    #[prost(uint32, optional, tag="11")]
14391    pub timecode_userbits0: ::core::option::Option<u32>,
14392    #[prost(uint32, optional, tag="12")]
14393    pub timecode_userbits1: ::core::option::Option<u32>,
14394    #[prost(uint32, optional, tag="13")]
14395    pub timecode_userbits2: ::core::option::Option<u32>,
14396    #[prost(uint32, optional, tag="14")]
14397    pub timecode_userbits3: ::core::option::Option<u32>,
14398    #[prost(int64, optional, tag="15")]
14399    pub timestamp: ::core::option::Option<i64>,
14400}
14401// End of protos/perfetto/trace/ftrace/v4l2.proto
14402
14403// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
14404
14405#[derive(Clone, PartialEq, ::prost::Message)]
14406pub struct VirtioGpuCmdQueueFtraceEvent {
14407    #[prost(uint32, optional, tag="1")]
14408    pub ctx_id: ::core::option::Option<u32>,
14409    #[prost(int32, optional, tag="2")]
14410    pub dev: ::core::option::Option<i32>,
14411    #[prost(uint64, optional, tag="3")]
14412    pub fence_id: ::core::option::Option<u64>,
14413    #[prost(uint32, optional, tag="4")]
14414    pub flags: ::core::option::Option<u32>,
14415    #[prost(string, optional, tag="5")]
14416    pub name: ::core::option::Option<::prost::alloc::string::String>,
14417    #[prost(uint32, optional, tag="6")]
14418    pub num_free: ::core::option::Option<u32>,
14419    #[prost(uint32, optional, tag="7")]
14420    pub seqno: ::core::option::Option<u32>,
14421    #[prost(uint32, optional, tag="8")]
14422    pub r#type: ::core::option::Option<u32>,
14423    #[prost(uint32, optional, tag="9")]
14424    pub vq: ::core::option::Option<u32>,
14425}
14426#[derive(Clone, PartialEq, ::prost::Message)]
14427pub struct VirtioGpuCmdResponseFtraceEvent {
14428    #[prost(uint32, optional, tag="1")]
14429    pub ctx_id: ::core::option::Option<u32>,
14430    #[prost(int32, optional, tag="2")]
14431    pub dev: ::core::option::Option<i32>,
14432    #[prost(uint64, optional, tag="3")]
14433    pub fence_id: ::core::option::Option<u64>,
14434    #[prost(uint32, optional, tag="4")]
14435    pub flags: ::core::option::Option<u32>,
14436    #[prost(string, optional, tag="5")]
14437    pub name: ::core::option::Option<::prost::alloc::string::String>,
14438    #[prost(uint32, optional, tag="6")]
14439    pub num_free: ::core::option::Option<u32>,
14440    #[prost(uint32, optional, tag="7")]
14441    pub seqno: ::core::option::Option<u32>,
14442    #[prost(uint32, optional, tag="8")]
14443    pub r#type: ::core::option::Option<u32>,
14444    #[prost(uint32, optional, tag="9")]
14445    pub vq: ::core::option::Option<u32>,
14446}
14447// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
14448
14449// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
14450
14451#[derive(Clone, PartialEq, ::prost::Message)]
14452pub struct VirtioVideoCmdFtraceEvent {
14453    #[prost(uint32, optional, tag="1")]
14454    pub stream_id: ::core::option::Option<u32>,
14455    #[prost(uint32, optional, tag="2")]
14456    pub r#type: ::core::option::Option<u32>,
14457}
14458#[derive(Clone, PartialEq, ::prost::Message)]
14459pub struct VirtioVideoCmdDoneFtraceEvent {
14460    #[prost(uint32, optional, tag="1")]
14461    pub stream_id: ::core::option::Option<u32>,
14462    #[prost(uint32, optional, tag="2")]
14463    pub r#type: ::core::option::Option<u32>,
14464}
14465#[derive(Clone, PartialEq, ::prost::Message)]
14466pub struct VirtioVideoResourceQueueFtraceEvent {
14467    #[prost(uint32, optional, tag="1")]
14468    pub data_size0: ::core::option::Option<u32>,
14469    #[prost(uint32, optional, tag="2")]
14470    pub data_size1: ::core::option::Option<u32>,
14471    #[prost(uint32, optional, tag="3")]
14472    pub data_size2: ::core::option::Option<u32>,
14473    #[prost(uint32, optional, tag="4")]
14474    pub data_size3: ::core::option::Option<u32>,
14475    #[prost(uint32, optional, tag="5")]
14476    pub queue_type: ::core::option::Option<u32>,
14477    #[prost(int32, optional, tag="6")]
14478    pub resource_id: ::core::option::Option<i32>,
14479    #[prost(int32, optional, tag="7")]
14480    pub stream_id: ::core::option::Option<i32>,
14481    #[prost(uint64, optional, tag="8")]
14482    pub timestamp: ::core::option::Option<u64>,
14483}
14484#[derive(Clone, PartialEq, ::prost::Message)]
14485pub struct VirtioVideoResourceQueueDoneFtraceEvent {
14486    #[prost(uint32, optional, tag="1")]
14487    pub data_size0: ::core::option::Option<u32>,
14488    #[prost(uint32, optional, tag="2")]
14489    pub data_size1: ::core::option::Option<u32>,
14490    #[prost(uint32, optional, tag="3")]
14491    pub data_size2: ::core::option::Option<u32>,
14492    #[prost(uint32, optional, tag="4")]
14493    pub data_size3: ::core::option::Option<u32>,
14494    #[prost(uint32, optional, tag="5")]
14495    pub queue_type: ::core::option::Option<u32>,
14496    #[prost(int32, optional, tag="6")]
14497    pub resource_id: ::core::option::Option<i32>,
14498    #[prost(int32, optional, tag="7")]
14499    pub stream_id: ::core::option::Option<i32>,
14500    #[prost(uint64, optional, tag="8")]
14501    pub timestamp: ::core::option::Option<u64>,
14502}
14503// End of protos/perfetto/trace/ftrace/virtio_video.proto
14504
14505// Begin of protos/perfetto/trace/ftrace/vmscan.proto
14506
14507#[derive(Clone, PartialEq, ::prost::Message)]
14508pub struct MmVmscanDirectReclaimBeginFtraceEvent {
14509    #[prost(int32, optional, tag="1")]
14510    pub order: ::core::option::Option<i32>,
14511    #[prost(int32, optional, tag="2")]
14512    pub may_writepage: ::core::option::Option<i32>,
14513    #[prost(uint32, optional, tag="3")]
14514    pub gfp_flags: ::core::option::Option<u32>,
14515}
14516#[derive(Clone, PartialEq, ::prost::Message)]
14517pub struct MmVmscanDirectReclaimEndFtraceEvent {
14518    #[prost(uint64, optional, tag="1")]
14519    pub nr_reclaimed: ::core::option::Option<u64>,
14520}
14521#[derive(Clone, PartialEq, ::prost::Message)]
14522pub struct MmVmscanKswapdWakeFtraceEvent {
14523    #[prost(int32, optional, tag="1")]
14524    pub nid: ::core::option::Option<i32>,
14525    #[prost(int32, optional, tag="2")]
14526    pub order: ::core::option::Option<i32>,
14527    #[prost(int32, optional, tag="3")]
14528    pub zid: ::core::option::Option<i32>,
14529}
14530#[derive(Clone, PartialEq, ::prost::Message)]
14531pub struct MmVmscanKswapdSleepFtraceEvent {
14532    #[prost(int32, optional, tag="1")]
14533    pub nid: ::core::option::Option<i32>,
14534}
14535#[derive(Clone, PartialEq, ::prost::Message)]
14536pub struct MmShrinkSlabStartFtraceEvent {
14537    #[prost(uint64, optional, tag="1")]
14538    pub cache_items: ::core::option::Option<u64>,
14539    #[prost(uint64, optional, tag="2")]
14540    pub delta: ::core::option::Option<u64>,
14541    #[prost(uint32, optional, tag="3")]
14542    pub gfp_flags: ::core::option::Option<u32>,
14543    #[prost(uint64, optional, tag="4")]
14544    pub lru_pgs: ::core::option::Option<u64>,
14545    #[prost(int64, optional, tag="5")]
14546    pub nr_objects_to_shrink: ::core::option::Option<i64>,
14547    #[prost(uint64, optional, tag="6")]
14548    pub pgs_scanned: ::core::option::Option<u64>,
14549    #[prost(uint64, optional, tag="7")]
14550    pub shr: ::core::option::Option<u64>,
14551    #[prost(uint64, optional, tag="8")]
14552    pub shrink: ::core::option::Option<u64>,
14553    #[prost(uint64, optional, tag="9")]
14554    pub total_scan: ::core::option::Option<u64>,
14555    #[prost(int32, optional, tag="10")]
14556    pub nid: ::core::option::Option<i32>,
14557    #[prost(int32, optional, tag="11")]
14558    pub priority: ::core::option::Option<i32>,
14559}
14560#[derive(Clone, PartialEq, ::prost::Message)]
14561pub struct MmShrinkSlabEndFtraceEvent {
14562    #[prost(int64, optional, tag="1")]
14563    pub new_scan: ::core::option::Option<i64>,
14564    #[prost(int32, optional, tag="2")]
14565    pub retval: ::core::option::Option<i32>,
14566    #[prost(uint64, optional, tag="3")]
14567    pub shr: ::core::option::Option<u64>,
14568    #[prost(uint64, optional, tag="4")]
14569    pub shrink: ::core::option::Option<u64>,
14570    #[prost(int64, optional, tag="5")]
14571    pub total_scan: ::core::option::Option<i64>,
14572    #[prost(int64, optional, tag="6")]
14573    pub unused_scan: ::core::option::Option<i64>,
14574    #[prost(int32, optional, tag="7")]
14575    pub nid: ::core::option::Option<i32>,
14576}
14577// End of protos/perfetto/trace/ftrace/vmscan.proto
14578
14579// Begin of protos/perfetto/trace/ftrace/workqueue.proto
14580
14581#[derive(Clone, PartialEq, ::prost::Message)]
14582pub struct WorkqueueActivateWorkFtraceEvent {
14583    #[prost(uint64, optional, tag="1")]
14584    pub work: ::core::option::Option<u64>,
14585}
14586#[derive(Clone, PartialEq, ::prost::Message)]
14587pub struct WorkqueueExecuteEndFtraceEvent {
14588    #[prost(uint64, optional, tag="1")]
14589    pub work: ::core::option::Option<u64>,
14590    #[prost(uint64, optional, tag="2")]
14591    pub function: ::core::option::Option<u64>,
14592}
14593#[derive(Clone, PartialEq, ::prost::Message)]
14594pub struct WorkqueueExecuteStartFtraceEvent {
14595    #[prost(uint64, optional, tag="1")]
14596    pub work: ::core::option::Option<u64>,
14597    #[prost(uint64, optional, tag="2")]
14598    pub function: ::core::option::Option<u64>,
14599}
14600#[derive(Clone, PartialEq, ::prost::Message)]
14601pub struct WorkqueueQueueWorkFtraceEvent {
14602    #[prost(uint64, optional, tag="1")]
14603    pub work: ::core::option::Option<u64>,
14604    #[prost(uint64, optional, tag="2")]
14605    pub function: ::core::option::Option<u64>,
14606    #[prost(uint64, optional, tag="3")]
14607    pub workqueue: ::core::option::Option<u64>,
14608    #[prost(uint32, optional, tag="4")]
14609    pub req_cpu: ::core::option::Option<u32>,
14610    #[prost(uint32, optional, tag="5")]
14611    pub cpu: ::core::option::Option<u32>,
14612}
14613// End of protos/perfetto/trace/ftrace/workqueue.proto
14614
14615// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
14616
14617#[derive(Clone, PartialEq, ::prost::Message)]
14618pub struct FtraceEvent {
14619    /// Timestamp in nanoseconds using .../tracing/trace_clock.
14620    #[prost(uint64, optional, tag="1")]
14621    pub timestamp: ::core::option::Option<u64>,
14622    /// Kernel pid (do not confuse with userspace pid aka tgid).
14623    #[prost(uint32, optional, tag="2")]
14624    pub pid: ::core::option::Option<u32>,
14625    /// Not populated in actual traces. Wire format might change.
14626    /// Placeholder declaration so that the ftrace parsing code accepts the
14627    /// existence of this common field. If this becomes needed for all events:
14628    /// consider merging with common_preempt_count to avoid extra proto tags.
14629    #[prost(uint32, optional, tag="5")]
14630    pub common_flags: ::core::option::Option<u32>,
14631    #[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")]
14632    pub event: ::core::option::Option<ftrace_event::Event>,
14633}
14634/// Nested message and enum types in `FtraceEvent`.
14635pub mod ftrace_event {
14636    #[derive(Clone, PartialEq, ::prost::Oneof)]
14637    pub enum Event {
14638        #[prost(message, tag="3")]
14639        Print(super::PrintFtraceEvent),
14640        #[prost(message, tag="4")]
14641        SchedSwitch(super::SchedSwitchFtraceEvent),
14642        /// removed field with id 5;
14643        /// removed field with id 6;
14644        /// removed field with id 7;
14645        /// removed field with id 8;
14646        /// removed field with id 9;
14647        /// removed field with id 10;
14648        #[prost(message, tag="11")]
14649        CpuFrequency(super::CpuFrequencyFtraceEvent),
14650        #[prost(message, tag="12")]
14651        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
14652        #[prost(message, tag="13")]
14653        CpuIdle(super::CpuIdleFtraceEvent),
14654        #[prost(message, tag="14")]
14655        ClockEnable(super::ClockEnableFtraceEvent),
14656        #[prost(message, tag="15")]
14657        ClockDisable(super::ClockDisableFtraceEvent),
14658        #[prost(message, tag="16")]
14659        ClockSetRate(super::ClockSetRateFtraceEvent),
14660        #[prost(message, tag="17")]
14661        SchedWakeup(super::SchedWakeupFtraceEvent),
14662        #[prost(message, tag="18")]
14663        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
14664        #[prost(message, tag="19")]
14665        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
14666        #[prost(message, tag="20")]
14667        SchedWaking(super::SchedWakingFtraceEvent),
14668        #[prost(message, tag="21")]
14669        IpiEntry(super::IpiEntryFtraceEvent),
14670        #[prost(message, tag="22")]
14671        IpiExit(super::IpiExitFtraceEvent),
14672        #[prost(message, tag="23")]
14673        IpiRaise(super::IpiRaiseFtraceEvent),
14674        #[prost(message, tag="24")]
14675        SoftirqEntry(super::SoftirqEntryFtraceEvent),
14676        #[prost(message, tag="25")]
14677        SoftirqExit(super::SoftirqExitFtraceEvent),
14678        #[prost(message, tag="26")]
14679        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
14680        #[prost(message, tag="27")]
14681        I2cRead(super::I2cReadFtraceEvent),
14682        #[prost(message, tag="28")]
14683        I2cWrite(super::I2cWriteFtraceEvent),
14684        #[prost(message, tag="29")]
14685        I2cResult(super::I2cResultFtraceEvent),
14686        #[prost(message, tag="30")]
14687        I2cReply(super::I2cReplyFtraceEvent),
14688        #[prost(message, tag="31")]
14689        SmbusRead(super::SmbusReadFtraceEvent),
14690        #[prost(message, tag="32")]
14691        SmbusWrite(super::SmbusWriteFtraceEvent),
14692        #[prost(message, tag="33")]
14693        SmbusResult(super::SmbusResultFtraceEvent),
14694        #[prost(message, tag="34")]
14695        SmbusReply(super::SmbusReplyFtraceEvent),
14696        #[prost(message, tag="35")]
14697        LowmemoryKill(super::LowmemoryKillFtraceEvent),
14698        #[prost(message, tag="36")]
14699        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
14700        #[prost(message, tag="37")]
14701        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
14702        #[prost(message, tag="38")]
14703        SyncPt(super::SyncPtFtraceEvent),
14704        #[prost(message, tag="39")]
14705        SyncTimeline(super::SyncTimelineFtraceEvent),
14706        #[prost(message, tag="40")]
14707        SyncWait(super::SyncWaitFtraceEvent),
14708        #[prost(message, tag="41")]
14709        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
14710        #[prost(message, tag="42")]
14711        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
14712        #[prost(message, tag="43")]
14713        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
14714        #[prost(message, tag="44")]
14715        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
14716        #[prost(message, tag="45")]
14717        BlockRqIssue(super::BlockRqIssueFtraceEvent),
14718        #[prost(message, tag="46")]
14719        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
14720        #[prost(message, tag="47")]
14721        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
14722        #[prost(message, tag="48")]
14723        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
14724        #[prost(message, tag="49")]
14725        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
14726        #[prost(message, tag="50")]
14727        BinderTransaction(super::BinderTransactionFtraceEvent),
14728        #[prost(message, tag="51")]
14729        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
14730        #[prost(message, tag="52")]
14731        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
14732        #[prost(message, tag="53")]
14733        BinderLock(super::BinderLockFtraceEvent),
14734        #[prost(message, tag="54")]
14735        BinderLocked(super::BinderLockedFtraceEvent),
14736        #[prost(message, tag="55")]
14737        BinderUnlock(super::BinderUnlockFtraceEvent),
14738        #[prost(message, tag="56")]
14739        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
14740        #[prost(message, tag="57")]
14741        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
14742        #[prost(message, tag="58")]
14743        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
14744        #[prost(message, tag="59")]
14745        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
14746        #[prost(message, tag="60")]
14747        RegulatorDisable(super::RegulatorDisableFtraceEvent),
14748        #[prost(message, tag="61")]
14749        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
14750        #[prost(message, tag="62")]
14751        RegulatorEnable(super::RegulatorEnableFtraceEvent),
14752        #[prost(message, tag="63")]
14753        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
14754        #[prost(message, tag="64")]
14755        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
14756        #[prost(message, tag="65")]
14757        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
14758        #[prost(message, tag="66")]
14759        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
14760        #[prost(message, tag="67")]
14761        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
14762        #[prost(message, tag="68")]
14763        CgroupMkdir(super::CgroupMkdirFtraceEvent),
14764        #[prost(message, tag="69")]
14765        CgroupRemount(super::CgroupRemountFtraceEvent),
14766        #[prost(message, tag="70")]
14767        CgroupRmdir(super::CgroupRmdirFtraceEvent),
14768        #[prost(message, tag="71")]
14769        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
14770        #[prost(message, tag="72")]
14771        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
14772        #[prost(message, tag="73")]
14773        CgroupRelease(super::CgroupReleaseFtraceEvent),
14774        #[prost(message, tag="74")]
14775        CgroupRename(super::CgroupRenameFtraceEvent),
14776        #[prost(message, tag="75")]
14777        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
14778        #[prost(message, tag="76")]
14779        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
14780        #[prost(message, tag="77")]
14781        MdpCommit(super::MdpCommitFtraceEvent),
14782        #[prost(message, tag="78")]
14783        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
14784        #[prost(message, tag="79")]
14785        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
14786        #[prost(message, tag="80")]
14787        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
14788        #[prost(message, tag="81")]
14789        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
14790        #[prost(message, tag="82")]
14791        MdpCompareBw(super::MdpCompareBwFtraceEvent),
14792        #[prost(message, tag="83")]
14793        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
14794        #[prost(message, tag="84")]
14795        MdpSsppSet(super::MdpSsppSetFtraceEvent),
14796        #[prost(message, tag="85")]
14797        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
14798        #[prost(message, tag="86")]
14799        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
14800        #[prost(message, tag="87")]
14801        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
14802        #[prost(message, tag="88")]
14803        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
14804        #[prost(message, tag="89")]
14805        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
14806        #[prost(message, tag="90")]
14807        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
14808        #[prost(message, tag="91")]
14809        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
14810        #[prost(message, tag="92")]
14811        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
14812        #[prost(message, tag="93")]
14813        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
14814        #[prost(message, tag="94")]
14815        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
14816        #[prost(message, tag="95")]
14817        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
14818        #[prost(message, tag="96")]
14819        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
14820        #[prost(message, tag="97")]
14821        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
14822        #[prost(message, tag="98")]
14823        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
14824        #[prost(message, tag="99")]
14825        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
14826        #[prost(message, tag="100")]
14827        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
14828        #[prost(message, tag="101")]
14829        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
14830        #[prost(message, tag="102")]
14831        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
14832        #[prost(message, tag="103")]
14833        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
14834        #[prost(message, tag="104")]
14835        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
14836        #[prost(message, tag="105")]
14837        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
14838        #[prost(message, tag="106")]
14839        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
14840        #[prost(message, tag="107")]
14841        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
14842        #[prost(message, tag="108")]
14843        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
14844        #[prost(message, tag="109")]
14845        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
14846        #[prost(message, tag="110")]
14847        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
14848        #[prost(message, tag="111")]
14849        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
14850        #[prost(message, tag="112")]
14851        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
14852        #[prost(message, tag="113")]
14853        SuspendResume(super::SuspendResumeFtraceEvent),
14854        #[prost(message, tag="114")]
14855        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
14856        #[prost(message, tag="115")]
14857        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
14858        #[prost(message, tag="116")]
14859        BlockBioBounce(super::BlockBioBounceFtraceEvent),
14860        #[prost(message, tag="117")]
14861        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
14862        #[prost(message, tag="118")]
14863        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
14864        #[prost(message, tag="119")]
14865        BlockBioQueue(super::BlockBioQueueFtraceEvent),
14866        #[prost(message, tag="120")]
14867        BlockBioRemap(super::BlockBioRemapFtraceEvent),
14868        #[prost(message, tag="121")]
14869        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
14870        #[prost(message, tag="122")]
14871        BlockGetrq(super::BlockGetrqFtraceEvent),
14872        #[prost(message, tag="123")]
14873        BlockPlug(super::BlockPlugFtraceEvent),
14874        #[prost(message, tag="124")]
14875        BlockRqAbort(super::BlockRqAbortFtraceEvent),
14876        #[prost(message, tag="125")]
14877        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
14878        #[prost(message, tag="126")]
14879        BlockRqInsert(super::BlockRqInsertFtraceEvent),
14880        /// removed field with id 127;
14881        #[prost(message, tag="128")]
14882        BlockRqRemap(super::BlockRqRemapFtraceEvent),
14883        #[prost(message, tag="129")]
14884        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
14885        #[prost(message, tag="130")]
14886        BlockSleeprq(super::BlockSleeprqFtraceEvent),
14887        #[prost(message, tag="131")]
14888        BlockSplit(super::BlockSplitFtraceEvent),
14889        #[prost(message, tag="132")]
14890        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
14891        #[prost(message, tag="133")]
14892        BlockUnplug(super::BlockUnplugFtraceEvent),
14893        #[prost(message, tag="134")]
14894        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
14895        #[prost(message, tag="135")]
14896        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
14897        #[prost(message, tag="136")]
14898        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
14899        #[prost(message, tag="137")]
14900        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
14901        #[prost(message, tag="138")]
14902        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
14903        #[prost(message, tag="139")]
14904        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
14905        #[prost(message, tag="140")]
14906        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
14907        #[prost(message, tag="141")]
14908        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
14909        #[prost(message, tag="142")]
14910        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
14911        #[prost(message, tag="143")]
14912        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
14913        #[prost(message, tag="144")]
14914        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
14915        #[prost(message, tag="145")]
14916        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
14917        #[prost(message, tag="146")]
14918        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
14919        #[prost(message, tag="147")]
14920        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
14921        #[prost(message, tag="148")]
14922        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
14923        #[prost(message, tag="149")]
14924        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
14925        #[prost(message, tag="150")]
14926        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
14927        #[prost(message, tag="151")]
14928        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
14929        #[prost(message, tag="152")]
14930        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
14931        #[prost(message, tag="153")]
14932        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
14933        #[prost(message, tag="154")]
14934        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
14935        #[prost(message, tag="155")]
14936        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
14937        #[prost(message, tag="156")]
14938        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
14939        #[prost(message, tag="157")]
14940        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
14941        #[prost(message, tag="158")]
14942        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
14943        #[prost(message, tag="159")]
14944        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
14945        #[prost(message, tag="160")]
14946        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
14947        #[prost(message, tag="161")]
14948        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
14949        #[prost(message, tag="162")]
14950        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
14951        #[prost(message, tag="163")]
14952        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
14953        #[prost(message, tag="164")]
14954        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
14955        #[prost(message, tag="165")]
14956        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
14957        #[prost(message, tag="166")]
14958        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
14959        #[prost(message, tag="167")]
14960        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
14961        #[prost(message, tag="168")]
14962        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
14963        #[prost(message, tag="169")]
14964        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
14965        #[prost(message, tag="170")]
14966        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
14967        #[prost(message, tag="171")]
14968        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
14969        #[prost(message, tag="172")]
14970        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
14971        #[prost(message, tag="173")]
14972        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
14973        #[prost(message, tag="174")]
14974        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
14975        #[prost(message, tag="175")]
14976        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
14977        #[prost(message, tag="176")]
14978        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
14979        #[prost(message, tag="177")]
14980        Ext4Forget(super::Ext4ForgetFtraceEvent),
14981        #[prost(message, tag="178")]
14982        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
14983        #[prost(message, tag="179")]
14984        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
14985        #[prost(message, tag="180")]
14986        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
14987        #[prost(message, tag="181")]
14988        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
14989        #[prost(message, tag="182")]
14990        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
14991        #[prost(message, tag="183")]
14992        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
14993        #[prost(message, tag="184")]
14994        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
14995        #[prost(message, tag="185")]
14996        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
14997        #[prost(message, tag="186")]
14998        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
14999        #[prost(message, tag="187")]
15000        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
15001        #[prost(message, tag="188")]
15002        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
15003        #[prost(message, tag="189")]
15004        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
15005        #[prost(message, tag="190")]
15006        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
15007        #[prost(message, tag="191")]
15008        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
15009        #[prost(message, tag="192")]
15010        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
15011        #[prost(message, tag="193")]
15012        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
15013        #[prost(message, tag="194")]
15014        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
15015        #[prost(message, tag="195")]
15016        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
15017        #[prost(message, tag="196")]
15018        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
15019        #[prost(message, tag="197")]
15020        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
15021        #[prost(message, tag="198")]
15022        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
15023        #[prost(message, tag="199")]
15024        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
15025        #[prost(message, tag="200")]
15026        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
15027        #[prost(message, tag="201")]
15028        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
15029        #[prost(message, tag="202")]
15030        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
15031        #[prost(message, tag="203")]
15032        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
15033        #[prost(message, tag="204")]
15034        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
15035        #[prost(message, tag="205")]
15036        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
15037        #[prost(message, tag="206")]
15038        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
15039        #[prost(message, tag="207")]
15040        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
15041        #[prost(message, tag="208")]
15042        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
15043        #[prost(message, tag="209")]
15044        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
15045        #[prost(message, tag="210")]
15046        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
15047        #[prost(message, tag="211")]
15048        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
15049        #[prost(message, tag="212")]
15050        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
15051        #[prost(message, tag="213")]
15052        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
15053        #[prost(message, tag="214")]
15054        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
15055        #[prost(message, tag="215")]
15056        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
15057        #[prost(message, tag="216")]
15058        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
15059        #[prost(message, tag="217")]
15060        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
15061        #[prost(message, tag="218")]
15062        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
15063        #[prost(message, tag="219")]
15064        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
15065        /// removed field with id 220;
15066        /// removed field with id 221;
15067        /// removed field with id 222;
15068        /// removed field with id 223;
15069        /// removed field with id 224;
15070        /// removed field with id 225;
15071        /// removed field with id 226;
15072        /// removed field with id 227;
15073        /// removed field with id 228;
15074        /// removed field with id 229;
15075        #[prost(message, tag="230")]
15076        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
15077        #[prost(message, tag="231")]
15078        Ext4Writepage(super::Ext4WritepageFtraceEvent),
15079        #[prost(message, tag="232")]
15080        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
15081        #[prost(message, tag="233")]
15082        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
15083        #[prost(message, tag="234")]
15084        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
15085        #[prost(message, tag="235")]
15086        TaskNewtask(super::TaskNewtaskFtraceEvent),
15087        #[prost(message, tag="236")]
15088        TaskRename(super::TaskRenameFtraceEvent),
15089        #[prost(message, tag="237")]
15090        SchedProcessExec(super::SchedProcessExecFtraceEvent),
15091        #[prost(message, tag="238")]
15092        SchedProcessExit(super::SchedProcessExitFtraceEvent),
15093        #[prost(message, tag="239")]
15094        SchedProcessFork(super::SchedProcessForkFtraceEvent),
15095        #[prost(message, tag="240")]
15096        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
15097        #[prost(message, tag="241")]
15098        SchedProcessHang(super::SchedProcessHangFtraceEvent),
15099        #[prost(message, tag="242")]
15100        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
15101        #[prost(message, tag="243")]
15102        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
15103        #[prost(message, tag="244")]
15104        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
15105        #[prost(message, tag="245")]
15106        F2fsFallocate(super::F2fsFallocateFtraceEvent),
15107        #[prost(message, tag="246")]
15108        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
15109        #[prost(message, tag="247")]
15110        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
15111        #[prost(message, tag="248")]
15112        F2fsIget(super::F2fsIgetFtraceEvent),
15113        #[prost(message, tag="249")]
15114        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
15115        #[prost(message, tag="250")]
15116        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
15117        #[prost(message, tag="251")]
15118        F2fsReadpage(super::F2fsReadpageFtraceEvent),
15119        #[prost(message, tag="252")]
15120        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
15121        #[prost(message, tag="253")]
15122        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
15123        #[prost(message, tag="254")]
15124        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
15125        #[prost(message, tag="255")]
15126        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
15127        #[prost(message, tag="256")]
15128        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
15129        #[prost(message, tag="257")]
15130        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
15131        #[prost(message, tag="258")]
15132        F2fsTruncate(super::F2fsTruncateFtraceEvent),
15133        #[prost(message, tag="259")]
15134        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
15135        #[prost(message, tag="260")]
15136        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
15137        #[prost(message, tag="261")]
15138        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
15139        #[prost(message, tag="262")]
15140        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
15141        #[prost(message, tag="263")]
15142        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
15143        #[prost(message, tag="264")]
15144        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
15145        #[prost(message, tag="265")]
15146        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
15147        #[prost(message, tag="266")]
15148        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
15149        #[prost(message, tag="267")]
15150        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
15151        #[prost(message, tag="268")]
15152        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
15153        #[prost(message, tag="269")]
15154        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
15155        #[prost(message, tag="270")]
15156        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
15157        #[prost(message, tag="271")]
15158        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
15159        #[prost(message, tag="272")]
15160        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
15161        #[prost(message, tag="273")]
15162        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
15163        #[prost(message, tag="274")]
15164        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
15165        #[prost(message, tag="275")]
15166        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
15167        #[prost(message, tag="276")]
15168        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
15169        #[prost(message, tag="277")]
15170        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
15171        #[prost(message, tag="278")]
15172        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
15173        #[prost(message, tag="279")]
15174        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
15175        #[prost(message, tag="280")]
15176        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
15177        #[prost(message, tag="281")]
15178        IommuMapRange(super::IommuMapRangeFtraceEvent),
15179        #[prost(message, tag="282")]
15180        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
15181        #[prost(message, tag="283")]
15182        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
15183        #[prost(message, tag="284")]
15184        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
15185        #[prost(message, tag="285")]
15186        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
15187        #[prost(message, tag="286")]
15188        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
15189        #[prost(message, tag="287")]
15190        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
15191        #[prost(message, tag="288")]
15192        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
15193        #[prost(message, tag="289")]
15194        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
15195        #[prost(message, tag="290")]
15196        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
15197        #[prost(message, tag="291")]
15198        IonPrefetching(super::IonPrefetchingFtraceEvent),
15199        #[prost(message, tag="292")]
15200        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
15201        #[prost(message, tag="293")]
15202        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
15203        #[prost(message, tag="294")]
15204        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
15205        #[prost(message, tag="295")]
15206        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
15207        #[prost(message, tag="296")]
15208        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
15209        #[prost(message, tag="297")]
15210        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
15211        #[prost(message, tag="298")]
15212        Kfree(super::KfreeFtraceEvent),
15213        #[prost(message, tag="299")]
15214        Kmalloc(super::KmallocFtraceEvent),
15215        #[prost(message, tag="300")]
15216        KmallocNode(super::KmallocNodeFtraceEvent),
15217        #[prost(message, tag="301")]
15218        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
15219        #[prost(message, tag="302")]
15220        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
15221        #[prost(message, tag="303")]
15222        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
15223        #[prost(message, tag="304")]
15224        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
15225        #[prost(message, tag="305")]
15226        MigratePagesStart(super::MigratePagesStartFtraceEvent),
15227        #[prost(message, tag="306")]
15228        MigrateRetry(super::MigrateRetryFtraceEvent),
15229        #[prost(message, tag="307")]
15230        MmPageAlloc(super::MmPageAllocFtraceEvent),
15231        #[prost(message, tag="308")]
15232        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
15233        #[prost(message, tag="309")]
15234        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
15235        #[prost(message, tag="310")]
15236        MmPageFree(super::MmPageFreeFtraceEvent),
15237        #[prost(message, tag="311")]
15238        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
15239        #[prost(message, tag="312")]
15240        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
15241        #[prost(message, tag="313")]
15242        RssStat(super::RssStatFtraceEvent),
15243        #[prost(message, tag="314")]
15244        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
15245        #[prost(message, tag="315")]
15246        IonHeapGrow(super::IonHeapGrowFtraceEvent),
15247        #[prost(message, tag="316")]
15248        FenceInit(super::FenceInitFtraceEvent),
15249        #[prost(message, tag="317")]
15250        FenceDestroy(super::FenceDestroyFtraceEvent),
15251        #[prost(message, tag="318")]
15252        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
15253        #[prost(message, tag="319")]
15254        FenceSignaled(super::FenceSignaledFtraceEvent),
15255        #[prost(message, tag="320")]
15256        ClkEnable(super::ClkEnableFtraceEvent),
15257        #[prost(message, tag="321")]
15258        ClkDisable(super::ClkDisableFtraceEvent),
15259        #[prost(message, tag="322")]
15260        ClkSetRate(super::ClkSetRateFtraceEvent),
15261        #[prost(message, tag="323")]
15262        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
15263        #[prost(message, tag="324")]
15264        SignalDeliver(super::SignalDeliverFtraceEvent),
15265        #[prost(message, tag="325")]
15266        SignalGenerate(super::SignalGenerateFtraceEvent),
15267        #[prost(message, tag="326")]
15268        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
15269        #[prost(message, tag="327")]
15270        Generic(super::GenericFtraceEvent),
15271        #[prost(message, tag="328")]
15272        MmEventRecord(super::MmEventRecordFtraceEvent),
15273        #[prost(message, tag="329")]
15274        SysEnter(super::SysEnterFtraceEvent),
15275        #[prost(message, tag="330")]
15276        SysExit(super::SysExitFtraceEvent),
15277        #[prost(message, tag="331")]
15278        Zero(super::ZeroFtraceEvent),
15279        #[prost(message, tag="332")]
15280        GpuFrequency(super::GpuFrequencyFtraceEvent),
15281        #[prost(message, tag="333")]
15282        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
15283        #[prost(message, tag="334")]
15284        MarkVictim(super::MarkVictimFtraceEvent),
15285        #[prost(message, tag="335")]
15286        IonStat(super::IonStatFtraceEvent),
15287        #[prost(message, tag="336")]
15288        IonBufferCreate(super::IonBufferCreateFtraceEvent),
15289        #[prost(message, tag="337")]
15290        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
15291        #[prost(message, tag="338")]
15292        ScmCallStart(super::ScmCallStartFtraceEvent),
15293        #[prost(message, tag="339")]
15294        ScmCallEnd(super::ScmCallEndFtraceEvent),
15295        #[prost(message, tag="340")]
15296        GpuMemTotal(super::GpuMemTotalFtraceEvent),
15297        #[prost(message, tag="341")]
15298        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
15299        #[prost(message, tag="342")]
15300        CdevUpdate(super::CdevUpdateFtraceEvent),
15301        #[prost(message, tag="343")]
15302        CpuhpExit(super::CpuhpExitFtraceEvent),
15303        #[prost(message, tag="344")]
15304        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
15305        #[prost(message, tag="345")]
15306        CpuhpEnter(super::CpuhpEnterFtraceEvent),
15307        #[prost(message, tag="346")]
15308        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
15309        #[prost(message, tag="347")]
15310        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
15311        #[prost(message, tag="348")]
15312        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
15313        #[prost(message, tag="349")]
15314        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
15315        #[prost(message, tag="350")]
15316        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
15317        #[prost(message, tag="351")]
15318        DmaHeapStat(super::DmaHeapStatFtraceEvent),
15319        #[prost(message, tag="352")]
15320        CpuhpPause(super::CpuhpPauseFtraceEvent),
15321        #[prost(message, tag="353")]
15322        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
15323        #[prost(message, tag="354")]
15324        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
15325        #[prost(message, tag="355")]
15326        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
15327        #[prost(message, tag="356")]
15328        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
15329        #[prost(message, tag="357")]
15330        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
15331        #[prost(message, tag="358")]
15332        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
15333        #[prost(message, tag="359")]
15334        RssStatThrottled(super::RssStatThrottledFtraceEvent),
15335        #[prost(message, tag="360")]
15336        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
15337        #[prost(message, tag="361")]
15338        NetDevXmit(super::NetDevXmitFtraceEvent),
15339        #[prost(message, tag="362")]
15340        InetSockSetState(super::InetSockSetStateFtraceEvent),
15341        #[prost(message, tag="363")]
15342        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
15343        #[prost(message, tag="364")]
15344        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
15345        #[prost(message, tag="365")]
15346        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
15347        #[prost(message, tag="366")]
15348        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
15349        #[prost(message, tag="367")]
15350        KfreeSkb(super::KfreeSkbFtraceEvent),
15351        #[prost(message, tag="368")]
15352        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
15353        #[prost(message, tag="369")]
15354        KvmAckIrq(super::KvmAckIrqFtraceEvent),
15355        #[prost(message, tag="370")]
15356        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
15357        #[prost(message, tag="371")]
15358        KvmAgePage(super::KvmAgePageFtraceEvent),
15359        #[prost(message, tag="372")]
15360        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
15361        #[prost(message, tag="373")]
15362        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
15363        #[prost(message, tag="374")]
15364        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
15365        #[prost(message, tag="375")]
15366        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
15367        #[prost(message, tag="376")]
15368        KvmEntry(super::KvmEntryFtraceEvent),
15369        #[prost(message, tag="377")]
15370        KvmExit(super::KvmExitFtraceEvent),
15371        #[prost(message, tag="378")]
15372        KvmFpu(super::KvmFpuFtraceEvent),
15373        #[prost(message, tag="379")]
15374        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
15375        #[prost(message, tag="380")]
15376        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
15377        #[prost(message, tag="381")]
15378        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
15379        #[prost(message, tag="382")]
15380        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
15381        #[prost(message, tag="383")]
15382        KvmIrqLine(super::KvmIrqLineFtraceEvent),
15383        #[prost(message, tag="384")]
15384        KvmMmio(super::KvmMmioFtraceEvent),
15385        #[prost(message, tag="385")]
15386        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
15387        #[prost(message, tag="386")]
15388        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
15389        #[prost(message, tag="387")]
15390        KvmSetIrq(super::KvmSetIrqFtraceEvent),
15391        #[prost(message, tag="388")]
15392        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
15393        #[prost(message, tag="389")]
15394        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
15395        #[prost(message, tag="390")]
15396        KvmSysAccess(super::KvmSysAccessFtraceEvent),
15397        #[prost(message, tag="391")]
15398        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
15399        #[prost(message, tag="392")]
15400        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
15401        #[prost(message, tag="393")]
15402        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
15403        #[prost(message, tag="394")]
15404        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
15405        #[prost(message, tag="395")]
15406        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
15407        #[prost(message, tag="396")]
15408        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
15409        #[prost(message, tag="397")]
15410        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
15411        #[prost(message, tag="398")]
15412        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
15413        #[prost(message, tag="399")]
15414        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
15415        #[prost(message, tag="400")]
15416        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
15417        #[prost(message, tag="401")]
15418        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
15419        #[prost(message, tag="402")]
15420        TrapReg(super::TrapRegFtraceEvent),
15421        #[prost(message, tag="403")]
15422        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
15423        #[prost(message, tag="404")]
15424        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
15425        #[prost(message, tag="405")]
15426        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
15427        #[prost(message, tag="406")]
15428        UfshcdCommand(super::UfshcdCommandFtraceEvent),
15429        #[prost(message, tag="407")]
15430        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
15431        #[prost(message, tag="408")]
15432        Console(super::ConsoleFtraceEvent),
15433        #[prost(message, tag="409")]
15434        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
15435        #[prost(message, tag="410")]
15436        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
15437        #[prost(message, tag="411")]
15438        DrmSchedJob(super::DrmSchedJobFtraceEvent),
15439        #[prost(message, tag="412")]
15440        DrmRunJob(super::DrmRunJobFtraceEvent),
15441        #[prost(message, tag="413")]
15442        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
15443        #[prost(message, tag="414")]
15444        DmaFenceInit(super::DmaFenceInitFtraceEvent),
15445        #[prost(message, tag="415")]
15446        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
15447        #[prost(message, tag="416")]
15448        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
15449        #[prost(message, tag="417")]
15450        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
15451        #[prost(message, tag="418")]
15452        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
15453        #[prost(message, tag="419")]
15454        F2fsIostat(super::F2fsIostatFtraceEvent),
15455        #[prost(message, tag="420")]
15456        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
15457        #[prost(message, tag="421")]
15458        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
15459        #[prost(message, tag="422")]
15460        V4l2Qbuf(super::V4l2QbufFtraceEvent),
15461        #[prost(message, tag="423")]
15462        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
15463        #[prost(message, tag="424")]
15464        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
15465        #[prost(message, tag="425")]
15466        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
15467        #[prost(message, tag="426")]
15468        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
15469        #[prost(message, tag="427")]
15470        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
15471        #[prost(message, tag="428")]
15472        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
15473        #[prost(message, tag="429")]
15474        DsiRx(super::DsiRxFtraceEvent),
15475        #[prost(message, tag="430")]
15476        DsiTx(super::DsiTxFtraceEvent),
15477        #[prost(message, tag="431")]
15478        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
15479        #[prost(message, tag="432")]
15480        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
15481        #[prost(message, tag="433")]
15482        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
15483        #[prost(message, tag="434")]
15484        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
15485        #[prost(message, tag="435")]
15486        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
15487        #[prost(message, tag="436")]
15488        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
15489        #[prost(message, tag="437")]
15490        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
15491        #[prost(message, tag="438")]
15492        FuncgraphExit(super::FuncgraphExitFtraceEvent),
15493        #[prost(message, tag="439")]
15494        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
15495        #[prost(message, tag="440")]
15496        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
15497        #[prost(message, tag="441")]
15498        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
15499        #[prost(message, tag="442")]
15500        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
15501        #[prost(message, tag="443")]
15502        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
15503        #[prost(message, tag="444")]
15504        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
15505        #[prost(message, tag="445")]
15506        TrustySmc(super::TrustySmcFtraceEvent),
15507        #[prost(message, tag="446")]
15508        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
15509        #[prost(message, tag="447")]
15510        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
15511        #[prost(message, tag="448")]
15512        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
15513        #[prost(message, tag="449")]
15514        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
15515        #[prost(message, tag="450")]
15516        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
15517        #[prost(message, tag="451")]
15518        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
15519        #[prost(message, tag="452")]
15520        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
15521        #[prost(message, tag="453")]
15522        TrustyIrq(super::TrustyIrqFtraceEvent),
15523        #[prost(message, tag="454")]
15524        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
15525        #[prost(message, tag="455")]
15526        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
15527        #[prost(message, tag="456")]
15528        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
15529        #[prost(message, tag="457")]
15530        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
15531        #[prost(message, tag="458")]
15532        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
15533        /// removed field with id 459;
15534        #[prost(message, tag="460")]
15535        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
15536        #[prost(message, tag="461")]
15537        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
15538        #[prost(message, tag="462")]
15539        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
15540        /// removed field with id 463;
15541        #[prost(message, tag="464")]
15542        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
15543        #[prost(message, tag="465")]
15544        CmaAllocStart(super::CmaAllocStartFtraceEvent),
15545        #[prost(message, tag="466")]
15546        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
15547        #[prost(message, tag="467")]
15548        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
15549        #[prost(message, tag="468")]
15550        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
15551        #[prost(message, tag="469")]
15552        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
15553        #[prost(message, tag="470")]
15554        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
15555        #[prost(message, tag="471")]
15556        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
15557        #[prost(message, tag="472")]
15558        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
15559        #[prost(message, tag="473")]
15560        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
15561        #[prost(message, tag="474")]
15562        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
15563        #[prost(message, tag="475")]
15564        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
15565        #[prost(message, tag="476")]
15566        HypEnter(super::HypEnterFtraceEvent),
15567        #[prost(message, tag="477")]
15568        HypExit(super::HypExitFtraceEvent),
15569        #[prost(message, tag="478")]
15570        HostHcall(super::HostHcallFtraceEvent),
15571        #[prost(message, tag="479")]
15572        HostSmc(super::HostSmcFtraceEvent),
15573        #[prost(message, tag="480")]
15574        HostMemAbort(super::HostMemAbortFtraceEvent),
15575        #[prost(message, tag="481")]
15576        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
15577        #[prost(message, tag="482")]
15578        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
15579        #[prost(message, tag="483")]
15580        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
15581        #[prost(message, tag="484")]
15582        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
15583        #[prost(message, tag="485")]
15584        BinderCommand(super::BinderCommandFtraceEvent),
15585        #[prost(message, tag="486")]
15586        BinderReturn(super::BinderReturnFtraceEvent),
15587        #[prost(message, tag="487")]
15588        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
15589        #[prost(message, tag="488")]
15590        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
15591        #[prost(message, tag="489")]
15592        RpmStatus(super::RpmStatusFtraceEvent),
15593        #[prost(message, tag="490")]
15594        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
15595        #[prost(message, tag="491")]
15596        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
15597        #[prost(message, tag="492")]
15598        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
15599        #[prost(message, tag="493")]
15600        DpuDsiRx(super::DpuDsiRxFtraceEvent),
15601        #[prost(message, tag="494")]
15602        DpuDsiTx(super::DpuDsiTxFtraceEvent),
15603        #[prost(message, tag="495")]
15604        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
15605        #[prost(message, tag="496")]
15606        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
15607        #[prost(message, tag="497")]
15608        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
15609        #[prost(message, tag="498")]
15610        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
15611        #[prost(message, tag="499")]
15612        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
15613        #[prost(message, tag="500")]
15614        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
15615        #[prost(message, tag="501")]
15616        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
15617        #[prost(message, tag="502")]
15618        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
15619        #[prost(message, tag="503")]
15620        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
15621        #[prost(message, tag="504")]
15622        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
15623        #[prost(message, tag="505")]
15624        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
15625        #[prost(message, tag="506")]
15626        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
15627        #[prost(message, tag="507")]
15628        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
15629        #[prost(message, tag="508")]
15630        DcvshFreq(super::DcvshFreqFtraceEvent),
15631        #[prost(message, tag="509")]
15632        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
15633        #[prost(message, tag="510")]
15634        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
15635        #[prost(message, tag="511")]
15636        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
15637        #[prost(message, tag="512")]
15638        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
15639        #[prost(message, tag="513")]
15640        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
15641        #[prost(message, tag="514")]
15642        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
15643        #[prost(message, tag="515")]
15644        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
15645        #[prost(message, tag="516")]
15646        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
15647        #[prost(message, tag="517")]
15648        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
15649        #[prost(message, tag="518")]
15650        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
15651        #[prost(message, tag="519")]
15652        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
15653        #[prost(message, tag="520")]
15654        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
15655        #[prost(message, tag="521")]
15656        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
15657        #[prost(message, tag="522")]
15658        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
15659        #[prost(message, tag="523")]
15660        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
15661        #[prost(message, tag="524")]
15662        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
15663        #[prost(message, tag="525")]
15664        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
15665        #[prost(message, tag="526")]
15666        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
15667        #[prost(message, tag="527")]
15668        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
15669        #[prost(message, tag="528")]
15670        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
15671        #[prost(message, tag="529")]
15672        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
15673        #[prost(message, tag="530")]
15674        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
15675        #[prost(message, tag="531")]
15676        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
15677        #[prost(message, tag="532")]
15678        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
15679        #[prost(message, tag="533")]
15680        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
15681        #[prost(message, tag="534")]
15682        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
15683        #[prost(message, tag="535")]
15684        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
15685        #[prost(message, tag="536")]
15686        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
15687        #[prost(message, tag="537")]
15688        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
15689        #[prost(message, tag="538")]
15690        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
15691        #[prost(message, tag="539")]
15692        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
15693        #[prost(message, tag="540")]
15694        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
15695        #[prost(message, tag="541")]
15696        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
15697        #[prost(message, tag="542")]
15698        KprobeEvent(super::KprobeEvent),
15699        #[prost(message, tag="543")]
15700        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
15701        #[prost(message, tag="544")]
15702        DoSysOpen(super::DoSysOpenFtraceEvent),
15703        #[prost(message, tag="545")]
15704        OpenExec(super::OpenExecFtraceEvent),
15705        #[prost(message, tag="546")]
15706        BlockIoStart(super::BlockIoStartFtraceEvent),
15707        #[prost(message, tag="547")]
15708        BlockIoDone(super::BlockIoDoneFtraceEvent),
15709        #[prost(message, tag="548")]
15710        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
15711        #[prost(message, tag="549")]
15712        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
15713        #[prost(message, tag="550")]
15714        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
15715    }
15716}
15717// End of protos/perfetto/trace/ftrace/ftrace_event.proto
15718
15719// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
15720
15721/// Per-CPU kernel buffer stats for the ftrace data source gathered from
15722/// /sys/kernel/tracing/per_cpu/cpuX/stats.
15723#[derive(Clone, PartialEq, ::prost::Message)]
15724pub struct FtraceCpuStats {
15725    /// CPU index.
15726    #[prost(uint64, optional, tag="1")]
15727    pub cpu: ::core::option::Option<u64>,
15728    /// Number of entries currently in the kernel buffer.
15729    #[prost(uint64, optional, tag="2")]
15730    pub entries: ::core::option::Option<u64>,
15731    /// Number of events lost in kernel buffers due to overwriting of old events
15732    /// before userspace had a chance to drain them. Valid if the buffer is in
15733    /// "overwrite" mode, otherwise see |dropped_events|.
15734    #[prost(uint64, optional, tag="3")]
15735    pub overrun: ::core::option::Option<u64>,
15736    /// This should always be zero. If not the buffer size is way too small or
15737    /// something went wrong with the tracer. Quoting the kernel: "number of
15738    /// commits failing due to the buffer wrapping around while there are
15739    /// uncommitted events, such as during an interrupt storm".
15740    #[prost(uint64, optional, tag="4")]
15741    pub commit_overrun: ::core::option::Option<u64>,
15742    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
15743    /// The field should be named "bytes", but is misnamed for historical reasons.
15744    /// This value has known inaccuracies before Linux v6.6:
15745    /// <https://github.com/torvalds/linux/commit/45d99ea>
15746    #[prost(uint64, optional, tag="5")]
15747    pub bytes_read: ::core::option::Option<u64>,
15748    /// The timestamp for the oldest event still in the ring buffer.
15749    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
15750    #[prost(double, optional, tag="6")]
15751    pub oldest_event_ts: ::core::option::Option<f64>,
15752    /// The current timestamp.
15753    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
15754    #[prost(double, optional, tag="7")]
15755    pub now_ts: ::core::option::Option<f64>,
15756    /// If the kernel buffer has overwrite mode disabled, this will show the number
15757    /// of new events that were lost because the buffer was full. This is similar
15758    /// to |overrun| but only for the overwrite=false case.
15759    #[prost(uint64, optional, tag="8")]
15760    pub dropped_events: ::core::option::Option<u64>,
15761    /// The number of events read (consumed) from the buffer by userspace.
15762    #[prost(uint64, optional, tag="9")]
15763    pub read_events: ::core::option::Option<u64>,
15764}
15765/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
15766#[derive(Clone, PartialEq, ::prost::Message)]
15767pub struct FtraceKprobeStats {
15768    /// Cumulative number of kprobe events generated for this function
15769    #[prost(int64, optional, tag="1")]
15770    pub hits: ::core::option::Option<i64>,
15771    /// Cumulative number of kprobe events that could not be generated for this
15772    /// function and were missed.  This happens when too much nesting
15773    /// happens between a kprobe and its kretprobe, overflowing the
15774    /// maxactives buffer.
15775    #[prost(int64, optional, tag="2")]
15776    pub misses: ::core::option::Option<i64>,
15777}
15778/// Errors and kernel buffer stats for the ftrace data source.
15779#[derive(Clone, PartialEq, ::prost::Message)]
15780pub struct FtraceStats {
15781    /// A pair of FtraceStats is written on every trace flush:
15782    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
15783    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
15784    ///                   before this packet was written. For simple traces this
15785    ///                   will be once at the end of the trace.
15786    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
15787    pub phase: ::core::option::Option<i32>,
15788    /// Per-CPU stats (one entry for each CPU).
15789    #[prost(message, repeated, tag="2")]
15790    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
15791    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
15792    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
15793    /// trace or not. It can be used to debug kptr_restrict or security-related
15794    /// errors.
15795    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
15796    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
15797    #[prost(uint32, optional, tag="3")]
15798    pub kernel_symbols_parsed: ::core::option::Option<u32>,
15799    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
15800    #[prost(uint32, optional, tag="4")]
15801    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
15802    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
15803    /// one or more atrace categories not available on the device.
15804    #[prost(string, optional, tag="5")]
15805    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
15806    /// Ftrace events requested by the config but not present on device.
15807    #[prost(string, repeated, tag="6")]
15808    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
15809    /// Ftrace events requested by the config and present on device, but which we
15810    /// failed to enable due to permissions, or due to a conflicting option
15811    /// (currently FtraceConfig.disable_generic_events).
15812    #[prost(string, repeated, tag="7")]
15813    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
15814    /// The data source was configured to preserve existing events in the ftrace
15815    /// buffer before the start of the trace.
15816    #[prost(bool, optional, tag="8")]
15817    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
15818    /// Unique errors encountered during reading and parsing of the raw ftrace
15819    /// data. Ring buffer ABI related errors will also be recorded in the
15820    /// affected FtraceEventBundles with a timestamp.
15821    /// Any traces with entries in this field should be investigated, as they
15822    /// indicate a bug in perfetto or the kernel.
15823    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
15824    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
15825    /// Kprobe profile stats for functions hits and misses
15826    #[prost(message, optional, tag="10")]
15827    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
15828}
15829/// Nested message and enum types in `FtraceStats`.
15830pub mod ftrace_stats {
15831    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
15832    #[repr(i32)]
15833    pub enum Phase {
15834        Unspecified = 0,
15835        StartOfTrace = 1,
15836        EndOfTrace = 2,
15837    }
15838    impl Phase {
15839        /// String value of the enum field names used in the ProtoBuf definition.
15840        ///
15841        /// The values are not transformed in any way and thus are considered stable
15842        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15843        pub fn as_str_name(&self) -> &'static str {
15844            match self {
15845                Phase::Unspecified => "UNSPECIFIED",
15846                Phase::StartOfTrace => "START_OF_TRACE",
15847                Phase::EndOfTrace => "END_OF_TRACE",
15848            }
15849        }
15850    }
15851}
15852// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
15853
15854// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
15855
15856/// The result of tracing one or more ftrace data pages from a single per-cpu
15857/// kernel ring buffer. If collating multiple pages' worth of events, all of
15858/// them come from contiguous pages, with no kernel data loss in between.
15859#[derive(Clone, PartialEq, ::prost::Message)]
15860pub struct FtraceEventBundle {
15861    #[prost(uint32, optional, tag="1")]
15862    pub cpu: ::core::option::Option<u32>,
15863    #[prost(message, repeated, tag="2")]
15864    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
15865    /// Set to true if there was data loss between the last time we've read from
15866    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
15867    /// in this bundle.
15868    #[prost(bool, optional, tag="3")]
15869    pub lost_events: ::core::option::Option<bool>,
15870    #[prost(message, optional, tag="4")]
15871    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
15872    /// traced_probes always sets the ftrace_clock to "boot". That is not available
15873    /// in older kernels (v3.x). In that case we fallback on "global" or "local".
15874    /// When we do that, we report the fallback clock in each bundle so we can do
15875    /// proper clock syncing at parsing time in TraceProcessor. We cannot use the
15876    /// TracePacket timestamp_clock_id because: (1) there is no per-packet
15877    /// timestamp for ftrace bundles; (2) "global" does not match CLOCK_MONOTONIC.
15878    /// Having a dedicated and explicit flag allows us to correct further misakes
15879    /// in future by looking at the kernel version.
15880    /// This field has been introduced in perfetto v19 / Android T (13).
15881    /// This field is omitted when the ftrace clock is just "boot", as that is the
15882    /// default assumption (and for consistency with the past).
15883    #[prost(enumeration="FtraceClock", optional, tag="5")]
15884    pub ftrace_clock: ::core::option::Option<i32>,
15885    /// The timestamp according to the ftrace clock, taken at the same instant
15886    /// as |boot_timestamp|. This is used to sync ftrace events when a non-boot
15887    /// clock is used as the ftrace clock. We don't use the ClockSnapshot packet
15888    /// because the ftrace global/local clocks don't match any of the clock_gettime
15889    /// domains and can be only read by traced_probes.
15890    ///
15891    /// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
15892    ///
15893    /// Implementation note: Populated by reading the 'now ts:' field in
15894    /// tracefs/per_cpu/cpuX/stat.
15895    #[prost(int64, optional, tag="6")]
15896    pub ftrace_timestamp: ::core::option::Option<i64>,
15897    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
15898    /// |ftrace_timestamp|. See documentation of |ftrace_timestamp| for
15899    /// more info.
15900    ///
15901    /// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
15902    #[prost(int64, optional, tag="7")]
15903    pub boot_timestamp: ::core::option::Option<i64>,
15904    #[prost(message, repeated, tag="8")]
15905    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
15906    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
15907    /// primary difference is that this field tracked the last timestamp read from
15908    /// the per-cpu buffer, while the newer field tracks events that get
15909    /// serialised into the trace.
15910    /// Added in: perfetto v44.
15911    #[prost(uint64, optional, tag="9")]
15912    pub last_read_event_timestamp: ::core::option::Option<u64>,
15913    /// The timestamp (using ftrace clock) of the last event written into this
15914    /// data source on this cpu. In other words: the last event in the previous
15915    /// bundle.
15916    /// Lets the trace processing find an initial timestamp after which ftrace
15917    /// data is known to be valid across all cpus. Of particular importance when
15918    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
15919    /// oldest bundles can skew the first valid timestamp per cpu significantly.
15920    /// Added in: perfetto v47.
15921    #[prost(uint64, optional, tag="10")]
15922    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
15923}
15924/// Nested message and enum types in `FtraceEventBundle`.
15925pub mod ftrace_event_bundle {
15926    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
15927    /// a subset of events & their fields is recorded.
15928    /// All fields (except comms) are stored in a structure-of-arrays form, one
15929    /// entry in each repeated field per event.
15930    #[derive(Clone, PartialEq, ::prost::Message)]
15931    pub struct CompactSched {
15932        /// Interned table of unique strings for this bundle.
15933        #[prost(string, repeated, tag="5")]
15934        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
15935        /// Delta-encoded timestamps across all sched_switch events within this
15936        /// bundle. The first is absolute, each next one is relative to its
15937        /// predecessor.
15938        #[prost(uint64, repeated, tag="1")]
15939        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
15940        #[prost(int64, repeated, tag="2")]
15941        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
15942        #[prost(int32, repeated, tag="3")]
15943        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
15944        #[prost(int32, repeated, tag="4")]
15945        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
15946        /// One per event, index into |intern_table| corresponding to the
15947        /// next_comm field of the event.
15948        #[prost(uint32, repeated, tag="6")]
15949        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
15950        /// Delta-encoded timestamps across all sched_waking events within this
15951        /// bundle. The first is absolute, each next one is relative to its
15952        /// predecessor.
15953        #[prost(uint64, repeated, tag="7")]
15954        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
15955        #[prost(int32, repeated, tag="8")]
15956        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
15957        #[prost(int32, repeated, tag="9")]
15958        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
15959        #[prost(int32, repeated, tag="10")]
15960        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
15961        /// One per event, index into |intern_table| corresponding to the
15962        /// comm field of the event.
15963        #[prost(uint32, repeated, tag="11")]
15964        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
15965        #[prost(uint32, repeated, tag="12")]
15966        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
15967    }
15968    /// Errors encountered during parsing of the raw ftrace data. In case of ring
15969    /// buffer layout errors, the parser skips the rest of the offending kernel
15970    /// buffer page and continues from the next page.
15971    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
15972    /// seen within the duration of the trace (even if the affected bundles get
15973    /// overwritten in ring buffer mode).
15974    #[derive(Clone, PartialEq, ::prost::Message)]
15975    pub struct FtraceError {
15976        /// Timestamp of the data that we're unable to parse, in the ftrace clock
15977        /// domain. Currently, we use the base timestamp of the tracing page
15978        /// containing the bad record rather than the time of the record itself.
15979        #[prost(uint64, optional, tag="1")]
15980        pub timestamp: ::core::option::Option<u64>,
15981        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
15982        pub status: ::core::option::Option<i32>,
15983    }
15984}
15985// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
15986
15987// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
15988
15989#[derive(Clone, PartialEq, ::prost::Message)]
15990pub struct GpuCounterEvent {
15991    /// The first trace packet of each session should include counter_spec.
15992    #[prost(message, optional, tag="1")]
15993    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
15994    #[prost(message, repeated, tag="2")]
15995    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
15996    /// optional. Identifier for GPU in a multi-gpu device.
15997    #[prost(int32, optional, tag="3")]
15998    pub gpu_id: ::core::option::Option<i32>,
15999}
16000/// Nested message and enum types in `GpuCounterEvent`.
16001pub mod gpu_counter_event {
16002    #[derive(Clone, PartialEq, ::prost::Message)]
16003    pub struct GpuCounter {
16004        /// required. Identifier for counter.
16005        #[prost(uint32, optional, tag="1")]
16006        pub counter_id: ::core::option::Option<u32>,
16007        /// required. Value of the counter.
16008        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
16009        pub value: ::core::option::Option<gpu_counter::Value>,
16010    }
16011    /// Nested message and enum types in `GpuCounter`.
16012    pub mod gpu_counter {
16013        /// required. Value of the counter.
16014        #[derive(Clone, PartialEq, ::prost::Oneof)]
16015        pub enum Value {
16016            #[prost(int64, tag="2")]
16017            IntValue(i64),
16018            #[prost(double, tag="3")]
16019            DoubleValue(f64),
16020        }
16021    }
16022}
16023// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
16024
16025// Begin of protos/perfetto/trace/gpu/gpu_log.proto
16026
16027/// Message for logging events GPU data producer.
16028#[derive(Clone, PartialEq, ::prost::Message)]
16029pub struct GpuLog {
16030    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
16031    pub severity: ::core::option::Option<i32>,
16032    #[prost(string, optional, tag="2")]
16033    pub tag: ::core::option::Option<::prost::alloc::string::String>,
16034    #[prost(string, optional, tag="3")]
16035    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
16036}
16037/// Nested message and enum types in `GpuLog`.
16038pub mod gpu_log {
16039    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16040    #[repr(i32)]
16041    pub enum Severity {
16042        LogSeverityUnspecified = 0,
16043        LogSeverityVerbose = 1,
16044        LogSeverityDebug = 2,
16045        LogSeverityInfo = 3,
16046        LogSeverityWarning = 4,
16047        LogSeverityError = 5,
16048    }
16049    impl Severity {
16050        /// String value of the enum field names used in the ProtoBuf definition.
16051        ///
16052        /// The values are not transformed in any way and thus are considered stable
16053        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16054        pub fn as_str_name(&self) -> &'static str {
16055            match self {
16056                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
16057                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
16058                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
16059                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
16060                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
16061                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
16062            }
16063        }
16064    }
16065}
16066// End of protos/perfetto/trace/gpu/gpu_log.proto
16067
16068// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
16069
16070/// next id: 15
16071#[derive(Clone, PartialEq, ::prost::Message)]
16072pub struct GpuRenderStageEvent {
16073    /// required. Unique ID for the event.
16074    #[prost(uint64, optional, tag="1")]
16075    pub event_id: ::core::option::Option<u64>,
16076    /// optional. Duration of the event in nanoseconds. If unset, this is a
16077    /// single time point event.
16078    #[prost(uint64, optional, tag="2")]
16079    pub duration: ::core::option::Option<u64>,
16080    /// required. ID to a hardware queue description in the specifications.
16081    /// InternedGpuRenderStageSpecification
16082    #[prost(uint64, optional, tag="13")]
16083    pub hw_queue_iid: ::core::option::Option<u64>,
16084    /// required. ID to a render stage description in the specifications.
16085    /// InternedGpuRenderStageSpecification
16086    #[prost(uint64, optional, tag="14")]
16087    pub stage_iid: ::core::option::Option<u64>,
16088    /// optional. Identifier for GPU in a multi-gpu device.
16089    #[prost(int32, optional, tag="11")]
16090    pub gpu_id: ::core::option::Option<i32>,
16091    /// required. Graphics context for the event.
16092    /// For OpenGL, this is the GL context.
16093    /// For Vulkan, this is the VkDevice.
16094    #[prost(uint64, optional, tag="5")]
16095    pub context: ::core::option::Option<u64>,
16096    /// optional. The render target for this event.
16097    /// For OpenGL, this is the GL frame buffer handle.
16098    /// For Vulkan, this is the VkFrameBuffer handle.
16099    #[prost(uint64, optional, tag="8")]
16100    pub render_target_handle: ::core::option::Option<u64>,
16101    /// optional. Submission ID generated by the UMD.
16102    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
16103    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
16104    /// to a single API submission should share the same ID.
16105    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
16106    #[prost(uint32, optional, tag="10")]
16107    pub submission_id: ::core::option::Option<u32>,
16108    #[prost(message, repeated, tag="6")]
16109    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
16110    // VULKAN SPECIFICS
16111
16112    /// optional. The Vulkan render pass handle.
16113    #[prost(uint64, optional, tag="9")]
16114    pub render_pass_handle: ::core::option::Option<u64>,
16115    /// optional. A bit mask representing which render subpasses contributed to
16116    /// this render stage event.  Subpass index 0 is represented by setting the
16117    /// LSB of the mask.  Additional mask can be added for subpass index greater
16118    /// than 63.
16119    #[prost(uint64, repeated, packed="false", tag="15")]
16120    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
16121    /// optional. The Vulkan command buffer handle.
16122    #[prost(uint64, optional, tag="12")]
16123    pub command_buffer_handle: ::core::option::Option<u64>,
16124    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
16125    /// InternedGpuRenderStageSpecification instead.
16126    #[deprecated]
16127    #[prost(message, optional, tag="7")]
16128    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
16129    /// Deprecated. Use hw_queue_iid instead;
16130    #[deprecated]
16131    #[prost(int32, optional, tag="3")]
16132    pub hw_queue_id: ::core::option::Option<i32>,
16133    /// Deprecated. Use stage_iid instead;
16134    #[deprecated]
16135    #[prost(int32, optional, tag="4")]
16136    pub stage_id: ::core::option::Option<i32>,
16137}
16138/// Nested message and enum types in `GpuRenderStageEvent`.
16139pub mod gpu_render_stage_event {
16140    /// optional. Additional data for the user. This may include attributes for
16141    /// the event like resource ids, shaders, etc.
16142    #[derive(Clone, PartialEq, ::prost::Message)]
16143    pub struct ExtraData {
16144        #[prost(string, optional, tag="1")]
16145        pub name: ::core::option::Option<::prost::alloc::string::String>,
16146        #[prost(string, optional, tag="2")]
16147        pub value: ::core::option::Option<::prost::alloc::string::String>,
16148    }
16149    // DEPRECATED
16150
16151    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
16152    /// The first trace packet of each session should include a Specifications
16153    /// to enumerate *all* IDs that will be used. The timestamp of this packet
16154    /// must be earlier than all other packets. Only one packet with Specifications
16155    /// is expected.
16156    #[derive(Clone, PartialEq, ::prost::Message)]
16157    pub struct Specifications {
16158        #[prost(message, optional, tag="1")]
16159        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
16160        /// Labels to categorize the hw Queue this event goes on.
16161        #[prost(message, repeated, tag="2")]
16162        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
16163        /// Labels to categorize render stage(binning, render, compute etc).
16164        #[prost(message, repeated, tag="3")]
16165        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
16166    }
16167    /// Nested message and enum types in `Specifications`.
16168    pub mod specifications {
16169        #[derive(Clone, PartialEq, ::prost::Message)]
16170        pub struct ContextSpec {
16171            #[prost(uint64, optional, tag="1")]
16172            pub context: ::core::option::Option<u64>,
16173            #[prost(int32, optional, tag="2")]
16174            pub pid: ::core::option::Option<i32>,
16175        }
16176        #[derive(Clone, PartialEq, ::prost::Message)]
16177        pub struct Description {
16178            #[prost(string, optional, tag="1")]
16179            pub name: ::core::option::Option<::prost::alloc::string::String>,
16180            #[prost(string, optional, tag="2")]
16181            pub description: ::core::option::Option<::prost::alloc::string::String>,
16182        }
16183    }
16184}
16185// Interned data.
16186
16187/// The iid is the numeric value of either the GL Context or the VkDevice
16188/// handle.
16189#[derive(Clone, PartialEq, ::prost::Message)]
16190pub struct InternedGraphicsContext {
16191    #[prost(uint64, optional, tag="1")]
16192    pub iid: ::core::option::Option<u64>,
16193    #[prost(int32, optional, tag="2")]
16194    pub pid: ::core::option::Option<i32>,
16195    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
16196    pub api: ::core::option::Option<i32>,
16197}
16198/// Nested message and enum types in `InternedGraphicsContext`.
16199pub mod interned_graphics_context {
16200    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16201    #[repr(i32)]
16202    pub enum Api {
16203        Undefined = 0,
16204        OpenGl = 1,
16205        Vulkan = 2,
16206        OpenCl = 3,
16207    }
16208    impl Api {
16209        /// String value of the enum field names used in the ProtoBuf definition.
16210        ///
16211        /// The values are not transformed in any way and thus are considered stable
16212        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16213        pub fn as_str_name(&self) -> &'static str {
16214            match self {
16215                Api::Undefined => "UNDEFINED",
16216                Api::OpenGl => "OPEN_GL",
16217                Api::Vulkan => "VULKAN",
16218                Api::OpenCl => "OPEN_CL",
16219            }
16220        }
16221    }
16222}
16223#[derive(Clone, PartialEq, ::prost::Message)]
16224pub struct InternedGpuRenderStageSpecification {
16225    #[prost(uint64, optional, tag="1")]
16226    pub iid: ::core::option::Option<u64>,
16227    #[prost(string, optional, tag="2")]
16228    pub name: ::core::option::Option<::prost::alloc::string::String>,
16229    #[prost(string, optional, tag="3")]
16230    pub description: ::core::option::Option<::prost::alloc::string::String>,
16231    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
16232    pub category: ::core::option::Option<i32>,
16233}
16234/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
16235pub mod interned_gpu_render_stage_specification {
16236    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16237    #[repr(i32)]
16238    pub enum RenderStageCategory {
16239        Other = 0,
16240        Graphics = 1,
16241        Compute = 2,
16242    }
16243    impl RenderStageCategory {
16244        /// String value of the enum field names used in the ProtoBuf definition.
16245        ///
16246        /// The values are not transformed in any way and thus are considered stable
16247        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16248        pub fn as_str_name(&self) -> &'static str {
16249            match self {
16250                RenderStageCategory::Other => "OTHER",
16251                RenderStageCategory::Graphics => "GRAPHICS",
16252                RenderStageCategory::Compute => "COMPUTE",
16253            }
16254        }
16255    }
16256}
16257// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
16258
16259// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
16260
16261/// Message for recording the Vulkan call.
16262#[derive(Clone, PartialEq, ::prost::Message)]
16263pub struct VulkanApiEvent {
16264    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
16265    pub event: ::core::option::Option<vulkan_api_event::Event>,
16266}
16267/// Nested message and enum types in `VulkanApiEvent`.
16268pub mod vulkan_api_event {
16269    /// For recording vkSetDebugUtilsObjectNameEXT and
16270    /// vkDebugMarkerSetObjectNameEXT
16271    #[derive(Clone, PartialEq, ::prost::Message)]
16272    pub struct VkDebugUtilsObjectName {
16273        #[prost(uint32, optional, tag="1")]
16274        pub pid: ::core::option::Option<u32>,
16275        #[prost(uint64, optional, tag="2")]
16276        pub vk_device: ::core::option::Option<u64>,
16277        /// VkObjectType.  Value must match
16278        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
16279        #[prost(int32, optional, tag="3")]
16280        pub object_type: ::core::option::Option<i32>,
16281        #[prost(uint64, optional, tag="4")]
16282        pub object: ::core::option::Option<u64>,
16283        #[prost(string, optional, tag="5")]
16284        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
16285    }
16286    /// For recording vkQueueSubmit call.
16287    #[derive(Clone, PartialEq, ::prost::Message)]
16288    pub struct VkQueueSubmit {
16289        #[prost(uint64, optional, tag="1")]
16290        pub duration_ns: ::core::option::Option<u64>,
16291        #[prost(uint32, optional, tag="2")]
16292        pub pid: ::core::option::Option<u32>,
16293        #[prost(uint32, optional, tag="3")]
16294        pub tid: ::core::option::Option<u32>,
16295        #[prost(uint64, optional, tag="4")]
16296        pub vk_queue: ::core::option::Option<u64>,
16297        #[prost(uint64, repeated, packed="false", tag="5")]
16298        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
16299        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
16300        /// submission_id must match GpuRenderStageEvent.submission_id if the
16301        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
16302        #[prost(uint32, optional, tag="6")]
16303        pub submission_id: ::core::option::Option<u32>,
16304    }
16305    #[derive(Clone, PartialEq, ::prost::Oneof)]
16306    pub enum Event {
16307        #[prost(message, tag="1")]
16308        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
16309        #[prost(message, tag="2")]
16310        VkQueueSubmit(VkQueueSubmit),
16311    }
16312}
16313// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
16314
16315// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
16316
16317/// All the information that cannot be sent within a VulkanMemoryEvent message,
16318/// are sent as annotations to the main memory event. One example is the
16319/// properties of the object that consumes the allocated memory, for example, a
16320/// buffer or an image.
16321/// key_iid and string_iid are both interned strings. Original string value is
16322/// stored in vulkan_memory_keys from
16323/// protos/perfetto/trace/interned_data/interned_data.proto.
16324#[derive(Clone, PartialEq, ::prost::Message)]
16325pub struct VulkanMemoryEventAnnotation {
16326    #[prost(uint64, optional, tag="1")]
16327    pub key_iid: ::core::option::Option<u64>,
16328    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
16329    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
16330}
16331/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
16332pub mod vulkan_memory_event_annotation {
16333    #[derive(Clone, PartialEq, ::prost::Oneof)]
16334    pub enum Value {
16335        #[prost(int64, tag="2")]
16336        IntValue(i64),
16337        #[prost(double, tag="3")]
16338        DoubleValue(f64),
16339        #[prost(uint64, tag="4")]
16340        StringIid(u64),
16341    }
16342}
16343/// Each VulkanMemoryEvent encompasses information regarding one single function
16344/// call that results in reserving, binding or freeing host or GPU memory. There
16345/// is a special message type, ANNOTATIONS, which is used to communicate
16346/// information that are not directly related to a memory event, nonetheless are
16347/// essential to understand the memory usage. An example is the size and memory
16348/// types of the memory heaps.
16349///
16350/// Next reserved id: 10 (up to 15).
16351/// Next id: 21.
16352#[derive(Clone, PartialEq, ::prost::Message)]
16353pub struct VulkanMemoryEvent {
16354    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
16355    pub source: ::core::option::Option<i32>,
16356    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
16357    pub operation: ::core::option::Option<i32>,
16358    #[prost(int64, optional, tag="3")]
16359    pub timestamp: ::core::option::Option<i64>,
16360    #[prost(uint32, optional, tag="4")]
16361    pub pid: ::core::option::Option<u32>,
16362    #[prost(fixed64, optional, tag="5")]
16363    pub memory_address: ::core::option::Option<u64>,
16364    #[prost(uint64, optional, tag="6")]
16365    pub memory_size: ::core::option::Option<u64>,
16366    /// Interned string. Original string value is stored in function_names from
16367    /// protos/perfetto/trace/interned_data/interned_data.proto.
16368    #[prost(uint64, optional, tag="7")]
16369    pub caller_iid: ::core::option::Option<u64>,
16370    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
16371    pub allocation_scope: ::core::option::Option<i32>,
16372    /// Extra related information, e.g., create configs, etc.
16373    #[prost(message, repeated, tag="9")]
16374    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
16375    /// Field IDs used for device memory (low sampling rate)
16376    #[prost(fixed64, optional, tag="16")]
16377    pub device: ::core::option::Option<u64>,
16378    #[prost(fixed64, optional, tag="17")]
16379    pub device_memory: ::core::option::Option<u64>,
16380    #[prost(uint32, optional, tag="18")]
16381    pub memory_type: ::core::option::Option<u32>,
16382    #[prost(uint32, optional, tag="19")]
16383    pub heap: ::core::option::Option<u32>,
16384    #[prost(fixed64, optional, tag="20")]
16385    pub object_handle: ::core::option::Option<u64>,
16386}
16387/// Nested message and enum types in `VulkanMemoryEvent`.
16388pub mod vulkan_memory_event {
16389    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16390    #[repr(i32)]
16391    pub enum Source {
16392        Unspecified = 0,
16393        Driver = 1,
16394        Device = 2,
16395        DeviceMemory = 3,
16396        Buffer = 4,
16397        Image = 5,
16398    }
16399    impl Source {
16400        /// String value of the enum field names used in the ProtoBuf definition.
16401        ///
16402        /// The values are not transformed in any way and thus are considered stable
16403        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16404        pub fn as_str_name(&self) -> &'static str {
16405            match self {
16406                Source::Unspecified => "SOURCE_UNSPECIFIED",
16407                Source::Driver => "SOURCE_DRIVER",
16408                Source::Device => "SOURCE_DEVICE",
16409                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
16410                Source::Buffer => "SOURCE_BUFFER",
16411                Source::Image => "SOURCE_IMAGE",
16412            }
16413        }
16414    }
16415    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16416    #[repr(i32)]
16417    pub enum Operation {
16418        OpUnspecified = 0,
16419        /// alloc, create
16420        OpCreate = 1,
16421        /// free, destroy(non-bound)
16422        OpDestroy = 2,
16423        /// bind buffer and image
16424        OpBind = 3,
16425        /// destroy (bound)
16426        OpDestroyBound = 4,
16427        /// only annotations
16428        OpAnnotations = 5,
16429    }
16430    impl Operation {
16431        /// String value of the enum field names used in the ProtoBuf definition.
16432        ///
16433        /// The values are not transformed in any way and thus are considered stable
16434        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16435        pub fn as_str_name(&self) -> &'static str {
16436            match self {
16437                Operation::OpUnspecified => "OP_UNSPECIFIED",
16438                Operation::OpCreate => "OP_CREATE",
16439                Operation::OpDestroy => "OP_DESTROY",
16440                Operation::OpBind => "OP_BIND",
16441                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
16442                Operation::OpAnnotations => "OP_ANNOTATIONS",
16443            }
16444        }
16445    }
16446    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16447    #[repr(i32)]
16448    pub enum AllocationScope {
16449        ScopeUnspecified = 0,
16450        ScopeCommand = 1,
16451        ScopeObject = 2,
16452        ScopeCache = 3,
16453        ScopeDevice = 4,
16454        ScopeInstance = 5,
16455    }
16456    impl AllocationScope {
16457        /// String value of the enum field names used in the ProtoBuf definition.
16458        ///
16459        /// The values are not transformed in any way and thus are considered stable
16460        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16461        pub fn as_str_name(&self) -> &'static str {
16462            match self {
16463                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
16464                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
16465                AllocationScope::ScopeObject => "SCOPE_OBJECT",
16466                AllocationScope::ScopeCache => "SCOPE_CACHE",
16467                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
16468                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
16469            }
16470        }
16471    }
16472}
16473// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
16474
16475// Begin of protos/perfetto/trace/profiling/profile_common.proto
16476
16477/// The interning fields in this file can refer to 2 different intern tables,
16478/// depending on the message they are used in. If the interned fields are present
16479/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
16480/// should be used. If the intered fields are present in the
16481/// StreamingProfilePacket proto, then the intern tables included in all of the
16482/// previous InternedData message with same sequence ID should be used.
16483/// TODO(fmayer): Move to the intern tables to a common location.
16484#[derive(Clone, PartialEq, ::prost::Message)]
16485pub struct InternedString {
16486    #[prost(uint64, optional, tag="1")]
16487    pub iid: ::core::option::Option<u64>,
16488    #[prost(bytes="vec", optional, tag="2")]
16489    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16490}
16491/// Source line info.
16492#[derive(Clone, PartialEq, ::prost::Message)]
16493pub struct Line {
16494    #[prost(string, optional, tag="1")]
16495    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
16496    #[prost(string, optional, tag="2")]
16497    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
16498    #[prost(uint32, optional, tag="3")]
16499    pub line_number: ::core::option::Option<u32>,
16500}
16501/// Symbols for a given address in a module.
16502#[derive(Clone, PartialEq, ::prost::Message)]
16503pub struct AddressSymbols {
16504    #[prost(uint64, optional, tag="1")]
16505    pub address: ::core::option::Option<u64>,
16506    /// Source lines that correspond to this address.
16507    ///
16508    /// These are repeated because when inlining happens, multiple functions'
16509    /// frames can be at a single address. Imagine function Foo calling the
16510    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
16511    /// both Foo and the std::vector<int> constructor when we symbolize the
16512    /// address.
16513    #[prost(message, repeated, tag="2")]
16514    pub lines: ::prost::alloc::vec::Vec<Line>,
16515}
16516/// Symbols for addresses seen in a module.
16517/// Used in re-symbolisation of complete traces.
16518#[derive(Clone, PartialEq, ::prost::Message)]
16519pub struct ModuleSymbols {
16520    /// Fully qualified path to the mapping.
16521    /// E.g. /system/lib64/libc.so.
16522    #[prost(string, optional, tag="1")]
16523    pub path: ::core::option::Option<::prost::alloc::string::String>,
16524    /// .note.gnu.build-id on Linux (not hex encoded).
16525    /// uuid on MacOS.
16526    /// Module GUID on Windows.
16527    #[prost(string, optional, tag="2")]
16528    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
16529    #[prost(message, repeated, tag="3")]
16530    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
16531}
16532#[derive(Clone, PartialEq, ::prost::Message)]
16533pub struct Mapping {
16534    /// Interning key.
16535    #[prost(uint64, optional, tag="1")]
16536    pub iid: ::core::option::Option<u64>,
16537    /// Interning key.
16538    #[prost(uint64, optional, tag="2")]
16539    pub build_id: ::core::option::Option<u64>,
16540    // The linker may create multiple memory mappings for the same shared
16541    // library.
16542    // This is so that the ELF header is mapped as read only, while the
16543    // executable memory is mapped as executable only.
16544    // The details of this depend on the linker, a possible mapping of an ELF
16545    // file is this:
16546    //          +----------------------+
16547    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
16548    //          +---------+------------+
16549    //          |         |
16550    //          | read    | executable
16551    //          v mapping v mapping
16552    //          +----------------------+
16553    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
16554    //          +------------------+---+
16555    //          ^         ^        ^
16556    //          +         +        +
16557    //        start     exact    relpc
16558    //        offset   offset    0x1800
16559    //        0x0000   0x1000
16560    //
16561    // exact_offset is the offset into the library file of this mapping.
16562    // start_offset is the offset into the library file of the first mapping
16563    // for that library. For native libraries (.so files) this should be 0.
16564
16565    /// This is not set on Android 10.
16566    #[prost(uint64, optional, tag="8")]
16567    pub exact_offset: ::core::option::Option<u64>,
16568    #[prost(uint64, optional, tag="3")]
16569    pub start_offset: ::core::option::Option<u64>,
16570    #[prost(uint64, optional, tag="4")]
16571    pub start: ::core::option::Option<u64>,
16572    #[prost(uint64, optional, tag="5")]
16573    pub end: ::core::option::Option<u64>,
16574    #[prost(uint64, optional, tag="6")]
16575    pub load_bias: ::core::option::Option<u64>,
16576    /// E.g. ["system", "lib64", "libc.so"]
16577    /// id of string.
16578    #[prost(uint64, repeated, packed="false", tag="7")]
16579    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
16580}
16581#[derive(Clone, PartialEq, ::prost::Message)]
16582pub struct Frame {
16583    /// Interning key
16584    #[prost(uint64, optional, tag="1")]
16585    pub iid: ::core::option::Option<u64>,
16586    /// E.g. "fopen"
16587    /// id of string.
16588    #[prost(uint64, optional, tag="2")]
16589    pub function_name_id: ::core::option::Option<u64>,
16590    #[prost(uint64, optional, tag="3")]
16591    pub mapping_id: ::core::option::Option<u64>,
16592    #[prost(uint64, optional, tag="4")]
16593    pub rel_pc: ::core::option::Option<u64>,
16594}
16595#[derive(Clone, PartialEq, ::prost::Message)]
16596pub struct Callstack {
16597    #[prost(uint64, optional, tag="1")]
16598    pub iid: ::core::option::Option<u64>,
16599    /// Frames of this callstack. Bottom frame first.
16600    #[prost(uint64, repeated, packed="false", tag="2")]
16601    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
16602}
16603// End of protos/perfetto/trace/profiling/profile_common.proto
16604
16605// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
16606
16607#[derive(Clone, PartialEq, ::prost::Message)]
16608pub struct HistogramName {
16609    #[prost(uint64, optional, tag="1")]
16610    pub iid: ::core::option::Option<u64>,
16611    #[prost(string, optional, tag="2")]
16612    pub name: ::core::option::Option<::prost::alloc::string::String>,
16613}
16614/// An individual histogram sample logged via Chrome's UMA metrics system.
16615#[derive(Clone, PartialEq, ::prost::Message)]
16616pub struct ChromeHistogramSample {
16617    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
16618    /// both must be present.
16619    #[prost(uint64, optional, tag="1")]
16620    pub name_hash: ::core::option::Option<u64>,
16621    #[prost(string, optional, tag="2")]
16622    pub name: ::core::option::Option<::prost::alloc::string::String>,
16623    #[prost(int64, optional, tag="3")]
16624    pub sample: ::core::option::Option<i64>,
16625    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
16626    #[prost(uint64, optional, tag="4")]
16627    pub name_iid: ::core::option::Option<u64>,
16628}
16629// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
16630
16631// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
16632
16633/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
16634/// macros. Users of the Perfetto SDK should prefer to use the
16635/// perfetto::TracedValue API to fill these protos, rather than filling them
16636/// manually.
16637///
16638/// Debug annotations are intended for debug use and are not considered a stable
16639/// API of the trace contents. Trace-based metrics that use debug annotation
16640/// values are prone to breakage, so please rely on typed TrackEvent fields for
16641/// these instead.
16642///
16643/// DebugAnnotations support nested arrays and dictionaries. Each entry is
16644/// encoded as a single DebugAnnotation message. Only dictionary entries
16645/// set the "name" field. The TrackEvent message forms an implicit root
16646/// dictionary.
16647///
16648/// Example TrackEvent with nested annotations:
16649///    track_event {
16650///      debug_annotations {
16651///        name: "foo"
16652///        dict_entries {
16653///          name: "a"
16654///          bool_value: true
16655///        }
16656///        dict_entries {
16657///          name: "b"
16658///          int_value: 123
16659///        }
16660///      }
16661///      debug_annotations {
16662///        name: "bar"
16663///        array_values {
16664///          string_value: "hello"
16665///        }
16666///        array_values {
16667///          string_value: "world"
16668///        }
16669///      }
16670///    }
16671///
16672/// Next ID: 18.
16673/// Reserved ID: 15
16674#[derive(Clone, PartialEq, ::prost::Message)]
16675pub struct DebugAnnotation {
16676    #[prost(bytes="vec", optional, tag="14")]
16677    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16678    #[prost(message, repeated, tag="11")]
16679    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
16680    #[prost(message, repeated, tag="12")]
16681    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
16682    /// Name fields are set only for dictionary entries.
16683    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
16684    pub name_field: ::core::option::Option<debug_annotation::NameField>,
16685    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
16686    pub value: ::core::option::Option<debug_annotation::Value>,
16687    /// Used to embed arbitrary proto messages (which are also typically used to
16688    /// represent typed TrackEvent arguments). |proto_type_name| or
16689    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
16690    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
16691    /// proto messages. See |TracedValue::WriteProto| for more details.
16692    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
16693    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
16694}
16695/// Nested message and enum types in `DebugAnnotation`.
16696pub mod debug_annotation {
16697    /// Deprecated legacy way to use nested values. Only kept for
16698    /// backwards-compatibility in TraceProcessor. May be removed in the future -
16699    /// code filling protos should use |dict_entries| and |array_values| instead.
16700    #[derive(Clone, PartialEq, ::prost::Message)]
16701    pub struct NestedValue {
16702        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
16703        pub nested_type: ::core::option::Option<i32>,
16704        #[prost(string, repeated, tag="2")]
16705        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16706        #[prost(message, repeated, tag="3")]
16707        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
16708        #[prost(message, repeated, tag="4")]
16709        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
16710        #[prost(int64, optional, tag="5")]
16711        pub int_value: ::core::option::Option<i64>,
16712        #[prost(double, optional, tag="6")]
16713        pub double_value: ::core::option::Option<f64>,
16714        #[prost(bool, optional, tag="7")]
16715        pub bool_value: ::core::option::Option<bool>,
16716        #[prost(string, optional, tag="8")]
16717        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
16718    }
16719    /// Nested message and enum types in `NestedValue`.
16720    pub mod nested_value {
16721        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16722        #[repr(i32)]
16723        pub enum NestedType {
16724            /// leaf value.
16725            Unspecified = 0,
16726            Dict = 1,
16727            Array = 2,
16728        }
16729        impl NestedType {
16730            /// String value of the enum field names used in the ProtoBuf definition.
16731            ///
16732            /// The values are not transformed in any way and thus are considered stable
16733            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16734            pub fn as_str_name(&self) -> &'static str {
16735                match self {
16736                    NestedType::Unspecified => "UNSPECIFIED",
16737                    NestedType::Dict => "DICT",
16738                    NestedType::Array => "ARRAY",
16739                }
16740            }
16741        }
16742    }
16743    /// Name fields are set only for dictionary entries.
16744    #[derive(Clone, PartialEq, ::prost::Oneof)]
16745    pub enum NameField {
16746        /// interned DebugAnnotationName.
16747        #[prost(uint64, tag="1")]
16748        NameIid(u64),
16749        /// non-interned variant.
16750        #[prost(string, tag="10")]
16751        Name(::prost::alloc::string::String),
16752    }
16753    #[derive(Clone, PartialEq, ::prost::Oneof)]
16754    pub enum Value {
16755        #[prost(bool, tag="2")]
16756        BoolValue(bool),
16757        #[prost(uint64, tag="3")]
16758        UintValue(u64),
16759        #[prost(int64, tag="4")]
16760        IntValue(i64),
16761        #[prost(double, tag="5")]
16762        DoubleValue(f64),
16763        /// Pointers are stored in a separate type as the JSON output treats them
16764        /// differently from other uint64 values.
16765        #[prost(uint64, tag="7")]
16766        PointerValue(u64),
16767        /// Deprecated. Use dict_entries / array_values instead.
16768        #[prost(message, tag="8")]
16769        NestedValue(NestedValue),
16770        /// Legacy instrumentation may not support conversion of nested data to
16771        /// NestedValue yet.
16772        #[prost(string, tag="9")]
16773        LegacyJsonValue(::prost::alloc::string::String),
16774        /// interned and non-interned variants of strings.
16775        #[prost(string, tag="6")]
16776        StringValue(::prost::alloc::string::String),
16777        /// Corresponds to |debug_annotation_string_values| field in InternedData.
16778        #[prost(uint64, tag="17")]
16779        StringValueIid(u64),
16780    }
16781    /// Used to embed arbitrary proto messages (which are also typically used to
16782    /// represent typed TrackEvent arguments). |proto_type_name| or
16783    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
16784    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
16785    /// proto messages. See |TracedValue::WriteProto| for more details.
16786    #[derive(Clone, PartialEq, ::prost::Oneof)]
16787    pub enum ProtoTypeDescriptor {
16788        #[prost(string, tag="16")]
16789        ProtoTypeName(::prost::alloc::string::String),
16790        /// interned DebugAnnotationValueTypeName.
16791        #[prost(uint64, tag="13")]
16792        ProtoTypeNameIid(u64),
16793    }
16794}
16795// --------------------
16796// Interned data types:
16797// --------------------
16798
16799#[derive(Clone, PartialEq, ::prost::Message)]
16800pub struct DebugAnnotationName {
16801    #[prost(uint64, optional, tag="1")]
16802    pub iid: ::core::option::Option<u64>,
16803    #[prost(string, optional, tag="2")]
16804    pub name: ::core::option::Option<::prost::alloc::string::String>,
16805}
16806/// See the |proto_type_descriptor| comment.
16807#[derive(Clone, PartialEq, ::prost::Message)]
16808pub struct DebugAnnotationValueTypeName {
16809    #[prost(uint64, optional, tag="1")]
16810    pub iid: ::core::option::Option<u64>,
16811    #[prost(string, optional, tag="2")]
16812    pub name: ::core::option::Option<::prost::alloc::string::String>,
16813}
16814// End of protos/perfetto/trace/track_event/debug_annotation.proto
16815
16816// Begin of protos/perfetto/trace/track_event/log_message.proto
16817
16818#[derive(Clone, PartialEq, ::prost::Message)]
16819pub struct LogMessage {
16820    /// interned SourceLocation.
16821    #[prost(uint64, optional, tag="1")]
16822    pub source_location_iid: ::core::option::Option<u64>,
16823    /// interned LogMessageBody.
16824    #[prost(uint64, optional, tag="2")]
16825    pub body_iid: ::core::option::Option<u64>,
16826    #[prost(enumeration="log_message::Priority", optional, tag="3")]
16827    pub prio: ::core::option::Option<i32>,
16828}
16829/// Nested message and enum types in `LogMessage`.
16830pub mod log_message {
16831    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16832    #[repr(i32)]
16833    pub enum Priority {
16834        PrioUnspecified = 0,
16835        PrioUnused = 1,
16836        PrioVerbose = 2,
16837        PrioDebug = 3,
16838        PrioInfo = 4,
16839        PrioWarn = 5,
16840        PrioError = 6,
16841        PrioFatal = 7,
16842    }
16843    impl Priority {
16844        /// String value of the enum field names used in the ProtoBuf definition.
16845        ///
16846        /// The values are not transformed in any way and thus are considered stable
16847        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16848        pub fn as_str_name(&self) -> &'static str {
16849            match self {
16850                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
16851                Priority::PrioUnused => "PRIO_UNUSED",
16852                Priority::PrioVerbose => "PRIO_VERBOSE",
16853                Priority::PrioDebug => "PRIO_DEBUG",
16854                Priority::PrioInfo => "PRIO_INFO",
16855                Priority::PrioWarn => "PRIO_WARN",
16856                Priority::PrioError => "PRIO_ERROR",
16857                Priority::PrioFatal => "PRIO_FATAL",
16858            }
16859        }
16860    }
16861}
16862// --------------------
16863// Interned data types:
16864// --------------------
16865
16866#[derive(Clone, PartialEq, ::prost::Message)]
16867pub struct LogMessageBody {
16868    #[prost(uint64, optional, tag="1")]
16869    pub iid: ::core::option::Option<u64>,
16870    #[prost(string, optional, tag="2")]
16871    pub body: ::core::option::Option<::prost::alloc::string::String>,
16872}
16873// End of protos/perfetto/trace/track_event/log_message.proto
16874
16875// Begin of protos/perfetto/trace/track_event/source_location.proto
16876
16877// --------------------
16878// Interned data types:
16879// --------------------
16880
16881/// A source location, represented as a native symbol.
16882/// This is similar to `message Frame` from
16883/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
16884/// source code locations (for example in track event args), not stack frames.
16885#[derive(Clone, PartialEq, ::prost::Message)]
16886pub struct UnsymbolizedSourceLocation {
16887    #[prost(uint64, optional, tag="1")]
16888    pub iid: ::core::option::Option<u64>,
16889    #[prost(uint64, optional, tag="2")]
16890    pub mapping_id: ::core::option::Option<u64>,
16891    #[prost(uint64, optional, tag="3")]
16892    pub rel_pc: ::core::option::Option<u64>,
16893}
16894#[derive(Clone, PartialEq, ::prost::Message)]
16895pub struct SourceLocation {
16896    #[prost(uint64, optional, tag="1")]
16897    pub iid: ::core::option::Option<u64>,
16898    #[prost(string, optional, tag="2")]
16899    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
16900    #[prost(string, optional, tag="3")]
16901    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
16902    #[prost(uint32, optional, tag="4")]
16903    pub line_number: ::core::option::Option<u32>,
16904}
16905// End of protos/perfetto/trace/track_event/source_location.proto
16906
16907// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
16908
16909/// A list of processes connected to the tracing service.
16910#[derive(Clone, PartialEq, ::prost::Message)]
16911pub struct ChromeActiveProcesses {
16912    #[prost(int32, repeated, packed="false", tag="1")]
16913    pub pid: ::prost::alloc::vec::Vec<i32>,
16914}
16915// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
16916
16917/// Trace event arguments for application state changes.
16918#[derive(Clone, PartialEq, ::prost::Message)]
16919pub struct ChromeApplicationStateInfo {
16920    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
16921    pub application_state: ::core::option::Option<i32>,
16922}
16923/// Nested message and enum types in `ChromeApplicationStateInfo`.
16924pub mod chrome_application_state_info {
16925    /// Enum definition taken from:
16926    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
16927    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16928    #[repr(i32)]
16929    pub enum ChromeApplicationState {
16930        ApplicationStateUnknown = 0,
16931        ApplicationStateHasRunningActivities = 1,
16932        ApplicationStateHasPausedActivities = 2,
16933        ApplicationStateHasStoppedActivities = 3,
16934        ApplicationStateHasDestroyedActivities = 4,
16935    }
16936    impl ChromeApplicationState {
16937        /// String value of the enum field names used in the ProtoBuf definition.
16938        ///
16939        /// The values are not transformed in any way and thus are considered stable
16940        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16941        pub fn as_str_name(&self) -> &'static str {
16942            match self {
16943                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
16944                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
16945                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
16946                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
16947                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
16948            }
16949        }
16950    }
16951}
16952/// Next id: 18
16953#[derive(Clone, PartialEq, ::prost::Message)]
16954pub struct ChromeCompositorSchedulerState {
16955    #[prost(message, optional, tag="1")]
16956    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
16957    #[prost(bool, optional, tag="2")]
16958    pub observing_begin_frame_source: ::core::option::Option<bool>,
16959    #[prost(bool, optional, tag="3")]
16960    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
16961    #[prost(bool, optional, tag="4")]
16962    pub pending_begin_frame_task: ::core::option::Option<bool>,
16963    #[prost(bool, optional, tag="5")]
16964    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
16965    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
16966    pub inside_action: ::core::option::Option<i32>,
16967    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
16968    pub deadline_mode: ::core::option::Option<i32>,
16969    #[prost(int64, optional, tag="9")]
16970    pub deadline_us: ::core::option::Option<i64>,
16971    #[prost(int64, optional, tag="10")]
16972    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
16973    #[prost(int64, optional, tag="11")]
16974    pub now_us: ::core::option::Option<i64>,
16975    #[prost(int64, optional, tag="12")]
16976    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
16977    #[prost(int64, optional, tag="13")]
16978    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
16979    #[prost(message, optional, tag="14")]
16980    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
16981    #[prost(message, optional, tag="15")]
16982    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
16983    #[prost(message, optional, tag="16")]
16984    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
16985    #[prost(message, optional, tag="17")]
16986    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
16987}
16988/// Nested message and enum types in `ChromeCompositorSchedulerState`.
16989pub mod chrome_compositor_scheduler_state {
16990    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16991    #[repr(i32)]
16992    pub enum BeginImplFrameDeadlineMode {
16993        DeadlineModeUnspecified = 0,
16994        DeadlineModeNone = 1,
16995        DeadlineModeImmediate = 2,
16996        DeadlineModeRegular = 3,
16997        DeadlineModeLate = 4,
16998        DeadlineModeBlocked = 5,
16999    }
17000    impl BeginImplFrameDeadlineMode {
17001        /// String value of the enum field names used in the ProtoBuf definition.
17002        ///
17003        /// The values are not transformed in any way and thus are considered stable
17004        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17005        pub fn as_str_name(&self) -> &'static str {
17006            match self {
17007                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
17008                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
17009                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
17010                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
17011                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
17012                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
17013            }
17014        }
17015    }
17016}
17017/// Describes the current values stored in the Chrome Compositor state machine.
17018/// Next id: 3
17019#[derive(Clone, PartialEq, ::prost::Message)]
17020pub struct ChromeCompositorStateMachine {
17021    #[prost(message, optional, tag="1")]
17022    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
17023    #[prost(message, optional, tag="2")]
17024    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
17025}
17026/// Nested message and enum types in `ChromeCompositorStateMachine`.
17027pub mod chrome_compositor_state_machine {
17028    /// Next id: 6
17029    #[derive(Clone, PartialEq, ::prost::Message)]
17030    pub struct MajorState {
17031        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
17032        pub next_action: ::core::option::Option<i32>,
17033        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
17034        pub begin_impl_frame_state: ::core::option::Option<i32>,
17035        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
17036        pub begin_main_frame_state: ::core::option::Option<i32>,
17037        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
17038        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
17039        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
17040        pub forced_redraw_state: ::core::option::Option<i32>,
17041    }
17042    /// Nested message and enum types in `MajorState`.
17043    pub mod major_state {
17044        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17045        #[repr(i32)]
17046        pub enum BeginImplFrameState {
17047            BeginImplFrameUnspecified = 0,
17048            BeginImplFrameIdle = 1,
17049            BeginImplFrameInsideBeginFrame = 2,
17050            BeginImplFrameInsideDeadline = 3,
17051        }
17052        impl BeginImplFrameState {
17053            /// String value of the enum field names used in the ProtoBuf definition.
17054            ///
17055            /// The values are not transformed in any way and thus are considered stable
17056            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17057            pub fn as_str_name(&self) -> &'static str {
17058                match self {
17059                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
17060                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
17061                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
17062                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
17063                }
17064            }
17065        }
17066        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17067        #[repr(i32)]
17068        pub enum BeginMainFrameState {
17069            BeginMainFrameUnspecified = 0,
17070            BeginMainFrameIdle = 1,
17071            BeginMainFrameSent = 2,
17072            BeginMainFrameReadyToCommit = 3,
17073        }
17074        impl BeginMainFrameState {
17075            /// String value of the enum field names used in the ProtoBuf definition.
17076            ///
17077            /// The values are not transformed in any way and thus are considered stable
17078            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17079            pub fn as_str_name(&self) -> &'static str {
17080                match self {
17081                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
17082                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
17083                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
17084                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
17085                }
17086            }
17087        }
17088        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17089        #[repr(i32)]
17090        pub enum LayerTreeFrameSinkState {
17091            LayerTreeFrameUnspecified = 0,
17092            LayerTreeFrameNone = 1,
17093            LayerTreeFrameActive = 2,
17094            LayerTreeFrameCreating = 3,
17095            LayerTreeFrameWaitingForFirstCommit = 4,
17096            LayerTreeFrameWaitingForFirstActivation = 5,
17097        }
17098        impl LayerTreeFrameSinkState {
17099            /// String value of the enum field names used in the ProtoBuf definition.
17100            ///
17101            /// The values are not transformed in any way and thus are considered stable
17102            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17103            pub fn as_str_name(&self) -> &'static str {
17104                match self {
17105                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
17106                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
17107                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
17108                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
17109                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
17110                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
17111                }
17112            }
17113        }
17114        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17115        #[repr(i32)]
17116        pub enum ForcedRedrawOnTimeoutState {
17117            ForcedRedrawUnspecified = 0,
17118            ForcedRedrawIdle = 1,
17119            ForcedRedrawWaitingForCommit = 2,
17120            ForcedRedrawWaitingForActivation = 3,
17121            ForcedRedrawWaitingForDraw = 4,
17122        }
17123        impl ForcedRedrawOnTimeoutState {
17124            /// String value of the enum field names used in the ProtoBuf definition.
17125            ///
17126            /// The values are not transformed in any way and thus are considered stable
17127            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17128            pub fn as_str_name(&self) -> &'static str {
17129                match self {
17130                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
17131                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
17132                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
17133                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
17134                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
17135                }
17136            }
17137        }
17138    }
17139    /// Next id: 47
17140    #[derive(Clone, PartialEq, ::prost::Message)]
17141    pub struct MinorState {
17142        #[prost(int32, optional, tag="1")]
17143        pub commit_count: ::core::option::Option<i32>,
17144        #[prost(int32, optional, tag="2")]
17145        pub current_frame_number: ::core::option::Option<i32>,
17146        #[prost(int32, optional, tag="3")]
17147        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
17148        #[prost(int32, optional, tag="4")]
17149        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
17150        #[prost(int32, optional, tag="5")]
17151        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
17152        #[prost(bool, optional, tag="6")]
17153        pub did_draw: ::core::option::Option<bool>,
17154        #[prost(bool, optional, tag="7")]
17155        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
17156        #[prost(bool, optional, tag="8")]
17157        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
17158        #[prost(bool, optional, tag="9")]
17159        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
17160        #[prost(bool, optional, tag="10")]
17161        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
17162        #[prost(bool, optional, tag="11")]
17163        pub did_commit_during_frame: ::core::option::Option<bool>,
17164        #[prost(bool, optional, tag="12")]
17165        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
17166        #[prost(bool, optional, tag="13")]
17167        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
17168        #[prost(bool, optional, tag="14")]
17169        pub did_prepare_tiles: ::core::option::Option<bool>,
17170        #[prost(int32, optional, tag="15")]
17171        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
17172        #[prost(int32, optional, tag="16")]
17173        pub pending_submit_frames: ::core::option::Option<i32>,
17174        #[prost(int32, optional, tag="17")]
17175        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
17176        #[prost(bool, optional, tag="18")]
17177        pub needs_redraw: ::core::option::Option<bool>,
17178        #[prost(bool, optional, tag="19")]
17179        pub needs_prepare_tiles: ::core::option::Option<bool>,
17180        #[prost(bool, optional, tag="20")]
17181        pub needs_begin_main_frame: ::core::option::Option<bool>,
17182        #[prost(bool, optional, tag="21")]
17183        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
17184        #[prost(bool, optional, tag="22")]
17185        pub visible: ::core::option::Option<bool>,
17186        #[prost(bool, optional, tag="23")]
17187        pub begin_frame_source_paused: ::core::option::Option<bool>,
17188        #[prost(bool, optional, tag="24")]
17189        pub can_draw: ::core::option::Option<bool>,
17190        #[prost(bool, optional, tag="25")]
17191        pub resourceless_draw: ::core::option::Option<bool>,
17192        #[prost(bool, optional, tag="26")]
17193        pub has_pending_tree: ::core::option::Option<bool>,
17194        #[prost(bool, optional, tag="27")]
17195        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
17196        #[prost(bool, optional, tag="28")]
17197        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
17198        #[prost(bool, optional, tag="29")]
17199        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
17200        #[prost(bool, optional, tag="30")]
17201        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
17202        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
17203        pub tree_priority: ::core::option::Option<i32>,
17204        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
17205        pub scroll_handler_state: ::core::option::Option<i32>,
17206        #[prost(bool, optional, tag="33")]
17207        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
17208        #[prost(bool, optional, tag="34")]
17209        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
17210        #[prost(bool, optional, tag="36")]
17211        pub video_needs_begin_frames: ::core::option::Option<bool>,
17212        #[prost(bool, optional, tag="37")]
17213        pub defer_begin_main_frame: ::core::option::Option<bool>,
17214        #[prost(bool, optional, tag="38")]
17215        pub last_commit_had_no_updates: ::core::option::Option<bool>,
17216        #[prost(bool, optional, tag="39")]
17217        pub did_draw_in_last_frame: ::core::option::Option<bool>,
17218        #[prost(bool, optional, tag="40")]
17219        pub did_submit_in_last_frame: ::core::option::Option<bool>,
17220        #[prost(bool, optional, tag="41")]
17221        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
17222        #[prost(bool, optional, tag="42")]
17223        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
17224        #[prost(bool, optional, tag="43")]
17225        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
17226        #[prost(bool, optional, tag="44")]
17227        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
17228        #[prost(bool, optional, tag="45")]
17229        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
17230        #[prost(bool, optional, tag="46")]
17231        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
17232    }
17233    /// Nested message and enum types in `MinorState`.
17234    pub mod minor_state {
17235        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17236        #[repr(i32)]
17237        pub enum TreePriority {
17238            Unspecified = 0,
17239            SamePriorityForBothTrees = 1,
17240            SmoothnessTakesPriority = 2,
17241            NewContentTakesPriority = 3,
17242        }
17243        impl TreePriority {
17244            /// String value of the enum field names used in the ProtoBuf definition.
17245            ///
17246            /// The values are not transformed in any way and thus are considered stable
17247            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17248            pub fn as_str_name(&self) -> &'static str {
17249                match self {
17250                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
17251                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
17252                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
17253                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
17254                }
17255            }
17256        }
17257        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17258        #[repr(i32)]
17259        pub enum ScrollHandlerState {
17260            ScrollHandlerUnspecified = 0,
17261            ScrollAffectsScrollHandler = 1,
17262            ScrollDoesNotAffectScrollHandler = 2,
17263        }
17264        impl ScrollHandlerState {
17265            /// String value of the enum field names used in the ProtoBuf definition.
17266            ///
17267            /// The values are not transformed in any way and thus are considered stable
17268            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17269            pub fn as_str_name(&self) -> &'static str {
17270                match self {
17271                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
17272                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
17273                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
17274                }
17275            }
17276        }
17277    }
17278}
17279/// Next id: 13
17280#[derive(Clone, PartialEq, ::prost::Message)]
17281pub struct BeginFrameArgs {
17282    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
17283    pub r#type: ::core::option::Option<i32>,
17284    #[prost(uint64, optional, tag="2")]
17285    pub source_id: ::core::option::Option<u64>,
17286    #[prost(uint64, optional, tag="3")]
17287    pub sequence_number: ::core::option::Option<u64>,
17288    #[prost(int64, optional, tag="4")]
17289    pub frame_time_us: ::core::option::Option<i64>,
17290    #[prost(int64, optional, tag="5")]
17291    pub deadline_us: ::core::option::Option<i64>,
17292    #[prost(int64, optional, tag="6")]
17293    pub interval_delta_us: ::core::option::Option<i64>,
17294    #[prost(bool, optional, tag="7")]
17295    pub on_critical_path: ::core::option::Option<bool>,
17296    #[prost(bool, optional, tag="8")]
17297    pub animate_only: ::core::option::Option<bool>,
17298    #[prost(int64, optional, tag="12")]
17299    pub frames_throttled_since_last: ::core::option::Option<i64>,
17300    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
17301    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
17302}
17303/// Nested message and enum types in `BeginFrameArgs`.
17304pub mod begin_frame_args {
17305    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
17306    /// drop this in the proto representation, and instead make the JSON format
17307    /// "subtype" field become the type field.
17308    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17309    #[repr(i32)]
17310    pub enum BeginFrameArgsType {
17311        Unspecified = 0,
17312        Invalid = 1,
17313        Normal = 2,
17314        Missed = 3,
17315    }
17316    impl BeginFrameArgsType {
17317        /// String value of the enum field names used in the ProtoBuf definition.
17318        ///
17319        /// The values are not transformed in any way and thus are considered stable
17320        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17321        pub fn as_str_name(&self) -> &'static str {
17322            match self {
17323                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
17324                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
17325                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
17326                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
17327            }
17328        }
17329    }
17330    #[derive(Clone, PartialEq, ::prost::Oneof)]
17331    pub enum CreatedFrom {
17332        /// The interned SourceLocation.
17333        #[prost(uint64, tag="9")]
17334        SourceLocationIid(u64),
17335        /// The SourceLocation that this args was created from.
17336        /// TODO(nuskos): Eventually we will support interning inside of
17337        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
17338        /// since we can emit it as part of the InternedData message. When we can
17339        /// remove this |source_location|.
17340        #[prost(message, tag="10")]
17341        SourceLocation(super::SourceLocation),
17342    }
17343}
17344/// Next id: 7
17345#[derive(Clone, PartialEq, ::prost::Message)]
17346pub struct BeginImplFrameArgs {
17347    #[prost(int64, optional, tag="1")]
17348    pub updated_at_us: ::core::option::Option<i64>,
17349    #[prost(int64, optional, tag="2")]
17350    pub finished_at_us: ::core::option::Option<i64>,
17351    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
17352    pub state: ::core::option::Option<i32>,
17353    #[prost(message, optional, tag="6")]
17354    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
17355    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
17356    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
17357}
17358/// Nested message and enum types in `BeginImplFrameArgs`.
17359pub mod begin_impl_frame_args {
17360    #[derive(Clone, PartialEq, ::prost::Message)]
17361    pub struct TimestampsInUs {
17362        #[prost(int64, optional, tag="1")]
17363        pub interval_delta: ::core::option::Option<i64>,
17364        #[prost(int64, optional, tag="2")]
17365        pub now_to_deadline_delta: ::core::option::Option<i64>,
17366        #[prost(int64, optional, tag="3")]
17367        pub frame_time_to_now_delta: ::core::option::Option<i64>,
17368        #[prost(int64, optional, tag="4")]
17369        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
17370        #[prost(int64, optional, tag="5")]
17371        pub now: ::core::option::Option<i64>,
17372        #[prost(int64, optional, tag="6")]
17373        pub frame_time: ::core::option::Option<i64>,
17374        #[prost(int64, optional, tag="7")]
17375        pub deadline: ::core::option::Option<i64>,
17376    }
17377    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17378    #[repr(i32)]
17379    pub enum State {
17380        BeginFrameFinished = 0,
17381        BeginFrameUsing = 1,
17382    }
17383    impl State {
17384        /// String value of the enum field names used in the ProtoBuf definition.
17385        ///
17386        /// The values are not transformed in any way and thus are considered stable
17387        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17388        pub fn as_str_name(&self) -> &'static str {
17389            match self {
17390                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
17391                State::BeginFrameUsing => "BEGIN_FRAME_USING",
17392            }
17393        }
17394    }
17395    #[derive(Clone, PartialEq, ::prost::Oneof)]
17396    pub enum Args {
17397        /// Only set if |state| is BEGIN_FRAME_FINISHED.
17398        #[prost(message, tag="4")]
17399        CurrentArgs(super::BeginFrameArgs),
17400        /// Only set if |state| is BEGIN_FRAME_USING.
17401        #[prost(message, tag="5")]
17402        LastArgs(super::BeginFrameArgs),
17403    }
17404}
17405#[derive(Clone, PartialEq, ::prost::Message)]
17406pub struct BeginFrameObserverState {
17407    #[prost(int64, optional, tag="1")]
17408    pub dropped_begin_frame_args: ::core::option::Option<i64>,
17409    #[prost(message, optional, tag="2")]
17410    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
17411}
17412#[derive(Clone, PartialEq, ::prost::Message)]
17413pub struct BeginFrameSourceState {
17414    #[prost(uint32, optional, tag="1")]
17415    pub source_id: ::core::option::Option<u32>,
17416    #[prost(bool, optional, tag="2")]
17417    pub paused: ::core::option::Option<bool>,
17418    #[prost(uint32, optional, tag="3")]
17419    pub num_observers: ::core::option::Option<u32>,
17420    #[prost(message, optional, tag="4")]
17421    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
17422}
17423#[derive(Clone, PartialEq, ::prost::Message)]
17424pub struct CompositorTimingHistory {
17425    #[prost(int64, optional, tag="1")]
17426    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
17427    #[prost(int64, optional, tag="2")]
17428    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
17429    #[prost(int64, optional, tag="3")]
17430    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
17431    #[prost(int64, optional, tag="4")]
17432    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
17433    #[prost(int64, optional, tag="5")]
17434    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
17435    #[prost(int64, optional, tag="6")]
17436    pub activate_estimate_delta_us: ::core::option::Option<i64>,
17437    #[prost(int64, optional, tag="7")]
17438    pub draw_estimate_delta_us: ::core::option::Option<i64>,
17439}
17440// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
17441
17442// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
17443
17444/// Details about ContentSettings trace events.
17445#[derive(Clone, PartialEq, ::prost::Message)]
17446pub struct ChromeContentSettingsEventInfo {
17447    /// The number of user defined hostname patterns for content settings at
17448    /// browser start. Similar to UMA histogram
17449    /// 'ContentSettings.NumberOfExceptions'.
17450    #[prost(uint32, optional, tag="1")]
17451    pub number_of_exceptions: ::core::option::Option<u32>,
17452}
17453// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
17454
17455#[derive(Clone, PartialEq, ::prost::Message)]
17456pub struct ChromeFrameReporter {
17457    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
17458    pub state: ::core::option::Option<i32>,
17459    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
17460    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
17461    pub reason: ::core::option::Option<i32>,
17462    #[prost(uint64, optional, tag="3")]
17463    pub frame_source: ::core::option::Option<u64>,
17464    #[prost(uint64, optional, tag="4")]
17465    pub frame_sequence: ::core::option::Option<u64>,
17466    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
17467    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
17468    /// smoothness.
17469    #[prost(bool, optional, tag="5")]
17470    pub affects_smoothness: ::core::option::Option<bool>,
17471    /// The type of active scroll.
17472    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
17473    pub scroll_state: ::core::option::Option<i32>,
17474    /// If any main thread animation is active during this frame.
17475    #[prost(bool, optional, tag="7")]
17476    pub has_main_animation: ::core::option::Option<bool>,
17477    /// If any compositor thread animation is active during this frame.
17478    #[prost(bool, optional, tag="8")]
17479    pub has_compositor_animation: ::core::option::Option<bool>,
17480    /// If any touch-driven UX (not scroll) is active during this frame.
17481    #[prost(bool, optional, tag="9")]
17482    pub has_smooth_input_main: ::core::option::Option<bool>,
17483    /// Whether the frame contained any missing content (i.e. whether there was
17484    /// checkerboarding in the frame).  If has_missing_content,
17485    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
17486    /// values, has_missing_content should equal checkerboarded_needs_raster ||
17487    /// checkerboarded_needs_record.
17488    #[prost(bool, optional, tag="10")]
17489    pub has_missing_content: ::core::option::Option<bool>,
17490    /// The id of layer_tree_host that the frame has been produced for.
17491    #[prost(uint64, optional, tag="11")]
17492    pub layer_tree_host_id: ::core::option::Option<u64>,
17493    /// If total latency of PipelineReporter exceeds a certain limit.
17494    #[prost(bool, optional, tag="12")]
17495    pub has_high_latency: ::core::option::Option<bool>,
17496    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
17497    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
17498    /// (i.e. dropped frames when there are no partial compositor updates).
17499    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
17500    pub frame_type: ::core::option::Option<i32>,
17501    /// The breakdown stage of PipelineReporter that is most likely accountable for
17502    /// high latency.
17503    #[prost(string, repeated, tag="14")]
17504    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17505    /// Whether the frame contained any content that is not fully rastered.
17506    #[prost(bool, optional, tag="15")]
17507    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
17508    /// Whether the frame contained any content that is not fully recorded.
17509    #[prost(bool, optional, tag="16")]
17510    pub checkerboarded_needs_record: ::core::option::Option<bool>,
17511    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
17512    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
17513    #[prost(int64, optional, tag="17")]
17514    pub surface_frame_trace_id: ::core::option::Option<i64>,
17515    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
17516    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
17517    #[prost(int64, optional, tag="18")]
17518    pub display_trace_id: ::core::option::Option<i64>,
17519}
17520/// Nested message and enum types in `ChromeFrameReporter`.
17521pub mod chrome_frame_reporter {
17522    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17523    #[repr(i32)]
17524    pub enum State {
17525        /// The frame did not have any updates to present.
17526        NoUpdateDesired = 0,
17527        /// The frame presented all the desired updates (i.e. any updates requested
17528        /// from both the compositor thread and main-threads were handled).
17529        PresentedAll = 1,
17530        /// The frame was presented with some updates, but also missed some updates
17531        /// (e.g. missed updates from the main-thread, but included updates from the
17532        /// compositor thread).
17533        PresentedPartial = 2,
17534        /// The frame was dropped, i.e. some updates were desired for the frame, but
17535        /// was not presented.
17536        Dropped = 3,
17537    }
17538    impl State {
17539        /// String value of the enum field names used in the ProtoBuf definition.
17540        ///
17541        /// The values are not transformed in any way and thus are considered stable
17542        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17543        pub fn as_str_name(&self) -> &'static str {
17544            match self {
17545                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
17546                State::PresentedAll => "STATE_PRESENTED_ALL",
17547                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
17548                State::Dropped => "STATE_DROPPED",
17549            }
17550        }
17551    }
17552    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17553    #[repr(i32)]
17554    pub enum FrameDropReason {
17555        ReasonUnspecified = 0,
17556        /// Frame was dropped by the display-compositor.
17557        /// The display-compositor may drop a frame some times (e.g. the frame missed
17558        /// the deadline, or was blocked on surface-sync, etc.)
17559        ReasonDisplayCompositor = 1,
17560        /// Frame was dropped because of the main-thread.
17561        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
17562        /// is running expensive javascript, or doing a lot of layout updates, etc.
17563        ReasonMainThread = 2,
17564        /// Frame was dropped by the client compositor.
17565        /// The client compositor can drop some frames too (e.g. attempting to
17566        /// recover latency, missing the deadline, etc.).
17567        ReasonClientCompositor = 3,
17568    }
17569    impl FrameDropReason {
17570        /// String value of the enum field names used in the ProtoBuf definition.
17571        ///
17572        /// The values are not transformed in any way and thus are considered stable
17573        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17574        pub fn as_str_name(&self) -> &'static str {
17575            match self {
17576                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
17577                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
17578                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
17579                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
17580            }
17581        }
17582    }
17583    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17584    #[repr(i32)]
17585    pub enum ScrollState {
17586        ScrollNone = 0,
17587        ScrollMainThread = 1,
17588        ScrollCompositorThread = 2,
17589        ScrollRaster = 3,
17590        /// Used when it can't be determined whether a scroll is in progress or not.
17591        ScrollUnknown = 4,
17592    }
17593    impl ScrollState {
17594        /// String value of the enum field names used in the ProtoBuf definition.
17595        ///
17596        /// The values are not transformed in any way and thus are considered stable
17597        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17598        pub fn as_str_name(&self) -> &'static str {
17599            match self {
17600                ScrollState::ScrollNone => "SCROLL_NONE",
17601                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
17602                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
17603                ScrollState::ScrollRaster => "SCROLL_RASTER",
17604                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
17605            }
17606        }
17607    }
17608    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17609    #[repr(i32)]
17610    pub enum FrameType {
17611        Forked = 0,
17612        Backfill = 1,
17613    }
17614    impl FrameType {
17615        /// String value of the enum field names used in the ProtoBuf definition.
17616        ///
17617        /// The values are not transformed in any way and thus are considered stable
17618        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17619        pub fn as_str_name(&self) -> &'static str {
17620            match self {
17621                FrameType::Forked => "FORKED",
17622                FrameType::Backfill => "BACKFILL",
17623            }
17624        }
17625    }
17626}
17627// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
17628
17629// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
17630
17631/// Details about one of Chrome's keyed services associated with the event.
17632#[derive(Clone, PartialEq, ::prost::Message)]
17633pub struct ChromeKeyedService {
17634    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
17635    /// Chrome, these are static strings known at compile time).
17636    #[prost(string, optional, tag="1")]
17637    pub name: ::core::option::Option<::prost::alloc::string::String>,
17638}
17639// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
17640
17641// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
17642
17643#[derive(Clone, PartialEq, ::prost::Message)]
17644pub struct ChromeLatencyInfo {
17645    #[prost(int64, optional, tag="1")]
17646    pub trace_id: ::core::option::Option<i64>,
17647    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
17648    pub step: ::core::option::Option<i32>,
17649    #[prost(int32, optional, tag="3")]
17650    pub frame_tree_node_id: ::core::option::Option<i32>,
17651    #[prost(message, repeated, tag="4")]
17652    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
17653    #[prost(bool, optional, tag="5")]
17654    pub is_coalesced: ::core::option::Option<bool>,
17655    #[prost(int64, optional, tag="6")]
17656    pub gesture_scroll_id: ::core::option::Option<i64>,
17657    #[prost(int64, optional, tag="7")]
17658    pub touch_id: ::core::option::Option<i64>,
17659    /// The type of input corresponding to this `ChromeLatencyInfo`.
17660    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
17661    pub input_type: ::core::option::Option<i32>,
17662}
17663/// Nested message and enum types in `ChromeLatencyInfo`.
17664pub mod chrome_latency_info {
17665    #[derive(Clone, PartialEq, ::prost::Message)]
17666    pub struct ComponentInfo {
17667        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
17668        pub component_type: ::core::option::Option<i32>,
17669        /// Microsecond timestamp in CLOCK_MONOTONIC domain
17670        #[prost(uint64, optional, tag="2")]
17671        pub time_us: ::core::option::Option<u64>,
17672    }
17673    /// NEXT ID: 12
17674    /// All step are optional but the enum is ordered (not by number) below in the
17675    /// order we expect them to appear if they are emitted in trace in a blocking
17676    /// fashion.
17677    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17678    #[repr(i32)]
17679    pub enum Step {
17680        Unspecified = 0,
17681        /// Emitted on the browser main thread.
17682        SendInputEventUi = 3,
17683        /// Happens on the renderer's compositor.
17684        HandleInputEventImpl = 5,
17685        DidHandleInputAndOverscroll = 8,
17686        /// Occurs on the Renderer's main thread.
17687        HandleInputEventMain = 4,
17688        MainThreadScrollUpdate = 2,
17689        HandleInputEventMainCommit = 1,
17690        /// Could be emitted on both the renderer's main OR compositor.
17691        HandledInputEventMainOrImpl = 9,
17692        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
17693        /// renderer's compositor and this will be emitted.
17694        HandledInputEventImpl = 10,
17695        /// Renderer's compositor.
17696        SwapBuffers = 6,
17697        /// Happens on the VizCompositor in the GPU process.
17698        DrawAndSwap = 7,
17699        /// Happens on the GPU main thread after the swap has completed.
17700        ///
17701        /// See above for NEXT ID, enum steps are not ordered by tag number.
17702        FinishedSwapBuffers = 11,
17703    }
17704    impl Step {
17705        /// String value of the enum field names used in the ProtoBuf definition.
17706        ///
17707        /// The values are not transformed in any way and thus are considered stable
17708        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17709        pub fn as_str_name(&self) -> &'static str {
17710            match self {
17711                Step::Unspecified => "STEP_UNSPECIFIED",
17712                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
17713                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
17714                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
17715                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
17716                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
17717                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
17718                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
17719                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
17720                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
17721                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
17722                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
17723            }
17724        }
17725    }
17726    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
17727    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
17728    /// practices.
17729    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17730    #[repr(i32)]
17731    pub enum LatencyComponentType {
17732        ComponentUnspecified = 0,
17733        ComponentInputEventLatencyBeginRwh = 1,
17734        ComponentInputEventLatencyScrollUpdateOriginal = 2,
17735        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
17736        ComponentInputEventLatencyOriginal = 4,
17737        ComponentInputEventLatencyUi = 5,
17738        ComponentInputEventLatencyRendererMain = 6,
17739        ComponentInputEventLatencyRenderingScheduledMain = 7,
17740        ComponentInputEventLatencyRenderingScheduledImpl = 8,
17741        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
17742        ComponentInputEventLatencyAckRwh = 10,
17743        ComponentInputEventLatencyRendererSwap = 11,
17744        ComponentDisplayCompositorReceivedFrame = 12,
17745        ComponentInputEventGpuSwapBuffer = 13,
17746        ComponentInputEventLatencyFrameSwap = 14,
17747    }
17748    impl LatencyComponentType {
17749        /// String value of the enum field names used in the ProtoBuf definition.
17750        ///
17751        /// The values are not transformed in any way and thus are considered stable
17752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17753        pub fn as_str_name(&self) -> &'static str {
17754            match self {
17755                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
17756                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
17757                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
17758                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
17759                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
17760                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
17761                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
17762                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
17763                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
17764                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
17765                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
17766                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
17767                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
17768                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
17769                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
17770            }
17771        }
17772    }
17773    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17774    #[repr(i32)]
17775    pub enum InputType {
17776        UnspecifiedOrOther = 0,
17777        TouchMoved = 1,
17778        GestureScrollBegin = 2,
17779        GestureScrollUpdate = 3,
17780        GestureScrollEnd = 4,
17781        GestureTap = 5,
17782        GestureTapCancel = 6,
17783    }
17784    impl InputType {
17785        /// String value of the enum field names used in the ProtoBuf definition.
17786        ///
17787        /// The values are not transformed in any way and thus are considered stable
17788        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17789        pub fn as_str_name(&self) -> &'static str {
17790            match self {
17791                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
17792                InputType::TouchMoved => "TOUCH_MOVED",
17793                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
17794                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
17795                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
17796                InputType::GestureTap => "GESTURE_TAP",
17797                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
17798            }
17799        }
17800    }
17801}
17802// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
17803
17804// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
17805
17806/// Details about a legacy Chrome IPC message that is either sent by the event.
17807/// TODO(eseckler): Also use this message on the receiving side?
17808#[derive(Clone, PartialEq, ::prost::Message)]
17809pub struct ChromeLegacyIpc {
17810    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
17811    /// enum, e.g. FrameMsgStart,
17812    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
17813    pub message_class: ::core::option::Option<i32>,
17814    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
17815    /// IPC_MESSAGE_START macros.
17816    #[prost(uint32, optional, tag="2")]
17817    pub message_line: ::core::option::Option<u32>,
17818}
17819/// Nested message and enum types in `ChromeLegacyIpc`.
17820pub mod chrome_legacy_ipc {
17821    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17822    #[repr(i32)]
17823    pub enum MessageClass {
17824        ClassUnspecified = 0,
17825        ClassAutomation = 1,
17826        ClassFrame = 2,
17827        ClassPage = 3,
17828        ClassView = 4,
17829        ClassWidget = 5,
17830        ClassInput = 6,
17831        ClassTest = 7,
17832        ClassWorker = 8,
17833        ClassNacl = 9,
17834        ClassGpuChannel = 10,
17835        ClassMedia = 11,
17836        ClassPpapi = 12,
17837        ClassChrome = 13,
17838        ClassDrag = 14,
17839        ClassPrint = 15,
17840        ClassExtension = 16,
17841        ClassTextInputClient = 17,
17842        ClassBlinkTest = 18,
17843        ClassAccessibility = 19,
17844        ClassPrerender = 20,
17845        ClassChromoting = 21,
17846        ClassBrowserPlugin = 22,
17847        ClassAndroidWebView = 23,
17848        ClassNaclHost = 24,
17849        ClassEncryptedMedia = 25,
17850        ClassCast = 26,
17851        ClassGinJavaBridge = 27,
17852        ClassChromeUtilityPrinting = 28,
17853        ClassOzoneGpu = 29,
17854        ClassWebTest = 30,
17855        ClassNetworkHints = 31,
17856        ClassExtensionsGuestView = 32,
17857        ClassGuestView = 33,
17858        ClassMediaPlayerDelegate = 34,
17859        ClassExtensionWorker = 35,
17860        ClassSubresourceFilter = 36,
17861        ClassUnfreezableFrame = 37,
17862    }
17863    impl MessageClass {
17864        /// String value of the enum field names used in the ProtoBuf definition.
17865        ///
17866        /// The values are not transformed in any way and thus are considered stable
17867        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17868        pub fn as_str_name(&self) -> &'static str {
17869            match self {
17870                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
17871                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
17872                MessageClass::ClassFrame => "CLASS_FRAME",
17873                MessageClass::ClassPage => "CLASS_PAGE",
17874                MessageClass::ClassView => "CLASS_VIEW",
17875                MessageClass::ClassWidget => "CLASS_WIDGET",
17876                MessageClass::ClassInput => "CLASS_INPUT",
17877                MessageClass::ClassTest => "CLASS_TEST",
17878                MessageClass::ClassWorker => "CLASS_WORKER",
17879                MessageClass::ClassNacl => "CLASS_NACL",
17880                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
17881                MessageClass::ClassMedia => "CLASS_MEDIA",
17882                MessageClass::ClassPpapi => "CLASS_PPAPI",
17883                MessageClass::ClassChrome => "CLASS_CHROME",
17884                MessageClass::ClassDrag => "CLASS_DRAG",
17885                MessageClass::ClassPrint => "CLASS_PRINT",
17886                MessageClass::ClassExtension => "CLASS_EXTENSION",
17887                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
17888                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
17889                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
17890                MessageClass::ClassPrerender => "CLASS_PRERENDER",
17891                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
17892                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
17893                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
17894                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
17895                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
17896                MessageClass::ClassCast => "CLASS_CAST",
17897                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
17898                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
17899                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
17900                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
17901                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
17902                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
17903                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
17904                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
17905                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
17906                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
17907                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
17908            }
17909        }
17910    }
17911}
17912// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
17913
17914// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
17915
17916/// Details about Chrome message pump events
17917#[derive(Clone, PartialEq, ::prost::Message)]
17918pub struct ChromeMessagePump {
17919    /// True if there are sent messages in the queue.
17920    #[prost(bool, optional, tag="1")]
17921    pub sent_messages_in_queue: ::core::option::Option<bool>,
17922    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
17923    /// invoke.
17924    #[prost(uint64, optional, tag="2")]
17925    pub io_handler_location_iid: ::core::option::Option<u64>,
17926}
17927// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
17928
17929// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
17930
17931/// Contains information to identify mojo handling events. The trace events in
17932/// mojo are common for all mojo interfaces and this information is used to
17933/// identify who is the caller or callee.
17934#[derive(Clone, PartialEq, ::prost::Message)]
17935pub struct ChromeMojoEventInfo {
17936    /// Contains the interface name or the file name of the creator of a mojo
17937    /// handle watcher, recorded when an event if notified to the watcher. The code
17938    /// that runs within the track event belongs to the interface.
17939    #[prost(string, optional, tag="1")]
17940    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
17941    /// The hash of the IPC message that is being handled.
17942    #[prost(uint32, optional, tag="2")]
17943    pub ipc_hash: ::core::option::Option<u32>,
17944    /// A static string representing the mojo interface name of the message that is
17945    /// being handled.
17946    #[prost(string, optional, tag="3")]
17947    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
17948    /// Refers to an interned UnsymbolizedSourceLocation.
17949    /// The UnsymbolizedSourceLocation contains the interface method that's being
17950    /// handled, represented as a native symbol.
17951    /// The native symbol can be symbolized after the trace is recorded.
17952    /// Not using a symbolized source location for official Chromium builds to
17953    /// reduce binary size - emitting file/function names as strings into the
17954    /// trace requires storing them in the binary, which causes a significant
17955    /// binary size bloat for Chromium.
17956    #[prost(uint64, optional, tag="4")]
17957    pub mojo_interface_method_iid: ::core::option::Option<u64>,
17958    /// Indicate whether this is a message or reply.
17959    #[prost(bool, optional, tag="5")]
17960    pub is_reply: ::core::option::Option<bool>,
17961    /// The payload size of the message being sent through mojo messages.
17962    #[prost(uint64, optional, tag="6")]
17963    pub payload_size: ::core::option::Option<u64>,
17964    /// Represents the size of the message. Includes all headers and user payload.
17965    #[prost(uint64, optional, tag="7")]
17966    pub data_num_bytes: ::core::option::Option<u64>,
17967}
17968#[derive(Clone, PartialEq, ::prost::Message)]
17969pub struct ChromeRendererSchedulerState {
17970    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
17971    pub rail_mode: ::core::option::Option<i32>,
17972    #[prost(bool, optional, tag="2")]
17973    pub is_backgrounded: ::core::option::Option<bool>,
17974    #[prost(bool, optional, tag="3")]
17975    pub is_hidden: ::core::option::Option<bool>,
17976}
17977// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
17978
17979// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
17980
17981/// Details about a UI interaction initiated by the user, such as opening or
17982/// closing a tab or a context menu.
17983#[derive(Clone, PartialEq, ::prost::Message)]
17984pub struct ChromeUserEvent {
17985    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
17986    /// Chrome, these are usually static strings known at compile time, or
17987    /// concatenations of multiple such static strings).
17988    #[prost(string, optional, tag="1")]
17989    pub action: ::core::option::Option<::prost::alloc::string::String>,
17990    /// MD5 hash of the action string.
17991    #[prost(uint64, optional, tag="2")]
17992    pub action_hash: ::core::option::Option<u64>,
17993}
17994// End of protos/perfetto/trace/track_event/chrome_user_event.proto
17995
17996// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
17997
17998/// Details about HWNDMessageHandler trace events.
17999#[derive(Clone, PartialEq, ::prost::Message)]
18000pub struct ChromeWindowHandleEventInfo {
18001    #[prost(uint32, optional, tag="1")]
18002    pub dpi: ::core::option::Option<u32>,
18003    #[prost(uint32, optional, tag="2")]
18004    pub message_id: ::core::option::Option<u32>,
18005    #[prost(fixed64, optional, tag="3")]
18006    pub hwnd_ptr: ::core::option::Option<u64>,
18007}
18008// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
18009
18010// Begin of protos/perfetto/trace/track_event/screenshot.proto
18011
18012#[derive(Clone, PartialEq, ::prost::Message)]
18013pub struct Screenshot {
18014    #[prost(bytes="vec", optional, tag="1")]
18015    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18016}
18017// End of protos/perfetto/trace/track_event/screenshot.proto
18018
18019// Begin of protos/perfetto/trace/track_event/task_execution.proto
18020
18021/// TrackEvent arguments describing the execution of a task.
18022#[derive(Clone, PartialEq, ::prost::Message)]
18023pub struct TaskExecution {
18024    /// Source location that the task was posted from.
18025    /// interned SourceLocation.
18026    #[prost(uint64, optional, tag="1")]
18027    pub posted_from_iid: ::core::option::Option<u64>,
18028}
18029// Begin of protos/perfetto/trace/track_event/track_event.proto
18030
18031// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
18032// protos are still subject to change. Don't depend on them staying as they are.
18033
18034/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
18035/// which describe activity on a track, such as a thread or asynchronous event
18036/// track. The track is specified using separate TrackDescriptor messages and
18037/// referred to via the track's UUID.
18038///
18039/// A simple TrackEvent packet specifies a timestamp, category, name and type:
18040/// ```protobuf
18041///    trace_packet {
18042///      timestamp: 1000
18043///      track_event {
18044///        categories: \["my_cat"\]
18045///        name: "my_event"
18046///        type: TYPE_INSTANT
18047///       }
18048///     }
18049/// ```
18050///
18051/// To associate an event with a custom track (e.g. a thread), the track is
18052/// defined in a separate packet and referred to from the TrackEvent by its UUID:
18053/// ```protobuf
18054///    trace_packet {
18055///      track_descriptor {
18056///        track_uuid: 1234
18057///        name: "my_track"
18058///
18059///        // Optionally, associate the track with a thread.
18060///        thread_descriptor {
18061///          pid: 10
18062///          tid: 10
18063///          ..
18064///        }
18065///      }
18066///    }
18067/// ```
18068///
18069/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
18070///
18071/// ```protobuf
18072///    trace_packet {
18073///      timestamp: 1200
18074///      track_event {
18075///        track_uuid: 1234
18076///        categories: \["my_cat"\]
18077///        name: "my_slice"
18078///        type: TYPE_SLICE_BEGIN
18079///      }
18080///    }
18081///    trace_packet {
18082///      timestamp: 1400
18083///      track_event {
18084///        track_uuid: 1234
18085///        type: TYPE_SLICE_END
18086///      }
18087///    }
18088/// ```
18089/// TrackEvents also support optimizations to reduce data repetition and encoded
18090/// data size, e.g. through data interning (names, categories, ...) and delta
18091/// encoding of timestamps/counters. For details, see the InternedData message.
18092/// Further, default values for attributes of events on the same sequence (e.g.
18093/// their default track association) can be emitted as part of a
18094/// TrackEventDefaults message.
18095///
18096/// Next reserved id: 13 (up to 15). Next id: 52.
18097#[derive(Clone, PartialEq, ::prost::Message)]
18098pub struct TrackEvent {
18099    /// Names of categories of the event. In the client library, categories are a
18100    /// way to turn groups of individual events on or off.
18101    /// interned EventCategoryName.
18102    #[prost(uint64, repeated, packed="false", tag="3")]
18103    pub category_iids: ::prost::alloc::vec::Vec<u64>,
18104    /// non-interned variant.
18105    #[prost(string, repeated, tag="22")]
18106    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18107    #[prost(enumeration="track_event::Type", optional, tag="9")]
18108    pub r#type: ::core::option::Option<i32>,
18109    /// Identifies the track of the event. The default value may be overridden
18110    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
18111    /// sequence (in most cases sequence = one thread). If no value is specified
18112    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
18113    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
18114    #[prost(uint64, optional, tag="11")]
18115    pub track_uuid: ::core::option::Option<u64>,
18116    /// To encode counter values more efficiently, we support attaching additional
18117    /// counter values to a TrackEvent of any type. All values will share the same
18118    /// timestamp specified in the TracePacket. The value at
18119    /// extra_counter_values\[N\] is for the counter track referenced by
18120    /// extra_counter_track_uuids\[N\].
18121    ///
18122    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
18123    /// should always be equal or more uuids than values. It is valid to set more
18124    /// uuids (e.g. via defaults) than values. If uuids are specified in
18125    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
18126    /// default uuid list.
18127    ///
18128    /// For example, this allows snapshotting the thread time clock at each
18129    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
18130    #[prost(uint64, repeated, packed="false", tag="31")]
18131    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18132    #[prost(int64, repeated, packed="false", tag="12")]
18133    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
18134    /// Counter snapshots using floating point instead of integer values.
18135    #[prost(uint64, repeated, packed="false", tag="45")]
18136    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18137    #[prost(double, repeated, packed="false", tag="46")]
18138    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
18139    /// IDs of flows originating, passing through, or ending at this event.
18140    /// Flow IDs are global within a trace.
18141    ///
18142    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
18143    /// an input event may be handled on one thread but cause another event on
18144    /// a different thread - a flow between the two events can associate them.
18145    ///
18146    /// The direction of the flows between events is inferred from the events'
18147    /// timestamps. The earliest event with the same flow ID becomes the source
18148    /// of the flow. Any events thereafter are intermediate steps of the flow,
18149    /// until the flow terminates at the last event with the flow ID.
18150    ///
18151    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
18152    /// that the same ID can later be reused for another flow.
18153    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
18154    #[deprecated]
18155    #[prost(uint64, repeated, packed="false", tag="36")]
18156    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
18157    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
18158    /// consumption.
18159    #[prost(fixed64, repeated, packed="false", tag="47")]
18160    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
18161    /// List of flow ids which should terminate on this event, otherwise same as
18162    /// |flow_ids|.
18163    /// Any one flow ID should be either listed as part of |flow_ids| OR
18164    /// |terminating_flow_ids|, not both.
18165    /// DEPRECATED. Only kept for backwards compatibility.  Use
18166    /// |terminating_flow_ids|.
18167    #[deprecated]
18168    #[prost(uint64, repeated, packed="false", tag="42")]
18169    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
18170    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
18171    /// "terminating_flow_ids" to reduce memory consumption.
18172    #[prost(fixed64, repeated, packed="false", tag="48")]
18173    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
18174    // ---------------------------------------------------------------------------
18175    // TrackEvent arguments:
18176    // ---------------------------------------------------------------------------
18177
18178    /// Unstable key/value annotations shown in the trace viewer but not intended
18179    /// for metrics use.
18180    #[prost(message, repeated, tag="4")]
18181    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
18182    /// Typed event arguments:
18183    #[prost(message, optional, tag="5")]
18184    pub task_execution: ::core::option::Option<TaskExecution>,
18185    #[prost(message, optional, tag="21")]
18186    pub log_message: ::core::option::Option<LogMessage>,
18187    #[prost(message, optional, tag="24")]
18188    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
18189    #[prost(message, optional, tag="25")]
18190    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
18191    #[prost(message, optional, tag="26")]
18192    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
18193    #[prost(message, optional, tag="27")]
18194    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
18195    #[prost(message, optional, tag="28")]
18196    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
18197    #[prost(message, optional, tag="29")]
18198    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
18199    #[prost(message, optional, tag="32")]
18200    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
18201    #[prost(message, optional, tag="39")]
18202    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
18203    #[prost(message, optional, tag="40")]
18204    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
18205    #[prost(message, optional, tag="41")]
18206    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
18207    #[prost(message, optional, tag="43")]
18208    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
18209    #[prost(message, optional, tag="49")]
18210    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
18211    #[prost(message, optional, tag="50")]
18212    pub screenshot: ::core::option::Option<Screenshot>,
18213    #[prost(message, optional, tag="35")]
18214    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
18215    #[prost(message, optional, tag="38")]
18216    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
18217    #[prost(message, optional, tag="6")]
18218    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
18219    /// Optional name of the event for its display in trace viewer. May be left
18220    /// unspecified for events with typed arguments.
18221    ///
18222    /// Note that metrics should not rely on event names, as they are prone to
18223    /// changing. Instead, they should use typed arguments to identify the events
18224    /// they are interested in.
18225    #[prost(oneof="track_event::NameField", tags="10, 23")]
18226    pub name_field: ::core::option::Option<track_event::NameField>,
18227    /// A new value for a counter track. |track_uuid| should refer to a track with
18228    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
18229    /// efficient encoding of counter values that are sampled at the beginning/end
18230    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
18231    /// Counter values can optionally be encoded in as delta values (positive or
18232    /// negative) on each packet sequence (see CounterIncrementalBase).
18233    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
18234    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
18235    /// This field is used only if the source location represents the function that
18236    /// executes during this event.
18237    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
18238    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
18239    // ---------------------------------------------------------------------------
18240    // Deprecated / legacy event fields, which will be removed in the future:
18241    // ---------------------------------------------------------------------------
18242
18243    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
18244    /// TracePacket instead.
18245    ///
18246    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
18247    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
18248    pub timestamp: ::core::option::Option<track_event::Timestamp>,
18249    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
18250    /// encode thread time instead.
18251    ///
18252    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
18253    /// microseconds.
18254    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
18255    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
18256    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
18257    /// encode thread instruction count instead.
18258    ///
18259    /// Value of the instruction counter for the current thread.
18260    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
18261    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
18262}
18263/// Nested message and enum types in `TrackEvent`.
18264pub mod track_event {
18265    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
18266    /// event attributes are initially simply proxied for conversion to a JSON
18267    /// trace. We intend to gradually transition these attributes to similar native
18268    /// features in TrackEvent (e.g. async + flow events), or deprecate them
18269    /// without replacement where transition is unsuitable.
18270    ///
18271    /// Next reserved id: 16 (up to 16).
18272    /// Next id: 20.
18273    #[derive(Clone, PartialEq, ::prost::Message)]
18274    pub struct LegacyEvent {
18275        /// Deprecated, use TrackEvent::name(_iid) instead.
18276        /// interned EventName.
18277        #[prost(uint64, optional, tag="1")]
18278        pub name_iid: ::core::option::Option<u64>,
18279        #[prost(int32, optional, tag="2")]
18280        pub phase: ::core::option::Option<i32>,
18281        #[prost(int64, optional, tag="3")]
18282        pub duration_us: ::core::option::Option<i64>,
18283        #[prost(int64, optional, tag="4")]
18284        pub thread_duration_us: ::core::option::Option<i64>,
18285        /// Elapsed retired instruction count during the event.
18286        #[prost(int64, optional, tag="15")]
18287        pub thread_instruction_delta: ::core::option::Option<i64>,
18288        /// Additional optional scope for |id|.
18289        #[prost(string, optional, tag="7")]
18290        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
18291        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
18292        #[prost(bool, optional, tag="9")]
18293        pub use_async_tts: ::core::option::Option<bool>,
18294        /// Idenfifies a flow. Flow events with the same bind_id are connected.
18295        #[prost(uint64, optional, tag="8")]
18296        pub bind_id: ::core::option::Option<u64>,
18297        /// Use the enclosing slice as binding point for a flow end event instead of
18298        /// the next slice. Flow start/step events always bind to the enclosing
18299        /// slice.
18300        #[prost(bool, optional, tag="12")]
18301        pub bind_to_enclosing: ::core::option::Option<bool>,
18302        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
18303        pub flow_direction: ::core::option::Option<i32>,
18304        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
18305        pub instant_event_scope: ::core::option::Option<i32>,
18306        /// Override the pid/tid if the writer needs to emit events on behalf of
18307        /// another process/thread. This should be the exception. Normally, the
18308        /// pid+tid from ThreadDescriptor is used.
18309        #[prost(int32, optional, tag="18")]
18310        pub pid_override: ::core::option::Option<i32>,
18311        #[prost(int32, optional, tag="19")]
18312        pub tid_override: ::core::option::Option<i32>,
18313        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
18314        pub id: ::core::option::Option<legacy_event::Id>,
18315    }
18316    /// Nested message and enum types in `LegacyEvent`.
18317    pub mod legacy_event {
18318        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18319        #[repr(i32)]
18320        pub enum FlowDirection {
18321            FlowUnspecified = 0,
18322            FlowIn = 1,
18323            FlowOut = 2,
18324            FlowInout = 3,
18325        }
18326        impl FlowDirection {
18327            /// String value of the enum field names used in the ProtoBuf definition.
18328            ///
18329            /// The values are not transformed in any way and thus are considered stable
18330            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18331            pub fn as_str_name(&self) -> &'static str {
18332                match self {
18333                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
18334                    FlowDirection::FlowIn => "FLOW_IN",
18335                    FlowDirection::FlowOut => "FLOW_OUT",
18336                    FlowDirection::FlowInout => "FLOW_INOUT",
18337                }
18338            }
18339        }
18340        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18341        #[repr(i32)]
18342        pub enum InstantEventScope {
18343            ScopeUnspecified = 0,
18344            ScopeGlobal = 1,
18345            ScopeProcess = 2,
18346            ScopeThread = 3,
18347        }
18348        impl InstantEventScope {
18349            /// String value of the enum field names used in the ProtoBuf definition.
18350            ///
18351            /// The values are not transformed in any way and thus are considered stable
18352            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18353            pub fn as_str_name(&self) -> &'static str {
18354                match self {
18355                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
18356                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
18357                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
18358                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
18359                }
18360            }
18361        }
18362        #[derive(Clone, PartialEq, ::prost::Oneof)]
18363        pub enum Id {
18364            #[prost(uint64, tag="6")]
18365            UnscopedId(u64),
18366            #[prost(uint64, tag="10")]
18367            LocalId(u64),
18368            #[prost(uint64, tag="11")]
18369            GlobalId(u64),
18370        }
18371    }
18372    // TODO(eseckler): Support using binary symbols for category/event names.
18373
18374    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
18375    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18376    #[repr(i32)]
18377    pub enum Type {
18378        Unspecified = 0,
18379        /// Slice events are events that have a begin and end timestamp, i.e. a
18380        /// duration. They can be nested similar to a callstack: If, on the same
18381        /// track, event B begins after event A, but before A ends, B is a child
18382        /// event of A and will be drawn as a nested event underneath A in the UI.
18383        /// Note that child events should always end before their parents (e.g. B
18384        /// before A).
18385        ///
18386        /// Each slice event is formed by a pair of BEGIN + END events. The END event
18387        /// does not need to repeat any TrackEvent fields it has in common with its
18388        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
18389        /// END pair will be merged during trace import.
18390        ///
18391        /// Note that we deliberately chose not to support COMPLETE events (which
18392        /// would specify a duration directly) since clients would need to delay
18393        /// writing them until the slice is completed, which can result in reordered
18394        /// events in the trace and loss of unfinished events at the end of a trace.
18395        SliceBegin = 1,
18396        SliceEnd = 2,
18397        /// Instant events are nestable events without duration. They can be children
18398        /// of slice events on the same track.
18399        Instant = 3,
18400        /// Event that provides a value for a counter track. |track_uuid| should
18401        /// refer to a counter track and |counter_value| set to the new value. Note
18402        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
18403        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
18404        Counter = 4,
18405    }
18406    impl Type {
18407        /// String value of the enum field names used in the ProtoBuf definition.
18408        ///
18409        /// The values are not transformed in any way and thus are considered stable
18410        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18411        pub fn as_str_name(&self) -> &'static str {
18412            match self {
18413                Type::Unspecified => "TYPE_UNSPECIFIED",
18414                Type::SliceBegin => "TYPE_SLICE_BEGIN",
18415                Type::SliceEnd => "TYPE_SLICE_END",
18416                Type::Instant => "TYPE_INSTANT",
18417                Type::Counter => "TYPE_COUNTER",
18418            }
18419        }
18420    }
18421    /// Optional name of the event for its display in trace viewer. May be left
18422    /// unspecified for events with typed arguments.
18423    ///
18424    /// Note that metrics should not rely on event names, as they are prone to
18425    /// changing. Instead, they should use typed arguments to identify the events
18426    /// they are interested in.
18427    #[derive(Clone, PartialEq, ::prost::Oneof)]
18428    pub enum NameField {
18429        /// interned EventName.
18430        #[prost(uint64, tag="10")]
18431        NameIid(u64),
18432        /// non-interned variant.
18433        #[prost(string, tag="23")]
18434        Name(::prost::alloc::string::String),
18435    }
18436    /// A new value for a counter track. |track_uuid| should refer to a track with
18437    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
18438    /// efficient encoding of counter values that are sampled at the beginning/end
18439    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
18440    /// Counter values can optionally be encoded in as delta values (positive or
18441    /// negative) on each packet sequence (see CounterIncrementalBase).
18442    #[derive(Clone, PartialEq, ::prost::Oneof)]
18443    pub enum CounterValueField {
18444        #[prost(int64, tag="30")]
18445        CounterValue(i64),
18446        #[prost(double, tag="44")]
18447        DoubleCounterValue(f64),
18448    }
18449    /// This field is used only if the source location represents the function that
18450    /// executes during this event.
18451    #[derive(Clone, PartialEq, ::prost::Oneof)]
18452    pub enum SourceLocationField {
18453        /// Non-interned field.
18454        #[prost(message, tag="33")]
18455        SourceLocation(super::SourceLocation),
18456        /// Interned field.
18457        #[prost(uint64, tag="34")]
18458        SourceLocationIid(u64),
18459    }
18460    // ---------------------------------------------------------------------------
18461    // Deprecated / legacy event fields, which will be removed in the future:
18462    // ---------------------------------------------------------------------------
18463
18464    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
18465    /// TracePacket instead.
18466    ///
18467    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
18468    #[derive(Clone, PartialEq, ::prost::Oneof)]
18469    pub enum Timestamp {
18470        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
18471        /// calculate the absolute timestamp value, sum up all delta values of the
18472        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
18473        /// the |reference_timestamp| in ThreadDescriptor. This value should always
18474        /// be positive.
18475        #[prost(int64, tag="1")]
18476        TimestampDeltaUs(i64),
18477        /// Absolute value (e.g. a manually specified timestamp in the macro).
18478        /// This is a one-off value that does not affect delta timestamp computation
18479        /// in subsequent TrackEvents.
18480        #[prost(int64, tag="16")]
18481        TimestampAbsoluteUs(i64),
18482    }
18483    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
18484    /// encode thread time instead.
18485    ///
18486    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
18487    /// microseconds.
18488    #[derive(Clone, PartialEq, ::prost::Oneof)]
18489    pub enum ThreadTime {
18490        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
18491        /// calculate the absolute timestamp value, sum up all delta values of the
18492        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
18493        /// the |reference_timestamp| in ThreadDescriptor. This value should always
18494        /// be positive.
18495        #[prost(int64, tag="2")]
18496        ThreadTimeDeltaUs(i64),
18497        /// This is a one-off absolute value that does not affect delta timestamp
18498        /// computation in subsequent TrackEvents.
18499        #[prost(int64, tag="17")]
18500        ThreadTimeAbsoluteUs(i64),
18501    }
18502    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
18503    /// encode thread instruction count instead.
18504    ///
18505    /// Value of the instruction counter for the current thread.
18506    #[derive(Clone, PartialEq, ::prost::Oneof)]
18507    pub enum ThreadInstructionCount {
18508        /// Same encoding as |thread_time| field above.
18509        #[prost(int64, tag="8")]
18510        ThreadInstructionCountDelta(i64),
18511        #[prost(int64, tag="20")]
18512        ThreadInstructionCountAbsolute(i64),
18513    }
18514}
18515/// Default values for fields of all TrackEvents on the same packet sequence.
18516/// Should be emitted as part of TracePacketDefaults whenever incremental state
18517/// is cleared. It's defined here because field IDs should match those of the
18518/// corresponding fields in TrackEvent.
18519#[derive(Clone, PartialEq, ::prost::Message)]
18520pub struct TrackEventDefaults {
18521    #[prost(uint64, optional, tag="11")]
18522    pub track_uuid: ::core::option::Option<u64>,
18523    #[prost(uint64, repeated, packed="false", tag="31")]
18524    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18525    #[prost(uint64, repeated, packed="false", tag="45")]
18526    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18527}
18528// --------------------
18529// Interned data types:
18530// --------------------
18531
18532#[derive(Clone, PartialEq, ::prost::Message)]
18533pub struct EventCategory {
18534    #[prost(uint64, optional, tag="1")]
18535    pub iid: ::core::option::Option<u64>,
18536    #[prost(string, optional, tag="2")]
18537    pub name: ::core::option::Option<::prost::alloc::string::String>,
18538}
18539#[derive(Clone, PartialEq, ::prost::Message)]
18540pub struct EventName {
18541    #[prost(uint64, optional, tag="1")]
18542    pub iid: ::core::option::Option<u64>,
18543    #[prost(string, optional, tag="2")]
18544    pub name: ::core::option::Option<::prost::alloc::string::String>,
18545}
18546// End of protos/perfetto/trace/track_event/track_event.proto
18547
18548// Begin of protos/perfetto/trace/interned_data/interned_data.proto
18549
18550// ------------------------------ DATA INTERNING: ------------------------------
18551// Interning indexes are built up gradually by adding the entries contained in
18552// each TracePacket of the same packet sequence (packets emitted by the same
18553// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
18554// can only refer to interned data from other packets in the same sequence.
18555//
18556// The writer will emit new entries when it encounters new internable values
18557// that aren't yet in the index. Data in current and subsequent TracePackets can
18558// then refer to the entry by its position (interning ID, abbreviated "iid") in
18559// its index. An interning ID with value 0 is considered invalid (not set).
18560//
18561// Because of the incremental build-up, the interning index will miss data when
18562// TracePackets are lost, e.g. because a chunk was overridden in the central
18563// ring buffer. To avoid invalidation of the whole trace in such a case, the
18564// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
18565// When packet loss occurs, the reader will only lose interning data up to the
18566// next reset.
18567// -----------------------------------------------------------------------------
18568
18569/// Message that contains new entries for the interning indices of a packet
18570/// sequence.
18571///
18572/// The writer will usually emit new entries in the same TracePacket that first
18573/// refers to them (since the last reset of interning state). They may also be
18574/// emitted proactively in advance of referring to them in later packets.
18575///
18576/// Next reserved id: 8 (up to 15).
18577/// Next id: 43.
18578///
18579/// TODO(eseckler): Replace iid fields inside interned messages with
18580/// map<iid, message> type fields in InternedData.
18581#[derive(Clone, PartialEq, ::prost::Message)]
18582pub struct InternedData {
18583    /// Each field's message type needs to specify an |iid| field, which is the ID
18584    /// of the entry in the field's interning index. Each field constructs its own
18585    /// index, thus interning IDs are scoped to the tracing session and field
18586    /// (usually as a counter for efficient var-int encoding), and optionally to
18587    /// the incremental state generation of the packet sequence.
18588    #[prost(message, repeated, tag="1")]
18589    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
18590    #[prost(message, repeated, tag="2")]
18591    pub event_names: ::prost::alloc::vec::Vec<EventName>,
18592    #[prost(message, repeated, tag="3")]
18593    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
18594    #[prost(message, repeated, tag="27")]
18595    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
18596    #[prost(message, repeated, tag="4")]
18597    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
18598    #[prost(message, repeated, tag="28")]
18599    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
18600    #[prost(message, repeated, tag="20")]
18601    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
18602    #[prost(message, repeated, tag="25")]
18603    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
18604    // Note: field IDs up to 15 should be used for frequent data only.
18605
18606    /// Build IDs of exectuable files.
18607    #[prost(message, repeated, tag="16")]
18608    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
18609    /// Paths to executable files.
18610    #[prost(message, repeated, tag="17")]
18611    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
18612    /// Paths to source files.
18613    #[prost(message, repeated, tag="18")]
18614    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
18615    /// Names of functions used in frames below.
18616    #[prost(message, repeated, tag="5")]
18617    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
18618    /// Executable files mapped into processes.
18619    #[prost(message, repeated, tag="19")]
18620    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
18621    /// Frames of callstacks of a program.
18622    #[prost(message, repeated, tag="6")]
18623    pub frames: ::prost::alloc::vec::Vec<Frame>,
18624    /// A callstack of a program.
18625    #[prost(message, repeated, tag="7")]
18626    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
18627    /// Additional Vulkan information sent in a VulkanMemoryEvent message
18628    #[prost(message, repeated, tag="22")]
18629    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
18630    /// Graphics context of a render stage event.  This represent the GL
18631    /// context for an OpenGl app or the VkDevice for a Vulkan app.
18632    #[prost(message, repeated, tag="23")]
18633    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
18634    /// Description of a GPU hardware queue or render stage.
18635    #[prost(message, repeated, tag="24")]
18636    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
18637    /// This is set when FtraceConfig.symbolize_ksyms = true.
18638    /// The id of each symbol the number that will be reported in ftrace events
18639    /// like sched_block_reason.caller and is obtained from a monotonic counter.
18640    /// The same symbol can have different indexes in different bundles.
18641    /// This is is NOT the real address. This is to avoid disclosing KASLR through
18642    /// traces.
18643    #[prost(message, repeated, tag="26")]
18644    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
18645    /// Interned string values in the DebugAnnotation proto.
18646    #[prost(message, repeated, tag="29")]
18647    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
18648    /// Interned packet context for android.network_packets.
18649    #[prost(message, repeated, tag="30")]
18650    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
18651    /// Interned name of a js function. We only intern js functions as there is a
18652    /// lot of duplication for them, but less so for other strings in the V8 data
18653    /// source.
18654    #[prost(message, repeated, tag="31")]
18655    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
18656    /// Js functions can be emitted multiple times for various compilation tiers,
18657    /// so it makes sense to deduplicate all this.
18658    #[prost(message, repeated, tag="32")]
18659    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
18660    /// Interned JS script (there is one associated with each JS function)
18661    #[prost(message, repeated, tag="33")]
18662    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
18663    /// Interned Wasm script (there is one associated with each Wasm function)
18664    #[prost(message, repeated, tag="34")]
18665    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
18666    /// Every V8 event is associated with an isolate, intern the isolate to remove
18667    /// duplication.
18668    #[prost(message, repeated, tag="35")]
18669    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
18670    /// Interned protolog strings args.
18671    #[prost(message, repeated, tag="36")]
18672    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
18673    /// Interned protolog stacktraces.
18674    #[prost(message, repeated, tag="37")]
18675    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
18676    /// viewcapture
18677    #[prost(message, repeated, tag="38")]
18678    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
18679    #[prost(message, repeated, tag="39")]
18680    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
18681    #[prost(message, repeated, tag="40")]
18682    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
18683    #[prost(message, repeated, tag="41")]
18684    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
18685    /// Interned context for android.app_wakelocks.
18686    #[prost(message, repeated, tag="42")]
18687    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
18688}
18689// End of protos/perfetto/trace/interned_data/interned_data.proto
18690
18691// Begin of protos/perfetto/trace/memory_graph.proto
18692
18693// Message definitions for app-reported memory breakdowns. At the moment, this
18694// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
18695// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
18696// This is unrelated to the native or java heap profilers (those protos live
18697// in //protos/perfetto/trace/profiling/).
18698
18699#[derive(Clone, PartialEq, ::prost::Message)]
18700pub struct MemoryTrackerSnapshot {
18701    /// Unique ID that represents the global memory dump.
18702    #[prost(uint64, optional, tag="1")]
18703    pub global_dump_id: ::core::option::Option<u64>,
18704    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
18705    pub level_of_detail: ::core::option::Option<i32>,
18706    #[prost(message, repeated, tag="3")]
18707    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
18708}
18709/// Nested message and enum types in `MemoryTrackerSnapshot`.
18710pub mod memory_tracker_snapshot {
18711    /// Memory snapshot of a process. The snapshot contains memory data that is
18712    /// from 2 different sources, namely system stats and instrumentation stats.
18713    /// The system memory usage stats come from the OS based on standard API
18714    /// available in the platform to query memory usage. The instrumentation stats
18715    /// are added by instrumenting specific piece of code which tracks memory
18716    /// allocations and deallocations made by a small sub-system within the
18717    /// application.
18718    /// The system stats of the global memory snapshot are recorded as part of
18719    /// ProcessStats and SmapsPacket fields in trace packet with the same
18720    /// timestamp.
18721    #[derive(Clone, PartialEq, ::prost::Message)]
18722    pub struct ProcessSnapshot {
18723        /// Process ID of the process
18724        #[prost(int32, optional, tag="1")]
18725        pub pid: ::core::option::Option<i32>,
18726        #[prost(message, repeated, tag="2")]
18727        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
18728        #[prost(message, repeated, tag="3")]
18729        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
18730    }
18731    /// Nested message and enum types in `ProcessSnapshot`.
18732    pub mod process_snapshot {
18733        // Memory dumps are represented as a graph of memory nodes which contain
18734        // statistics. To avoid double counting the same memory across different
18735        // nodes, edges are used to mark nodes that account for the same memory. See
18736        // this doc for examples of the usage:
18737        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
18738
18739        /// A single node in the memory graph.
18740        #[derive(Clone, PartialEq, ::prost::Message)]
18741        pub struct MemoryNode {
18742            /// Unique ID of the node across all processes involved in the global
18743            /// memory dump. The ID is only unique within this particular global dump
18744            /// identified by GlobalMemoryDumpPacket.global_dump_id.
18745            #[prost(uint64, optional, tag="1")]
18746            pub id: ::core::option::Option<u64>,
18747            /// Absolute name is a unique name for the memory node within the process
18748            /// with ProcessMemoryDump.pid. The name can contain multiple parts
18749            /// separated by '/', which traces the edges of the node from the root
18750            /// node.
18751            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
18752            /// node "buffer1" in a graph structure of:
18753            ///    root -> partition_allocator -> array_buffers -> buffer1.
18754            #[prost(string, optional, tag="2")]
18755            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
18756            /// A weak node means that the instrumentation that added the current node
18757            /// is unsure about the existence of the actual memory. Unless a "strong"
18758            /// (non-weak is default) node that has an edge to the current node exists
18759            /// in the current global dump, the current node will be discarded.
18760            #[prost(bool, optional, tag="3")]
18761            pub weak: ::core::option::Option<bool>,
18762            /// Size of the node in bytes, used to compute the effective size of the
18763            /// nodes without double counting.
18764            #[prost(uint64, optional, tag="4")]
18765            pub size_bytes: ::core::option::Option<u64>,
18766            #[prost(message, repeated, tag="5")]
18767            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
18768        }
18769        /// Nested message and enum types in `MemoryNode`.
18770        pub mod memory_node {
18771            /// Entries in the memory node that contain statistics and additional
18772            /// debuggable information about the memory. The size of the node is
18773            /// tracked separately in the |size_bytes| field.
18774            #[derive(Clone, PartialEq, ::prost::Message)]
18775            pub struct MemoryNodeEntry {
18776                #[prost(string, optional, tag="1")]
18777                pub name: ::core::option::Option<::prost::alloc::string::String>,
18778                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
18779                pub units: ::core::option::Option<i32>,
18780                /// Contains either one of uint64 or string value.
18781                #[prost(uint64, optional, tag="3")]
18782                pub value_uint64: ::core::option::Option<u64>,
18783                #[prost(string, optional, tag="4")]
18784                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
18785            }
18786            /// Nested message and enum types in `MemoryNodeEntry`.
18787            pub mod memory_node_entry {
18788                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18789                #[repr(i32)]
18790                pub enum Units {
18791                    Unspecified = 0,
18792                    Bytes = 1,
18793                    Count = 2,
18794                }
18795                impl Units {
18796                    /// String value of the enum field names used in the ProtoBuf definition.
18797                    ///
18798                    /// The values are not transformed in any way and thus are considered stable
18799                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18800                    pub fn as_str_name(&self) -> &'static str {
18801                        match self {
18802                            Units::Unspecified => "UNSPECIFIED",
18803                            Units::Bytes => "BYTES",
18804                            Units::Count => "COUNT",
18805                        }
18806                    }
18807                }
18808            }
18809        }
18810        /// A directed edge that connects any 2 nodes in the graph above. These are
18811        /// in addition to the inherent edges added due to the tree structure of the
18812        /// node's absolute names.
18813        /// Node with id |source_id| owns the node with id |target_id|, and has the
18814        /// effect of attributing the memory usage of target to source. |importance|
18815        /// is optional and relevant only for the cases of co-ownership, where it
18816        /// acts as a z-index: the owner with the highest importance will be
18817        /// attributed target's memory.
18818        #[derive(Clone, PartialEq, ::prost::Message)]
18819        pub struct MemoryEdge {
18820            #[prost(uint64, optional, tag="1")]
18821            pub source_id: ::core::option::Option<u64>,
18822            #[prost(uint64, optional, tag="2")]
18823            pub target_id: ::core::option::Option<u64>,
18824            #[prost(uint32, optional, tag="3")]
18825            pub importance: ::core::option::Option<u32>,
18826            #[prost(bool, optional, tag="4")]
18827            pub overridable: ::core::option::Option<bool>,
18828        }
18829    }
18830    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18831    #[repr(i32)]
18832    pub enum LevelOfDetail {
18833        DetailFull = 0,
18834        DetailLight = 1,
18835        DetailBackground = 2,
18836    }
18837    impl LevelOfDetail {
18838        /// String value of the enum field names used in the ProtoBuf definition.
18839        ///
18840        /// The values are not transformed in any way and thus are considered stable
18841        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18842        pub fn as_str_name(&self) -> &'static str {
18843            match self {
18844                LevelOfDetail::DetailFull => "DETAIL_FULL",
18845                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
18846                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
18847            }
18848        }
18849    }
18850}
18851// End of protos/perfetto/trace/memory_graph.proto
18852
18853// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
18854
18855/// Used to trace the execution of perfetto itself.
18856#[derive(Clone, PartialEq, ::prost::Message)]
18857pub struct PerfettoMetatrace {
18858    /// Only when using |event_id|.
18859    #[prost(uint64, optional, tag="3")]
18860    pub event_duration_ns: ::core::option::Option<u64>,
18861    /// Only when using |counter_id|.
18862    #[prost(int32, optional, tag="4")]
18863    pub counter_value: ::core::option::Option<i32>,
18864    /// ID of the thread that emitted the event.
18865    #[prost(uint32, optional, tag="5")]
18866    pub thread_id: ::core::option::Option<u32>,
18867    /// If true the meta-tracing ring buffer had overruns and hence some data is
18868    /// missing from this point.
18869    #[prost(bool, optional, tag="6")]
18870    pub has_overruns: ::core::option::Option<bool>,
18871    /// Args for the event.
18872    #[prost(message, repeated, tag="7")]
18873    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
18874    #[prost(message, repeated, tag="10")]
18875    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
18876    /// See base/metatrace_events.h for definitions.
18877    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
18878    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
18879}
18880/// Nested message and enum types in `PerfettoMetatrace`.
18881pub mod perfetto_metatrace {
18882    #[derive(Clone, PartialEq, ::prost::Message)]
18883    pub struct Arg {
18884        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
18885        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
18886        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
18887        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
18888    }
18889    /// Nested message and enum types in `Arg`.
18890    pub mod arg {
18891        #[derive(Clone, PartialEq, ::prost::Oneof)]
18892        pub enum KeyOrInternedKey {
18893            #[prost(string, tag="1")]
18894            Key(::prost::alloc::string::String),
18895            #[prost(uint64, tag="3")]
18896            KeyIid(u64),
18897        }
18898        #[derive(Clone, PartialEq, ::prost::Oneof)]
18899        pub enum ValueOrInternedValue {
18900            #[prost(string, tag="2")]
18901            Value(::prost::alloc::string::String),
18902            #[prost(uint64, tag="4")]
18903            ValueIid(u64),
18904        }
18905    }
18906    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
18907    /// |value_iid| above.
18908    #[derive(Clone, PartialEq, ::prost::Message)]
18909    pub struct InternedString {
18910        #[prost(uint64, optional, tag="1")]
18911        pub iid: ::core::option::Option<u64>,
18912        #[prost(string, optional, tag="2")]
18913        pub value: ::core::option::Option<::prost::alloc::string::String>,
18914    }
18915    /// See base/metatrace_events.h for definitions.
18916    #[derive(Clone, PartialEq, ::prost::Oneof)]
18917    pub enum RecordType {
18918        #[prost(uint32, tag="1")]
18919        EventId(u32),
18920        #[prost(uint32, tag="2")]
18921        CounterId(u32),
18922        /// For trace processor metatracing.
18923        #[prost(string, tag="8")]
18924        EventName(::prost::alloc::string::String),
18925        #[prost(uint64, tag="11")]
18926        EventNameIid(u64),
18927        #[prost(string, tag="9")]
18928        CounterName(::prost::alloc::string::String),
18929    }
18930}
18931// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
18932
18933// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
18934
18935/// Events emitted by the tracing service.
18936/// Next id: 12.
18937#[derive(Clone, PartialEq, ::prost::Message)]
18938pub struct TracingServiceEvent {
18939    /// When each of the following booleans are set to true, they report the
18940    /// point in time (through TracePacket's timestamp) where the condition
18941    /// they describe happened.
18942    /// The order of the booleans below matches the timestamp ordering
18943    /// they would generally be expected to have.
18944    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
18945    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
18946}
18947/// Nested message and enum types in `TracingServiceEvent`.
18948pub mod tracing_service_event {
18949    #[derive(Clone, PartialEq, ::prost::Message)]
18950    pub struct DataSources {
18951        #[prost(message, repeated, tag="1")]
18952        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
18953    }
18954    /// Nested message and enum types in `DataSources`.
18955    pub mod data_sources {
18956        #[derive(Clone, PartialEq, ::prost::Message)]
18957        pub struct DataSource {
18958            #[prost(string, optional, tag="1")]
18959            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
18960            #[prost(string, optional, tag="2")]
18961            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
18962        }
18963    }
18964    /// When each of the following booleans are set to true, they report the
18965    /// point in time (through TracePacket's timestamp) where the condition
18966    /// they describe happened.
18967    /// The order of the booleans below matches the timestamp ordering
18968    /// they would generally be expected to have.
18969    #[derive(Clone, PartialEq, ::prost::Oneof)]
18970    pub enum EventType {
18971        /// Emitted when we start tracing and specifically, this will be before any
18972        /// producer is notified about the existence of this trace. This is always
18973        /// emitted before the all_data_sources_started event. This event is also
18974        /// guaranteed to be seen (byte-offset wise) before any data packets from
18975        /// producers.
18976        #[prost(bool, tag="2")]
18977        TracingStarted(bool),
18978        /// Emitted after all data sources saw the start event and ACKed it.
18979        /// This identifies the point in time when it's safe to assume that all data
18980        /// sources have been recording events.
18981        #[prost(bool, tag="1")]
18982        AllDataSourcesStarted(bool),
18983        /// Emitted when a flush is started.
18984        #[prost(bool, tag="9")]
18985        FlushStarted(bool),
18986        /// Emitted when all data sources have been flushed successfully or with an
18987        /// error (including timeouts). This can generally happen many times over the
18988        /// course of the trace.
18989        #[prost(bool, tag="3")]
18990        AllDataSourcesFlushed(bool),
18991        /// Emitted when reading back the central tracing buffers has been completed.
18992        /// If |write_into_file| is specified, this can happen many times over the
18993        /// course of the trace.
18994        #[prost(bool, tag="4")]
18995        ReadTracingBuffersCompleted(bool),
18996        /// Emitted after tracing has been disabled and specifically, this will be
18997        /// after all packets from producers have been included in the central
18998        /// tracing buffer.
18999        #[prost(bool, tag="5")]
19000        TracingDisabled(bool),
19001        /// Emitted if perfetto --save-for-bugreport was invoked while the current
19002        /// tracing session was running and it had the highest bugreport_score. In
19003        /// this case the original consumer will see a nearly empty trace, because
19004        /// the contents are routed onto the bugreport file. This event flags the
19005        /// situation explicitly. Traces that contain this marker should be discarded
19006        /// by test infrastructures / pipelines.
19007        /// Deprecated since Android U, where --save-for-bugreport uses
19008        /// non-destructive cloning.
19009        #[prost(bool, tag="6")]
19010        SeizedForBugreport(bool),
19011        /// Emitted when not all data sources in all producers reply to a start
19012        /// request after some time.
19013        #[prost(message, tag="7")]
19014        SlowStartingDataSources(DataSources),
19015        /// Emitted when the last flush request has failed. Lists data sources that
19016        /// did not reply on time.
19017        #[prost(message, tag="8")]
19018        LastFlushSlowDataSources(DataSources),
19019        /// If this was a cloned tracing session, emitted when the tracing serice
19020        /// started the clone operation.
19021        #[prost(bool, tag="10")]
19022        CloneStarted(bool),
19023        /// If this was a cloned tracing session, emitted when the tracing service
19024        /// finished the clone operation (for a specific buffer).
19025        #[prost(uint32, tag="11")]
19026        BufferCloned(u32),
19027    }
19028}
19029// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
19030
19031// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
19032
19033/// Energy consumer based on aidl class:
19034/// android.hardware.power.stats.EnergyConsumer.
19035#[derive(Clone, PartialEq, ::prost::Message)]
19036pub struct AndroidEnergyConsumer {
19037    /// Unique ID of this energy consumer.  Matches the ID in a
19038    /// AndroidEnergyEstimationBreakdown.
19039    #[prost(int32, optional, tag="1")]
19040    pub energy_consumer_id: ::core::option::Option<i32>,
19041    /// For a group of energy consumers of the same logical type, sorting by
19042    /// ordinal gives their physical order. Ordinals must be consecutive integers
19043    /// starting from 0.
19044    #[prost(int32, optional, tag="2")]
19045    pub ordinal: ::core::option::Option<i32>,
19046    /// Type of this energy consumer.
19047    #[prost(string, optional, tag="3")]
19048    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
19049    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
19050    /// framework.
19051    #[prost(string, optional, tag="4")]
19052    pub name: ::core::option::Option<::prost::alloc::string::String>,
19053}
19054#[derive(Clone, PartialEq, ::prost::Message)]
19055pub struct AndroidEnergyConsumerDescriptor {
19056    #[prost(message, repeated, tag="1")]
19057    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
19058}
19059// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
19060
19061// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
19062
19063/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
19064/// This proto represents the aidl class:
19065/// android.hardware.power.stats.EnergyConsumerResult.
19066#[derive(Clone, PartialEq, ::prost::Message)]
19067pub struct AndroidEnergyEstimationBreakdown {
19068    /// The first trace packet of each session should include a energy consumer
19069    /// descriptor.
19070    #[prost(message, optional, tag="1")]
19071    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
19072    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
19073    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
19074    /// should be sent at the beginning of a trace.
19075    #[prost(int32, optional, tag="2")]
19076    pub energy_consumer_id: ::core::option::Option<i32>,
19077    /// Total accumulated energy since boot in microwatt-seconds (uWs)
19078    #[prost(int64, optional, tag="3")]
19079    pub energy_uws: ::core::option::Option<i64>,
19080    /// Optional attributed energy per Android ID / Linux UID for this
19081    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
19082    /// to total accumulated energy.
19083    #[prost(message, repeated, tag="4")]
19084    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
19085}
19086/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
19087pub mod android_energy_estimation_breakdown {
19088    #[derive(Clone, PartialEq, ::prost::Message)]
19089    pub struct EnergyUidBreakdown {
19090        /// Android ID/Linux UID, the accumulated energy is attributed to.
19091        #[prost(int32, optional, tag="1")]
19092        pub uid: ::core::option::Option<i32>,
19093        /// Accumulated energy since boot in microwatt-seconds (uWs).
19094        #[prost(int64, optional, tag="2")]
19095        pub energy_uws: ::core::option::Option<i64>,
19096    }
19097}
19098// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
19099
19100// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
19101
19102#[derive(Clone, PartialEq, ::prost::Message)]
19103pub struct EntityStateResidency {
19104    /// This is only emitted at the beginning of the trace.
19105    #[prost(message, repeated, tag="1")]
19106    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
19107    #[prost(message, repeated, tag="2")]
19108    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
19109}
19110/// Nested message and enum types in `EntityStateResidency`.
19111pub mod entity_state_residency {
19112    #[derive(Clone, PartialEq, ::prost::Message)]
19113    pub struct PowerEntityState {
19114        /// Index corresponding to the entity
19115        #[prost(int32, optional, tag="1")]
19116        pub entity_index: ::core::option::Option<i32>,
19117        /// Index corresponding to the state
19118        #[prost(int32, optional, tag="2")]
19119        pub state_index: ::core::option::Option<i32>,
19120        /// Name of the entity. This is device-specific, determined by the PowerStats
19121        /// HAL, and cannot be configured by the user. An example would be
19122        /// "Bluetooth".
19123        #[prost(string, optional, tag="3")]
19124        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
19125        /// Name of the state. This is device-specific, determined by the PowerStats
19126        /// HAL, and cannot be configured by the user. An example would be
19127        /// "Active".
19128        #[prost(string, optional, tag="4")]
19129        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
19130    }
19131    #[derive(Clone, PartialEq, ::prost::Message)]
19132    pub struct StateResidency {
19133        /// Index corresponding to PowerEntityState.entity_index
19134        #[prost(int32, optional, tag="1")]
19135        pub entity_index: ::core::option::Option<i32>,
19136        /// Index corresponding to PowerEntityState.state_index
19137        #[prost(int32, optional, tag="2")]
19138        pub state_index: ::core::option::Option<i32>,
19139        /// Time since boot that this entity has been in this state
19140        #[prost(uint64, optional, tag="3")]
19141        pub total_time_in_state_ms: ::core::option::Option<u64>,
19142        /// Total number of times since boot that the entity has entered this state
19143        #[prost(uint64, optional, tag="4")]
19144        pub total_state_entry_count: ::core::option::Option<u64>,
19145        /// Timestamp of the last time the entity entered this state
19146        #[prost(uint64, optional, tag="5")]
19147        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
19148    }
19149}
19150// End of protos/perfetto/trace/power/android_entity_state_residency.proto
19151
19152// Begin of protos/perfetto/trace/power/battery_counters.proto
19153
19154#[derive(Clone, PartialEq, ::prost::Message)]
19155pub struct BatteryCounters {
19156    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
19157    #[prost(int64, optional, tag="1")]
19158    pub charge_counter_uah: ::core::option::Option<i64>,
19159    /// Remaining battery capacity percentage of total capacity
19160    #[prost(float, optional, tag="2")]
19161    pub capacity_percent: ::core::option::Option<f32>,
19162    /// Instantaneous battery current in microamperes(µA).
19163    /// Negative values indicate current being drained from the battery and
19164    /// positive values indicate current feeding the battery from a charge source
19165    /// (USB).
19166    ///
19167    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
19168    #[prost(int64, optional, tag="3")]
19169    pub current_ua: ::core::option::Option<i64>,
19170    /// Instantaneous battery current in microamperes(µA).
19171    #[prost(int64, optional, tag="4")]
19172    pub current_avg_ua: ::core::option::Option<i64>,
19173    /// Battery name, emitted only on multiple batteries.
19174    #[prost(string, optional, tag="5")]
19175    pub name: ::core::option::Option<::prost::alloc::string::String>,
19176    /// Battery capacity in microwatt-hours(µWh).
19177    #[prost(int64, optional, tag="6")]
19178    pub energy_counter_uwh: ::core::option::Option<i64>,
19179    /// Battery voltage in microvolts(µV).
19180    #[prost(int64, optional, tag="7")]
19181    pub voltage_uv: ::core::option::Option<i64>,
19182}
19183// End of protos/perfetto/trace/power/battery_counters.proto
19184
19185// Begin of protos/perfetto/trace/power/power_rails.proto
19186
19187#[derive(Clone, PartialEq, ::prost::Message)]
19188pub struct PowerRails {
19189    /// This is only emitted at the beginning of the trace.
19190    #[prost(message, repeated, tag="1")]
19191    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
19192    #[prost(message, repeated, tag="2")]
19193    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
19194}
19195/// Nested message and enum types in `PowerRails`.
19196pub mod power_rails {
19197    #[derive(Clone, PartialEq, ::prost::Message)]
19198    pub struct RailDescriptor {
19199        /// Index corresponding to the rail
19200        #[prost(uint32, optional, tag="1")]
19201        pub index: ::core::option::Option<u32>,
19202        /// Name of the rail
19203        #[prost(string, optional, tag="2")]
19204        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
19205        /// Name of the subsystem to which this rail belongs
19206        #[prost(string, optional, tag="3")]
19207        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
19208        /// Hardware sampling rate (Hz).
19209        #[prost(uint32, optional, tag="4")]
19210        pub sampling_rate: ::core::option::Option<u32>,
19211    }
19212    #[derive(Clone, PartialEq, ::prost::Message)]
19213    pub struct EnergyData {
19214        /// Index corresponding to RailDescriptor.index
19215        #[prost(uint32, optional, tag="1")]
19216        pub index: ::core::option::Option<u32>,
19217        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
19218        #[prost(uint64, optional, tag="2")]
19219        pub timestamp_ms: ::core::option::Option<u64>,
19220        /// Accumulated energy since device boot in microwatt-seconds (uWs).
19221        #[prost(uint64, optional, tag="3")]
19222        pub energy: ::core::option::Option<u64>,
19223    }
19224}
19225// End of protos/perfetto/trace/power/power_rails.proto
19226
19227// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
19228
19229#[derive(Clone, PartialEq, ::prost::Message)]
19230pub struct ObfuscatedMember {
19231    /// This is the obfuscated field name relative to the class containing the
19232    /// ObfuscatedMember.
19233    #[prost(string, optional, tag="1")]
19234    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
19235    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
19236    /// field name including its class. Otherwise, this is this the unqualified
19237    /// deobfuscated field name relative to the class containing this
19238    /// ObfuscatedMember.
19239    #[prost(string, optional, tag="2")]
19240    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
19241}
19242#[derive(Clone, PartialEq, ::prost::Message)]
19243pub struct ObfuscatedClass {
19244    #[prost(string, optional, tag="1")]
19245    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
19246    #[prost(string, optional, tag="2")]
19247    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
19248    /// fields.
19249    #[prost(message, repeated, tag="3")]
19250    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
19251    #[prost(message, repeated, tag="4")]
19252    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
19253}
19254#[derive(Clone, PartialEq, ::prost::Message)]
19255pub struct DeobfuscationMapping {
19256    #[prost(string, optional, tag="1")]
19257    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
19258    #[prost(int64, optional, tag="2")]
19259    pub version_code: ::core::option::Option<i64>,
19260    #[prost(message, repeated, tag="3")]
19261    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
19262}
19263// Begin of protos/perfetto/trace/profiling/heap_graph.proto
19264
19265#[derive(Clone, PartialEq, ::prost::Message)]
19266pub struct HeapGraphRoot {
19267    /// Objects retained by this root.
19268    #[prost(uint64, repeated, tag="1")]
19269    pub object_ids: ::prost::alloc::vec::Vec<u64>,
19270    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
19271    pub root_type: ::core::option::Option<i32>,
19272}
19273/// Nested message and enum types in `HeapGraphRoot`.
19274pub mod heap_graph_root {
19275    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19276    #[repr(i32)]
19277    pub enum Type {
19278        RootUnknown = 0,
19279        RootJniGlobal = 1,
19280        RootJniLocal = 2,
19281        RootJavaFrame = 3,
19282        RootNativeStack = 4,
19283        RootStickyClass = 5,
19284        RootThreadBlock = 6,
19285        RootMonitorUsed = 7,
19286        RootThreadObject = 8,
19287        RootInternedString = 9,
19288        RootFinalizing = 10,
19289        RootDebugger = 11,
19290        RootReferenceCleanup = 12,
19291        RootVmInternal = 13,
19292        RootJniMonitor = 14,
19293    }
19294    impl Type {
19295        /// String value of the enum field names used in the ProtoBuf definition.
19296        ///
19297        /// The values are not transformed in any way and thus are considered stable
19298        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19299        pub fn as_str_name(&self) -> &'static str {
19300            match self {
19301                Type::RootUnknown => "ROOT_UNKNOWN",
19302                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
19303                Type::RootJniLocal => "ROOT_JNI_LOCAL",
19304                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
19305                Type::RootNativeStack => "ROOT_NATIVE_STACK",
19306                Type::RootStickyClass => "ROOT_STICKY_CLASS",
19307                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
19308                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
19309                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
19310                Type::RootInternedString => "ROOT_INTERNED_STRING",
19311                Type::RootFinalizing => "ROOT_FINALIZING",
19312                Type::RootDebugger => "ROOT_DEBUGGER",
19313                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
19314                Type::RootVmInternal => "ROOT_VM_INTERNAL",
19315                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
19316            }
19317        }
19318    }
19319}
19320#[derive(Clone, PartialEq, ::prost::Message)]
19321pub struct HeapGraphType {
19322    /// TODO(fmayer): Consider removing this and using the index in the repeaed
19323    /// field to save space.
19324    #[prost(uint64, optional, tag="1")]
19325    pub id: ::core::option::Option<u64>,
19326    #[prost(uint64, optional, tag="2")]
19327    pub location_id: ::core::option::Option<u64>,
19328    #[prost(string, optional, tag="3")]
19329    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
19330    /// Size of objects of this type.
19331    #[prost(uint64, optional, tag="4")]
19332    pub object_size: ::core::option::Option<u64>,
19333    #[prost(uint64, optional, tag="5")]
19334    pub superclass_id: ::core::option::Option<u64>,
19335    /// Indices for InternedData.field_names for the names of the fields of
19336    /// instances of this class. This does NOT include the fields from
19337    /// superclasses. The consumer of this data needs to walk all super
19338    /// classes to get a full lists of fields. Objects always write the
19339    /// fields in order of most specific class to the furthest up superclass.
19340    #[prost(uint64, repeated, tag="6")]
19341    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
19342    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
19343    pub kind: ::core::option::Option<i32>,
19344    #[prost(uint64, optional, tag="8")]
19345    pub classloader_id: ::core::option::Option<u64>,
19346}
19347/// Nested message and enum types in `HeapGraphType`.
19348pub mod heap_graph_type {
19349    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19350    #[repr(i32)]
19351    pub enum Kind {
19352        Unknown = 0,
19353        Normal = 1,
19354        Noreferences = 2,
19355        String = 3,
19356        Array = 4,
19357        Class = 5,
19358        Classloader = 6,
19359        Dexcache = 7,
19360        SoftReference = 8,
19361        WeakReference = 9,
19362        FinalizerReference = 10,
19363        PhantomReference = 11,
19364    }
19365    impl Kind {
19366        /// String value of the enum field names used in the ProtoBuf definition.
19367        ///
19368        /// The values are not transformed in any way and thus are considered stable
19369        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19370        pub fn as_str_name(&self) -> &'static str {
19371            match self {
19372                Kind::Unknown => "KIND_UNKNOWN",
19373                Kind::Normal => "KIND_NORMAL",
19374                Kind::Noreferences => "KIND_NOREFERENCES",
19375                Kind::String => "KIND_STRING",
19376                Kind::Array => "KIND_ARRAY",
19377                Kind::Class => "KIND_CLASS",
19378                Kind::Classloader => "KIND_CLASSLOADER",
19379                Kind::Dexcache => "KIND_DEXCACHE",
19380                Kind::SoftReference => "KIND_SOFT_REFERENCE",
19381                Kind::WeakReference => "KIND_WEAK_REFERENCE",
19382                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
19383                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
19384            }
19385        }
19386    }
19387}
19388#[derive(Clone, PartialEq, ::prost::Message)]
19389pub struct HeapGraphObject {
19390    /// Index for InternedData.types for the name of the type of this object.
19391    #[prost(uint64, optional, tag="2")]
19392    pub type_id: ::core::option::Option<u64>,
19393    /// Bytes occupied by this objects.
19394    #[prost(uint64, optional, tag="3")]
19395    pub self_size: ::core::option::Option<u64>,
19396    /// Add this to all non-zero values in reference_object_id. This is used to
19397    /// get more compact varint encoding.
19398    ///
19399    /// The name is confusing, but this has always been used as a base for
19400    /// reference_object_id. The field should be named reference_object_id_base.
19401    #[prost(uint64, optional, tag="6")]
19402    pub reference_field_id_base: ::core::option::Option<u64>,
19403    /// Indices for InternedData.field_names for the name of the field referring
19404    /// to the object. For Android S+ and for instances of normal classes (e.g.
19405    /// not instances of java.lang.Class or arrays), this is instead set in the
19406    /// corresponding HeapGraphType, and this is left empty.
19407    #[prost(uint64, repeated, tag="4")]
19408    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
19409    /// Ids of the Object that is referred to.
19410    #[prost(uint64, repeated, tag="5")]
19411    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
19412    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
19413    /// the value of the `size` field.
19414    ///
19415    /// N.B. This is not the native size of this object.
19416    #[prost(int64, optional, tag="8")]
19417    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
19418    /// To reduce the space required we only emit the heap type if it has changed
19419    /// from the previous object we recorded.
19420    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
19421    pub heap_type_delta: ::core::option::Option<i32>,
19422    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
19423    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
19424}
19425/// Nested message and enum types in `HeapGraphObject`.
19426pub mod heap_graph_object {
19427    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19428    #[repr(i32)]
19429    pub enum HeapType {
19430        Unknown = 0,
19431        App = 1,
19432        Zygote = 2,
19433        BootImage = 3,
19434    }
19435    impl HeapType {
19436        /// String value of the enum field names used in the ProtoBuf definition.
19437        ///
19438        /// The values are not transformed in any way and thus are considered stable
19439        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19440        pub fn as_str_name(&self) -> &'static str {
19441            match self {
19442                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
19443                HeapType::App => "HEAP_TYPE_APP",
19444                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
19445                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
19446            }
19447        }
19448    }
19449    #[derive(Clone, PartialEq, ::prost::Oneof)]
19450    pub enum Identifier {
19451        #[prost(uint64, tag="1")]
19452        Id(u64),
19453        #[prost(uint64, tag="7")]
19454        IdDelta(u64),
19455    }
19456}
19457#[derive(Clone, PartialEq, ::prost::Message)]
19458pub struct HeapGraph {
19459    #[prost(int32, optional, tag="1")]
19460    pub pid: ::core::option::Option<i32>,
19461    /// This contains all objects at the time this dump was taken. Some of these
19462    /// will be live, some of those unreachable (garbage). To find the live
19463    /// objects, the client needs to build the transitive closure of objects
19464    /// reachable from |roots|.
19465    /// All objects not contained within that transitive closure are garbage that
19466    /// has not yet been collected.
19467    #[prost(message, repeated, tag="2")]
19468    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
19469    /// Roots at the time this dump was taken.
19470    /// All live objects are reachable from the roots. All other objects are
19471    /// garbage.
19472    #[prost(message, repeated, tag="7")]
19473    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
19474    /// Types used in HeapGraphObjects.
19475    #[prost(message, repeated, tag="9")]
19476    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
19477    /// Field names for references in managed heap graph.
19478    #[prost(message, repeated, tag="4")]
19479    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
19480    /// Paths of files used in managed heap graph.
19481    #[prost(message, repeated, tag="8")]
19482    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
19483    #[prost(bool, optional, tag="5")]
19484    pub continued: ::core::option::Option<bool>,
19485    #[prost(uint64, optional, tag="6")]
19486    pub index: ::core::option::Option<u64>,
19487}
19488// End of protos/perfetto/trace/profiling/heap_graph.proto
19489
19490// Begin of protos/perfetto/trace/profiling/profile_packet.proto
19491
19492// This file contains a mixture of messages emitted by various sampling
19493// profilers:
19494//
19495// Memory allocator profiling
19496// ----------------
19497// ProfilePacket:
19498//    The packet emitted by heapprofd, which started off as a native heap
19499//    (malloc/free) profiler, but now supports custom allocators as well. Each
19500//    packet contains a preaggregated state of the heap at snapshot time, which
19501//    report the total allocated/free bytes per callstack (plus other info such
19502//    as the number of samples).
19503// StreamingAllocation/StreamingFree:
19504//    Emitted by heapprofd when configured in streaming mode (i.e. when
19505//    stream_allocations = true). This is only for local testing, and doesn't
19506//    report callstacks (only address time and size of each alloc/free). It can
19507//    lead to enormous traces, as it contains the stream of each alloc/free call.
19508//
19509// Callstack sampling
19510// ------------------
19511// StreamingProfilePacket:
19512//    The packet emitted by the chromium in-process sampling profiler, which is
19513//    based on periodically sending a signal to itself, and unwinding the stack
19514//    in the signal handler. Each packet contains a series of individual stack
19515//    samples for a Chromium thread.
19516//
19517// Callstack and performance counter sampling
19518// ---------------------
19519// PerfSample:
19520//    The packet emitted by traced_perf sampling performance profiler based on
19521//    the perf_event_open syscall. Each packet represents an individual sample
19522//    of a performance counter (which might be a timer), and optionally a
19523//    callstack of the process that was scheduled at the time of the sample.
19524//
19525
19526/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
19527/// involve more than one ProfilePacket if the snapshot is big (when |continued|
19528/// is true). The cardinality and grouping is as follows:
19529/// A ProfilePacket contains:
19530///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
19531///     one heap per process (the main malloc/free heap), but there can be more if
19532///     the process is using the heapprofd API to profile custom allocators.
19533///   - Globally interned strings, mappings and frames (to allow de-duplicating
19534///     frames/mapping in common between different processes).
19535/// A ProcessHeapSamples contains:
19536///   - The process and heap identifier.
19537///   - A number of HeapSample, one for each callsite that had some alloc/frees.
19538///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
19539/// A HeapSample contains statistics about callsites:
19540///   - Total number of bytes allocated and freed from that callsite.
19541///   - Total number of alloc/free calls sampled.
19542///   - Stats at the local maximum when dump_at_max = true.
19543/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
19544#[derive(Clone, PartialEq, ::prost::Message)]
19545pub struct ProfilePacket {
19546    /// The following interning tables are only used in Android version Q.
19547    /// In newer versions, these tables are in InternedData
19548    /// (see protos/perfetto/trace/interned_data) and are shared across
19549    /// multiple ProfilePackets.
19550    /// For backwards compatibility, consumers need to first look up interned
19551    /// data in the tables within the ProfilePacket, and then, if they are empty,
19552    /// look up in the InternedData instead.
19553    #[prost(message, repeated, tag="1")]
19554    pub strings: ::prost::alloc::vec::Vec<InternedString>,
19555    #[prost(message, repeated, tag="4")]
19556    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
19557    #[prost(message, repeated, tag="2")]
19558    pub frames: ::prost::alloc::vec::Vec<Frame>,
19559    #[prost(message, repeated, tag="3")]
19560    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
19561    #[prost(message, repeated, tag="5")]
19562    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
19563    /// If this is true, the next ProfilePacket in this package_sequence_id is a
19564    /// continuation of this one.
19565    /// To get all samples for a process, accummulate its
19566    /// ProcessHeapSamples.samples until you see continued=false.
19567    #[prost(bool, optional, tag="6")]
19568    pub continued: ::core::option::Option<bool>,
19569    /// Index of this ProfilePacket on its package_sequence_id. Can be used
19570    /// to detect dropped data.
19571    /// Verify these are consecutive.
19572    #[prost(uint64, optional, tag="7")]
19573    pub index: ::core::option::Option<u64>,
19574}
19575/// Nested message and enum types in `ProfilePacket`.
19576pub mod profile_packet {
19577    /// Next ID: 9
19578    #[derive(Clone, PartialEq, ::prost::Message)]
19579    pub struct HeapSample {
19580        #[prost(uint64, optional, tag="1")]
19581        pub callstack_id: ::core::option::Option<u64>,
19582        /// bytes allocated at this callstack.
19583        #[prost(uint64, optional, tag="2")]
19584        pub self_allocated: ::core::option::Option<u64>,
19585        /// bytes allocated at this callstack that have been freed.
19586        #[prost(uint64, optional, tag="3")]
19587        pub self_freed: ::core::option::Option<u64>,
19588        /// Bytes allocated by this callstack but not freed at the time the malloc
19589        /// heap usage of this process was maximal. This is only set if dump_at_max
19590        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
19591        /// self_idle will not be set.
19592        #[prost(uint64, optional, tag="8")]
19593        pub self_max: ::core::option::Option<u64>,
19594        /// Number of allocations that were sampled at this callstack but not freed
19595        /// at the time the malloc heap usage of this process was maximal. This is
19596        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
19597        /// self_allocated, self_freed and self_idle will not be set.
19598        #[prost(uint64, optional, tag="9")]
19599        pub self_max_count: ::core::option::Option<u64>,
19600        /// timestamp \[opt\]
19601        #[prost(uint64, optional, tag="4")]
19602        pub timestamp: ::core::option::Option<u64>,
19603        /// Number of allocations that were sampled at this callstack.
19604        #[prost(uint64, optional, tag="5")]
19605        pub alloc_count: ::core::option::Option<u64>,
19606        /// Number of allocations that were sampled at this callstack that have been
19607        /// freed.
19608        #[prost(uint64, optional, tag="6")]
19609        pub free_count: ::core::option::Option<u64>,
19610    }
19611    #[derive(Clone, PartialEq, ::prost::Message)]
19612    pub struct Histogram {
19613        #[prost(message, repeated, tag="1")]
19614        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
19615    }
19616    /// Nested message and enum types in `Histogram`.
19617    pub mod histogram {
19618        #[derive(Clone, PartialEq, ::prost::Message)]
19619        pub struct Bucket {
19620            /// This bucket counts values from the previous bucket's (or -infinity if
19621            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
19622            /// (exclusive).
19623            #[prost(uint64, optional, tag="1")]
19624            pub upper_limit: ::core::option::Option<u64>,
19625            /// This is the highest bucket. This is set instead of the upper_limit. Any
19626            /// values larger or equal to the previous bucket's upper_limit are counted
19627            /// in this bucket.
19628            #[prost(bool, optional, tag="2")]
19629            pub max_bucket: ::core::option::Option<bool>,
19630            /// Number of values that fall into this range.
19631            #[prost(uint64, optional, tag="3")]
19632            pub count: ::core::option::Option<u64>,
19633        }
19634    }
19635    #[derive(Clone, PartialEq, ::prost::Message)]
19636    pub struct ProcessStats {
19637        #[prost(uint64, optional, tag="1")]
19638        pub unwinding_errors: ::core::option::Option<u64>,
19639        #[prost(uint64, optional, tag="2")]
19640        pub heap_samples: ::core::option::Option<u64>,
19641        #[prost(uint64, optional, tag="3")]
19642        pub map_reparses: ::core::option::Option<u64>,
19643        #[prost(message, optional, tag="4")]
19644        pub unwinding_time_us: ::core::option::Option<Histogram>,
19645        #[prost(uint64, optional, tag="5")]
19646        pub total_unwinding_time_us: ::core::option::Option<u64>,
19647        #[prost(uint64, optional, tag="6")]
19648        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
19649    }
19650    #[derive(Clone, PartialEq, ::prost::Message)]
19651    pub struct ProcessHeapSamples {
19652        #[prost(uint64, optional, tag="1")]
19653        pub pid: ::core::option::Option<u64>,
19654        /// This process was profiled from startup.
19655        /// If false, this process was already running when profiling started.
19656        #[prost(bool, optional, tag="3")]
19657        pub from_startup: ::core::option::Option<bool>,
19658        /// This process was not profiled because a concurrent session was active.
19659        /// If this is true, samples will be empty.
19660        #[prost(bool, optional, tag="4")]
19661        pub rejected_concurrent: ::core::option::Option<bool>,
19662        /// This process disconnected while it was profiled.
19663        /// If false, the process outlived the profiling session.
19664        #[prost(bool, optional, tag="6")]
19665        pub disconnected: ::core::option::Option<bool>,
19666        /// If disconnected, this disconnect was caused by the client overrunning
19667        /// the buffer.
19668        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
19669        /// on new S builds.
19670        #[prost(bool, optional, tag="7")]
19671        pub buffer_overran: ::core::option::Option<bool>,
19672        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
19673        pub client_error: ::core::option::Option<i32>,
19674        /// If disconnected, this disconnected was caused by the shared memory
19675        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
19676        /// MEMORY CORRUPTION.
19677        #[prost(bool, optional, tag="8")]
19678        pub buffer_corrupted: ::core::option::Option<bool>,
19679        /// If disconnected, this disconnect was caused by heapprofd exceeding
19680        /// guardrails during this profiling session.
19681        #[prost(bool, optional, tag="10")]
19682        pub hit_guardrail: ::core::option::Option<bool>,
19683        #[prost(string, optional, tag="11")]
19684        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
19685        #[prost(uint64, optional, tag="12")]
19686        pub sampling_interval_bytes: ::core::option::Option<u64>,
19687        #[prost(uint64, optional, tag="13")]
19688        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
19689        /// Timestamp of the state of the target process that this dump represents.
19690        /// This can be different to the timestamp of the TracePackets for various
19691        /// reasons:
19692        /// * If disconnected is set above, this is the timestamp of last state
19693        ///    heapprofd had of the process before it disconnected.
19694        /// * Otherwise, if the rate of events produced by the process is high,
19695        ///    heapprofd might be behind.
19696        ///
19697        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
19698        ///                to have a type enum that we can reuse here.
19699        #[prost(uint64, optional, tag="9")]
19700        pub timestamp: ::core::option::Option<u64>,
19701        /// Metadata about heapprofd.
19702        #[prost(message, optional, tag="5")]
19703        pub stats: ::core::option::Option<ProcessStats>,
19704        #[prost(message, repeated, tag="2")]
19705        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
19706    }
19707    /// Nested message and enum types in `ProcessHeapSamples`.
19708    pub mod process_heap_samples {
19709        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19710        #[repr(i32)]
19711        pub enum ClientError {
19712            None = 0,
19713            HitTimeout = 1,
19714            InvalidStackBounds = 2,
19715        }
19716        impl ClientError {
19717            /// String value of the enum field names used in the ProtoBuf definition.
19718            ///
19719            /// The values are not transformed in any way and thus are considered stable
19720            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19721            pub fn as_str_name(&self) -> &'static str {
19722                match self {
19723                    ClientError::None => "CLIENT_ERROR_NONE",
19724                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
19725                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
19726                }
19727            }
19728        }
19729    }
19730}
19731/// Packet emitted by heapprofd when stream_allocations = true. Only for local
19732/// testing. Doesn't report the callsite.
19733#[derive(Clone, PartialEq, ::prost::Message)]
19734pub struct StreamingAllocation {
19735    /// TODO(fmayer): Add callstack.
19736    #[prost(uint64, repeated, packed="false", tag="1")]
19737    pub address: ::prost::alloc::vec::Vec<u64>,
19738    #[prost(uint64, repeated, packed="false", tag="2")]
19739    pub size: ::prost::alloc::vec::Vec<u64>,
19740    #[prost(uint64, repeated, packed="false", tag="3")]
19741    pub sample_size: ::prost::alloc::vec::Vec<u64>,
19742    #[prost(uint64, repeated, packed="false", tag="4")]
19743    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
19744    #[prost(uint32, repeated, packed="false", tag="5")]
19745    pub heap_id: ::prost::alloc::vec::Vec<u32>,
19746    #[prost(uint64, repeated, packed="false", tag="6")]
19747    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
19748}
19749/// Packet emitted by heapprofd when stream_allocations = true. Only for local
19750/// testing. Doesn't report the callsite.
19751#[derive(Clone, PartialEq, ::prost::Message)]
19752pub struct StreamingFree {
19753    /// TODO(fmayer): Add callstack.
19754    #[prost(uint64, repeated, packed="false", tag="1")]
19755    pub address: ::prost::alloc::vec::Vec<u64>,
19756    #[prost(uint32, repeated, packed="false", tag="2")]
19757    pub heap_id: ::prost::alloc::vec::Vec<u32>,
19758    #[prost(uint64, repeated, packed="false", tag="3")]
19759    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
19760}
19761/// Packet emitted by the chromium in-process signal-based callstack sampler.
19762/// Represents a series of individual stack samples (sampled at discrete points
19763/// in time), rather than aggregated over an interval.
19764#[derive(Clone, PartialEq, ::prost::Message)]
19765pub struct StreamingProfilePacket {
19766    /// Index into InternedData.callstacks
19767    #[prost(uint64, repeated, packed="false", tag="1")]
19768    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
19769    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
19770    /// this with ClockSnapshot-based delta encoding instead.
19771    #[prost(int64, repeated, packed="false", tag="2")]
19772    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
19773    #[prost(int32, optional, tag="3")]
19774    pub process_priority: ::core::option::Option<i32>,
19775}
19776/// Namespace for the contained enums.
19777#[derive(Clone, PartialEq, ::prost::Message)]
19778pub struct Profiling {
19779}
19780/// Nested message and enum types in `Profiling`.
19781pub mod profiling {
19782    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19783    #[repr(i32)]
19784    pub enum CpuMode {
19785        ModeUnknown = 0,
19786        ModeKernel = 1,
19787        ModeUser = 2,
19788        /// The following values aren't expected, but included for completeness:
19789        ModeHypervisor = 3,
19790        ModeGuestKernel = 4,
19791        ModeGuestUser = 5,
19792    }
19793    impl CpuMode {
19794        /// String value of the enum field names used in the ProtoBuf definition.
19795        ///
19796        /// The values are not transformed in any way and thus are considered stable
19797        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19798        pub fn as_str_name(&self) -> &'static str {
19799            match self {
19800                CpuMode::ModeUnknown => "MODE_UNKNOWN",
19801                CpuMode::ModeKernel => "MODE_KERNEL",
19802                CpuMode::ModeUser => "MODE_USER",
19803                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
19804                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
19805                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
19806            }
19807        }
19808    }
19809    /// Enumeration of libunwindstack's error codes.
19810    /// NB: the integral representations of the two enums are different.
19811    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19812    #[repr(i32)]
19813    pub enum StackUnwindError {
19814        UnwindErrorUnknown = 0,
19815        UnwindErrorNone = 1,
19816        UnwindErrorMemoryInvalid = 2,
19817        UnwindErrorUnwindInfo = 3,
19818        UnwindErrorUnsupported = 4,
19819        UnwindErrorInvalidMap = 5,
19820        UnwindErrorMaxFramesExceeded = 6,
19821        UnwindErrorRepeatedFrame = 7,
19822        UnwindErrorInvalidElf = 8,
19823        UnwindErrorSystemCall = 9,
19824        UnwindErrorThreadTimeout = 10,
19825        UnwindErrorThreadDoesNotExist = 11,
19826        UnwindErrorBadArch = 12,
19827        UnwindErrorMapsParse = 13,
19828        UnwindErrorInvalidParameter = 14,
19829        UnwindErrorPtraceCall = 15,
19830    }
19831    impl StackUnwindError {
19832        /// String value of the enum field names used in the ProtoBuf definition.
19833        ///
19834        /// The values are not transformed in any way and thus are considered stable
19835        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19836        pub fn as_str_name(&self) -> &'static str {
19837            match self {
19838                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
19839                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
19840                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
19841                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
19842                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
19843                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
19844                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
19845                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
19846                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
19847                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
19848                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
19849                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
19850                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
19851                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
19852                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
19853                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
19854            }
19855        }
19856    }
19857}
19858/// Packet emitted by the traced_perf sampling performance profiler, which
19859/// gathers data via the perf_event_open syscall. Each packet contains an
19860/// individual sample with a counter value, and optionally a
19861/// callstack.
19862///
19863/// Timestamps are within the root packet. The config can specify the clock, or
19864/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
19865/// timeframe, the default was CLOCK_BOOTTIME.
19866///
19867/// There are several distinct views of this message:
19868/// * indication of kernel buffer data loss (kernel_records_lost set)
19869/// * indication of skipped samples (sample_skipped_reason set)
19870/// * notable event in the sampling implementation (producer_event set)
19871/// * normal sample (timebase_count set, typically also callstack_iid)
19872#[derive(Clone, PartialEq, ::prost::Message)]
19873pub struct PerfSample {
19874    #[prost(uint32, optional, tag="1")]
19875    pub cpu: ::core::option::Option<u32>,
19876    #[prost(uint32, optional, tag="2")]
19877    pub pid: ::core::option::Option<u32>,
19878    #[prost(uint32, optional, tag="3")]
19879    pub tid: ::core::option::Option<u32>,
19880    /// Execution state that the process was sampled at.
19881    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
19882    pub cpu_mode: ::core::option::Option<i32>,
19883    /// Value of the timebase counter (since the event was configured, no deltas).
19884    #[prost(uint64, optional, tag="6")]
19885    pub timebase_count: ::core::option::Option<u64>,
19886    /// Value of the followers counter (since the event was configured, no deltas).
19887    #[prost(uint64, repeated, packed="false", tag="7")]
19888    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
19889    /// Unwound callstack. Might be partial, in which case a synthetic "error"
19890    /// frame is appended, and |unwind_error| is set accordingly.
19891    #[prost(uint64, optional, tag="4")]
19892    pub callstack_iid: ::core::option::Option<u64>,
19893    /// If set, indicates that this message is not a sample, but rather an
19894    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
19895    /// loss occurs when the kernel has insufficient ring buffer capacity to write
19896    /// a record (which gets discarded). A record in this context is an individual
19897    /// ring buffer entry, and counts more than just sample records.
19898    ///
19899    /// The |timestamp| of the packet corresponds to the time that the producer
19900    /// wrote the packet for trace-sorting purposes alone, and should not be
19901    /// interpreted relative to the sample timestamps. This field is sufficient to
19902    /// detect that *some* kernel data loss happened within the trace, but not the
19903    /// specific time bounds of that loss (which would require tracking precedessor
19904    /// & successor timestamps, which is not deemed necessary at the moment).
19905    #[prost(uint64, optional, tag="17")]
19906    pub kernel_records_lost: ::core::option::Option<u64>,
19907    #[prost(message, optional, tag="19")]
19908    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
19909    /// If set, stack unwinding was incomplete due to an error.
19910    /// Unset values should be treated as UNWIND_ERROR_NONE.
19911    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
19912    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
19913    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
19914    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
19915}
19916/// Nested message and enum types in `PerfSample`.
19917pub mod perf_sample {
19918    /// A notable event within the sampling implementation.
19919    #[derive(Clone, PartialEq, ::prost::Message)]
19920    pub struct ProducerEvent {
19921        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
19922        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
19923    }
19924    /// Nested message and enum types in `ProducerEvent`.
19925    pub mod producer_event {
19926        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19927        #[repr(i32)]
19928        pub enum DataSourceStopReason {
19929            ProfilerStopUnknown = 0,
19930            ProfilerStopGuardrail = 1,
19931        }
19932        impl DataSourceStopReason {
19933            /// String value of the enum field names used in the ProtoBuf definition.
19934            ///
19935            /// The values are not transformed in any way and thus are considered stable
19936            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19937            pub fn as_str_name(&self) -> &'static str {
19938                match self {
19939                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
19940                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
19941                }
19942            }
19943        }
19944        #[derive(Clone, PartialEq, ::prost::Oneof)]
19945        pub enum OptionalSourceStopReason {
19946            #[prost(enumeration="DataSourceStopReason", tag="1")]
19947            SourceStopReason(i32),
19948        }
19949    }
19950    /// If set, indicates that the profiler encountered a sample that was relevant,
19951    /// but was skipped.
19952    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19953    #[repr(i32)]
19954    pub enum SampleSkipReason {
19955        ProfilerSkipUnknown = 0,
19956        ProfilerSkipReadStage = 1,
19957        ProfilerSkipUnwindStage = 2,
19958        ProfilerSkipUnwindEnqueue = 3,
19959        ProfilerSkipNotInScope = 4,
19960    }
19961    impl SampleSkipReason {
19962        /// String value of the enum field names used in the ProtoBuf definition.
19963        ///
19964        /// The values are not transformed in any way and thus are considered stable
19965        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19966        pub fn as_str_name(&self) -> &'static str {
19967            match self {
19968                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
19969                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
19970                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
19971                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
19972                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
19973            }
19974        }
19975    }
19976    /// If set, stack unwinding was incomplete due to an error.
19977    /// Unset values should be treated as UNWIND_ERROR_NONE.
19978    #[derive(Clone, PartialEq, ::prost::Oneof)]
19979    pub enum OptionalUnwindError {
19980        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
19981        UnwindError(i32),
19982    }
19983    #[derive(Clone, PartialEq, ::prost::Oneof)]
19984    pub enum OptionalSampleSkippedReason {
19985        #[prost(enumeration="SampleSkipReason", tag="18")]
19986        SampleSkippedReason(i32),
19987    }
19988}
19989/// Submessage for TracePacketDefaults.
19990#[derive(Clone, PartialEq, ::prost::Message)]
19991pub struct PerfSampleDefaults {
19992    /// The sampling timebase. Might not be identical to the data source config if
19993    /// the implementation decided to default/override some parameters.
19994    #[prost(message, optional, tag="1")]
19995    pub timebase: ::core::option::Option<perf_events::Timebase>,
19996    /// Description of followers event
19997    #[prost(message, repeated, tag="4")]
19998    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
19999    /// If the config requested process sharding, report back the count and which
20000    /// of those bins was selected. Never changes for the duration of a trace.
20001    #[prost(uint32, optional, tag="2")]
20002    pub process_shard_count: ::core::option::Option<u32>,
20003    #[prost(uint32, optional, tag="3")]
20004    pub chosen_process_shard: ::core::option::Option<u32>,
20005}
20006// End of protos/perfetto/trace/profiling/profile_packet.proto
20007
20008// Begin of protos/perfetto/trace/profiling/smaps.proto
20009
20010#[derive(Clone, PartialEq, ::prost::Message)]
20011pub struct SmapsEntry {
20012    #[prost(string, optional, tag="1")]
20013    pub path: ::core::option::Option<::prost::alloc::string::String>,
20014    #[prost(uint64, optional, tag="2")]
20015    pub size_kb: ::core::option::Option<u64>,
20016    #[prost(uint64, optional, tag="3")]
20017    pub private_dirty_kb: ::core::option::Option<u64>,
20018    #[prost(uint64, optional, tag="4")]
20019    pub swap_kb: ::core::option::Option<u64>,
20020    /// for field upload (instead of path).
20021    #[prost(string, optional, tag="5")]
20022    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20023    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
20024    #[prost(uint64, optional, tag="6")]
20025    pub start_address: ::core::option::Option<u64>,
20026    #[prost(uint64, optional, tag="7")]
20027    pub module_timestamp: ::core::option::Option<u64>,
20028    #[prost(string, optional, tag="8")]
20029    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
20030    #[prost(string, optional, tag="9")]
20031    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
20032    #[prost(uint32, optional, tag="10")]
20033    pub protection_flags: ::core::option::Option<u32>,
20034    #[prost(uint64, optional, tag="11")]
20035    pub private_clean_resident_kb: ::core::option::Option<u64>,
20036    #[prost(uint64, optional, tag="12")]
20037    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
20038    #[prost(uint64, optional, tag="13")]
20039    pub shared_clean_resident_kb: ::core::option::Option<u64>,
20040    #[prost(uint64, optional, tag="14")]
20041    pub locked_kb: ::core::option::Option<u64>,
20042    #[prost(uint64, optional, tag="15")]
20043    pub proportional_resident_kb: ::core::option::Option<u64>,
20044}
20045#[derive(Clone, PartialEq, ::prost::Message)]
20046pub struct SmapsPacket {
20047    #[prost(uint32, optional, tag="1")]
20048    pub pid: ::core::option::Option<u32>,
20049    #[prost(message, repeated, tag="2")]
20050    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
20051}
20052// End of protos/perfetto/trace/profiling/smaps.proto
20053
20054// Begin of protos/perfetto/trace/ps/process_stats.proto
20055
20056/// Per-process periodically sampled stats. These samples are wrapped in a
20057/// dedicated message (as opposite to be fields in process_tree.proto) because
20058/// they are dumped at a different rate than cmdline and thread list.
20059/// Note: not all of these stats will be present in every ProcessStats message
20060/// and sometimes processes may be missing. This is because counters are
20061/// cached to reduce emission of counters which do not change.
20062#[derive(Clone, PartialEq, ::prost::Message)]
20063pub struct ProcessStats {
20064    #[prost(message, repeated, tag="1")]
20065    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
20066    /// The time at which we finish collecting this batch of samples;
20067    /// the top-level packet timestamp is the time at which
20068    /// we begin collection.
20069    #[prost(uint64, optional, tag="2")]
20070    pub collection_end_timestamp: ::core::option::Option<u64>,
20071}
20072/// Nested message and enum types in `ProcessStats`.
20073pub mod process_stats {
20074    /// Per-thread periodically sampled stats.
20075    /// Note: not all of these stats will be present in every message. See the note
20076    /// for ProcessStats.
20077    #[derive(Clone, PartialEq, ::prost::Message)]
20078    pub struct Thread {
20079        #[prost(int32, optional, tag="1")]
20080        pub tid: ::core::option::Option<i32>,
20081    }
20082    #[derive(Clone, PartialEq, ::prost::Message)]
20083    pub struct FdInfo {
20084        #[prost(uint64, optional, tag="1")]
20085        pub fd: ::core::option::Option<u64>,
20086        #[prost(string, optional, tag="2")]
20087        pub path: ::core::option::Option<::prost::alloc::string::String>,
20088    }
20089    #[derive(Clone, PartialEq, ::prost::Message)]
20090    pub struct Process {
20091        #[prost(int32, optional, tag="1")]
20092        pub pid: ::core::option::Option<i32>,
20093        #[prost(message, repeated, tag="11")]
20094        pub threads: ::prost::alloc::vec::Vec<Thread>,
20095        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
20096        #[prost(uint64, optional, tag="2")]
20097        pub vm_size_kb: ::core::option::Option<u64>,
20098        #[prost(uint64, optional, tag="3")]
20099        pub vm_rss_kb: ::core::option::Option<u64>,
20100        #[prost(uint64, optional, tag="4")]
20101        pub rss_anon_kb: ::core::option::Option<u64>,
20102        #[prost(uint64, optional, tag="5")]
20103        pub rss_file_kb: ::core::option::Option<u64>,
20104        #[prost(uint64, optional, tag="6")]
20105        pub rss_shmem_kb: ::core::option::Option<u64>,
20106        #[prost(uint64, optional, tag="7")]
20107        pub vm_swap_kb: ::core::option::Option<u64>,
20108        #[prost(uint64, optional, tag="8")]
20109        pub vm_locked_kb: ::core::option::Option<u64>,
20110        /// When adding a new field remember to update kProcMemCounterSize in
20111        /// the trace processor.
20112        #[prost(uint64, optional, tag="9")]
20113        pub vm_hwm_kb: ::core::option::Option<u64>,
20114        #[prost(int64, optional, tag="10")]
20115        pub oom_score_adj: ::core::option::Option<i64>,
20116        /// The peak resident set size is resettable in newer Posix kernels.
20117        /// This field specifies if reset is supported and if the writer had reset
20118        /// the peaks after each process stats recording.
20119        #[prost(bool, optional, tag="12")]
20120        pub is_peak_rss_resettable: ::core::option::Option<bool>,
20121        /// Private, shared and swap footprint of the process as measured by
20122        /// Chrome. To know more about these metrics refer to:
20123        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
20124        #[prost(uint32, optional, tag="13")]
20125        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
20126        #[prost(uint32, optional, tag="14")]
20127        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
20128        #[prost(message, repeated, tag="15")]
20129        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
20130        /// These fields are set only when scan_smaps_rollup=true
20131        #[prost(uint64, optional, tag="16")]
20132        pub smr_rss_kb: ::core::option::Option<u64>,
20133        #[prost(uint64, optional, tag="17")]
20134        pub smr_pss_kb: ::core::option::Option<u64>,
20135        #[prost(uint64, optional, tag="18")]
20136        pub smr_pss_anon_kb: ::core::option::Option<u64>,
20137        #[prost(uint64, optional, tag="19")]
20138        pub smr_pss_file_kb: ::core::option::Option<u64>,
20139        #[prost(uint64, optional, tag="20")]
20140        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
20141        #[prost(uint64, optional, tag="23")]
20142        pub smr_swap_pss_kb: ::core::option::Option<u64>,
20143        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
20144        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
20145        /// Resolution of "clock ticks", usually 10ms.
20146        #[prost(uint64, optional, tag="21")]
20147        pub runtime_user_mode: ::core::option::Option<u64>,
20148        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
20149        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
20150        /// Resolution of "clock ticks", usually 10ms.
20151        #[prost(uint64, optional, tag="22")]
20152        pub runtime_kernel_mode: ::core::option::Option<u64>,
20153    }
20154}
20155// End of protos/perfetto/trace/ps/process_stats.proto
20156
20157// Begin of protos/perfetto/trace/ps/process_tree.proto
20158
20159/// Metadata about the processes and threads in the trace.
20160/// Note: this proto was designed to be filled in by traced_probes and should
20161/// only be populated with accurate information coming from the system. Other
20162/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
20163/// in TrackDescriptor.
20164#[derive(Clone, PartialEq, ::prost::Message)]
20165pub struct ProcessTree {
20166    /// List of processes and threads in the client. These lists are incremental
20167    /// and not exhaustive. A process and its threads might show up separately in
20168    /// different ProcessTree messages. A thread might event not show up at all, if
20169    /// no sched_switch activity was detected, for instance:
20170    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
20171    /// #1 { threads: [{pid: 12, tgid: 10}] }
20172    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
20173    #[prost(message, repeated, tag="1")]
20174    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
20175    #[prost(message, repeated, tag="2")]
20176    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
20177    /// The time at which we finish collecting this process tree;
20178    /// the top-level packet timestamp is the time at which
20179    /// we begin collection.
20180    #[prost(uint64, optional, tag="3")]
20181    pub collection_end_timestamp: ::core::option::Option<u64>,
20182}
20183/// Nested message and enum types in `ProcessTree`.
20184pub mod process_tree {
20185    /// Representation of a thread.
20186    #[derive(Clone, PartialEq, ::prost::Message)]
20187    pub struct Thread {
20188        /// The thread ID (as per gettid()) in the root PID namespace.
20189        #[prost(int32, optional, tag="1")]
20190        pub tid: ::core::option::Option<i32>,
20191        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
20192        #[prost(int32, optional, tag="3")]
20193        pub tgid: ::core::option::Option<i32>,
20194        /// The name of the thread.
20195        #[prost(string, optional, tag="2")]
20196        pub name: ::core::option::Option<::prost::alloc::string::String>,
20197        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
20198        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
20199        /// level thread ID) omitted.
20200        #[prost(int32, repeated, packed="false", tag="4")]
20201        pub nstid: ::prost::alloc::vec::Vec<i32>,
20202    }
20203    /// Representation of a process.
20204    #[derive(Clone, PartialEq, ::prost::Message)]
20205    pub struct Process {
20206        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
20207        /// PID namespace.
20208        #[prost(int32, optional, tag="1")]
20209        pub pid: ::core::option::Option<i32>,
20210        /// The parent process ID, as per getppid().
20211        #[prost(int32, optional, tag="2")]
20212        pub ppid: ::core::option::Option<i32>,
20213        /// The command line for the process, as per /proc/pid/cmdline, broken up on
20214        /// NUL bytes.
20215        /// If it is a kernel thread or a zombie, there will only be one cmdline
20216        /// field and it will contain /proc/pid/comm.
20217        #[prost(string, repeated, tag="3")]
20218        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20219        /// If true, the |cmdline| field was filled with the main thread's "comm"
20220        /// field instead.
20221        /// Introduced in: perfetto v50.
20222        #[prost(bool, optional, tag="9")]
20223        pub cmdline_is_comm: ::core::option::Option<bool>,
20224        /// The uid for the process, as per /proc/pid/status.
20225        #[prost(int32, optional, tag="5")]
20226        pub uid: ::core::option::Option<i32>,
20227        /// The non-root-level process IDs if the process runs in a PID namespace.
20228        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
20229        /// (root-level process ID) omitted.
20230        #[prost(int32, repeated, packed="false", tag="6")]
20231        pub nspid: ::prost::alloc::vec::Vec<i32>,
20232        /// Timestamp of when the process was created, in nanoseconds
20233        /// from boot. Parsed from starttime in /proc/pid/stat.
20234        /// Recorded if record_process_age config option is set.
20235        /// Resolution of "clock ticks", usually 10ms.
20236        #[prost(uint64, optional, tag="7")]
20237        pub process_start_from_boot: ::core::option::Option<u64>,
20238        /// If true, the process is a kernel thread.
20239        /// Set only on linux v6.4+. For traces from older devices, it is possible to
20240        /// infer most kthreads by checking that they're a descendant of kthreadd
20241        /// (pid=2), or are the idle process (pid=0).
20242        /// Introduced in: perfetto v50.
20243        #[prost(bool, optional, tag="8")]
20244        pub is_kthread: ::core::option::Option<bool>,
20245    }
20246}
20247// End of protos/perfetto/trace/ps/process_tree.proto
20248
20249// Begin of protos/perfetto/trace/remote_clock_sync.proto
20250
20251/// Records the parameters for aligning clock readings between machines.
20252#[derive(Clone, PartialEq, ::prost::Message)]
20253pub struct RemoteClockSync {
20254    #[prost(message, repeated, tag="1")]
20255    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
20256}
20257/// Nested message and enum types in `RemoteClockSync`.
20258pub mod remote_clock_sync {
20259    /// Synchronized clock snapshots taken on both sides of the relay port (the
20260    /// tracing service and the relay service). A round of clock synchronization
20261    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
20262    /// snapshot -> client snapshot -> host snapshot.
20263    #[derive(Clone, PartialEq, ::prost::Message)]
20264    pub struct SyncedClocks {
20265        #[prost(message, optional, tag="2")]
20266        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
20267        #[prost(message, optional, tag="3")]
20268        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
20269    }
20270}
20271// End of protos/perfetto/trace/remote_clock_sync.proto
20272
20273// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
20274
20275/// Deliberate empty message. See comment on StatsdAtom#atom below.
20276#[derive(Clone, PartialEq, ::prost::Message)]
20277pub struct Atom {
20278}
20279/// One or more statsd atoms. This must continue to match:
20280/// perfetto/protos/third_party/statsd/shell_data.proto
20281/// So that we can efficiently add data from statsd directly to the
20282/// trace.
20283#[derive(Clone, PartialEq, ::prost::Message)]
20284pub struct StatsdAtom {
20285    /// Atom should be filled with an Atom proto from:
20286    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
20287    /// We don't reference Atom directly here since we don't want to import
20288    /// Atom.proto and all its transitive dependencies into Perfetto.
20289    /// atom and timestamp_nanos have the same cardinality
20290    #[prost(message, repeated, tag="1")]
20291    pub atom: ::prost::alloc::vec::Vec<Atom>,
20292    #[prost(int64, repeated, packed="false", tag="2")]
20293    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
20294}
20295// End of protos/perfetto/trace/statsd/statsd_atom.proto
20296
20297// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
20298
20299/// Various Linux system stat counters from /proc.
20300/// The fields in this message can be reported at different rates and with
20301/// different granularity. See sys_stats_config.proto.
20302#[derive(Clone, PartialEq, ::prost::Message)]
20303pub struct SysStats {
20304    #[prost(message, repeated, tag="1")]
20305    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
20306    #[prost(message, repeated, tag="2")]
20307    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
20308    /// One entry per cpu.
20309    #[prost(message, repeated, tag="3")]
20310    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
20311    /// Num processes forked since boot.
20312    /// Populated only if FORK_COUNT in config.stat_counters.
20313    #[prost(uint64, optional, tag="4")]
20314    pub num_forks: ::core::option::Option<u64>,
20315    // Number of interrupts, broken by IRQ number.
20316    // Populated only if IRQ_COUNTS in config.stat_counters.
20317
20318    /// Total num of irqs serviced since boot.
20319    #[prost(uint64, optional, tag="5")]
20320    pub num_irq_total: ::core::option::Option<u64>,
20321    #[prost(message, repeated, tag="6")]
20322    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
20323    // Number of softirqs, broken by softirq number.
20324    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
20325
20326    /// Total num of softirqs since boot.
20327    #[prost(uint64, optional, tag="7")]
20328    pub num_softirq_total: ::core::option::Option<u64>,
20329    /// Per-softirq count.
20330    #[prost(message, repeated, tag="8")]
20331    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
20332    /// The time at which we finish collecting this set of samples;
20333    /// the top-level packet timestamp is the time at which
20334    /// we begin collection.
20335    #[prost(uint64, optional, tag="9")]
20336    pub collection_end_timestamp: ::core::option::Option<u64>,
20337    /// One entry per device.
20338    #[prost(message, repeated, tag="10")]
20339    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
20340    /// Cpu current frequency from
20341    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
20342    /// One entry per cpu. Report 0 for offline cpu
20343    #[prost(uint32, repeated, packed="false", tag="11")]
20344    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
20345    /// One entry per each node's zones.
20346    #[prost(message, repeated, tag="12")]
20347    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
20348    /// One entry per disk device.
20349    #[prost(message, repeated, tag="13")]
20350    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
20351    /// One entry per PsiResource type.
20352    #[prost(message, repeated, tag="14")]
20353    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
20354    #[prost(message, repeated, tag="15")]
20355    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
20356    #[prost(message, repeated, tag="16")]
20357    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
20358    /// Read GPU frequency info on Intel/AMD devices.
20359    #[prost(uint64, repeated, packed="false", tag="17")]
20360    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
20361}
20362/// Nested message and enum types in `SysStats`.
20363pub mod sys_stats {
20364    /// Counters from /proc/meminfo. Values are in KB.
20365    #[derive(Clone, PartialEq, ::prost::Message)]
20366    pub struct MeminfoValue {
20367        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
20368        pub key: ::core::option::Option<i32>,
20369        #[prost(uint64, optional, tag="2")]
20370        pub value: ::core::option::Option<u64>,
20371    }
20372    /// Counter from /proc/vmstat. Units are often pages, not KB.
20373    #[derive(Clone, PartialEq, ::prost::Message)]
20374    pub struct VmstatValue {
20375        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
20376        pub key: ::core::option::Option<i32>,
20377        #[prost(uint64, optional, tag="2")]
20378        pub value: ::core::option::Option<u64>,
20379    }
20380    /// Times in each mode, since boot. Unit: nanoseconds.
20381    #[derive(Clone, PartialEq, ::prost::Message)]
20382    pub struct CpuTimes {
20383        #[prost(uint32, optional, tag="1")]
20384        pub cpu_id: ::core::option::Option<u32>,
20385        /// Time spent in user mode.
20386        #[prost(uint64, optional, tag="2")]
20387        pub user_ns: ::core::option::Option<u64>,
20388        /// Time spent in user mode (low prio).
20389        #[prost(uint64, optional, tag="3")]
20390        pub user_nice_ns: ::core::option::Option<u64>,
20391        /// Time spent in system mode.
20392        #[prost(uint64, optional, tag="4")]
20393        pub system_mode_ns: ::core::option::Option<u64>,
20394        /// Time spent in the idle task.
20395        #[prost(uint64, optional, tag="5")]
20396        pub idle_ns: ::core::option::Option<u64>,
20397        /// Time spent waiting for I/O.
20398        #[prost(uint64, optional, tag="6")]
20399        pub io_wait_ns: ::core::option::Option<u64>,
20400        /// Time spent servicing interrupts.
20401        #[prost(uint64, optional, tag="7")]
20402        pub irq_ns: ::core::option::Option<u64>,
20403        /// Time spent servicing softirqs.
20404        #[prost(uint64, optional, tag="8")]
20405        pub softirq_ns: ::core::option::Option<u64>,
20406    }
20407    #[derive(Clone, PartialEq, ::prost::Message)]
20408    pub struct InterruptCount {
20409        #[prost(int32, optional, tag="1")]
20410        pub irq: ::core::option::Option<i32>,
20411        #[prost(uint64, optional, tag="2")]
20412        pub count: ::core::option::Option<u64>,
20413    }
20414    /// Frequencies for /sys/class/devfreq/ entries in kHz.
20415    #[derive(Clone, PartialEq, ::prost::Message)]
20416    pub struct DevfreqValue {
20417        #[prost(string, optional, tag="1")]
20418        pub key: ::core::option::Option<::prost::alloc::string::String>,
20419        #[prost(uint64, optional, tag="2")]
20420        pub value: ::core::option::Option<u64>,
20421    }
20422    #[derive(Clone, PartialEq, ::prost::Message)]
20423    pub struct BuddyInfo {
20424        #[prost(string, optional, tag="1")]
20425        pub node: ::core::option::Option<::prost::alloc::string::String>,
20426        #[prost(string, optional, tag="2")]
20427        pub zone: ::core::option::Option<::prost::alloc::string::String>,
20428        #[prost(uint32, repeated, packed="false", tag="3")]
20429        pub order_pages: ::prost::alloc::vec::Vec<u32>,
20430    }
20431    /// Counters from /proc/diskstats.
20432    #[derive(Clone, PartialEq, ::prost::Message)]
20433    pub struct DiskStat {
20434        #[prost(string, optional, tag="1")]
20435        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
20436        #[prost(uint64, optional, tag="2")]
20437        pub read_sectors: ::core::option::Option<u64>,
20438        #[prost(uint64, optional, tag="3")]
20439        pub read_time_ms: ::core::option::Option<u64>,
20440        #[prost(uint64, optional, tag="4")]
20441        pub write_sectors: ::core::option::Option<u64>,
20442        #[prost(uint64, optional, tag="5")]
20443        pub write_time_ms: ::core::option::Option<u64>,
20444        #[prost(uint64, optional, tag="6")]
20445        pub discard_sectors: ::core::option::Option<u64>,
20446        #[prost(uint64, optional, tag="7")]
20447        pub discard_time_ms: ::core::option::Option<u64>,
20448        #[prost(uint64, optional, tag="8")]
20449        pub flush_count: ::core::option::Option<u64>,
20450        #[prost(uint64, optional, tag="9")]
20451        pub flush_time_ms: ::core::option::Option<u64>,
20452    }
20453    /// Reading from /proc/pressure/*.
20454    #[derive(Clone, PartialEq, ::prost::Message)]
20455    pub struct PsiSample {
20456        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
20457        pub resource: ::core::option::Option<i32>,
20458        /// Total absolute stall time (in nanos) for a given resource.
20459        /// While PSI readings are in micros, we store in nanos for consistency with
20460        /// most other time-based counters.
20461        #[prost(uint64, optional, tag="2")]
20462        pub total_ns: ::core::option::Option<u64>,
20463    }
20464    /// Nested message and enum types in `PsiSample`.
20465    pub mod psi_sample {
20466        /// Type of resource that may have exhibited pressure stalls.
20467        ///     * _SOME indicates some resource tasks stalled.
20468        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
20469        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20470        #[repr(i32)]
20471        pub enum PsiResource {
20472            Unspecified = 0,
20473            CpuSome = 1,
20474            CpuFull = 2,
20475            IoSome = 3,
20476            IoFull = 4,
20477            MemorySome = 5,
20478            MemoryFull = 6,
20479        }
20480        impl PsiResource {
20481            /// String value of the enum field names used in the ProtoBuf definition.
20482            ///
20483            /// The values are not transformed in any way and thus are considered stable
20484            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20485            pub fn as_str_name(&self) -> &'static str {
20486                match self {
20487                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
20488                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
20489                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
20490                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
20491                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
20492                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
20493                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
20494                }
20495            }
20496        }
20497    }
20498    /// Reading from /sys/class/thermal/*.
20499    #[derive(Clone, PartialEq, ::prost::Message)]
20500    pub struct ThermalZone {
20501        #[prost(string, optional, tag="1")]
20502        pub name: ::core::option::Option<::prost::alloc::string::String>,
20503        #[prost(uint64, optional, tag="2")]
20504        pub temp: ::core::option::Option<u64>,
20505        #[prost(string, optional, tag="3")]
20506        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
20507    }
20508    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
20509    #[derive(Clone, PartialEq, ::prost::Message)]
20510    pub struct CpuIdleStateEntry {
20511        /// Name of the idle state, e.g. C1-C10
20512        #[prost(string, optional, tag="1")]
20513        pub state: ::core::option::Option<::prost::alloc::string::String>,
20514        #[prost(uint64, optional, tag="2")]
20515        pub duration_us: ::core::option::Option<u64>,
20516    }
20517    #[derive(Clone, PartialEq, ::prost::Message)]
20518    pub struct CpuIdleState {
20519        #[prost(uint32, optional, tag="1")]
20520        pub cpu_id: ::core::option::Option<u32>,
20521        #[prost(message, repeated, tag="2")]
20522        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
20523    }
20524}
20525// End of protos/perfetto/trace/sys_stats/sys_stats.proto
20526
20527// Begin of protos/perfetto/trace/system_info.proto
20528
20529#[derive(Clone, PartialEq, ::prost::Message)]
20530pub struct Utsname {
20531    #[prost(string, optional, tag="1")]
20532    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
20533    #[prost(string, optional, tag="2")]
20534    pub version: ::core::option::Option<::prost::alloc::string::String>,
20535    #[prost(string, optional, tag="3")]
20536    pub release: ::core::option::Option<::prost::alloc::string::String>,
20537    #[prost(string, optional, tag="4")]
20538    pub machine: ::core::option::Option<::prost::alloc::string::String>,
20539}
20540/// Next id: 15;
20541#[derive(Clone, PartialEq, ::prost::Message)]
20542pub struct SystemInfo {
20543    #[prost(message, optional, tag="1")]
20544    pub utsname: ::core::option::Option<Utsname>,
20545    #[prost(string, optional, tag="2")]
20546    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
20547    /// The manufacturer of the product/hardware.
20548    /// Source : "ro.product.manufacturer"
20549    /// Introduced after Android W in Nov 2024 and is not supported on older
20550    /// versions.
20551    #[prost(string, optional, tag="14")]
20552    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
20553    /// The SoC model from which trace is collected
20554    #[prost(string, optional, tag="9")]
20555    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
20556    /// The guest SoC model from which trace is collected in case of VMs
20557    #[prost(string, optional, tag="13")]
20558    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
20559    /// The hardware reversion from android device
20560    #[prost(string, optional, tag="10")]
20561    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
20562    /// The storage component from android_device. This field has been introduced
20563    /// after Android W in Aug 2024 and is not supported on older versions.
20564    #[prost(string, optional, tag="11")]
20565    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
20566    /// The RAM component information from android device. This field has been
20567    /// introduced after Android W in Aug 2024 and is not supported on older
20568    /// versions.
20569    #[prost(string, optional, tag="12")]
20570    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
20571    /// The version of traced (the same returned by `traced --version`).
20572    /// This is a human readable string with and its format varies depending on
20573    /// the build system and the repo (standalone vs AOSP).
20574    /// This is intended for human debugging only.
20575    #[prost(string, optional, tag="4")]
20576    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
20577    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
20578    /// Introduced in Android T.
20579    #[prost(uint64, optional, tag="5")]
20580    pub android_sdk_version: ::core::option::Option<u64>,
20581    /// Kernel page size - sysconf(_SC_PAGESIZE).
20582    #[prost(uint32, optional, tag="6")]
20583    pub page_size: ::core::option::Option<u32>,
20584    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
20585    /// Might be different to the number of online cpus.
20586    /// Introduced in perfetto v44.
20587    #[prost(uint32, optional, tag="8")]
20588    pub num_cpus: ::core::option::Option<u32>,
20589    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
20590    /// Introduced in v38 / Android V.
20591    #[prost(int32, optional, tag="7")]
20592    pub timezone_off_mins: ::core::option::Option<i32>,
20593    /// Ticks per second - sysconf(_SC_CLK_TCK).
20594    /// Not serialised as of perfetto v44.
20595    #[prost(int64, optional, tag="3")]
20596    pub hz: ::core::option::Option<i64>,
20597}
20598// End of protos/perfetto/trace/system_info.proto
20599
20600// Begin of protos/perfetto/trace/system_info/cpu_info.proto
20601
20602/// Information about CPUs from procfs and sysfs.
20603#[derive(Clone, PartialEq, ::prost::Message)]
20604pub struct CpuInfo {
20605    /// Describes available CPUs, one entry per CPU.
20606    #[prost(message, repeated, tag="1")]
20607    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
20608}
20609/// Nested message and enum types in `CpuInfo`.
20610pub mod cpu_info {
20611    #[derive(Clone, PartialEq, ::prost::Message)]
20612    pub struct ArmCpuIdentifier {
20613        /// Implementer code
20614        #[prost(uint32, optional, tag="1")]
20615        pub implementer: ::core::option::Option<u32>,
20616        /// Architecture code
20617        #[prost(uint32, optional, tag="2")]
20618        pub architecture: ::core::option::Option<u32>,
20619        /// CPU variant
20620        #[prost(uint32, optional, tag="3")]
20621        pub variant: ::core::option::Option<u32>,
20622        /// CPU part
20623        #[prost(uint32, optional, tag="4")]
20624        pub part: ::core::option::Option<u32>,
20625        /// CPU revision
20626        #[prost(uint32, optional, tag="5")]
20627        pub revision: ::core::option::Option<u32>,
20628    }
20629    /// Information about a single CPU.
20630    #[derive(Clone, PartialEq, ::prost::Message)]
20631    pub struct Cpu {
20632        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
20633        /// Example: "AArch64 Processor rev 12 (aarch64)"
20634        #[prost(string, optional, tag="1")]
20635        pub processor: ::core::option::Option<::prost::alloc::string::String>,
20636        /// Frequencies from
20637        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
20638        /// where X is the index of this CPU.
20639        #[prost(uint32, repeated, packed="false", tag="2")]
20640        pub frequencies: ::prost::alloc::vec::Vec<u32>,
20641        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
20642        /// the index of this CPU.
20643        #[prost(uint32, optional, tag="3")]
20644        pub capacity: ::core::option::Option<u32>,
20645        /// Features is a bitmap containing a bit set for each feature defined in
20646        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
20647        /// index.
20648        #[prost(uint64, optional, tag="5")]
20649        pub features: ::core::option::Option<u64>,
20650        /// Code to identify the CPU
20651        #[prost(oneof="cpu::Identifier", tags="4")]
20652        pub identifier: ::core::option::Option<cpu::Identifier>,
20653    }
20654    /// Nested message and enum types in `Cpu`.
20655    pub mod cpu {
20656        /// Code to identify the CPU
20657        #[derive(Clone, PartialEq, ::prost::Oneof)]
20658        pub enum Identifier {
20659            #[prost(message, tag="4")]
20660            ArmIdentifier(super::ArmCpuIdentifier),
20661        }
20662    }
20663}
20664// End of protos/perfetto/trace/system_info/cpu_info.proto
20665
20666// Begin of protos/perfetto/trace/test_event.proto
20667
20668/// Event used by testing code.
20669#[derive(Clone, PartialEq, ::prost::Message)]
20670pub struct TestEvent {
20671    /// Arbitrary string used in tests.
20672    #[prost(string, optional, tag="1")]
20673    pub str: ::core::option::Option<::prost::alloc::string::String>,
20674    /// The current value of the random number sequence used in tests.
20675    #[prost(uint32, optional, tag="2")]
20676    pub seq_value: ::core::option::Option<u32>,
20677    /// Monotonically increased on each packet.
20678    #[prost(uint64, optional, tag="3")]
20679    pub counter: ::core::option::Option<u64>,
20680    /// No more packets should follow (from the current sequence).
20681    #[prost(bool, optional, tag="4")]
20682    pub is_last: ::core::option::Option<bool>,
20683    #[prost(message, optional, tag="5")]
20684    pub payload: ::core::option::Option<test_event::TestPayload>,
20685}
20686/// Nested message and enum types in `TestEvent`.
20687pub mod test_event {
20688    #[derive(Clone, PartialEq, ::prost::Message)]
20689    pub struct TestPayload {
20690        #[prost(string, repeated, tag="1")]
20691        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20692        #[prost(message, repeated, tag="2")]
20693        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
20694        #[prost(string, optional, tag="4")]
20695        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
20696        #[prost(int32, optional, tag="5")]
20697        pub single_int: ::core::option::Option<i32>,
20698        #[prost(int32, repeated, packed="false", tag="6")]
20699        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
20700        /// When 0 this is the bottom-most nested message.
20701        #[prost(uint32, optional, tag="3")]
20702        pub remaining_nesting_depth: ::core::option::Option<u32>,
20703        #[prost(message, repeated, tag="7")]
20704        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
20705    }
20706}
20707// End of protos/perfetto/trace/test_event.proto
20708
20709// Begin of protos/perfetto/trace/trace_packet_defaults.proto
20710
20711/// Default values for TracePacket fields that hold for a particular TraceWriter
20712/// packet sequence. This message contains a subset of the TracePacket fields
20713/// with matching IDs. When provided, these fields define the default values
20714/// that should be applied, at import time, to all TracePacket(s) with the same
20715/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
20716///
20717/// Should be reemitted whenever incremental state is cleared on the sequence.
20718#[derive(Clone, PartialEq, ::prost::Message)]
20719pub struct TracePacketDefaults {
20720    #[prost(uint32, optional, tag="58")]
20721    pub timestamp_clock_id: ::core::option::Option<u32>,
20722    /// Default values for TrackEvents (e.g. default track).
20723    #[prost(message, optional, tag="11")]
20724    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
20725    /// Defaults for perf profiler packets (PerfSample).
20726    #[prost(message, optional, tag="12")]
20727    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
20728    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
20729    /// V8RegexpCode)
20730    #[prost(message, optional, tag="99")]
20731    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
20732}
20733// Begin of protos/perfetto/trace/trace_uuid.proto
20734
20735/// A random unique ID that identifies the trace.
20736/// This message has been introduced in v32. Prior to that, the UUID was
20737/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
20738/// This has been moved to a standalone packet to deal with new use-cases for
20739/// go/gapless-aot, where the same tracing session can be serialized several
20740/// times, in which case the UUID is changed on each snapshot and does not match
20741/// the one in the TraceConfig.
20742#[derive(Clone, PartialEq, ::prost::Message)]
20743pub struct TraceUuid {
20744    #[prost(int64, optional, tag="1")]
20745    pub msb: ::core::option::Option<i64>,
20746    #[prost(int64, optional, tag="2")]
20747    pub lsb: ::core::option::Option<i64>,
20748}
20749// End of protos/perfetto/trace/trace_uuid.proto
20750
20751// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
20752
20753/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
20754/// usually by the process's main thread.
20755///
20756/// Next id: 9.
20757#[derive(Clone, PartialEq, ::prost::Message)]
20758pub struct ProcessDescriptor {
20759    #[prost(int32, optional, tag="1")]
20760    pub pid: ::core::option::Option<i32>,
20761    #[prost(string, repeated, tag="2")]
20762    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20763    #[prost(string, optional, tag="6")]
20764    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
20765    #[prost(int32, optional, tag="5")]
20766    pub process_priority: ::core::option::Option<i32>,
20767    /// Process start time in nanoseconds.
20768    /// The timestamp refers to the trace clock by default. Other clock IDs
20769    /// provided in TracePacket are not supported.
20770    #[prost(int64, optional, tag="7")]
20771    pub start_timestamp_ns: ::core::option::Option<i64>,
20772    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
20773    pub chrome_process_type: ::core::option::Option<i32>,
20774    /// To support old UI. New UI should determine default sorting by process_type.
20775    #[prost(int32, optional, tag="3")]
20776    pub legacy_sort_index: ::core::option::Option<i32>,
20777    /// Labels can be used to further describe properties of the work performed by
20778    /// the process. For example, these can be used by Chrome renderer process to
20779    /// provide titles of frames being rendered.
20780    #[prost(string, repeated, tag="8")]
20781    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20782}
20783/// Nested message and enum types in `ProcessDescriptor`.
20784pub mod process_descriptor {
20785    // ---------------------------------------------------------------------------
20786    // Deprecated / legacy fields, which will be removed in the future:
20787    // ---------------------------------------------------------------------------
20788
20789    /// See chromium's content::ProcessType.
20790    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20791    #[repr(i32)]
20792    pub enum ChromeProcessType {
20793        ProcessUnspecified = 0,
20794        ProcessBrowser = 1,
20795        ProcessRenderer = 2,
20796        ProcessUtility = 3,
20797        ProcessZygote = 4,
20798        ProcessSandboxHelper = 5,
20799        ProcessGpu = 6,
20800        ProcessPpapiPlugin = 7,
20801        ProcessPpapiBroker = 8,
20802    }
20803    impl ChromeProcessType {
20804        /// String value of the enum field names used in the ProtoBuf definition.
20805        ///
20806        /// The values are not transformed in any way and thus are considered stable
20807        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20808        pub fn as_str_name(&self) -> &'static str {
20809            match self {
20810                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
20811                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
20812                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
20813                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
20814                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
20815                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
20816                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
20817                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
20818                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
20819            }
20820        }
20821    }
20822}
20823// End of protos/perfetto/trace/track_event/process_descriptor.proto
20824
20825// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
20826
20827/// This message specifies the "range of interest" for track events. With the
20828/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
20829/// Trace Processor drops track events outside of this range.
20830#[derive(Clone, PartialEq, ::prost::Message)]
20831pub struct TrackEventRangeOfInterest {
20832    #[prost(int64, optional, tag="1")]
20833    pub start_us: ::core::option::Option<i64>,
20834}
20835// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
20836
20837/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
20838/// usually by the thread's trace writer.
20839///
20840/// Next id: 9.
20841#[derive(Clone, PartialEq, ::prost::Message)]
20842pub struct ThreadDescriptor {
20843    #[prost(int32, optional, tag="1")]
20844    pub pid: ::core::option::Option<i32>,
20845    #[prost(int32, optional, tag="2")]
20846    pub tid: ::core::option::Option<i32>,
20847    #[prost(string, optional, tag="5")]
20848    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
20849    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
20850    pub chrome_thread_type: ::core::option::Option<i32>,
20851    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
20852    /// and timestamp_clock_id fields instead.
20853    #[prost(int64, optional, tag="6")]
20854    pub reference_timestamp_us: ::core::option::Option<i64>,
20855    /// Absolute reference values. Clock values in subsequent TrackEvents can be
20856    /// encoded accumulatively and relative to these. This reduces their var-int
20857    /// encoding size.
20858    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
20859    #[prost(int64, optional, tag="7")]
20860    pub reference_thread_time_us: ::core::option::Option<i64>,
20861    #[prost(int64, optional, tag="8")]
20862    pub reference_thread_instruction_count: ::core::option::Option<i64>,
20863    /// To support old UI. New UI should determine default sorting by thread_type.
20864    #[prost(int32, optional, tag="3")]
20865    pub legacy_sort_index: ::core::option::Option<i32>,
20866}
20867/// Nested message and enum types in `ThreadDescriptor`.
20868pub mod thread_descriptor {
20869    // ---------------------------------------------------------------------------
20870    // Deprecated / legacy fields, which will be removed in the future:
20871    // ---------------------------------------------------------------------------
20872
20873    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20874    #[repr(i32)]
20875    pub enum ChromeThreadType {
20876        ChromeThreadUnspecified = 0,
20877        ChromeThreadMain = 1,
20878        ChromeThreadIo = 2,
20879        /// Scheduler:
20880        ChromeThreadPoolBgWorker = 3,
20881        ChromeThreadPoolFgWorker = 4,
20882        ChromeThreadPoolFbBlocking = 5,
20883        ChromeThreadPoolBgBlocking = 6,
20884        ChromeThreadPoolService = 7,
20885        /// Compositor:
20886        ChromeThreadCompositor = 8,
20887        ChromeThreadVizCompositor = 9,
20888        ChromeThreadCompositorWorker = 10,
20889        /// Renderer:
20890        ChromeThreadServiceWorker = 11,
20891        /// Tracing related threads:
20892        ChromeThreadMemoryInfra = 50,
20893        ChromeThreadSamplingProfiler = 51,
20894    }
20895    impl ChromeThreadType {
20896        /// String value of the enum field names used in the ProtoBuf definition.
20897        ///
20898        /// The values are not transformed in any way and thus are considered stable
20899        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20900        pub fn as_str_name(&self) -> &'static str {
20901            match self {
20902                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
20903                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
20904                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
20905                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
20906                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
20907                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
20908                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
20909                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
20910                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
20911                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
20912                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
20913                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
20914                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
20915                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
20916            }
20917        }
20918    }
20919}
20920// End of protos/perfetto/trace/track_event/thread_descriptor.proto
20921
20922// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
20923
20924/// Describes the attributes for a Chrome process. Must be paired with a
20925/// ProcessDescriptor in the same TrackDescriptor.
20926///
20927/// Next id: 6.
20928#[derive(Clone, PartialEq, ::prost::Message)]
20929pub struct ChromeProcessDescriptor {
20930    #[prost(enumeration="chrome_process_descriptor::ProcessType", optional, tag="1")]
20931    pub process_type: ::core::option::Option<i32>,
20932    #[prost(int32, optional, tag="2")]
20933    pub process_priority: ::core::option::Option<i32>,
20934    /// To support old UI. New UI should determine default sorting by process_type.
20935    #[prost(int32, optional, tag="3")]
20936    pub legacy_sort_index: ::core::option::Option<i32>,
20937    /// Name of the hosting app for WebView. Used to match renderer processes to
20938    /// their hosting apps.
20939    #[prost(string, optional, tag="4")]
20940    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
20941    /// The ID to link crashes to trace.
20942    /// Notes:
20943    /// * The ID is per process. So, each trace may contain many IDs, and you need
20944    ///    to look for the ID from crashed process to find the crash report.
20945    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
20946    ///    get an uploaded trace, since uploads could have failed.
20947    /// * On the other hand, if there was a crash during the session and trace was
20948    ///    uploaded, it is very likely to find a crash report with the trace ID.
20949    /// * This is not crash ID or trace ID. It is just a random 64-bit number
20950    ///    recorded in both traces and crashes. It is possible to have collisions,
20951    ///    though very rare.
20952    #[prost(uint64, optional, tag="5")]
20953    pub crash_trace_id: ::core::option::Option<u64>,
20954}
20955/// Nested message and enum types in `ChromeProcessDescriptor`.
20956pub mod chrome_process_descriptor {
20957    /// See chromium's content::ProcessType.
20958    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20959    #[repr(i32)]
20960    pub enum ProcessType {
20961        ProcessUnspecified = 0,
20962        ProcessBrowser = 1,
20963        ProcessRenderer = 2,
20964        ProcessUtility = 3,
20965        ProcessZygote = 4,
20966        ProcessSandboxHelper = 5,
20967        ProcessGpu = 6,
20968        ProcessPpapiPlugin = 7,
20969        ProcessPpapiBroker = 8,
20970        ProcessServiceNetwork = 9,
20971        ProcessServiceTracing = 10,
20972        ProcessServiceStorage = 11,
20973        ProcessServiceAudio = 12,
20974        ProcessServiceDataDecoder = 13,
20975        ProcessServiceUtilWin = 14,
20976        ProcessServiceProxyResolver = 15,
20977        ProcessServiceCdm = 16,
20978        ProcessServiceVideoCapture = 17,
20979        ProcessServiceUnzipper = 18,
20980        ProcessServiceMirroring = 19,
20981        ProcessServiceFilepatcher = 20,
20982        ProcessServiceTts = 21,
20983        ProcessServicePrinting = 22,
20984        ProcessServiceQuarantine = 23,
20985        ProcessServiceCrosLocalsearch = 24,
20986        ProcessServiceCrosAssistantAudioDecoder = 25,
20987        ProcessServiceFileutil = 26,
20988        ProcessServicePrintcompositor = 27,
20989        ProcessServicePaintpreview = 28,
20990        ProcessServiceSpeechrecognition = 29,
20991        ProcessServiceXrdevice = 30,
20992        ProcessServiceReadicon = 31,
20993        ProcessServiceLanguagedetection = 32,
20994        ProcessServiceSharing = 33,
20995        ProcessServiceMediaparser = 34,
20996        ProcessServiceQrcodegenerator = 35,
20997        ProcessServiceProfileimport = 36,
20998        ProcessServiceIme = 37,
20999        ProcessServiceRecording = 38,
21000        ProcessServiceShapedetection = 39,
21001        ProcessRendererExtension = 40,
21002        ProcessServiceMediaFoundation = 41,
21003    }
21004    impl ProcessType {
21005        /// String value of the enum field names used in the ProtoBuf definition.
21006        ///
21007        /// The values are not transformed in any way and thus are considered stable
21008        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21009        pub fn as_str_name(&self) -> &'static str {
21010            match self {
21011                ProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
21012                ProcessType::ProcessBrowser => "PROCESS_BROWSER",
21013                ProcessType::ProcessRenderer => "PROCESS_RENDERER",
21014                ProcessType::ProcessUtility => "PROCESS_UTILITY",
21015                ProcessType::ProcessZygote => "PROCESS_ZYGOTE",
21016                ProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
21017                ProcessType::ProcessGpu => "PROCESS_GPU",
21018                ProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
21019                ProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
21020                ProcessType::ProcessServiceNetwork => "PROCESS_SERVICE_NETWORK",
21021                ProcessType::ProcessServiceTracing => "PROCESS_SERVICE_TRACING",
21022                ProcessType::ProcessServiceStorage => "PROCESS_SERVICE_STORAGE",
21023                ProcessType::ProcessServiceAudio => "PROCESS_SERVICE_AUDIO",
21024                ProcessType::ProcessServiceDataDecoder => "PROCESS_SERVICE_DATA_DECODER",
21025                ProcessType::ProcessServiceUtilWin => "PROCESS_SERVICE_UTIL_WIN",
21026                ProcessType::ProcessServiceProxyResolver => "PROCESS_SERVICE_PROXY_RESOLVER",
21027                ProcessType::ProcessServiceCdm => "PROCESS_SERVICE_CDM",
21028                ProcessType::ProcessServiceVideoCapture => "PROCESS_SERVICE_VIDEO_CAPTURE",
21029                ProcessType::ProcessServiceUnzipper => "PROCESS_SERVICE_UNZIPPER",
21030                ProcessType::ProcessServiceMirroring => "PROCESS_SERVICE_MIRRORING",
21031                ProcessType::ProcessServiceFilepatcher => "PROCESS_SERVICE_FILEPATCHER",
21032                ProcessType::ProcessServiceTts => "PROCESS_SERVICE_TTS",
21033                ProcessType::ProcessServicePrinting => "PROCESS_SERVICE_PRINTING",
21034                ProcessType::ProcessServiceQuarantine => "PROCESS_SERVICE_QUARANTINE",
21035                ProcessType::ProcessServiceCrosLocalsearch => "PROCESS_SERVICE_CROS_LOCALSEARCH",
21036                ProcessType::ProcessServiceCrosAssistantAudioDecoder => "PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER",
21037                ProcessType::ProcessServiceFileutil => "PROCESS_SERVICE_FILEUTIL",
21038                ProcessType::ProcessServicePrintcompositor => "PROCESS_SERVICE_PRINTCOMPOSITOR",
21039                ProcessType::ProcessServicePaintpreview => "PROCESS_SERVICE_PAINTPREVIEW",
21040                ProcessType::ProcessServiceSpeechrecognition => "PROCESS_SERVICE_SPEECHRECOGNITION",
21041                ProcessType::ProcessServiceXrdevice => "PROCESS_SERVICE_XRDEVICE",
21042                ProcessType::ProcessServiceReadicon => "PROCESS_SERVICE_READICON",
21043                ProcessType::ProcessServiceLanguagedetection => "PROCESS_SERVICE_LANGUAGEDETECTION",
21044                ProcessType::ProcessServiceSharing => "PROCESS_SERVICE_SHARING",
21045                ProcessType::ProcessServiceMediaparser => "PROCESS_SERVICE_MEDIAPARSER",
21046                ProcessType::ProcessServiceQrcodegenerator => "PROCESS_SERVICE_QRCODEGENERATOR",
21047                ProcessType::ProcessServiceProfileimport => "PROCESS_SERVICE_PROFILEIMPORT",
21048                ProcessType::ProcessServiceIme => "PROCESS_SERVICE_IME",
21049                ProcessType::ProcessServiceRecording => "PROCESS_SERVICE_RECORDING",
21050                ProcessType::ProcessServiceShapedetection => "PROCESS_SERVICE_SHAPEDETECTION",
21051                ProcessType::ProcessRendererExtension => "PROCESS_RENDERER_EXTENSION",
21052                ProcessType::ProcessServiceMediaFoundation => "PROCESS_SERVICE_MEDIA_FOUNDATION",
21053            }
21054        }
21055    }
21056}
21057// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
21058
21059// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
21060
21061/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
21062/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
21063/// in the same TrackDescriptor.
21064///
21065/// Next id: 3.
21066#[derive(Clone, PartialEq, ::prost::Message)]
21067pub struct ChromeThreadDescriptor {
21068    #[prost(enumeration="chrome_thread_descriptor::ThreadType", optional, tag="1")]
21069    pub thread_type: ::core::option::Option<i32>,
21070    /// To support old UI. New UI should determine default sorting by thread_type.
21071    #[prost(int32, optional, tag="2")]
21072    pub legacy_sort_index: ::core::option::Option<i32>,
21073}
21074/// Nested message and enum types in `ChromeThreadDescriptor`.
21075pub mod chrome_thread_descriptor {
21076    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21077    #[repr(i32)]
21078    pub enum ThreadType {
21079        ThreadUnspecified = 0,
21080        ThreadMain = 1,
21081        ThreadIo = 2,
21082        ThreadPoolBgWorker = 3,
21083        ThreadPoolFgWorker = 4,
21084        ThreadPoolFgBlocking = 5,
21085        ThreadPoolBgBlocking = 6,
21086        ThreadPoolService = 7,
21087        ThreadCompositor = 8,
21088        ThreadVizCompositor = 9,
21089        ThreadCompositorWorker = 10,
21090        ThreadServiceWorker = 11,
21091        ThreadNetworkService = 12,
21092        ThreadChildIo = 13,
21093        ThreadBrowserIo = 14,
21094        ThreadBrowserMain = 15,
21095        ThreadRendererMain = 16,
21096        ThreadUtilityMain = 17,
21097        ThreadGpuMain = 18,
21098        ThreadCacheBlockfile = 19,
21099        ThreadMedia = 20,
21100        ThreadAudioOutputdevice = 21,
21101        ThreadAudioInputdevice = 22,
21102        ThreadGpuMemory = 23,
21103        ThreadGpuVsync = 24,
21104        ThreadDxaVideodecoder = 25,
21105        ThreadBrowserWatchdog = 26,
21106        ThreadWebrtcNetwork = 27,
21107        ThreadWindowOwner = 28,
21108        ThreadWebrtcSignaling = 29,
21109        ThreadWebrtcWorker = 30,
21110        ThreadPpapiMain = 31,
21111        ThreadGpuWatchdog = 32,
21112        ThreadSwapper = 33,
21113        ThreadGamepadPolling = 34,
21114        ThreadWebcrypto = 35,
21115        ThreadDatabase = 36,
21116        ThreadProxyresolver = 37,
21117        ThreadDevtoolsadb = 38,
21118        ThreadNetworkconfigwatcher = 39,
21119        ThreadWasapiRender = 40,
21120        ThreadLoaderLockSampler = 41,
21121        ThreadMemoryInfra = 50,
21122        ThreadSamplingProfiler = 51,
21123        ThreadCompositorGpu = 52,
21124    }
21125    impl ThreadType {
21126        /// String value of the enum field names used in the ProtoBuf definition.
21127        ///
21128        /// The values are not transformed in any way and thus are considered stable
21129        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21130        pub fn as_str_name(&self) -> &'static str {
21131            match self {
21132                ThreadType::ThreadUnspecified => "THREAD_UNSPECIFIED",
21133                ThreadType::ThreadMain => "THREAD_MAIN",
21134                ThreadType::ThreadIo => "THREAD_IO",
21135                ThreadType::ThreadPoolBgWorker => "THREAD_POOL_BG_WORKER",
21136                ThreadType::ThreadPoolFgWorker => "THREAD_POOL_FG_WORKER",
21137                ThreadType::ThreadPoolFgBlocking => "THREAD_POOL_FG_BLOCKING",
21138                ThreadType::ThreadPoolBgBlocking => "THREAD_POOL_BG_BLOCKING",
21139                ThreadType::ThreadPoolService => "THREAD_POOL_SERVICE",
21140                ThreadType::ThreadCompositor => "THREAD_COMPOSITOR",
21141                ThreadType::ThreadVizCompositor => "THREAD_VIZ_COMPOSITOR",
21142                ThreadType::ThreadCompositorWorker => "THREAD_COMPOSITOR_WORKER",
21143                ThreadType::ThreadServiceWorker => "THREAD_SERVICE_WORKER",
21144                ThreadType::ThreadNetworkService => "THREAD_NETWORK_SERVICE",
21145                ThreadType::ThreadChildIo => "THREAD_CHILD_IO",
21146                ThreadType::ThreadBrowserIo => "THREAD_BROWSER_IO",
21147                ThreadType::ThreadBrowserMain => "THREAD_BROWSER_MAIN",
21148                ThreadType::ThreadRendererMain => "THREAD_RENDERER_MAIN",
21149                ThreadType::ThreadUtilityMain => "THREAD_UTILITY_MAIN",
21150                ThreadType::ThreadGpuMain => "THREAD_GPU_MAIN",
21151                ThreadType::ThreadCacheBlockfile => "THREAD_CACHE_BLOCKFILE",
21152                ThreadType::ThreadMedia => "THREAD_MEDIA",
21153                ThreadType::ThreadAudioOutputdevice => "THREAD_AUDIO_OUTPUTDEVICE",
21154                ThreadType::ThreadAudioInputdevice => "THREAD_AUDIO_INPUTDEVICE",
21155                ThreadType::ThreadGpuMemory => "THREAD_GPU_MEMORY",
21156                ThreadType::ThreadGpuVsync => "THREAD_GPU_VSYNC",
21157                ThreadType::ThreadDxaVideodecoder => "THREAD_DXA_VIDEODECODER",
21158                ThreadType::ThreadBrowserWatchdog => "THREAD_BROWSER_WATCHDOG",
21159                ThreadType::ThreadWebrtcNetwork => "THREAD_WEBRTC_NETWORK",
21160                ThreadType::ThreadWindowOwner => "THREAD_WINDOW_OWNER",
21161                ThreadType::ThreadWebrtcSignaling => "THREAD_WEBRTC_SIGNALING",
21162                ThreadType::ThreadWebrtcWorker => "THREAD_WEBRTC_WORKER",
21163                ThreadType::ThreadPpapiMain => "THREAD_PPAPI_MAIN",
21164                ThreadType::ThreadGpuWatchdog => "THREAD_GPU_WATCHDOG",
21165                ThreadType::ThreadSwapper => "THREAD_SWAPPER",
21166                ThreadType::ThreadGamepadPolling => "THREAD_GAMEPAD_POLLING",
21167                ThreadType::ThreadWebcrypto => "THREAD_WEBCRYPTO",
21168                ThreadType::ThreadDatabase => "THREAD_DATABASE",
21169                ThreadType::ThreadProxyresolver => "THREAD_PROXYRESOLVER",
21170                ThreadType::ThreadDevtoolsadb => "THREAD_DEVTOOLSADB",
21171                ThreadType::ThreadNetworkconfigwatcher => "THREAD_NETWORKCONFIGWATCHER",
21172                ThreadType::ThreadWasapiRender => "THREAD_WASAPI_RENDER",
21173                ThreadType::ThreadLoaderLockSampler => "THREAD_LOADER_LOCK_SAMPLER",
21174                ThreadType::ThreadMemoryInfra => "THREAD_MEMORY_INFRA",
21175                ThreadType::ThreadSamplingProfiler => "THREAD_SAMPLING_PROFILER",
21176                ThreadType::ThreadCompositorGpu => "THREAD_COMPOSITOR_GPU",
21177            }
21178        }
21179    }
21180}
21181// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
21182
21183// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
21184
21185/// Defines properties of a counter track, e.g. for built-in counters (thread
21186/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
21187/// a specific app component).
21188///
21189/// Counter tracks only support TYPE_COUNTER track events, which specify new
21190/// values for the counter. For counters that require per-slice values, counter
21191/// values can instead be provided in a more efficient encoding via TrackEvent's
21192/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
21193/// slice-type events cannot be emitted onto a counter track.
21194///
21195/// Values for counters that are only emitted on a single packet sequence can
21196/// optionally be delta-encoded, see |is_incremental|.
21197///
21198/// Next id: 7.
21199#[derive(Clone, PartialEq, ::prost::Message)]
21200pub struct CounterDescriptor {
21201    /// For built-in counters (e.g. thread time). Custom user-specified counters
21202    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
21203    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
21204    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
21205    pub r#type: ::core::option::Option<i32>,
21206    /// Names of categories of the counter (usually for user-specified counters).
21207    /// In the client library, categories are a way to turn groups of individual
21208    /// counters (or events) on or off.
21209    #[prost(string, repeated, tag="2")]
21210    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21211    /// Type of the counter's values. Built-in counters imply a value for this
21212    /// field.
21213    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
21214    pub unit: ::core::option::Option<i32>,
21215    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
21216    /// name can be used instead.
21217    #[prost(string, optional, tag="6")]
21218    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
21219    /// Multiplication factor of this counter's values, e.g. to supply
21220    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
21221    #[prost(int64, optional, tag="4")]
21222    pub unit_multiplier: ::core::option::Option<i64>,
21223    /// Whether values for this counter are provided as delta values. Only
21224    /// supported for counters that are emitted on a single packet-sequence (e.g.
21225    /// thread time). Counter values in subsequent packets on the current packet
21226    /// sequence will be interpreted as delta values from the sequence's most
21227    /// recent value for the counter. When incremental state is cleared, the
21228    /// counter value is considered to be reset to 0. Thus, the first value after
21229    /// incremental state is cleared is effectively an absolute value.
21230    #[prost(bool, optional, tag="5")]
21231    pub is_incremental: ::core::option::Option<bool>,
21232}
21233/// Nested message and enum types in `CounterDescriptor`.
21234pub mod counter_descriptor {
21235    /// Built-in counters, usually with special meaning in the client library,
21236    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
21237    /// track name from the enum value if none is provided in TrackDescriptor.
21238    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21239    #[repr(i32)]
21240    pub enum BuiltinCounterType {
21241        CounterUnspecified = 0,
21242        // Thread-scoped counters. The thread's track should be specified via
21243        // |parent_uuid| in the TrackDescriptor for such a counter.
21244
21245        /// implies UNIT_TIME_NS.
21246        CounterThreadTimeNs = 1,
21247        /// implies UNIT_COUNT.
21248        CounterThreadInstructionCount = 2,
21249    }
21250    impl BuiltinCounterType {
21251        /// String value of the enum field names used in the ProtoBuf definition.
21252        ///
21253        /// The values are not transformed in any way and thus are considered stable
21254        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21255        pub fn as_str_name(&self) -> &'static str {
21256            match self {
21257                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
21258                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
21259                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
21260            }
21261        }
21262    }
21263    /// Type of the values for the counters - to supply lower granularity units,
21264    /// see also |unit_multiplier|.
21265    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21266    #[repr(i32)]
21267    pub enum Unit {
21268        Unspecified = 0,
21269        TimeNs = 1,
21270        Count = 2,
21271        /// TODO(eseckler): Support more units as necessary.
21272        SizeBytes = 3,
21273    }
21274    impl Unit {
21275        /// String value of the enum field names used in the ProtoBuf definition.
21276        ///
21277        /// The values are not transformed in any way and thus are considered stable
21278        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21279        pub fn as_str_name(&self) -> &'static str {
21280            match self {
21281                Unit::Unspecified => "UNIT_UNSPECIFIED",
21282                Unit::TimeNs => "UNIT_TIME_NS",
21283                Unit::Count => "UNIT_COUNT",
21284                Unit::SizeBytes => "UNIT_SIZE_BYTES",
21285            }
21286        }
21287    }
21288}
21289// End of protos/perfetto/trace/track_event/counter_descriptor.proto
21290
21291// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
21292
21293/// Defines a track for TrackEvents. Slices and instant events on the same track
21294/// will be nested based on their timestamps, see TrackEvent::Type.
21295///
21296/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
21297/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
21298/// when the ring buffer wraps, it should be reemitted whenever incremental state
21299/// is cleared.
21300///
21301/// As a fallback, TrackEvents emitted without an explicit track association will
21302/// be associated with an implicit trace-global track (uuid = 0), see also
21303/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
21304/// TrackDescriptor for this implicit track.
21305///
21306/// Next id: 14.
21307#[derive(Clone, PartialEq, ::prost::Message)]
21308pub struct TrackDescriptor {
21309    /// Unique ID that identifies this track. This ID is global to the whole trace.
21310    /// Producers should ensure that it is unlikely to clash with IDs emitted by
21311    /// other producers. A value of 0 denotes the implicit trace-global track.
21312    ///
21313    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
21314    /// event id + id_scope, pid, and/or tid to compute this ID.
21315    #[prost(uint64, optional, tag="1")]
21316    pub uuid: ::core::option::Option<u64>,
21317    /// A parent track reference can be used to describe relationships between
21318    /// tracks. For example, to define an asynchronous track which is scoped to a
21319    /// specific process, specify the uuid for that process's process track here.
21320    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
21321    /// thread, specify the uuid for that thread's thread track here. In general,
21322    /// setting a parent will *nest* that track under the parent in the UI and in
21323    /// the trace processor data model (with the important exception noted below).
21324    ///
21325    /// If not specified, the track will be a root track, i.e. not nested under any
21326    /// other track.
21327    ///
21328    /// Note: if the `thread` or `process` fields are set, this value will be
21329    /// *ignored* as priority is given to those fields.
21330    ///
21331    /// Note: if the parent is set to a track with `thread` or `process` fields
21332    /// set, the track will *not* be nested under the parent in the UI and in the
21333    /// trace processor data model. Instead, the track will inherit the parent'
21334    /// thread/process association and will appear as a *sibling* of the parent.
21335    /// This semantic exists for back-compat reasons as the UI used to work this
21336    /// way for years and changing this leads to a lot of traces subtly breaking.
21337    /// If you want to force nesting, create *another* intermediate track to act as
21338    /// the parent.
21339    #[prost(uint64, optional, tag="5")]
21340    pub parent_uuid: ::core::option::Option<u64>,
21341    /// Associate the track with a process, making it the process-global track.
21342    /// There should only be one such track per process (usually for instant
21343    /// events; trace processor uses this fact to detect pid reuse). If you need
21344    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
21345    ///
21346    /// Trace processor will merge events on a process track with slice-type events
21347    /// from other sources (e.g. ftrace) for the same process into a single
21348    /// timeline view.
21349    #[prost(message, optional, tag="3")]
21350    pub process: ::core::option::Option<ProcessDescriptor>,
21351    #[prost(message, optional, tag="6")]
21352    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
21353    /// Associate the track with a thread, indicating that the track's events
21354    /// describe synchronous code execution on the thread. There should only be one
21355    /// such track per thread (trace processor uses this fact to detect tid reuse).
21356    ///
21357    /// Trace processor will merge events on a thread track with slice-type events
21358    /// from other sources (e.g. ftrace) for the same thread into a single timeline
21359    /// view.
21360    #[prost(message, optional, tag="4")]
21361    pub thread: ::core::option::Option<ThreadDescriptor>,
21362    #[prost(message, optional, tag="7")]
21363    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
21364    /// Descriptor for a counter track. If set, the track will only support
21365    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
21366    /// |extra_counter_values|).
21367    #[prost(message, optional, tag="8")]
21368    pub counter: ::core::option::Option<CounterDescriptor>,
21369    /// If true, forces Trace Processor to use separate tracks for track events
21370    /// and system events for the same thread.
21371    /// Track events timestamps in Chrome have microsecond resolution, while
21372    /// system events use nanoseconds. It results in broken event nesting when
21373    /// track events and system events share a track.
21374    #[prost(bool, optional, tag="9")]
21375    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
21376    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
21377    pub child_ordering: ::core::option::Option<i32>,
21378    /// An opaque value which allows specifying how two sibling tracks should be
21379    /// ordered relative to each other: tracks with lower ranks will appear before
21380    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
21381    /// 0.
21382    ///
21383    /// Note: for tracks where the parent has `thread` or `process` are set, this
21384    /// option is *ignored*. See `parent_uuid` for details.
21385    #[prost(int32, optional, tag="12")]
21386    pub sibling_order_rank: ::core::option::Option<i32>,
21387    /// Name of the track. Optional - if unspecified, it may be derived from the
21388    /// process/thread name (process/thread tracks), the first event's name (async
21389    /// tracks), or counter name (counter tracks).
21390    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
21391    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
21392}
21393/// Nested message and enum types in `TrackDescriptor`.
21394pub mod track_descriptor {
21395    /// Specifies how the UI should display child tracks of this track (i.e. tracks
21396    /// where `parent_uuid` is specified to this track `uuid`). Note that this
21397    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
21398    /// this if it has a good reason not to do so.
21399    ///
21400    /// Note: for tracks where `thread` or `process` are set, this option is
21401    /// *ignored*. See `parent_uuid` for details.
21402    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21403    #[repr(i32)]
21404    pub enum ChildTracksOrdering {
21405        /// The default ordering, with no bearing on how the UI will visualise the
21406        /// tracks.
21407        Unknown = 0,
21408        /// Order tracks by `name` or `static_name` depending on which one has been
21409        /// specified.
21410        Lexicographic = 1,
21411        /// Order tracks by the first `ts` event in a track.
21412        Chronological = 2,
21413        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
21414        /// the lower values will be shown before tracks with higher values. Tracks
21415        /// with no value will be treated as having 0 rank.
21416        Explicit = 3,
21417    }
21418    impl ChildTracksOrdering {
21419        /// String value of the enum field names used in the ProtoBuf definition.
21420        ///
21421        /// The values are not transformed in any way and thus are considered stable
21422        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21423        pub fn as_str_name(&self) -> &'static str {
21424            match self {
21425                ChildTracksOrdering::Unknown => "UNKNOWN",
21426                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
21427                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
21428                ChildTracksOrdering::Explicit => "EXPLICIT",
21429            }
21430        }
21431    }
21432    /// Name of the track. Optional - if unspecified, it may be derived from the
21433    /// process/thread name (process/thread tracks), the first event's name (async
21434    /// tracks), or counter name (counter tracks).
21435    #[derive(Clone, PartialEq, ::prost::Oneof)]
21436    pub enum StaticOrDynamicName {
21437        #[prost(string, tag="2")]
21438        Name(::prost::alloc::string::String),
21439        /// This field is only set by the SDK when perfetto::StaticString is
21440        /// provided.
21441        #[prost(string, tag="10")]
21442        StaticName(::prost::alloc::string::String),
21443        /// Equivalent to name, used just to mark that the data is coming from
21444        /// android.os.Trace.
21445        #[prost(string, tag="13")]
21446        AtraceName(::prost::alloc::string::String),
21447    }
21448}
21449// End of protos/perfetto/trace/track_event/track_descriptor.proto
21450
21451// Begin of protos/perfetto/trace/translation/translation_table.proto
21452
21453/// Translation rules for the trace processor.
21454/// See the comments for each rule type for specific meaning.
21455#[derive(Clone, PartialEq, ::prost::Message)]
21456pub struct TranslationTable {
21457    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
21458    pub table: ::core::option::Option<translation_table::Table>,
21459}
21460/// Nested message and enum types in `TranslationTable`.
21461pub mod translation_table {
21462    #[derive(Clone, PartialEq, ::prost::Oneof)]
21463    pub enum Table {
21464        #[prost(message, tag="1")]
21465        ChromeHistogram(super::ChromeHistorgramTranslationTable),
21466        #[prost(message, tag="2")]
21467        ChromeUserEvent(super::ChromeUserEventTranslationTable),
21468        #[prost(message, tag="3")]
21469        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
21470        #[prost(message, tag="4")]
21471        SliceName(super::SliceNameTranslationTable),
21472        #[prost(message, tag="5")]
21473        ProcessTrackName(super::ProcessTrackNameTranslationTable),
21474        #[prost(message, tag="6")]
21475        ChromeStudy(super::ChromeStudyTranslationTable),
21476    }
21477}
21478/// Chrome histogram sample hash -> name translation rules.
21479#[derive(Clone, PartialEq, ::prost::Message)]
21480pub struct ChromeHistorgramTranslationTable {
21481    #[prost(map="uint64, string", tag="1")]
21482    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
21483}
21484/// Chrome user event action hash -> name translation rules.
21485#[derive(Clone, PartialEq, ::prost::Message)]
21486pub struct ChromeUserEventTranslationTable {
21487    #[prost(map="uint64, string", tag="1")]
21488    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
21489}
21490/// Chrome performance mark translation rules.
21491#[derive(Clone, PartialEq, ::prost::Message)]
21492pub struct ChromePerformanceMarkTranslationTable {
21493    #[prost(map="uint32, string", tag="1")]
21494    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
21495    #[prost(map="uint32, string", tag="2")]
21496    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
21497}
21498/// Raw -> deobfuscated slice name translation rules.
21499#[derive(Clone, PartialEq, ::prost::Message)]
21500pub struct SliceNameTranslationTable {
21501    #[prost(map="string, string", tag="1")]
21502    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
21503}
21504/// Raw -> deobfuscated process track name translation rules.
21505#[derive(Clone, PartialEq, ::prost::Message)]
21506pub struct ProcessTrackNameTranslationTable {
21507    #[prost(map="string, string", tag="1")]
21508    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
21509}
21510/// Chrome study hash -> name translation rules.
21511#[derive(Clone, PartialEq, ::prost::Message)]
21512pub struct ChromeStudyTranslationTable {
21513    #[prost(map="uint64, string", tag="1")]
21514    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
21515}
21516// End of protos/perfetto/trace/translation/translation_table.proto
21517
21518// Begin of protos/perfetto/trace/trigger.proto
21519
21520/// When a TracingSession receives a trigger it records the boot time nanoseconds
21521/// in the TracePacket's timestamp field as well as the name of the producer that
21522/// triggered it. We emit this data so filtering can be done on triggers received
21523/// in the trace.
21524#[derive(Clone, PartialEq, ::prost::Message)]
21525pub struct Trigger {
21526    /// Name of the trigger which was received.
21527    #[prost(string, optional, tag="1")]
21528    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
21529    /// The actual producer that activated |trigger|.
21530    #[prost(string, optional, tag="2")]
21531    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21532    /// The verified UID of the producer.
21533    #[prost(int32, optional, tag="3")]
21534    pub trusted_producer_uid: ::core::option::Option<i32>,
21535}
21536// End of protos/perfetto/trace/trigger.proto
21537
21538// Begin of protos/perfetto/trace/ui_state.proto
21539
21540/// Common state for UIs visualizing Perfetto traces.
21541/// This message can be appended as a TracePacket by UIs to save the
21542/// visible state (e.g. scroll position/zoom state) for future opening
21543/// of the trace.
21544/// Design doc: go/trace-ui-state.
21545#[derive(Clone, PartialEq, ::prost::Message)]
21546pub struct UiState {
21547    /// The start and end bounds of the viewport of the UI in nanoseconds.
21548    ///
21549    /// This is the absolute time associated to slices and other events in
21550    /// trace processor tables (i.e. the |ts| column of most tables)
21551    #[prost(int64, optional, tag="1")]
21552    pub timeline_start_ts: ::core::option::Option<i64>,
21553    #[prost(int64, optional, tag="2")]
21554    pub timeline_end_ts: ::core::option::Option<i64>,
21555    #[prost(message, optional, tag="3")]
21556    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
21557}
21558/// Nested message and enum types in `UiState`.
21559pub mod ui_state {
21560    /// Indicates that the given process should be highlighted by the UI.
21561    #[derive(Clone, PartialEq, ::prost::Message)]
21562    pub struct HighlightProcess {
21563        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
21564        pub selector: ::core::option::Option<highlight_process::Selector>,
21565    }
21566    /// Nested message and enum types in `HighlightProcess`.
21567    pub mod highlight_process {
21568        #[derive(Clone, PartialEq, ::prost::Oneof)]
21569        pub enum Selector {
21570            /// The pid of the process to highlight. This is useful for UIs to focus
21571            /// on tracks of a particular process in the trace.
21572            ///
21573            /// If more than one process in a trace has the same pid, it is UI
21574            /// implementation specific how the process to be focused will be
21575            /// chosen.
21576            #[prost(uint32, tag="1")]
21577            Pid(u32),
21578            /// The command line of the process to highlight; for most Android apps,
21579            /// this is the package name of the app. This is useful for UIs to focus
21580            /// on a particular app in the trace.
21581            ///
21582            /// If more than one process hasthe same cmdline, it is UI implementation
21583            /// specific how the process to be focused will be chosen.
21584            #[prost(string, tag="2")]
21585            Cmdline(::prost::alloc::string::String),
21586        }
21587    }
21588}
21589// Begin of protos/perfetto/trace/trace_packet.proto
21590
21591/// TracePacket is the root object of a Perfetto trace.
21592/// A Perfetto trace is a linear sequence of TracePacket(s).
21593///
21594/// The tracing service guarantees that all TracePacket(s) written by a given
21595/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
21596/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
21597/// to the Consumer (or written into the trace file).
21598/// TracePacket(s) written by different TraceWriter(s), hence even different
21599/// data sources, can be seen in arbitrary order.
21600/// The consumer can re-establish a total order, if interested, using the packet
21601/// timestamps, after having synchronized the different clocks onto a global
21602/// clock.
21603///
21604/// The tracing service is agnostic of the content of TracePacket, with the
21605/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
21606/// the service itself.
21607///
21608/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
21609///
21610/// Next reserved id: 14 (up to 15).
21611/// Next id: 117.
21612#[derive(Clone, PartialEq, ::prost::Message)]
21613pub struct TracePacket {
21614    /// The timestamp of the TracePacket.
21615    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
21616    /// Android). It can be overridden using a different timestamp_clock_id.
21617    /// The clock domain definition in ClockSnapshot can also override:
21618    /// - The unit (default: 1ns).
21619    /// - The absolute vs delta encoding (default: absolute timestamp).
21620    #[prost(uint64, optional, tag="8")]
21621    pub timestamp: ::core::option::Option<u64>,
21622    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
21623    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
21624    /// producer-defined clock id.
21625    /// If unspecified and if no default per-sequence value has been provided via
21626    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
21627    #[prost(uint32, optional, tag="58")]
21628    pub timestamp_clock_id: ::core::option::Option<u32>,
21629    /// Trusted process id of the producer which generated this packet, written by
21630    /// the service.
21631    #[prost(int32, optional, tag="79")]
21632    pub trusted_pid: ::core::option::Option<i32>,
21633    /// Incrementally emitted interned data, valid only on the packet's sequence
21634    /// (packets with the same |trusted_packet_sequence_id|). The writer will
21635    /// usually emit new interned data in the same TracePacket that first refers to
21636    /// it (since the last reset of interning state). It may also be emitted
21637    /// proactively in advance of referring to them in later packets.
21638    #[prost(message, optional, tag="12")]
21639    pub interned_data: ::core::option::Option<InternedData>,
21640    #[prost(uint32, optional, tag="13")]
21641    pub sequence_flags: ::core::option::Option<u32>,
21642    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
21643    #[prost(bool, optional, tag="41")]
21644    pub incremental_state_cleared: ::core::option::Option<bool>,
21645    /// Default values for fields of later TracePackets emitted on this packet's
21646    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
21647    /// It must be reemitted when incremental state is cleared (see
21648    /// |incremental_state_cleared|).
21649    /// Requires that any future packet emitted on the same sequence specifies
21650    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
21651    /// TracePacketDefaults always override the global defaults for any future
21652    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
21653    #[prost(message, optional, tag="59")]
21654    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
21655    /// Flag set by the service if, for the current packet sequence (see
21656    /// |trusted_packet_sequence_id|), either:
21657    /// * this is the first packet, or
21658    /// * one or multiple packets were dropped since the last packet that the
21659    ///    consumer read from the sequence. This can happen if chunks in the trace
21660    ///    buffer are overridden before the consumer could read them when the trace
21661    ///    is configured in ring buffer mode.
21662    ///
21663    /// When packet loss occurs, incrementally emitted data (including interned
21664    /// data) on the sequence should be considered invalid up until the next packet
21665    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
21666    #[prost(bool, optional, tag="42")]
21667    pub previous_packet_dropped: ::core::option::Option<bool>,
21668    /// Flag set by a producer (starting from SDK v29) if, for the current packet
21669    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
21670    ///
21671    /// This flag can be used for distinguishing the two situations when
21672    /// processing the trace:
21673    /// 1. There are no prior events for the sequence because of data loss, e.g.
21674    ///     due to ring buffer wrapping.
21675    /// 2. There are no prior events for the sequence because it didn't start
21676    ///     before this packet (= there's definitely no preceding data loss).
21677    ///
21678    /// Given that older SDK versions do not support this flag, this flag not
21679    /// being present for a particular sequence does not necessarily imply data
21680    /// loss.
21681    #[prost(bool, optional, tag="87")]
21682    pub first_packet_on_sequence: ::core::option::Option<bool>,
21683    /// The machine ID for identifying trace packets in a multi-machine tracing
21684    /// session. Is emitted by the tracing service for producers running on a
21685    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
21686    #[prost(uint32, optional, tag="98")]
21687    pub machine_id: ::core::option::Option<u32>,
21688    #[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, 900")]
21689    pub data: ::core::option::Option<trace_packet::Data>,
21690    /// Trusted user id of the producer which generated this packet. Keep in sync
21691    /// with TrustedPacket.trusted_uid.
21692    ///
21693    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
21694    /// instead.
21695    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
21696    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
21697    /// Service-assigned identifier of the packet sequence this packet belongs to.
21698    /// Uniquely identifies a producer + writer pair within the tracing session. A
21699    /// value of zero denotes an invalid ID. Keep in sync with
21700    /// TrustedPacket.trusted_packet_sequence_id.
21701    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
21702    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
21703}
21704/// Nested message and enum types in `TracePacket`.
21705pub mod trace_packet {
21706    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21707    #[repr(i32)]
21708    pub enum SequenceFlags {
21709        SeqUnspecified = 0,
21710        /// Set by the writer to indicate that it will re-emit any incremental data
21711        /// for the packet's sequence before referring to it again. This includes
21712        /// interned data as well as periodically emitted data like
21713        /// Process/ThreadDescriptors. This flag only affects the current packet
21714        /// sequence (see |trusted_packet_sequence_id|).
21715        ///
21716        /// When set, this TracePacket and subsequent TracePackets on the same
21717        /// sequence will not refer to any incremental data emitted before this
21718        /// TracePacket. For example, previously emitted interned data will be
21719        /// re-emitted if it is referred to again.
21720        ///
21721        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
21722        /// to skip packets in the sequence until the next one with this flag set, to
21723        /// ensure intact incremental data.
21724        SeqIncrementalStateCleared = 1,
21725        /// This packet requires incremental state, such as TracePacketDefaults or
21726        /// InternedData, to be parsed correctly. The trace reader should skip this
21727        /// packet if incremental state is not valid on this sequence, i.e. if no
21728        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
21729        /// current |trusted_packet_sequence_id|.
21730        SeqNeedsIncrementalState = 2,
21731    }
21732    impl SequenceFlags {
21733        /// String value of the enum field names used in the ProtoBuf definition.
21734        ///
21735        /// The values are not transformed in any way and thus are considered stable
21736        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21737        pub fn as_str_name(&self) -> &'static str {
21738            match self {
21739                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
21740                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
21741                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
21742            }
21743        }
21744    }
21745    #[derive(Clone, PartialEq, ::prost::Oneof)]
21746    pub enum Data {
21747        #[prost(message, tag="2")]
21748        ProcessTree(super::ProcessTree),
21749        #[prost(message, tag="9")]
21750        ProcessStats(super::ProcessStats),
21751        #[prost(message, tag="4")]
21752        InodeFileMap(super::InodeFileMap),
21753        #[prost(message, tag="5")]
21754        ChromeEvents(super::ChromeEventBundle),
21755        #[prost(message, tag="6")]
21756        ClockSnapshot(super::ClockSnapshot),
21757        #[prost(message, tag="7")]
21758        SysStats(super::SysStats),
21759        #[prost(message, tag="11")]
21760        TrackEvent(super::TrackEvent),
21761        // IDs up to 15 are reserved. They take only one byte to encode their
21762        // preamble so should be used for frequent events.
21763
21764        #[prost(message, tag="89")]
21765        TraceUuid(super::TraceUuid),
21766        #[prost(message, tag="33")]
21767        TraceConfig(super::TraceConfig),
21768        #[prost(message, tag="34")]
21769        FtraceStats(super::FtraceStats),
21770        #[prost(message, tag="35")]
21771        TraceStats(super::TraceStats),
21772        #[prost(message, tag="37")]
21773        ProfilePacket(super::ProfilePacket),
21774        #[prost(message, tag="74")]
21775        StreamingAllocation(super::StreamingAllocation),
21776        #[prost(message, tag="75")]
21777        StreamingFree(super::StreamingFree),
21778        #[prost(message, tag="38")]
21779        Battery(super::BatteryCounters),
21780        #[prost(message, tag="40")]
21781        PowerRails(super::PowerRails),
21782        #[prost(message, tag="39")]
21783        AndroidLog(super::AndroidLogPacket),
21784        #[prost(message, tag="45")]
21785        SystemInfo(super::SystemInfo),
21786        #[prost(message, tag="46")]
21787        Trigger(super::Trigger),
21788        #[prost(message, tag="109")]
21789        ChromeTrigger(super::ChromeTrigger),
21790        #[prost(message, tag="47")]
21791        PackagesList(super::PackagesList),
21792        #[prost(message, tag="48")]
21793        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
21794        #[prost(message, tag="49")]
21795        PerfettoMetatrace(super::PerfettoMetatrace),
21796        #[prost(message, tag="51")]
21797        ChromeMetadata(super::ChromeMetadataPacket),
21798        #[prost(message, tag="52")]
21799        GpuCounterEvent(super::GpuCounterEvent),
21800        #[prost(message, tag="53")]
21801        GpuRenderStageEvent(super::GpuRenderStageEvent),
21802        #[prost(message, tag="54")]
21803        StreamingProfilePacket(super::StreamingProfilePacket),
21804        #[prost(message, tag="56")]
21805        HeapGraph(super::HeapGraph),
21806        #[prost(message, tag="57")]
21807        GraphicsFrameEvent(super::GraphicsFrameEvent),
21808        #[prost(message, tag="62")]
21809        VulkanMemoryEvent(super::VulkanMemoryEvent),
21810        #[prost(message, tag="63")]
21811        GpuLog(super::GpuLog),
21812        #[prost(message, tag="65")]
21813        VulkanApiEvent(super::VulkanApiEvent),
21814        #[prost(message, tag="66")]
21815        PerfSample(super::PerfSample),
21816        #[prost(message, tag="67")]
21817        CpuInfo(super::CpuInfo),
21818        #[prost(message, tag="68")]
21819        SmapsPacket(super::SmapsPacket),
21820        #[prost(message, tag="69")]
21821        ServiceEvent(super::TracingServiceEvent),
21822        #[prost(message, tag="70")]
21823        InitialDisplayState(super::InitialDisplayState),
21824        #[prost(message, tag="71")]
21825        GpuMemTotalEvent(super::GpuMemTotalEvent),
21826        #[prost(message, tag="73")]
21827        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
21828        #[prost(message, tag="76")]
21829        FrameTimelineEvent(super::FrameTimelineEvent),
21830        #[prost(message, tag="77")]
21831        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
21832        #[prost(message, tag="78")]
21833        UiState(super::UiState),
21834        #[prost(message, tag="80")]
21835        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
21836        #[prost(message, tag="81")]
21837        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
21838        #[prost(message, tag="82")]
21839        TranslationTable(super::TranslationTable),
21840        #[prost(message, tag="83")]
21841        AndroidGameInterventionList(super::AndroidGameInterventionList),
21842        #[prost(message, tag="84")]
21843        StatsdAtom(super::StatsdAtom),
21844        #[prost(message, tag="86")]
21845        AndroidSystemProperty(super::AndroidSystemProperty),
21846        #[prost(message, tag="91")]
21847        EntityStateResidency(super::EntityStateResidency),
21848        /// Only used in profile packets.
21849        #[prost(message, tag="61")]
21850        ModuleSymbols(super::ModuleSymbols),
21851        #[prost(message, tag="64")]
21852        DeobfuscationMapping(super::DeobfuscationMapping),
21853        /// Only used by TrackEvent.
21854        #[prost(message, tag="60")]
21855        TrackDescriptor(super::TrackDescriptor),
21856        /// Deprecated, use TrackDescriptor instead.
21857        #[prost(message, tag="43")]
21858        ProcessDescriptor(super::ProcessDescriptor),
21859        /// Deprecated, use TrackDescriptor instead.
21860        #[prost(message, tag="44")]
21861        ThreadDescriptor(super::ThreadDescriptor),
21862        /// Events from the Linux kernel ftrace infrastructure.
21863        #[prost(message, tag="1")]
21864        FtraceEvents(super::FtraceEventBundle),
21865        /// This field is emitted at periodic intervals (~10s) and
21866        /// contains always the binary representation of the UUID
21867        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
21868        /// efficiently partition long traces without having to fully parse them.
21869        #[prost(bytes, tag="36")]
21870        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
21871        /// Zero or more proto encoded trace packets compressed using deflate.
21872        /// Each compressed_packets TracePacket (including the two field ids and
21873        /// sizes) should be less than 512KB.
21874        #[prost(bytes, tag="50")]
21875        CompressedPackets(::prost::alloc::vec::Vec<u8>),
21876        /// Data sources can extend the trace proto with custom extension protos (see
21877        /// docs/design-docs/extensions.md). When they do that, the descriptor of
21878        /// their extension proto descriptor is serialized in this packet. This
21879        /// allows trace_processor to deserialize extended messages using reflection
21880        /// even if the extension proto is not checked in the Perfetto repo.
21881        #[prost(message, tag="72")]
21882        ExtensionDescriptor(super::ExtensionDescriptor),
21883        /// Represents a single packet sent or received by the network.
21884        #[prost(message, tag="88")]
21885        NetworkPacket(super::NetworkPacketEvent),
21886        /// Represents one or more packets sent or received by the network.
21887        #[prost(message, tag="92")]
21888        NetworkPacketBundle(super::NetworkPacketBundle),
21889        /// The "range of interest" for track events. See the message definition
21890        /// comments for more details.
21891        #[prost(message, tag="90")]
21892        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
21893        /// Winscope traces
21894        #[prost(message, tag="93")]
21895        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
21896        #[prost(message, tag="94")]
21897        SurfaceflingerTransactions(super::TransactionTraceEntry),
21898        #[prost(message, tag="96")]
21899        ShellTransition(super::ShellTransition),
21900        #[prost(message, tag="97")]
21901        ShellHandlerMappings(super::ShellHandlerMappings),
21902        #[prost(message, tag="104")]
21903        ProtologMessage(super::ProtoLogMessage),
21904        #[prost(message, tag="105")]
21905        ProtologViewerConfig(super::ProtoLogViewerConfig),
21906        #[prost(message, tag="112")]
21907        WinscopeExtensions(super::WinscopeExtensions),
21908        /// Events from the Windows etw infrastructure.
21909        #[prost(message, tag="95")]
21910        EtwEvents(super::EtwTraceEventBundle),
21911        #[prost(message, tag="99")]
21912        V8JsCode(super::V8JsCode),
21913        #[prost(message, tag="100")]
21914        V8InternalCode(super::V8InternalCode),
21915        #[prost(message, tag="101")]
21916        V8WasmCode(super::V8WasmCode),
21917        #[prost(message, tag="102")]
21918        V8RegExpCode(super::V8RegExpCode),
21919        #[prost(message, tag="103")]
21920        V8CodeMove(super::V8CodeMove),
21921        /// Clock synchronization with remote machines.
21922        #[prost(message, tag="107")]
21923        RemoteClockSync(super::RemoteClockSync),
21924        #[prost(message, tag="110")]
21925        PixelModemEvents(super::PixelModemEvents),
21926        #[prost(message, tag="111")]
21927        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
21928        #[prost(message, tag="113")]
21929        CloneSnapshotTrigger(super::Trigger),
21930        #[prost(message, tag="114")]
21931        BluetoothTraceEvent(super::BluetoothTraceEvent),
21932        #[prost(message, tag="115")]
21933        KernelWakelockData(super::KernelWakelockData),
21934        #[prost(message, tag="116")]
21935        AppWakelockBundle(super::AppWakelockBundle),
21936        /// This field is only used for testing.
21937        /// In previous versions of this proto this field had the id 268435455
21938        /// This caused many problems:
21939        /// - protozero decoder does not handle field ids larger than 999.
21940        /// - old versions of protoc produce Java bindings with syntax errors when
21941        ///    the field id is large enough.
21942        #[prost(message, tag="900")]
21943        ForTesting(super::TestEvent),
21944    }
21945    /// Trusted user id of the producer which generated this packet. Keep in sync
21946    /// with TrustedPacket.trusted_uid.
21947    ///
21948    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
21949    /// instead.
21950    #[derive(Clone, PartialEq, ::prost::Oneof)]
21951    pub enum OptionalTrustedUid {
21952        #[prost(int32, tag="3")]
21953        TrustedUid(i32),
21954    }
21955    /// Service-assigned identifier of the packet sequence this packet belongs to.
21956    /// Uniquely identifies a producer + writer pair within the tracing session. A
21957    /// value of zero denotes an invalid ID. Keep in sync with
21958    /// TrustedPacket.trusted_packet_sequence_id.
21959    #[derive(Clone, PartialEq, ::prost::Oneof)]
21960    pub enum OptionalTrustedPacketSequenceId {
21961        #[prost(uint32, tag="10")]
21962        TrustedPacketSequenceId(u32),
21963    }
21964}
21965// End of protos/perfetto/trace/trace_packet.proto
21966
21967// Begin of protos/perfetto/trace/trace.proto
21968
21969#[derive(Clone, PartialEq, ::prost::Message)]
21970pub struct Trace {
21971    #[prost(message, repeated, tag="1")]
21972    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
21973}
21974// End of protos/perfetto/common/tracing_service_state.proto
21975
21976// Begin of protos/perfetto/common/builtin_clock.proto
21977
21978#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21979#[repr(i32)]
21980pub enum BuiltinClock {
21981    Unknown = 0,
21982    Realtime = 1,
21983    RealtimeCoarse = 2,
21984    Monotonic = 3,
21985    MonotonicCoarse = 4,
21986    MonotonicRaw = 5,
21987    Boottime = 6,
21988    Tsc = 9,
21989    Perf = 10,
21990    MaxId = 63,
21991}
21992impl BuiltinClock {
21993    /// String value of the enum field names used in the ProtoBuf definition.
21994    ///
21995    /// The values are not transformed in any way and thus are considered stable
21996    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21997    pub fn as_str_name(&self) -> &'static str {
21998        match self {
21999            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
22000            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
22001            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
22002            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
22003            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
22004            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
22005            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
22006            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
22007            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
22008            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
22009        }
22010    }
22011}
22012// End of protos/perfetto/config/android/android_input_event_config.proto
22013
22014// Begin of protos/perfetto/common/android_log_constants.proto
22015
22016/// Values from NDK's android/log.h.
22017#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22018#[repr(i32)]
22019pub enum AndroidLogId {
22020    /// MAIN.
22021    LidDefault = 0,
22022    LidRadio = 1,
22023    LidEvents = 2,
22024    LidSystem = 3,
22025    LidCrash = 4,
22026    LidStats = 5,
22027    LidSecurity = 6,
22028    LidKernel = 7,
22029}
22030impl AndroidLogId {
22031    /// String value of the enum field names used in the ProtoBuf definition.
22032    ///
22033    /// The values are not transformed in any way and thus are considered stable
22034    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22035    pub fn as_str_name(&self) -> &'static str {
22036        match self {
22037            AndroidLogId::LidDefault => "LID_DEFAULT",
22038            AndroidLogId::LidRadio => "LID_RADIO",
22039            AndroidLogId::LidEvents => "LID_EVENTS",
22040            AndroidLogId::LidSystem => "LID_SYSTEM",
22041            AndroidLogId::LidCrash => "LID_CRASH",
22042            AndroidLogId::LidStats => "LID_STATS",
22043            AndroidLogId::LidSecurity => "LID_SECURITY",
22044            AndroidLogId::LidKernel => "LID_KERNEL",
22045        }
22046    }
22047}
22048#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22049#[repr(i32)]
22050pub enum AndroidLogPriority {
22051    PrioUnspecified = 0,
22052    /// _DEFAULT, but should never be seen in logs.
22053    PrioUnused = 1,
22054    PrioVerbose = 2,
22055    PrioDebug = 3,
22056    PrioInfo = 4,
22057    PrioWarn = 5,
22058    PrioError = 6,
22059    PrioFatal = 7,
22060}
22061impl AndroidLogPriority {
22062    /// String value of the enum field names used in the ProtoBuf definition.
22063    ///
22064    /// The values are not transformed in any way and thus are considered stable
22065    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22066    pub fn as_str_name(&self) -> &'static str {
22067        match self {
22068            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
22069            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
22070            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
22071            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
22072            AndroidLogPriority::PrioInfo => "PRIO_INFO",
22073            AndroidLogPriority::PrioWarn => "PRIO_WARN",
22074            AndroidLogPriority::PrioError => "PRIO_ERROR",
22075            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
22076        }
22077    }
22078}
22079// End of protos/perfetto/config/android/pixel_modem_config.proto
22080
22081// Begin of protos/perfetto/common/protolog_common.proto
22082
22083#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22084#[repr(i32)]
22085pub enum ProtoLogLevel {
22086    ProtologLevelUndefined = 0,
22087    ProtologLevelDebug = 1,
22088    ProtologLevelVerbose = 2,
22089    ProtologLevelInfo = 3,
22090    ProtologLevelWarn = 4,
22091    ProtologLevelError = 5,
22092    ProtologLevelWtf = 6,
22093}
22094impl ProtoLogLevel {
22095    /// String value of the enum field names used in the ProtoBuf definition.
22096    ///
22097    /// The values are not transformed in any way and thus are considered stable
22098    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22099    pub fn as_str_name(&self) -> &'static str {
22100        match self {
22101            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
22102            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
22103            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
22104            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
22105            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
22106            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
22107            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
22108        }
22109    }
22110}
22111// End of protos/perfetto/config/profiling/perf_event_config.proto
22112
22113// Begin of protos/perfetto/config/statsd/atom_ids.proto
22114
22115/// This enum is obtained by post-processing
22116/// AOSP/frameworks/proto_logging/stats/atoms.proto through
22117/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
22118/// enum value for each proto field defined in the upstream atoms.proto.
22119#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22120#[repr(i32)]
22121pub enum AtomId {
22122    AtomUnspecified = 0,
22123    AtomBleScanStateChanged = 2,
22124    AtomProcessStateChanged = 3,
22125    AtomBleScanResultReceived = 4,
22126    AtomSensorStateChanged = 5,
22127    AtomGpsScanStateChanged = 6,
22128    AtomSyncStateChanged = 7,
22129    AtomScheduledJobStateChanged = 8,
22130    AtomScreenBrightnessChanged = 9,
22131    AtomWakelockStateChanged = 10,
22132    AtomLongPartialWakelockStateChanged = 11,
22133    AtomMobileRadioPowerStateChanged = 12,
22134    AtomWifiRadioPowerStateChanged = 13,
22135    AtomActivityManagerSleepStateChanged = 14,
22136    AtomMemoryFactorStateChanged = 15,
22137    AtomExcessiveCpuUsageReported = 16,
22138    AtomCachedKillReported = 17,
22139    AtomProcessMemoryStatReported = 18,
22140    AtomLauncherEvent = 19,
22141    AtomBatterySaverModeStateChanged = 20,
22142    AtomDeviceIdleModeStateChanged = 21,
22143    AtomDeviceIdlingModeStateChanged = 22,
22144    AtomAudioStateChanged = 23,
22145    AtomMediaCodecStateChanged = 24,
22146    AtomCameraStateChanged = 25,
22147    AtomFlashlightStateChanged = 26,
22148    AtomUidProcessStateChanged = 27,
22149    AtomProcessLifeCycleStateChanged = 28,
22150    AtomScreenStateChanged = 29,
22151    AtomBatteryLevelChanged = 30,
22152    AtomChargingStateChanged = 31,
22153    AtomPluggedStateChanged = 32,
22154    AtomInteractiveStateChanged = 33,
22155    AtomTouchEventReported = 34,
22156    AtomWakeupAlarmOccurred = 35,
22157    AtomKernelWakeupReported = 36,
22158    AtomWifiLockStateChanged = 37,
22159    AtomWifiSignalStrengthChanged = 38,
22160    AtomWifiScanStateChanged = 39,
22161    AtomPhoneSignalStrengthChanged = 40,
22162    AtomSettingChanged = 41,
22163    AtomActivityForegroundStateChanged = 42,
22164    AtomIsolatedUidChanged = 43,
22165    AtomPacketWakeupOccurred = 44,
22166    AtomWallClockTimeShifted = 45,
22167    AtomAnomalyDetected = 46,
22168    AtomAppBreadcrumbReported = 47,
22169    AtomAppStartOccurred = 48,
22170    AtomAppStartCanceled = 49,
22171    AtomAppStartFullyDrawn = 50,
22172    AtomLmkKillOccurred = 51,
22173    AtomPictureInPictureStateChanged = 52,
22174    AtomWifiMulticastLockStateChanged = 53,
22175    AtomAppStartMemoryStateCaptured = 55,
22176    AtomShutdownSequenceReported = 56,
22177    AtomBootSequenceReported = 57,
22178    AtomOverlayStateChanged = 59,
22179    AtomForegroundServiceStateChanged = 60,
22180    AtomCallStateChanged = 61,
22181    AtomKeyguardStateChanged = 62,
22182    AtomKeyguardBouncerStateChanged = 63,
22183    AtomKeyguardBouncerPasswordEntered = 64,
22184    AtomAppDied = 65,
22185    AtomResourceConfigurationChanged = 66,
22186    AtomBluetoothEnabledStateChanged = 67,
22187    AtomBluetoothConnectionStateChanged = 68,
22188    AtomGpsSignalQualityChanged = 69,
22189    AtomUsbConnectorStateChanged = 70,
22190    AtomSpeakerImpedanceReported = 71,
22191    AtomHardwareFailed = 72,
22192    AtomPhysicalDropDetected = 73,
22193    AtomChargeCyclesReported = 74,
22194    AtomMobileConnectionStateChanged = 75,
22195    AtomMobileRadioTechnologyChanged = 76,
22196    AtomUsbDeviceAttached = 77,
22197    AtomAppCrashOccurred = 78,
22198    AtomAnrOccurred = 79,
22199    AtomWtfOccurred = 80,
22200    AtomLowMemReported = 81,
22201    AtomGenericAtom = 82,
22202    AtomVibratorStateChanged = 84,
22203    AtomDeferredJobStatsReported = 85,
22204    AtomThermalThrottling = 86,
22205    AtomBiometricAcquired = 87,
22206    AtomBiometricAuthenticated = 88,
22207    AtomBiometricErrorOccurred = 89,
22208    AtomUiEventReported = 90,
22209    AtomBatteryHealthSnapshot = 91,
22210    AtomSlowIo = 92,
22211    AtomBatteryCausedShutdown = 93,
22212    AtomPhoneServiceStateChanged = 94,
22213    AtomPhoneStateChanged = 95,
22214    AtomUserRestrictionChanged = 96,
22215    AtomSettingsUiChanged = 97,
22216    AtomConnectivityStateChanged = 98,
22217    AtomServiceStateChanged = 99,
22218    AtomServiceLaunchReported = 100,
22219    AtomFlagFlipUpdateOccurred = 101,
22220    AtomBinaryPushStateChanged = 102,
22221    AtomDevicePolicyEvent = 103,
22222    AtomDocsUiFileOpCanceled = 104,
22223    AtomDocsUiFileOpCopyMoveModeReported = 105,
22224    AtomDocsUiFileOpFailure = 106,
22225    AtomDocsUiProviderFileOp = 107,
22226    AtomDocsUiInvalidScopedAccessRequest = 108,
22227    AtomDocsUiLaunchReported = 109,
22228    AtomDocsUiRootVisited = 110,
22229    AtomDocsUiStartupMs = 111,
22230    AtomDocsUiUserActionReported = 112,
22231    AtomWifiEnabledStateChanged = 113,
22232    AtomWifiRunningStateChanged = 114,
22233    AtomAppCompacted = 115,
22234    AtomNetworkDnsEventReported = 116,
22235    AtomDocsUiPickerLaunchedFromReported = 117,
22236    AtomDocsUiPickResultReported = 118,
22237    AtomDocsUiSearchModeReported = 119,
22238    AtomDocsUiSearchTypeReported = 120,
22239    AtomDataStallEvent = 121,
22240    AtomRescuePartyResetReported = 122,
22241    AtomSignedConfigReported = 123,
22242    AtomGnssNiEventReported = 124,
22243    AtomBluetoothLinkLayerConnectionEvent = 125,
22244    AtomBluetoothAclConnectionStateChanged = 126,
22245    AtomBluetoothScoConnectionStateChanged = 127,
22246    AtomAppDowngraded = 128,
22247    AtomAppOptimizedAfterDowngraded = 129,
22248    AtomLowStorageStateChanged = 130,
22249    AtomGnssNfwNotificationReported = 131,
22250    AtomGnssConfigurationReported = 132,
22251    AtomUsbPortOverheatEventReported = 133,
22252    AtomNfcErrorOccurred = 134,
22253    AtomNfcStateChanged = 135,
22254    AtomNfcBeamOccurred = 136,
22255    AtomNfcCardemulationOccurred = 137,
22256    AtomNfcTagOccurred = 138,
22257    AtomNfcHceTransactionOccurred = 139,
22258    AtomSeStateChanged = 140,
22259    AtomSeOmapiReported = 141,
22260    AtomBroadcastDispatchLatencyReported = 142,
22261    AtomAttentionManagerServiceResultReported = 143,
22262    AtomAdbConnectionChanged = 144,
22263    AtomSpeechDspStatReported = 145,
22264    AtomUsbContaminantReported = 146,
22265    AtomWatchdogRollbackOccurred = 147,
22266    AtomBiometricSystemHealthIssueDetected = 148,
22267    AtomBubbleUiChanged = 149,
22268    AtomScheduledJobConstraintChanged = 150,
22269    AtomBluetoothActiveDeviceChanged = 151,
22270    AtomBluetoothA2dpPlaybackStateChanged = 152,
22271    AtomBluetoothA2dpCodecConfigChanged = 153,
22272    AtomBluetoothA2dpCodecCapabilityChanged = 154,
22273    AtomBluetoothA2dpAudioUnderrunReported = 155,
22274    AtomBluetoothA2dpAudioOverrunReported = 156,
22275    AtomBluetoothDeviceRssiReported = 157,
22276    AtomBluetoothDeviceFailedContactCounterReported = 158,
22277    AtomBluetoothDeviceTxPowerLevelReported = 159,
22278    AtomBluetoothHciTimeoutReported = 160,
22279    AtomBluetoothQualityReportReported = 161,
22280    AtomBluetoothDeviceInfoReported = 162,
22281    AtomBluetoothRemoteVersionInfoReported = 163,
22282    AtomBluetoothSdpAttributeReported = 164,
22283    AtomBluetoothBondStateChanged = 165,
22284    AtomBluetoothClassicPairingEventReported = 166,
22285    AtomBluetoothSmpPairingEventReported = 167,
22286    AtomScreenTimeoutExtensionReported = 168,
22287    AtomProcessStartTime = 169,
22288    AtomPermissionGrantRequestResultReported = 170,
22289    AtomBluetoothSocketConnectionStateChanged = 171,
22290    AtomDeviceIdentifierAccessDenied = 172,
22291    AtomBubbleDeveloperErrorReported = 173,
22292    AtomAssistGestureStageReported = 174,
22293    AtomAssistGestureFeedbackReported = 175,
22294    AtomAssistGestureProgressReported = 176,
22295    AtomTouchGestureClassified = 177,
22296    AtomHiddenApiUsed = 178,
22297    AtomStyleUiChanged = 179,
22298    AtomPrivacyIndicatorsInteracted = 180,
22299    AtomAppInstallOnExternalStorageReported = 181,
22300    AtomNetworkStackReported = 182,
22301    AtomAppMovedStorageReported = 183,
22302    AtomBiometricEnrolled = 184,
22303    AtomSystemServerWatchdogOccurred = 185,
22304    AtomTombStoneOccurred = 186,
22305    AtomBluetoothClassOfDeviceReported = 187,
22306    AtomIntelligenceEventReported = 188,
22307    AtomThermalThrottlingSeverityStateChanged = 189,
22308    AtomRoleRequestResultReported = 190,
22309    AtomMediametricsAudiopolicyReported = 191,
22310    AtomMediametricsAudiorecordReported = 192,
22311    AtomMediametricsAudiothreadReported = 193,
22312    AtomMediametricsAudiotrackReported = 194,
22313    AtomMediametricsCodecReported = 195,
22314    AtomMediametricsDrmWidevineReported = 196,
22315    AtomMediametricsExtractorReported = 197,
22316    AtomMediametricsMediadrmReported = 198,
22317    AtomMediametricsNuplayerReported = 199,
22318    AtomMediametricsRecorderReported = 200,
22319    AtomMediametricsDrmmanagerReported = 201,
22320    AtomCarPowerStateChanged = 203,
22321    AtomGarageModeInfo = 204,
22322    AtomTestAtomReported = 205,
22323    AtomContentCaptureCallerMismatchReported = 206,
22324    AtomContentCaptureServiceEvents = 207,
22325    AtomContentCaptureSessionEvents = 208,
22326    AtomContentCaptureFlushed = 209,
22327    AtomLocationManagerApiUsageReported = 210,
22328    AtomReviewPermissionsFragmentResultReported = 211,
22329    AtomRuntimePermissionsUpgradeResult = 212,
22330    AtomGrantPermissionsActivityButtonActions = 213,
22331    AtomLocationAccessCheckNotificationAction = 214,
22332    AtomAppPermissionFragmentActionReported = 215,
22333    AtomAppPermissionFragmentViewed = 216,
22334    AtomAppPermissionsFragmentViewed = 217,
22335    AtomPermissionAppsFragmentViewed = 218,
22336    AtomTextSelectionEvent = 219,
22337    AtomTextLinkifyEvent = 220,
22338    AtomConversationActionsEvent = 221,
22339    AtomLanguageDetectionEvent = 222,
22340    AtomExclusionRectStateChanged = 223,
22341    AtomBackGestureReportedReported = 224,
22342    AtomUpdateEngineUpdateAttemptReported = 225,
22343    AtomUpdateEngineSuccessfulUpdateReported = 226,
22344    AtomCameraActionEvent = 227,
22345    AtomAppCompatibilityChangeReported = 228,
22346    AtomPerfettoUploaded = 229,
22347    AtomVmsClientConnectionStateChanged = 230,
22348    AtomMediaProviderScanOccurred = 233,
22349    AtomMediaContentDeleted = 234,
22350    AtomMediaProviderPermissionRequested = 235,
22351    AtomMediaProviderSchemaChanged = 236,
22352    AtomMediaProviderIdleMaintenanceFinished = 237,
22353    AtomRebootEscrowRecoveryReported = 238,
22354    AtomBootTimeEventDurationReported = 239,
22355    AtomBootTimeEventElapsedTimeReported = 240,
22356    AtomBootTimeEventUtcTimeReported = 241,
22357    AtomBootTimeEventErrorCodeReported = 242,
22358    AtomUserspaceRebootReported = 243,
22359    AtomNotificationReported = 244,
22360    AtomNotificationPanelReported = 245,
22361    AtomNotificationChannelModified = 246,
22362    AtomIntegrityCheckResultReported = 247,
22363    AtomIntegrityRulesPushed = 248,
22364    AtomCbMessageReported = 249,
22365    AtomCbMessageError = 250,
22366    AtomWifiHealthStatReported = 251,
22367    AtomWifiFailureStatReported = 252,
22368    AtomWifiConnectionResultReported = 253,
22369    AtomAppFreezeChanged = 254,
22370    AtomSnapshotMergeReported = 255,
22371    AtomForegroundServiceAppOpSessionEnded = 256,
22372    AtomDisplayJankReported = 257,
22373    AtomAppStandbyBucketChanged = 258,
22374    AtomSharesheetStarted = 259,
22375    AtomRankingSelected = 260,
22376    AtomTvsettingsUiInteracted = 261,
22377    AtomLauncherSnapshot = 262,
22378    AtomPackageInstallerV2Reported = 263,
22379    AtomUserLifecycleJourneyReported = 264,
22380    AtomUserLifecycleEventOccurred = 265,
22381    AtomAccessibilityShortcutReported = 266,
22382    AtomAccessibilityServiceReported = 267,
22383    AtomDocsUiDragAndDropReported = 268,
22384    AtomAppUsageEventOccurred = 269,
22385    AtomAutoRevokeNotificationClicked = 270,
22386    AtomAutoRevokeFragmentAppViewed = 271,
22387    AtomAutoRevokedAppInteraction = 272,
22388    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
22389    AtomEvsUsageStatsReported = 274,
22390    AtomAudioPowerUsageDataReported = 275,
22391    AtomTvTunerStateChanged = 276,
22392    AtomMediaoutputOpSwitchReported = 277,
22393    AtomCbMessageFiltered = 278,
22394    AtomTvTunerDvrStatus = 279,
22395    AtomTvCasSessionOpenStatus = 280,
22396    AtomAssistantInvocationReported = 281,
22397    AtomDisplayWakeReported = 282,
22398    AtomCarUserHalModifyUserRequestReported = 283,
22399    AtomCarUserHalModifyUserResponseReported = 284,
22400    AtomCarUserHalPostSwitchResponseReported = 285,
22401    AtomCarUserHalInitialUserInfoRequestReported = 286,
22402    AtomCarUserHalInitialUserInfoResponseReported = 287,
22403    AtomCarUserHalUserAssociationRequestReported = 288,
22404    AtomCarUserHalSetUserAssociationResponseReported = 289,
22405    AtomNetworkIpProvisioningReported = 290,
22406    AtomNetworkDhcpRenewReported = 291,
22407    AtomNetworkValidationReported = 292,
22408    AtomNetworkStackQuirkReported = 293,
22409    AtomMediametricsAudiorecorddeviceusageReported = 294,
22410    AtomMediametricsAudiothreaddeviceusageReported = 295,
22411    AtomMediametricsAudiotrackdeviceusageReported = 296,
22412    AtomMediametricsAudiodeviceconnectionReported = 297,
22413    AtomBlobCommitted = 298,
22414    AtomBlobLeased = 299,
22415    AtomBlobOpened = 300,
22416    AtomContactsProviderStatusReported = 301,
22417    AtomKeystoreKeyEventReported = 302,
22418    AtomNetworkTetheringReported = 303,
22419    AtomImeTouchReported = 304,
22420    AtomUiInteractionFrameInfoReported = 305,
22421    AtomUiActionLatencyReported = 306,
22422    AtomWifiDisconnectReported = 307,
22423    AtomWifiConnectionStateChanged = 308,
22424    AtomHdmiCecActiveSourceChanged = 309,
22425    AtomHdmiCecMessageReported = 310,
22426    AtomAirplaneMode = 311,
22427    AtomModemRestart = 312,
22428    AtomCarrierIdMismatchReported = 313,
22429    AtomCarrierIdTableUpdated = 314,
22430    AtomDataStallRecoveryReported = 315,
22431    AtomMediametricsMediaparserReported = 316,
22432    AtomTlsHandshakeReported = 317,
22433    AtomTextClassifierApiUsageReported = 318,
22434    AtomCarWatchdogKillStatsReported = 319,
22435    AtomMediametricsPlaybackReported = 320,
22436    AtomMediaNetworkInfoChanged = 321,
22437    AtomMediaPlaybackStateChanged = 322,
22438    AtomMediaPlaybackErrorReported = 323,
22439    AtomMediaPlaybackTrackChanged = 324,
22440    AtomWifiScanReported = 325,
22441    AtomWifiPnoScanReported = 326,
22442    AtomTifTuneChanged = 327,
22443    AtomAutoRotateReported = 328,
22444    AtomPerfettoTrigger = 329,
22445    AtomTranscodingData = 330,
22446    AtomImsServiceEntitlementUpdated = 331,
22447    AtomDeviceRotated = 333,
22448    AtomSimSpecificSettingsRestored = 334,
22449    AtomTextClassifierDownloadReported = 335,
22450    AtomPinStorageEvent = 336,
22451    AtomFaceDownReported = 337,
22452    AtomBluetoothHalCrashReasonReported = 338,
22453    AtomRebootEscrowPreparationReported = 339,
22454    AtomRebootEscrowLskfCaptureReported = 340,
22455    AtomRebootEscrowRebootReported = 341,
22456    AtomBinderLatencyReported = 342,
22457    AtomMediametricsAaudiostreamReported = 343,
22458    AtomMediaTranscodingSessionEnded = 344,
22459    AtomMagnificationUsageReported = 345,
22460    AtomMagnificationModeWithImeOnReported = 346,
22461    AtomAppSearchCallStatsReported = 347,
22462    AtomAppSearchPutDocumentStatsReported = 348,
22463    AtomDeviceControlChanged = 349,
22464    AtomDeviceStateChanged = 350,
22465    AtomInputdeviceRegistered = 351,
22466    AtomSmartspaceCardReported = 352,
22467    AtomAuthPromptAuthenticateInvoked = 353,
22468    AtomAuthManagerCanAuthenticateInvoked = 354,
22469    AtomAuthEnrollActionInvoked = 355,
22470    AtomAuthDeprecatedApiUsed = 356,
22471    AtomUnattendedRebootOccurred = 357,
22472    AtomLongRebootBlockingReported = 358,
22473    AtomLocationTimeZoneProviderStateChanged = 359,
22474    AtomFdtrackEventOccurred = 364,
22475    AtomTimeoutAutoExtendedReported = 365,
22476    AtomAlarmBatchDelivered = 367,
22477    AtomAlarmScheduled = 368,
22478    AtomCarWatchdogIoOveruseStatsReported = 369,
22479    AtomUserLevelHibernationStateChanged = 370,
22480    AtomAppSearchInitializeStatsReported = 371,
22481    AtomAppSearchQueryStatsReported = 372,
22482    AtomAppProcessDied = 373,
22483    AtomNetworkIpReachabilityMonitorReported = 374,
22484    AtomSlowInputEventReported = 375,
22485    AtomAnrOccurredProcessingStarted = 376,
22486    AtomAppSearchRemoveStatsReported = 377,
22487    AtomMediaCodecReported = 378,
22488    AtomPermissionUsageFragmentInteraction = 379,
22489    AtomPermissionDetailsInteraction = 380,
22490    AtomPrivacySensorToggleInteraction = 381,
22491    AtomPrivacyToggleDialogInteraction = 382,
22492    AtomAppSearchOptimizeStatsReported = 383,
22493    AtomNonA11yToolServiceWarningReport = 384,
22494    AtomAppCompatStateChanged = 386,
22495    AtomSizeCompatRestartButtonEventReported = 387,
22496    AtomSplitscreenUiChanged = 388,
22497    AtomNetworkDnsHandshakeReported = 389,
22498    AtomBluetoothCodePathCounter = 390,
22499    AtomBluetoothLeBatchScanReportDelay = 392,
22500    AtomAccessibilityFloatingMenuUiChanged = 393,
22501    AtomNeuralnetworksCompilationCompleted = 394,
22502    AtomNeuralnetworksExecutionCompleted = 395,
22503    AtomNeuralnetworksCompilationFailed = 396,
22504    AtomNeuralnetworksExecutionFailed = 397,
22505    AtomContextHubBooted = 398,
22506    AtomContextHubRestarted = 399,
22507    AtomContextHubLoadedNanoappSnapshotReported = 400,
22508    AtomChreCodeDownloadTransacted = 401,
22509    AtomUwbSessionInited = 402,
22510    AtomUwbSessionClosed = 403,
22511    AtomUwbFirstRangingReceived = 404,
22512    AtomUwbRangingMeasurementReceived = 405,
22513    AtomTextClassifierDownloadWorkScheduled = 406,
22514    AtomTextClassifierDownloadWorkCompleted = 407,
22515    AtomClipboardCleared = 408,
22516    AtomVmCreationRequested = 409,
22517    AtomNearbyDeviceScanStateChanged = 410,
22518    AtomApplicationLocalesChanged = 412,
22519    AtomMediametricsAudiotrackstatusReported = 413,
22520    AtomFoldStateDurationReported = 414,
22521    AtomLocationTimeZoneProviderControllerStateChanged = 415,
22522    AtomDisplayHbmStateChanged = 416,
22523    AtomDisplayHbmBrightnessChanged = 417,
22524    AtomPersistentUriPermissionsFlushed = 418,
22525    AtomEarlyBootCompOsArtifactsCheckReported = 419,
22526    AtomVbmetaDigestReported = 420,
22527    AtomApexInfoGathered = 421,
22528    AtomPvmInfoGathered = 422,
22529    AtomWearSettingsUiInteracted = 423,
22530    AtomTracingServiceReportEvent = 424,
22531    AtomMediametricsAudiorecordstatusReported = 425,
22532    AtomLauncherLatency = 426,
22533    AtomDropboxEntryDropped = 427,
22534    AtomWifiP2pConnectionReported = 428,
22535    AtomGameStateChanged = 429,
22536    AtomHotwordDetectorCreateRequested = 430,
22537    AtomHotwordDetectionServiceInitResultReported = 431,
22538    AtomHotwordDetectionServiceRestarted = 432,
22539    AtomHotwordDetectorKeyphraseTriggered = 433,
22540    AtomHotwordDetectorEvents = 434,
22541    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
22542    AtomContactsIndexerUpdateStatsReported = 440,
22543    AtomAppBackgroundRestrictionsInfo = 441,
22544    AtomMmsSmsProviderGetThreadIdFailed = 442,
22545    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
22546    AtomPermissionReminderNotificationInteracted = 444,
22547    AtomRecentPermissionDecisionsInteracted = 445,
22548    AtomGnssPsdsDownloadReported = 446,
22549    AtomLeAudioConnectionSessionReported = 447,
22550    AtomLeAudioBroadcastSessionReported = 448,
22551    AtomDreamUiEventReported = 449,
22552    AtomTaskManagerEventReported = 450,
22553    AtomCdmAssociationAction = 451,
22554    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
22555    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
22556    AtomAccessibilityTextReadingOptionsChanged = 454,
22557    AtomWifiSetupFailureCrashReported = 455,
22558    AtomUwbDeviceErrorReported = 456,
22559    AtomIsolatedCompilationScheduled = 457,
22560    AtomIsolatedCompilationEnded = 458,
22561    AtomOnsOpportunisticEsimProvisioningComplete = 459,
22562    AtomSystemServerPreWatchdogOccurred = 460,
22563    AtomTelephonyAnomalyDetected = 461,
22564    AtomLetterboxPositionChanged = 462,
22565    AtomRemoteKeyProvisioningAttempt = 463,
22566    AtomRemoteKeyProvisioningNetworkInfo = 464,
22567    AtomRemoteKeyProvisioningTiming = 465,
22568    AtomMediaoutputOpInteractionReport = 466,
22569    AtomSyncExemptionOccurred = 468,
22570    AtomAutofillPresentationEventReported = 469,
22571    AtomDockStateChanged = 470,
22572    AtomSafetySourceStateCollected = 471,
22573    AtomSafetyCenterSystemEventReported = 472,
22574    AtomSafetyCenterInteractionReported = 473,
22575    AtomSettingsProviderSettingChanged = 474,
22576    AtomBroadcastDeliveryEventReported = 475,
22577    AtomServiceRequestEventReported = 476,
22578    AtomProviderAcquisitionEventReported = 477,
22579    AtomBluetoothDeviceNameReported = 478,
22580    AtomCbConfigUpdated = 479,
22581    AtomCbModuleErrorReported = 480,
22582    AtomCbServiceFeatureChanged = 481,
22583    AtomCbReceiverFeatureChanged = 482,
22584    AtomPrivacySignalNotificationInteraction = 484,
22585    AtomPrivacySignalIssueCardInteraction = 485,
22586    AtomPrivacySignalsJobFailure = 486,
22587    AtomVibrationReported = 487,
22588    AtomUwbRangingStart = 489,
22589    AtomAppCompactedV2 = 491,
22590    AtomDisplayBrightnessChanged = 494,
22591    AtomActivityActionBlocked = 495,
22592    AtomNetworkDnsServerSupportReported = 504,
22593    AtomVmBooted = 505,
22594    AtomVmExited = 506,
22595    AtomAmbientBrightnessStatsReported = 507,
22596    AtomMediametricsSpatializercapabilitiesReported = 508,
22597    AtomMediametricsSpatializerdeviceenabledReported = 509,
22598    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
22599    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
22600    AtomHearingAidInfoReported = 513,
22601    AtomDeviceWideJobConstraintChanged = 514,
22602    AtomAmbientModeChanged = 515,
22603    AtomAnrLatencyReported = 516,
22604    AtomResourceApiInfo = 517,
22605    AtomSystemDefaultNetworkChanged = 518,
22606    AtomIwlanSetupDataCallResultReported = 519,
22607    AtomIwlanPdnDisconnectedReasonReported = 520,
22608    AtomAirplaneModeSessionReported = 521,
22609    AtomVmCpuStatusReported = 522,
22610    AtomVmMemStatusReported = 523,
22611    AtomPackageInstallationSessionReported = 524,
22612    AtomDefaultNetworkRematchInfo = 525,
22613    AtomNetworkSelectionPerformance = 526,
22614    AtomNetworkNsdReported = 527,
22615    AtomBluetoothDisconnectionReasonReported = 529,
22616    AtomBluetoothLocalVersionsReported = 530,
22617    AtomBluetoothRemoteSupportedFeaturesReported = 531,
22618    AtomBluetoothLocalSupportedFeaturesReported = 532,
22619    AtomBluetoothGattAppInfo = 533,
22620    AtomBrightnessConfigurationUpdated = 534,
22621    AtomWearMediaOutputSwitcherLaunched = 538,
22622    AtomWearMediaOutputSwitcherFinished = 539,
22623    AtomWearMediaOutputSwitcherConnectionReported = 540,
22624    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
22625    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
22626    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
22627    AtomPackageManagerSnapshotReported = 544,
22628    AtomPackageManagerAppsFilterCacheBuildReported = 545,
22629    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
22630    AtomLauncherImpressionEvent = 547,
22631    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
22632    AtomWsWatchFaceEdited = 551,
22633    AtomWsWatchFaceFavoriteActionReported = 552,
22634    AtomWsWatchFaceSetActionReported = 553,
22635    AtomPackageUninstallationReported = 554,
22636    AtomGameModeChanged = 555,
22637    AtomGameModeConfigurationChanged = 556,
22638    AtomBedtimeModeStateChanged = 557,
22639    AtomNetworkSliceSessionEnded = 558,
22640    AtomNetworkSliceDailyDataUsageReported = 559,
22641    AtomNfcTagTypeOccurred = 560,
22642    AtomNfcAidConflictOccurred = 561,
22643    AtomNfcReaderConflictOccurred = 562,
22644    AtomWsTileListChanged = 563,
22645    AtomGetTypeAccessedWithoutPermission = 564,
22646    AtomMobileBundledAppInfoGathered = 566,
22647    AtomWsWatchFaceComplicationSetChanged = 567,
22648    AtomMediaDrmCreated = 568,
22649    AtomMediaDrmErrored = 569,
22650    AtomMediaDrmSessionOpened = 570,
22651    AtomMediaDrmSessionClosed = 571,
22652    AtomUserSelectedResolution = 572,
22653    AtomUnsafeIntentEventReported = 573,
22654    AtomPerformanceHintSessionReported = 574,
22655    AtomMediametricsMidiDeviceCloseReported = 576,
22656    AtomBiometricTouchReported = 577,
22657    AtomHotwordAudioEgressEventReported = 578,
22658    AtomLocationEnabledStateChanged = 580,
22659    AtomImeRequestFinished = 581,
22660    AtomUsbComplianceWarningsReported = 582,
22661    AtomAppSupportedLocalesChanged = 583,
22662    AtomMediaProviderVolumeRecoveryReported = 586,
22663    AtomBiometricPropertiesCollected = 587,
22664    AtomKernelWakeupAttributed = 588,
22665    AtomScreenStateChangedV2 = 589,
22666    AtomWsBackupActionReported = 590,
22667    AtomWsRestoreActionReported = 591,
22668    AtomDeviceLogAccessEventReported = 592,
22669    AtomMediaSessionUpdated = 594,
22670    AtomWearOobeStateChanged = 595,
22671    AtomWsNotificationUpdated = 596,
22672    AtomNetworkValidationFailureStatsDailyReported = 601,
22673    AtomWsComplicationTapped = 602,
22674    AtomWsNotificationBlocking = 780,
22675    AtomWsNotificationBridgemodeUpdated = 822,
22676    AtomWsNotificationDismissalActioned = 823,
22677    AtomWsNotificationActioned = 824,
22678    AtomWsNotificationLatency = 880,
22679    AtomWifiBytesTransfer = 10000,
22680    AtomWifiBytesTransferByFgBg = 10001,
22681    AtomMobileBytesTransfer = 10002,
22682    AtomMobileBytesTransferByFgBg = 10003,
22683    AtomBluetoothBytesTransfer = 10006,
22684    AtomKernelWakelock = 10004,
22685    AtomSubsystemSleepState = 10005,
22686    AtomCpuTimePerUid = 10009,
22687    AtomCpuTimePerUidFreq = 10010,
22688    AtomWifiActivityInfo = 10011,
22689    AtomModemActivityInfo = 10012,
22690    AtomBluetoothActivityInfo = 10007,
22691    AtomProcessMemoryState = 10013,
22692    AtomSystemElapsedRealtime = 10014,
22693    AtomSystemUptime = 10015,
22694    AtomCpuActiveTime = 10016,
22695    AtomCpuClusterTime = 10017,
22696    AtomDiskSpace = 10018,
22697    AtomRemainingBatteryCapacity = 10019,
22698    AtomFullBatteryCapacity = 10020,
22699    AtomTemperature = 10021,
22700    AtomBinderCalls = 10022,
22701    AtomBinderCallsExceptions = 10023,
22702    AtomLooperStats = 10024,
22703    AtomDiskStats = 10025,
22704    AtomDirectoryUsage = 10026,
22705    AtomAppSize = 10027,
22706    AtomCategorySize = 10028,
22707    AtomProcStats = 10029,
22708    AtomBatteryVoltage = 10030,
22709    AtomNumFingerprintsEnrolled = 10031,
22710    AtomDiskIo = 10032,
22711    AtomPowerProfile = 10033,
22712    AtomProcStatsPkgProc = 10034,
22713    AtomProcessCpuTime = 10035,
22714    AtomCpuTimePerThreadFreq = 10037,
22715    AtomOnDevicePowerMeasurement = 10038,
22716    AtomDeviceCalculatedPowerUse = 10039,
22717    AtomProcessMemoryHighWaterMark = 10042,
22718    AtomBatteryLevel = 10043,
22719    AtomBuildInformation = 10044,
22720    AtomBatteryCycleCount = 10045,
22721    AtomDebugElapsedClock = 10046,
22722    AtomDebugFailingElapsedClock = 10047,
22723    AtomNumFacesEnrolled = 10048,
22724    AtomRoleHolder = 10049,
22725    AtomDangerousPermissionState = 10050,
22726    AtomTrainInfo = 10051,
22727    AtomTimeZoneDataInfo = 10052,
22728    AtomExternalStorageInfo = 10053,
22729    AtomGpuStatsGlobalInfo = 10054,
22730    AtomGpuStatsAppInfo = 10055,
22731    AtomSystemIonHeapSize = 10056,
22732    AtomAppsOnExternalStorageInfo = 10057,
22733    AtomFaceSettings = 10058,
22734    AtomCoolingDevice = 10059,
22735    AtomAppOps = 10060,
22736    AtomProcessSystemIonHeapSize = 10061,
22737    AtomSurfaceflingerStatsGlobalInfo = 10062,
22738    AtomSurfaceflingerStatsLayerInfo = 10063,
22739    AtomProcessMemorySnapshot = 10064,
22740    AtomVmsClientStats = 10065,
22741    AtomNotificationRemoteViews = 10066,
22742    AtomDangerousPermissionStateSampled = 10067,
22743    AtomGraphicsStats = 10068,
22744    AtomRuntimeAppOpAccess = 10069,
22745    AtomIonHeapSize = 10070,
22746    AtomPackageNotificationPreferences = 10071,
22747    AtomPackageNotificationChannelPreferences = 10072,
22748    AtomPackageNotificationChannelGroupPreferences = 10073,
22749    AtomGnssStats = 10074,
22750    AtomAttributedAppOps = 10075,
22751    AtomVoiceCallSession = 10076,
22752    AtomVoiceCallRatUsage = 10077,
22753    AtomSimSlotState = 10078,
22754    AtomSupportedRadioAccessFamily = 10079,
22755    AtomSettingSnapshot = 10080,
22756    AtomBlobInfo = 10081,
22757    AtomDataUsageBytesTransfer = 10082,
22758    AtomBytesTransferByTagAndMetered = 10083,
22759    AtomDndModeRule = 10084,
22760    AtomGeneralExternalStorageAccessStats = 10085,
22761    AtomIncomingSms = 10086,
22762    AtomOutgoingSms = 10087,
22763    AtomCarrierIdTableVersion = 10088,
22764    AtomDataCallSession = 10089,
22765    AtomCellularServiceState = 10090,
22766    AtomCellularDataServiceSwitch = 10091,
22767    AtomSystemMemory = 10092,
22768    AtomImsRegistrationTermination = 10093,
22769    AtomImsRegistrationStats = 10094,
22770    AtomCpuTimePerClusterFreq = 10095,
22771    AtomCpuCyclesPerUidCluster = 10096,
22772    AtomDeviceRotatedData = 10097,
22773    AtomCpuCyclesPerThreadGroupCluster = 10098,
22774    AtomMediaDrmActivityInfo = 10099,
22775    AtomOemManagedBytesTransfer = 10100,
22776    AtomGnssPowerStats = 10101,
22777    AtomTimeZoneDetectorState = 10102,
22778    AtomKeystore2StorageStats = 10103,
22779    AtomRkpPoolStats = 10104,
22780    AtomProcessDmabufMemory = 10105,
22781    AtomPendingAlarmInfo = 10106,
22782    AtomUserLevelHibernatedApps = 10107,
22783    AtomLauncherLayoutSnapshot = 10108,
22784    AtomGlobalHibernatedApps = 10109,
22785    AtomInputEventLatencySketch = 10110,
22786    AtomBatteryUsageStatsBeforeReset = 10111,
22787    AtomBatteryUsageStatsSinceReset = 10112,
22788    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
22789    AtomInstalledIncrementalPackage = 10114,
22790    AtomTelephonyNetworkRequests = 10115,
22791    AtomAppSearchStorageInfo = 10116,
22792    AtomVmstat = 10117,
22793    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
22794    AtomKeystore2KeyCreationWithAuthInfo = 10119,
22795    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
22796    AtomKeystore2AtomWithOverflow = 10121,
22797    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
22798    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
22799    AtomRkpErrorStats = 10124,
22800    AtomKeystore2CrashStats = 10125,
22801    AtomVendorApexInfo = 10126,
22802    AtomAccessibilityShortcutStats = 10127,
22803    AtomAccessibilityFloatingMenuStats = 10128,
22804    AtomDataUsageBytesTransferV2 = 10129,
22805    AtomMediaCapabilities = 10130,
22806    AtomCarWatchdogSystemIoUsageSummary = 10131,
22807    AtomCarWatchdogUidIoUsageSummary = 10132,
22808    AtomImsRegistrationFeatureTagStats = 10133,
22809    AtomRcsClientProvisioningStats = 10134,
22810    AtomRcsAcsProvisioningStats = 10135,
22811    AtomSipDelegateStats = 10136,
22812    AtomSipTransportFeatureTagStats = 10137,
22813    AtomSipMessageResponse = 10138,
22814    AtomSipTransportSession = 10139,
22815    AtomImsDedicatedBearerListenerEvent = 10140,
22816    AtomImsDedicatedBearerEvent = 10141,
22817    AtomImsRegistrationServiceDescStats = 10142,
22818    AtomUceEventStats = 10143,
22819    AtomPresenceNotifyEvent = 10144,
22820    AtomGbaEvent = 10145,
22821    AtomPerSimStatus = 10146,
22822    AtomGpuWorkPerUid = 10147,
22823    AtomPersistentUriPermissionsAmountPerPackage = 10148,
22824    AtomSignedPartitionInfo = 10149,
22825    AtomPinnedFileSizesPerPackage = 10150,
22826    AtomPendingIntentsPerPackage = 10151,
22827    AtomUserInfo = 10152,
22828    AtomTelephonyNetworkRequestsV2 = 10153,
22829    AtomDeviceTelephonyProperties = 10154,
22830    AtomRemoteKeyProvisioningErrorCounts = 10155,
22831    AtomSafetyState = 10156,
22832    AtomIncomingMms = 10157,
22833    AtomOutgoingMms = 10158,
22834    AtomMultiUserInfo = 10160,
22835    AtomNetworkBpfMapInfo = 10161,
22836    AtomOutgoingShortCodeSms = 10162,
22837    AtomConnectivityStateSample = 10163,
22838    AtomNetworkSelectionRematchReasonsInfo = 10164,
22839    AtomGameModeInfo = 10165,
22840    AtomGameModeConfiguration = 10166,
22841    AtomGameModeListener = 10167,
22842    AtomNetworkSliceRequestCount = 10168,
22843    AtomWsTileSnapshot = 10169,
22844    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
22845    AtomProcessState = 10171,
22846    AtomProcessAssociation = 10172,
22847    AtomAdpfSystemComponentInfo = 10173,
22848    AtomNotificationMemoryUse = 10174,
22849    AtomHdrCapabilities = 10175,
22850    AtomWsFavouriteWatchFaceListSnapshot = 10176,
22851    AtomAccessibilityCheckResultReported = 910,
22852    AtomAdaptiveAuthUnlockAfterLockReported = 820,
22853    AtomThermalStatusCalled = 772,
22854    AtomThermalHeadroomCalled = 773,
22855    AtomThermalHeadroomThresholdsCalled = 774,
22856    AtomAdpfHintSessionTidCleanup = 839,
22857    AtomThermalHeadroomThresholds = 10201,
22858    AtomAdpfSessionSnapshot = 10218,
22859    AtomJsscriptengineLatencyReported = 483,
22860    AtomAdServicesApiCalled = 435,
22861    AtomAdServicesMesurementReportsUploaded = 436,
22862    AtomMobileDataDownloadFileGroupStatusReported = 490,
22863    AtomMobileDataDownloadDownloadResultReported = 502,
22864    AtomAdServicesSettingsUsageReported = 493,
22865    AtomBackgroundFetchProcessReported = 496,
22866    AtomUpdateCustomAudienceProcessReported = 497,
22867    AtomRunAdBiddingProcessReported = 498,
22868    AtomRunAdScoringProcessReported = 499,
22869    AtomRunAdSelectionProcessReported = 500,
22870    AtomRunAdBiddingPerCaProcessReported = 501,
22871    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
22872    AtomAdServicesMeasurementRegistrations = 512,
22873    AtomAdServicesGetTopicsReported = 535,
22874    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
22875    AtomAdServicesEpochComputationClassifierReported = 537,
22876    AtomAdServicesBackCompatGetTopicsReported = 598,
22877    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
22878    AtomAdServicesMeasurementDebugKeys = 640,
22879    AtomAdServicesErrorReported = 662,
22880    AtomAdServicesBackgroundJobsExecutionReported = 663,
22881    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
22882    AtomAdServicesMeasurementAttribution = 674,
22883    AtomAdServicesMeasurementJobs = 675,
22884    AtomAdServicesMeasurementWipeout = 676,
22885    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
22886    AtomAdServicesEnrollmentDataStored = 697,
22887    AtomAdServicesEnrollmentFileDownloaded = 698,
22888    AtomAdServicesEnrollmentMatched = 699,
22889    AtomAdServicesConsentMigrated = 702,
22890    AtomAdServicesEnrollmentFailed = 714,
22891    AtomAdServicesMeasurementClickVerification = 756,
22892    AtomAdServicesEncryptionKeyFetched = 765,
22893    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
22894    AtomDestinationRegisteredBeacons = 767,
22895    AtomReportInteractionApiCalled = 768,
22896    AtomInteractionReportingTableCleared = 769,
22897    AtomAppManifestConfigHelperCalled = 788,
22898    AtomAdFilteringProcessJoinCaReported = 793,
22899    AtomAdFilteringProcessAdSelectionReported = 794,
22900    AtomAdCounterHistogramUpdaterReported = 795,
22901    AtomSignatureVerification = 807,
22902    AtomKAnonImmediateSignJoinStatusReported = 808,
22903    AtomKAnonBackgroundJobStatusReported = 809,
22904    AtomKAnonInitializeStatusReported = 810,
22905    AtomKAnonSignStatusReported = 811,
22906    AtomKAnonJoinStatusReported = 812,
22907    AtomKAnonKeyAttestationStatusReported = 813,
22908    AtomGetAdSelectionDataApiCalled = 814,
22909    AtomGetAdSelectionDataBuyerInputGenerated = 815,
22910    AtomBackgroundJobSchedulingReported = 834,
22911    AtomTopicsEncryptionEpochComputationReported = 840,
22912    AtomTopicsEncryptionGetTopicsReported = 841,
22913    AtomAdservicesShellCommandCalled = 842,
22914    AtomUpdateSignalsApiCalled = 843,
22915    AtomEncodingJobRun = 844,
22916    AtomEncodingJsFetch = 845,
22917    AtomEncodingJsExecution = 846,
22918    AtomPersistAdSelectionResultCalled = 847,
22919    AtomServerAuctionKeyFetchCalled = 848,
22920    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
22921    AtomAdServicesMeasurementProcessOdpRegistration = 864,
22922    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
22923    AtomSelectAdsFromOutcomesApiCalled = 876,
22924    AtomReportImpressionApiCalled = 877,
22925    AtomAdServicesEnrollmentTransactionStats = 885,
22926    AtomAdServicesCobaltLoggerEventReported = 902,
22927    AtomAdServicesCobaltPeriodicJobEventReported = 903,
22928    AtomUpdateSignalsProcessReported = 905,
22929    AtomTopicsScheduleEpochJobSettingReported = 930,
22930    AtomAiWallpapersButtonPressed = 706,
22931    AtomAiWallpapersTemplateSelected = 707,
22932    AtomAiWallpapersTermSelected = 708,
22933    AtomAiWallpapersWallpaperSet = 709,
22934    AtomAiWallpapersSessionSummary = 710,
22935    AtomApexInstallationRequested = 732,
22936    AtomApexInstallationStaged = 733,
22937    AtomApexInstallationEnded = 734,
22938    AtomAppSearchSetSchemaStatsReported = 385,
22939    AtomAppSearchSchemaMigrationStatsReported = 579,
22940    AtomAppSearchUsageSearchIntentStatsReported = 825,
22941    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
22942    AtomAppSearchAppsIndexerStatsReported = 909,
22943    AtomArtDatumReported = 332,
22944    AtomArtDeviceDatumReported = 550,
22945    AtomArtDatumDeltaReported = 565,
22946    AtomArtDex2oatReported = 929,
22947    AtomArtDeviceStatus = 10205,
22948    AtomBackgroundDexoptJobEnded = 467,
22949    AtomPrerebootDexoptJobEnded = 883,
22950    AtomOdrefreshReported = 366,
22951    AtomOdsignReported = 548,
22952    AtomAutofillUiEventReported = 603,
22953    AtomAutofillFillRequestReported = 604,
22954    AtomAutofillFillResponseReported = 605,
22955    AtomAutofillSaveEventReported = 606,
22956    AtomAutofillSessionCommitted = 607,
22957    AtomAutofillFieldClassificationEventReported = 659,
22958    AtomCarRecentsEventReported = 770,
22959    AtomCarCalmModeEventReported = 797,
22960    AtomCarWakeupFromSuspendReported = 852,
22961    AtomPluginInitialized = 655,
22962    AtomBluetoothHashedDeviceNameReported = 613,
22963    AtomBluetoothL2capCocClientConnection = 614,
22964    AtomBluetoothL2capCocServerConnection = 615,
22965    AtomBluetoothLeSessionConnected = 656,
22966    AtomRestrictedBluetoothDeviceNameReported = 666,
22967    AtomBluetoothProfileConnectionAttempted = 696,
22968    AtomBluetoothContentProfileErrorReported = 781,
22969    AtomBluetoothRfcommConnectionAttempted = 782,
22970    AtomRemoteDeviceInformationWithMetricId = 862,
22971    AtomLeAppScanStateChanged = 870,
22972    AtomLeRadioScanStopped = 871,
22973    AtomLeScanResultReceived = 872,
22974    AtomLeScanAbused = 873,
22975    AtomLeAdvStateChanged = 874,
22976    AtomLeAdvErrorReported = 875,
22977    AtomA2dpSessionReported = 904,
22978    AtomBluetoothCrossLayerEventReported = 916,
22979    AtomBroadcastAudioSessionReported = 927,
22980    AtomBroadcastAudioSyncReported = 928,
22981    AtomBluetoothRfcommConnectionReportedAtClose = 982,
22982    AtomBluetoothLeConnection = 988,
22983    AtomBroadcastSent = 922,
22984    AtomCameraFeatureCombinationQueryEvent = 900,
22985    AtomCertificateTransparencyLogListStateChanged = 934,
22986    AtomCertificateTransparencyLogListUpdateFailed = 972,
22987    AtomDailyKeepaliveInfoReported = 650,
22988    AtomNetworkRequestStateChanged = 779,
22989    AtomTetheringActiveSessionsReported = 925,
22990    AtomNetworkStatsRecorderFileOperated = 783,
22991    AtomCoreNetworkingTerribleErrorOccurred = 979,
22992    AtomApfSessionInfoReported = 777,
22993    AtomIpClientRaInfoReported = 778,
22994    AtomVpnConnectionStateChanged = 850,
22995    AtomVpnConnectionReported = 851,
22996    AtomCpuPolicy = 10199,
22997    AtomCredentialManagerApiCalled = 585,
22998    AtomCredentialManagerInitPhaseReported = 651,
22999    AtomCredentialManagerCandidatePhaseReported = 652,
23000    AtomCredentialManagerFinalPhaseReported = 653,
23001    AtomCredentialManagerTotalReported = 667,
23002    AtomCredentialManagerFinalnouidReported = 668,
23003    AtomCredentialManagerGetReported = 669,
23004    AtomCredentialManagerAuthClickReported = 670,
23005    AtomCredentialManagerApiv2Called = 671,
23006    AtomCronetEngineCreated = 703,
23007    AtomCronetTrafficReported = 704,
23008    AtomCronetEngineBuilderInitialized = 762,
23009    AtomCronetHttpFlagsInitialized = 763,
23010    AtomCronetInitialized = 764,
23011    AtomDesktopModeUiChanged = 818,
23012    AtomDesktopModeSessionTaskUpdate = 819,
23013    AtomDesktopModeTaskSizeUpdated = 935,
23014    AtomDeviceLockCheckInRequestReported = 726,
23015    AtomDeviceLockProvisioningCompleteReported = 727,
23016    AtomDeviceLockKioskAppRequestReported = 728,
23017    AtomDeviceLockCheckInRetryReported = 789,
23018    AtomDeviceLockProvisionFailureReported = 790,
23019    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
23020    AtomDevicePolicyManagementMode = 10216,
23021    AtomDevicePolicyState = 10217,
23022    AtomDisplayModeDirectorVoteChanged = 792,
23023    AtomExternalDisplayStateChanged = 806,
23024    AtomDndStateChanged = 657,
23025    AtomDreamSettingChanged = 705,
23026    AtomDreamSettingSnapshot = 10192,
23027    AtomExpressEventReported = 528,
23028    AtomExpressHistogramSampleReported = 593,
23029    AtomExpressUidEventReported = 644,
23030    AtomExpressUidHistogramSampleReported = 658,
23031    AtomFederatedComputeApiCalled = 712,
23032    AtomFederatedComputeTrainingEventReported = 771,
23033    AtomExampleIteratorNextLatencyReported = 838,
23034    AtomFullScreenIntentLaunched = 631,
23035    AtomBalAllowed = 632,
23036    AtomInTaskActivityStarted = 685,
23037    AtomDeviceOrientationChanged = 906,
23038    AtomCachedAppsHighWatermark = 10189,
23039    AtomStylusPredictionMetricsReported = 718,
23040    AtomUserRiskEventReported = 725,
23041    AtomMediaProjectionStateChanged = 729,
23042    AtomMediaProjectionTargetChanged = 730,
23043    AtomExcessiveBinderProxyCountReported = 853,
23044    AtomProxyBytesTransferByFgBg = 10200,
23045    AtomMobileBytesTransferByProcState = 10204,
23046    AtomBiometricFrrNotification = 817,
23047    AtomSensitiveContentMediaProjectionSession = 830,
23048    AtomSensitiveNotificationAppProtectionSession = 831,
23049    AtomSensitiveNotificationAppProtectionApplied = 832,
23050    AtomSensitiveNotificationRedaction = 833,
23051    AtomSensitiveContentAppProtection = 835,
23052    AtomAppRestrictionStateChanged = 866,
23053    AtomBatteryUsageStatsPerUid = 10209,
23054    AtomPostgcMemorySnapshot = 924,
23055    AtomPowerSaveTempAllowlistChanged = 926,
23056    AtomAppOpAccessTracked = 931,
23057    AtomContentOrFileUriEventReported = 933,
23058    AtomApplicationGrammaticalInflectionChanged = 584,
23059    AtomSystemGrammaticalInflectionChanged = 816,
23060    AtomBatteryHealth = 10220,
23061    AtomHdmiEarcStatusReported = 701,
23062    AtomHdmiSoundbarModeStatusReported = 724,
23063    AtomHealthConnectApiCalled = 616,
23064    AtomHealthConnectUsageStats = 617,
23065    AtomHealthConnectStorageStats = 618,
23066    AtomHealthConnectApiInvoked = 643,
23067    AtomExerciseRouteApiCalled = 654,
23068    AtomHealthConnectExportInvoked = 907,
23069    AtomHealthConnectImportInvoked = 918,
23070    AtomHealthConnectExportImportStatsReported = 919,
23071    AtomHealthConnectUiImpression = 623,
23072    AtomHealthConnectUiInteraction = 624,
23073    AtomHealthConnectAppOpenedReported = 625,
23074    AtomHotwordEgressSizeAtomReported = 761,
23075    AtomIkeSessionTerminated = 678,
23076    AtomIkeLivenessCheckSessionValidated = 760,
23077    AtomNegotiatedSecurityAssociation = 821,
23078    AtomKeyboardConfigured = 682,
23079    AtomKeyboardSystemsEventReported = 683,
23080    AtomInputdeviceUsageReported = 686,
23081    AtomInputEventLatencyReported = 932,
23082    AtomTouchpadUsage = 10191,
23083    AtomKernelOomKillOccurred = 754,
23084    AtomEmergencyStateChanged = 633,
23085    AtomChreSignificantMotionStateChanged = 868,
23086    AtomPopulationDensityProviderLoadingReported = 1002,
23087    AtomDensityBasedCoarseLocationsUsageReported = 1003,
23088    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
23089    AtomMediaCodecReclaimRequestCompleted = 600,
23090    AtomMediaCodecStarted = 641,
23091    AtomMediaCodecStopped = 642,
23092    AtomMediaCodecRendered = 684,
23093    AtomMediaEditingEndedReported = 798,
23094    AtomMteState = 10181,
23095    AtomMicroxrDeviceBootCompleteReported = 901,
23096    AtomNfcObserveModeStateChanged = 855,
23097    AtomNfcFieldChanged = 856,
23098    AtomNfcPollingLoopNotificationReported = 857,
23099    AtomNfcProprietaryCapabilitiesReported = 858,
23100    AtomOndevicepersonalizationApiCalled = 711,
23101    AtomComponentStateChangedReported = 863,
23102    AtomPdfLoadReported = 859,
23103    AtomPdfApiUsageReported = 860,
23104    AtomPdfSearchReported = 861,
23105    AtomPressureStallInformation = 10229,
23106    AtomPermissionRationaleDialogViewed = 645,
23107    AtomPermissionRationaleDialogActionReported = 646,
23108    AtomAppDataSharingUpdatesNotificationInteraction = 647,
23109    AtomAppDataSharingUpdatesFragmentViewed = 648,
23110    AtomAppDataSharingUpdatesFragmentActionReported = 649,
23111    AtomEnhancedConfirmationDialogResultReported = 827,
23112    AtomEnhancedConfirmationRestrictionCleared = 828,
23113    AtomPhotopickerSessionInfoReported = 886,
23114    AtomPhotopickerApiInfoReported = 887,
23115    AtomPhotopickerUiEventLogged = 888,
23116    AtomPhotopickerMediaItemStatusReported = 889,
23117    AtomPhotopickerPreviewInfoLogged = 890,
23118    AtomPhotopickerMenuInteractionLogged = 891,
23119    AtomPhotopickerBannerInteractionLogged = 892,
23120    AtomPhotopickerMediaLibraryInfoLogged = 893,
23121    AtomPhotopickerPageInfoLogged = 894,
23122    AtomPhotopickerMediaGridSyncInfoReported = 895,
23123    AtomPhotopickerAlbumSyncInfoReported = 896,
23124    AtomPhotopickerSearchInfoReported = 897,
23125    AtomSearchDataExtractionDetailsReported = 898,
23126    AtomEmbeddedPhotopickerInfoReported = 899,
23127    AtomAtom9999 = 9999,
23128    AtomAtom99999 = 99999,
23129    AtomScreenOffReported = 776,
23130    AtomScreenTimeoutOverrideReported = 836,
23131    AtomScreenInteractiveSessionReported = 837,
23132    AtomScreenDimReported = 867,
23133    AtomMediaProviderDatabaseRollbackReported = 784,
23134    AtomBackupSetupStatusReported = 785,
23135    AtomRangingSessionConfigured = 993,
23136    AtomRangingSessionStarted = 994,
23137    AtomRangingSessionClosed = 995,
23138    AtomRangingTechnologyStarted = 996,
23139    AtomRangingTechnologyStopped = 997,
23140    AtomRkpdPoolStats = 664,
23141    AtomRkpdClientOperation = 665,
23142    AtomSandboxApiCalled = 488,
23143    AtomSandboxActivityEventOccurred = 735,
23144    AtomSdkSandboxRestrictedAccessInSession = 796,
23145    AtomSandboxSdkStorage = 10159,
23146    AtomSelinuxAuditLog = 799,
23147    AtomSettingsSpaReported = 622,
23148    AtomTestExtensionAtomReported = 660,
23149    AtomTestRestrictedAtomReported = 672,
23150    AtomStatsSocketLossReported = 752,
23151    AtomLockscreenShortcutSelected = 611,
23152    AtomLockscreenShortcutTriggered = 612,
23153    AtomLauncherImpressionEventV2 = 716,
23154    AtomDisplaySwitchLatencyTracked = 753,
23155    AtomNotificationListenerService = 829,
23156    AtomNavHandleTouchPoints = 869,
23157    AtomCommunalHubWidgetEventReported = 908,
23158    AtomCommunalHubSnapshot = 10226,
23159    AtomEmergencyNumberDialed = 637,
23160    AtomCallStats = 10221,
23161    AtomCallAudioRouteStats = 10222,
23162    AtomTelecomApiStats = 10223,
23163    AtomTelecomErrorStats = 10224,
23164    AtomCellularRadioPowerStateChanged = 713,
23165    AtomEmergencyNumbersInfo = 10180,
23166    AtomDataNetworkValidation = 10207,
23167    AtomDataRatStateChanged = 854,
23168    AtomConnectedChannelChanged = 882,
23169    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
23170    AtomQualifiedRatListChanged = 634,
23171    AtomQnsImsCallDropStats = 635,
23172    AtomQnsFallbackRestrictionChanged = 636,
23173    AtomQnsRatPreferenceMismatchInfo = 10177,
23174    AtomQnsHandoverTimeMillis = 10178,
23175    AtomQnsHandoverPingpong = 10179,
23176    AtomSatelliteController = 10182,
23177    AtomSatelliteSession = 10183,
23178    AtomSatelliteIncomingDatagram = 10184,
23179    AtomSatelliteOutgoingDatagram = 10185,
23180    AtomSatelliteProvision = 10186,
23181    AtomSatelliteSosMessageRecommender = 10187,
23182    AtomCarrierRoamingSatelliteSession = 10211,
23183    AtomCarrierRoamingSatelliteControllerStats = 10212,
23184    AtomControllerStatsPerPackage = 10213,
23185    AtomSatelliteEntitlement = 10214,
23186    AtomSatelliteConfigUpdater = 10215,
23187    AtomSatelliteAccessController = 10219,
23188    AtomCellularIdentifierDisclosed = 800,
23189    AtomThreadnetworkTelemetryDataReported = 738,
23190    AtomThreadnetworkTopoEntryRepeated = 739,
23191    AtomThreadnetworkDeviceInfoReported = 740,
23192    AtomBootIntegrityInfoReported = 775,
23193    AtomTvLowPowerStandbyPolicy = 679,
23194    AtomExternalTvInputEvent = 717,
23195    AtomTestUprobestatsAtomReported = 915,
23196    AtomUwbActivityInfo = 10188,
23197    AtomMediatorUpdated = 721,
23198    AtomSysproxyBluetoothBytesTransfer = 10196,
23199    AtomSysproxyConnectionUpdated = 786,
23200    AtomWearCompanionConnectionState = 921,
23201    AtomMediaActionReported = 608,
23202    AtomMediaControlsLaunched = 609,
23203    AtomMediaSessionStateChanged = 677,
23204    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
23205    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
23206    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
23207    AtomWearModeStateChanged = 715,
23208    AtomRendererInitialized = 736,
23209    AtomSchemaVersionReceived = 737,
23210    AtomLayoutInspected = 741,
23211    AtomLayoutExpressionInspected = 742,
23212    AtomLayoutAnimationsInspected = 743,
23213    AtomMaterialComponentsInspected = 744,
23214    AtomTileRequested = 745,
23215    AtomStateResponseReceived = 746,
23216    AtomTileResponseReceived = 747,
23217    AtomInflationFinished = 748,
23218    AtomInflationFailed = 749,
23219    AtomIgnoredInflationFailuresReported = 750,
23220    AtomDrawableRendered = 751,
23221    AtomWearTimeSyncRequested = 911,
23222    AtomWearTimeUpdateStarted = 912,
23223    AtomWearTimeSyncAttemptCompleted = 913,
23224    AtomWearTimeChanged = 914,
23225    AtomWearAdaptiveSuspendStatsReported = 619,
23226    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
23227    AtomWearPowerAnomalyServiceEventStatsReported = 621,
23228    AtomWsWearTimeSession = 610,
23229    AtomWsIncomingCallActionReported = 626,
23230    AtomWsCallDisconnectionReported = 627,
23231    AtomWsCallDurationReported = 628,
23232    AtomWsCallUserExperienceLatencyReported = 629,
23233    AtomWsCallInteractionReported = 630,
23234    AtomWsOnBodyStateChanged = 787,
23235    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
23236    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
23237    AtomWsComplicationsImpactedNotificationEventReported = 804,
23238    AtomWsRemoteEventUsageReported = 920,
23239    AtomWsBugreportRequested = 936,
23240    AtomWsBugreportTriggered = 937,
23241    AtomWsBugreportFinished = 938,
23242    AtomWsBugreportResultReceived = 939,
23243    AtomWsStandaloneModeSnapshot = 10197,
23244    AtomWsFavoriteWatchFaceSnapshot = 10206,
23245    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
23246    AtomWsWatchFaceCustomizationSnapshot = 10227,
23247    AtomWearPowerMenuOpened = 731,
23248    AtomWearAssistantOpened = 755,
23249    AtomFirstOverlayStateChanged = 917,
23250    AtomWifiAwareNdpReported = 638,
23251    AtomWifiAwareAttachReported = 639,
23252    AtomWifiSelfRecoveryTriggered = 661,
23253    AtomSoftApStarted = 680,
23254    AtomSoftApStopped = 681,
23255    AtomWifiLockReleased = 687,
23256    AtomWifiLockDeactivated = 688,
23257    AtomWifiConfigSaved = 689,
23258    AtomWifiAwareResourceUsingChanged = 690,
23259    AtomWifiAwareHalApiCalled = 691,
23260    AtomWifiLocalOnlyRequestReceived = 692,
23261    AtomWifiLocalOnlyRequestScanTriggered = 693,
23262    AtomWifiThreadTaskExecuted = 694,
23263    AtomWifiStateChanged = 700,
23264    AtomPnoScanStarted = 719,
23265    AtomPnoScanStopped = 720,
23266    AtomWifiIsUnusableReported = 722,
23267    AtomWifiApCapabilitiesReported = 723,
23268    AtomSoftApStateChanged = 805,
23269    AtomScorerPredictionResultReported = 884,
23270    AtomWifiAwareCapabilities = 10190,
23271    AtomWifiModuleInfo = 10193,
23272    AtomWifiSettingInfo = 10194,
23273    AtomWifiComplexSettingInfo = 10195,
23274    AtomWifiConfiguredNetworkInfo = 10198,
23275}
23276impl AtomId {
23277    /// String value of the enum field names used in the ProtoBuf definition.
23278    ///
23279    /// The values are not transformed in any way and thus are considered stable
23280    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23281    pub fn as_str_name(&self) -> &'static str {
23282        match self {
23283            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
23284            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
23285            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
23286            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
23287            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
23288            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
23289            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
23290            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
23291            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
23292            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
23293            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
23294            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
23295            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
23296            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
23297            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
23298            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
23299            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
23300            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
23301            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
23302            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
23303            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
23304            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
23305            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
23306            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
23307            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
23308            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
23309            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
23310            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
23311            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
23312            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
23313            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
23314            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
23315            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
23316            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
23317            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
23318            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
23319            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
23320            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
23321            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
23322            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
23323            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
23324            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
23325            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
23326            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
23327            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
23328            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
23329            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
23330            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
23331            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
23332            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
23333            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
23334            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
23335            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
23336            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
23337            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
23338            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
23339            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
23340            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
23341            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
23342            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
23343            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
23344            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
23345            AtomId::AtomAppDied => "ATOM_APP_DIED",
23346            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
23347            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
23348            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
23349            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
23350            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
23351            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
23352            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
23353            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
23354            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
23355            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
23356            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
23357            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
23358            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
23359            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
23360            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
23361            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
23362            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
23363            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
23364            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
23365            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
23366            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
23367            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
23368            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
23369            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
23370            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
23371            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
23372            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
23373            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
23374            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
23375            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
23376            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
23377            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
23378            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
23379            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
23380            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
23381            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
23382            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
23383            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
23384            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
23385            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
23386            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
23387            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
23388            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
23389            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
23390            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
23391            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
23392            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
23393            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
23394            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
23395            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
23396            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
23397            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
23398            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
23399            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
23400            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
23401            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
23402            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
23403            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
23404            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
23405            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
23406            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
23407            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
23408            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
23409            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
23410            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
23411            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
23412            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
23413            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
23414            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
23415            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
23416            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
23417            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
23418            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
23419            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
23420            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
23421            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
23422            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
23423            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
23424            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
23425            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
23426            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
23427            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
23428            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
23429            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
23430            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
23431            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
23432            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
23433            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
23434            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
23435            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
23436            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
23437            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
23438            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
23439            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
23440            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
23441            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
23442            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
23443            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
23444            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
23445            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
23446            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
23447            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
23448            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
23449            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
23450            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
23451            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
23452            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
23453            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
23454            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
23455            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
23456            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
23457            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
23458            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
23459            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
23460            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
23461            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
23462            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
23463            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
23464            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
23465            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
23466            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
23467            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
23468            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
23469            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
23470            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
23471            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
23472            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
23473            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
23474            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
23475            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
23476            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
23477            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
23478            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
23479            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
23480            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
23481            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
23482            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
23483            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
23484            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
23485            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
23486            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
23487            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
23488            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
23489            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
23490            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
23491            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
23492            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
23493            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
23494            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
23495            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
23496            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
23497            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
23498            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
23499            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
23500            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
23501            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
23502            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
23503            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
23504            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
23505            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
23506            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
23507            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
23508            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
23509            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
23510            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
23511            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
23512            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
23513            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
23514            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
23515            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
23516            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
23517            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
23518            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
23519            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
23520            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
23521            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
23522            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
23523            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
23524            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
23525            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
23526            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
23527            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
23528            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
23529            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
23530            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
23531            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
23532            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
23533            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
23534            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
23535            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
23536            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
23537            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
23538            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
23539            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
23540            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
23541            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
23542            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
23543            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
23544            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
23545            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
23546            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
23547            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
23548            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
23549            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
23550            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
23551            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
23552            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
23553            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
23554            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
23555            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
23556            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
23557            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
23558            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
23559            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
23560            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
23561            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
23562            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
23563            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
23564            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
23565            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
23566            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
23567            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
23568            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
23569            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
23570            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
23571            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
23572            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
23573            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
23574            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
23575            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
23576            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
23577            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
23578            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
23579            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
23580            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
23581            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
23582            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
23583            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
23584            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
23585            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
23586            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
23587            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
23588            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
23589            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
23590            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
23591            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
23592            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
23593            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
23594            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
23595            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
23596            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
23597            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
23598            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
23599            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
23600            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
23601            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
23602            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
23603            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
23604            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
23605            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
23606            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
23607            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
23608            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
23609            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
23610            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
23611            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
23612            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
23613            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
23614            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
23615            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
23616            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
23617            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
23618            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
23619            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
23620            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
23621            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
23622            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
23623            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
23624            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
23625            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
23626            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
23627            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
23628            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
23629            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
23630            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
23631            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
23632            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
23633            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
23634            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
23635            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
23636            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
23637            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
23638            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
23639            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
23640            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
23641            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
23642            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
23643            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
23644            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
23645            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
23646            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
23647            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
23648            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
23649            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
23650            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
23651            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
23652            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
23653            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
23654            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
23655            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
23656            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
23657            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
23658            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
23659            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
23660            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
23661            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
23662            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
23663            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
23664            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
23665            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
23666            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
23667            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
23668            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
23669            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
23670            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
23671            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
23672            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
23673            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
23674            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
23675            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
23676            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
23677            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
23678            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
23679            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
23680            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
23681            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
23682            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
23683            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
23684            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
23685            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
23686            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
23687            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
23688            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
23689            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
23690            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
23691            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
23692            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
23693            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
23694            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
23695            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
23696            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
23697            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
23698            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
23699            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
23700            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
23701            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
23702            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
23703            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
23704            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
23705            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
23706            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
23707            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
23708            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
23709            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
23710            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
23711            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
23712            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
23713            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
23714            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
23715            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
23716            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
23717            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
23718            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
23719            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
23720            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
23721            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
23722            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
23723            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
23724            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
23725            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
23726            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
23727            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
23728            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
23729            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
23730            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
23731            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
23732            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
23733            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
23734            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
23735            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
23736            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
23737            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
23738            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
23739            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
23740            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
23741            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
23742            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
23743            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
23744            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
23745            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
23746            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
23747            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
23748            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
23749            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
23750            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
23751            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
23752            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
23753            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
23754            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
23755            AtomId::AtomVmExited => "ATOM_VM_EXITED",
23756            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
23757            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
23758            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
23759            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
23760            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
23761            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
23762            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
23763            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
23764            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
23765            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
23766            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
23767            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
23768            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
23769            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
23770            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
23771            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
23772            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
23773            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
23774            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
23775            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
23776            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
23777            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
23778            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
23779            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
23780            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
23781            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
23782            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
23783            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
23784            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
23785            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
23786            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
23787            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
23788            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
23789            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
23790            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
23791            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
23792            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
23793            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
23794            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
23795            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
23796            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
23797            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
23798            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
23799            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
23800            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
23801            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
23802            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
23803            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
23804            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
23805            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
23806            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
23807            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
23808            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
23809            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
23810            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
23811            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
23812            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
23813            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
23814            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
23815            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
23816            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
23817            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
23818            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
23819            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
23820            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
23821            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
23822            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
23823            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
23824            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
23825            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
23826            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
23827            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
23828            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
23829            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
23830            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
23831            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
23832            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
23833            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
23834            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
23835            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
23836            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
23837            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
23838            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
23839            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
23840            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
23841            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
23842            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
23843            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
23844            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
23845            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
23846            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
23847            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
23848            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
23849            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
23850            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
23851            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
23852            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
23853            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
23854            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
23855            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
23856            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
23857            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
23858            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
23859            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
23860            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
23861            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
23862            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
23863            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
23864            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
23865            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
23866            AtomId::AtomAppSize => "ATOM_APP_SIZE",
23867            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
23868            AtomId::AtomProcStats => "ATOM_PROC_STATS",
23869            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
23870            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
23871            AtomId::AtomDiskIo => "ATOM_DISK_IO",
23872            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
23873            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
23874            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
23875            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
23876            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
23877            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
23878            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
23879            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
23880            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
23881            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
23882            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
23883            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
23884            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
23885            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
23886            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
23887            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
23888            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
23889            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
23890            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
23891            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
23892            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
23893            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
23894            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
23895            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
23896            AtomId::AtomAppOps => "ATOM_APP_OPS",
23897            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
23898            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
23899            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
23900            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
23901            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
23902            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
23903            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
23904            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
23905            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
23906            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
23907            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
23908            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
23909            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
23910            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
23911            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
23912            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
23913            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
23914            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
23915            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
23916            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
23917            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
23918            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
23919            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
23920            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
23921            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
23922            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
23923            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
23924            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
23925            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
23926            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
23927            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
23928            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
23929            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
23930            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
23931            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
23932            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
23933            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
23934            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
23935            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
23936            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
23937            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
23938            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
23939            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
23940            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
23941            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
23942            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
23943            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
23944            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
23945            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
23946            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
23947            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
23948            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
23949            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
23950            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
23951            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
23952            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
23953            AtomId::AtomVmstat => "ATOM_VMSTAT",
23954            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
23955            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
23956            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
23957            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
23958            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
23959            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
23960            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
23961            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
23962            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
23963            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
23964            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
23965            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
23966            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
23967            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
23968            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
23969            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
23970            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
23971            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
23972            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
23973            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
23974            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
23975            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
23976            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
23977            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
23978            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
23979            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
23980            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
23981            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
23982            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
23983            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
23984            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
23985            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
23986            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
23987            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
23988            AtomId::AtomUserInfo => "ATOM_USER_INFO",
23989            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
23990            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
23991            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
23992            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
23993            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
23994            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
23995            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
23996            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
23997            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
23998            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
23999            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
24000            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
24001            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
24002            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
24003            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
24004            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
24005            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
24006            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
24007            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
24008            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
24009            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
24010            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
24011            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
24012            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
24013            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
24014            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
24015            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
24016            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
24017            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
24018            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
24019            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
24020            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
24021            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
24022            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
24023            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
24024            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
24025            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
24026            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
24027            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
24028            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
24029            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
24030            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
24031            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
24032            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
24033            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
24034            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
24035            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
24036            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
24037            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
24038            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
24039            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
24040            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
24041            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
24042            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
24043            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
24044            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
24045            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
24046            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
24047            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
24048            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
24049            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
24050            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
24051            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
24052            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
24053            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
24054            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
24055            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
24056            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
24057            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
24058            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
24059            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
24060            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
24061            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
24062            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
24063            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
24064            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
24065            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
24066            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
24067            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
24068            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
24069            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
24070            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
24071            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
24072            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
24073            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
24074            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
24075            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
24076            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
24077            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
24078            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
24079            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
24080            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
24081            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
24082            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
24083            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
24084            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
24085            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
24086            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
24087            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
24088            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
24089            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
24090            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
24091            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
24092            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
24093            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
24094            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
24095            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
24096            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
24097            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
24098            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
24099            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
24100            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
24101            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
24102            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
24103            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
24104            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
24105            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
24106            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
24107            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
24108            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
24109            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
24110            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
24111            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
24112            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
24113            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
24114            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
24115            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
24116            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
24117            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
24118            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
24119            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
24120            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
24121            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
24122            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
24123            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
24124            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
24125            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
24126            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
24127            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
24128            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
24129            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
24130            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
24131            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
24132            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
24133            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
24134            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
24135            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
24136            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
24137            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
24138            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
24139            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
24140            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
24141            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
24142            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
24143            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
24144            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
24145            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
24146            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
24147            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
24148            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
24149            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
24150            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
24151            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
24152            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
24153            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
24154            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
24155            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
24156            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
24157            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
24158            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
24159            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
24160            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
24161            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
24162            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
24163            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
24164            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
24165            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
24166            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
24167            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
24168            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
24169            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
24170            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
24171            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
24172            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
24173            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
24174            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
24175            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
24176            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
24177            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
24178            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
24179            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
24180            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
24181            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
24182            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
24183            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
24184            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
24185            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
24186            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
24187            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
24188            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
24189            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
24190            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
24191            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
24192            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
24193            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
24194            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
24195            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
24196            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
24197            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
24198            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
24199            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
24200            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
24201            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
24202            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
24203            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
24204            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
24205            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
24206            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
24207            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
24208            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
24209            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
24210            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
24211            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
24212            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
24213            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
24214            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
24215            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
24216            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
24217            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
24218            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
24219            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
24220            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
24221            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
24222            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
24223            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
24224            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
24225            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
24226            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
24227            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
24228            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
24229            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
24230            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
24231            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
24232            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
24233            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
24234            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
24235            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
24236            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
24237            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
24238            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
24239            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
24240            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
24241            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
24242            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
24243            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
24244            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
24245            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
24246            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
24247            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
24248            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
24249            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
24250            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
24251            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
24252            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
24253            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
24254            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
24255            AtomId::AtomMteState => "ATOM_MTE_STATE",
24256            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
24257            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
24258            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
24259            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
24260            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
24261            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
24262            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
24263            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
24264            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
24265            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
24266            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
24267            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
24268            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
24269            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
24270            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
24271            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
24272            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
24273            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
24274            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
24275            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
24276            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
24277            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
24278            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
24279            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
24280            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
24281            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
24282            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
24283            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
24284            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
24285            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
24286            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
24287            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
24288            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
24289            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
24290            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
24291            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
24292            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
24293            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
24294            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
24295            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
24296            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
24297            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
24298            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
24299            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
24300            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
24301            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
24302            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
24303            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
24304            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
24305            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
24306            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
24307            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
24308            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
24309            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
24310            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
24311            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
24312            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
24313            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
24314            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
24315            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
24316            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
24317            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
24318            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
24319            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
24320            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
24321            AtomId::AtomCallStats => "ATOM_CALL_STATS",
24322            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
24323            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
24324            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
24325            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
24326            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
24327            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
24328            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
24329            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
24330            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
24331            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
24332            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
24333            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
24334            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
24335            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
24336            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
24337            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
24338            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
24339            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
24340            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
24341            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
24342            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
24343            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
24344            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
24345            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
24346            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
24347            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
24348            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
24349            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
24350            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
24351            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
24352            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
24353            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
24354            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
24355            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
24356            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
24357            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
24358            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
24359            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
24360            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
24361            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
24362            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
24363            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
24364            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
24365            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
24366            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
24367            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
24368            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
24369            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
24370            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
24371            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
24372            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
24373            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
24374            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
24375            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
24376            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
24377            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
24378            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
24379            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
24380            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
24381            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
24382            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
24383            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
24384            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
24385            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
24386            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
24387            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
24388            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
24389            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
24390            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
24391            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
24392            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
24393            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
24394            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
24395            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
24396            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
24397            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
24398            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
24399            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
24400            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
24401            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
24402            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
24403            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
24404            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
24405            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
24406            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
24407            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
24408            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
24409            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
24410            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
24411            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
24412            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
24413            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
24414            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
24415            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
24416            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
24417            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
24418            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
24419            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
24420            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
24421            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
24422            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
24423            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
24424            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
24425            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
24426            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
24427            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
24428            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
24429            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
24430            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
24431            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
24432            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
24433            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
24434            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
24435            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
24436        }
24437    }
24438}
24439// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
24440
24441// Begin of protos/perfetto/common/sys_stats_counters.proto
24442
24443// When editing entries here remember also to update "sys_stats_counters.h" with
24444// the corresponding string definitions for the actual /proc files parser.
24445
24446/// Counter definitions for Linux's /proc/meminfo.
24447#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24448#[repr(i32)]
24449pub enum MeminfoCounters {
24450    MeminfoUnspecified = 0,
24451    MeminfoMemTotal = 1,
24452    MeminfoMemFree = 2,
24453    MeminfoMemAvailable = 3,
24454    MeminfoBuffers = 4,
24455    MeminfoCached = 5,
24456    MeminfoSwapCached = 6,
24457    MeminfoActive = 7,
24458    MeminfoInactive = 8,
24459    MeminfoActiveAnon = 9,
24460    MeminfoInactiveAnon = 10,
24461    MeminfoActiveFile = 11,
24462    MeminfoInactiveFile = 12,
24463    MeminfoUnevictable = 13,
24464    MeminfoMlocked = 14,
24465    MeminfoSwapTotal = 15,
24466    MeminfoSwapFree = 16,
24467    MeminfoDirty = 17,
24468    MeminfoWriteback = 18,
24469    MeminfoAnonPages = 19,
24470    MeminfoMapped = 20,
24471    MeminfoShmem = 21,
24472    MeminfoSlab = 22,
24473    MeminfoSlabReclaimable = 23,
24474    MeminfoSlabUnreclaimable = 24,
24475    MeminfoKernelStack = 25,
24476    MeminfoPageTables = 26,
24477    MeminfoCommitLimit = 27,
24478    MeminfoCommitedAs = 28,
24479    MeminfoVmallocTotal = 29,
24480    MeminfoVmallocUsed = 30,
24481    MeminfoVmallocChunk = 31,
24482    MeminfoCmaTotal = 32,
24483    MeminfoCmaFree = 33,
24484    MeminfoGpu = 34,
24485    MeminfoZram = 35,
24486    MeminfoMisc = 36,
24487    MeminfoIonHeap = 37,
24488    MeminfoIonHeapPool = 38,
24489}
24490impl MeminfoCounters {
24491    /// String value of the enum field names used in the ProtoBuf definition.
24492    ///
24493    /// The values are not transformed in any way and thus are considered stable
24494    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24495    pub fn as_str_name(&self) -> &'static str {
24496        match self {
24497            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
24498            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
24499            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
24500            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
24501            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
24502            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
24503            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
24504            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
24505            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
24506            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
24507            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
24508            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
24509            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
24510            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
24511            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
24512            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
24513            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
24514            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
24515            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
24516            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
24517            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
24518            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
24519            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
24520            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
24521            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
24522            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
24523            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
24524            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
24525            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
24526            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
24527            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
24528            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
24529            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
24530            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
24531            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
24532            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
24533            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
24534            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
24535            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
24536        }
24537    }
24538}
24539/// Counter definitions for Linux's /proc/vmstat.
24540#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24541#[repr(i32)]
24542pub enum VmstatCounters {
24543    VmstatUnspecified = 0,
24544    VmstatNrFreePages = 1,
24545    VmstatNrAllocBatch = 2,
24546    VmstatNrInactiveAnon = 3,
24547    VmstatNrActiveAnon = 4,
24548    VmstatNrInactiveFile = 5,
24549    VmstatNrActiveFile = 6,
24550    VmstatNrUnevictable = 7,
24551    VmstatNrMlock = 8,
24552    VmstatNrAnonPages = 9,
24553    VmstatNrMapped = 10,
24554    VmstatNrFilePages = 11,
24555    VmstatNrDirty = 12,
24556    VmstatNrWriteback = 13,
24557    VmstatNrSlabReclaimable = 14,
24558    VmstatNrSlabUnreclaimable = 15,
24559    VmstatNrPageTablePages = 16,
24560    VmstatNrKernelStack = 17,
24561    VmstatNrOverhead = 18,
24562    VmstatNrUnstable = 19,
24563    VmstatNrBounce = 20,
24564    VmstatNrVmscanWrite = 21,
24565    VmstatNrVmscanImmediateReclaim = 22,
24566    VmstatNrWritebackTemp = 23,
24567    VmstatNrIsolatedAnon = 24,
24568    VmstatNrIsolatedFile = 25,
24569    VmstatNrShmem = 26,
24570    VmstatNrDirtied = 27,
24571    VmstatNrWritten = 28,
24572    VmstatNrPagesScanned = 29,
24573    VmstatWorkingsetRefault = 30,
24574    VmstatWorkingsetActivate = 31,
24575    VmstatWorkingsetNodereclaim = 32,
24576    VmstatNrAnonTransparentHugepages = 33,
24577    VmstatNrFreeCma = 34,
24578    VmstatNrSwapcache = 35,
24579    VmstatNrDirtyThreshold = 36,
24580    VmstatNrDirtyBackgroundThreshold = 37,
24581    VmstatPgpgin = 38,
24582    VmstatPgpgout = 39,
24583    VmstatPgpgoutclean = 40,
24584    VmstatPswpin = 41,
24585    VmstatPswpout = 42,
24586    VmstatPgallocDma = 43,
24587    VmstatPgallocNormal = 44,
24588    VmstatPgallocMovable = 45,
24589    VmstatPgfree = 46,
24590    VmstatPgactivate = 47,
24591    VmstatPgdeactivate = 48,
24592    VmstatPgfault = 49,
24593    VmstatPgmajfault = 50,
24594    VmstatPgrefillDma = 51,
24595    VmstatPgrefillNormal = 52,
24596    VmstatPgrefillMovable = 53,
24597    VmstatPgstealKswapdDma = 54,
24598    VmstatPgstealKswapdNormal = 55,
24599    VmstatPgstealKswapdMovable = 56,
24600    VmstatPgstealDirectDma = 57,
24601    VmstatPgstealDirectNormal = 58,
24602    VmstatPgstealDirectMovable = 59,
24603    VmstatPgscanKswapdDma = 60,
24604    VmstatPgscanKswapdNormal = 61,
24605    VmstatPgscanKswapdMovable = 62,
24606    VmstatPgscanDirectDma = 63,
24607    VmstatPgscanDirectNormal = 64,
24608    VmstatPgscanDirectMovable = 65,
24609    VmstatPgscanDirectThrottle = 66,
24610    VmstatPginodesteal = 67,
24611    VmstatSlabsScanned = 68,
24612    VmstatKswapdInodesteal = 69,
24613    VmstatKswapdLowWmarkHitQuickly = 70,
24614    VmstatKswapdHighWmarkHitQuickly = 71,
24615    VmstatPageoutrun = 72,
24616    VmstatAllocstall = 73,
24617    VmstatPgrotated = 74,
24618    VmstatDropPagecache = 75,
24619    VmstatDropSlab = 76,
24620    VmstatPgmigrateSuccess = 77,
24621    VmstatPgmigrateFail = 78,
24622    VmstatCompactMigrateScanned = 79,
24623    VmstatCompactFreeScanned = 80,
24624    VmstatCompactIsolated = 81,
24625    VmstatCompactStall = 82,
24626    VmstatCompactFail = 83,
24627    VmstatCompactSuccess = 84,
24628    VmstatCompactDaemonWake = 85,
24629    VmstatUnevictablePgsCulled = 86,
24630    VmstatUnevictablePgsScanned = 87,
24631    VmstatUnevictablePgsRescued = 88,
24632    VmstatUnevictablePgsMlocked = 89,
24633    VmstatUnevictablePgsMunlocked = 90,
24634    VmstatUnevictablePgsCleared = 91,
24635    VmstatUnevictablePgsStranded = 92,
24636    VmstatNrZspages = 93,
24637    VmstatNrIonHeap = 94,
24638    VmstatNrGpuHeap = 95,
24639    VmstatAllocstallDma = 96,
24640    VmstatAllocstallMovable = 97,
24641    VmstatAllocstallNormal = 98,
24642    VmstatCompactDaemonFreeScanned = 99,
24643    VmstatCompactDaemonMigrateScanned = 100,
24644    VmstatNrFastrpc = 101,
24645    VmstatNrIndirectlyReclaimable = 102,
24646    VmstatNrIonHeapPool = 103,
24647    VmstatNrKernelMiscReclaimable = 104,
24648    VmstatNrShadowCallStackBytes = 105,
24649    VmstatNrShmemHugepages = 106,
24650    VmstatNrShmemPmdmapped = 107,
24651    VmstatNrUnreclaimablePages = 108,
24652    VmstatNrZoneActiveAnon = 109,
24653    VmstatNrZoneActiveFile = 110,
24654    VmstatNrZoneInactiveAnon = 111,
24655    VmstatNrZoneInactiveFile = 112,
24656    VmstatNrZoneUnevictable = 113,
24657    VmstatNrZoneWritePending = 114,
24658    VmstatOomKill = 115,
24659    VmstatPglazyfree = 116,
24660    VmstatPglazyfreed = 117,
24661    VmstatPgrefill = 118,
24662    VmstatPgscanDirect = 119,
24663    VmstatPgscanKswapd = 120,
24664    VmstatPgskipDma = 121,
24665    VmstatPgskipMovable = 122,
24666    VmstatPgskipNormal = 123,
24667    VmstatPgstealDirect = 124,
24668    VmstatPgstealKswapd = 125,
24669    VmstatSwapRa = 126,
24670    VmstatSwapRaHit = 127,
24671    VmstatWorkingsetRestore = 128,
24672    VmstatAllocstallDevice = 129,
24673    VmstatAllocstallDma32 = 130,
24674    VmstatBalloonDeflate = 131,
24675    VmstatBalloonInflate = 132,
24676    VmstatBalloonMigrate = 133,
24677    VmstatCmaAllocFail = 134,
24678    VmstatCmaAllocSuccess = 135,
24679    VmstatNrFileHugepages = 136,
24680    VmstatNrFilePmdmapped = 137,
24681    VmstatNrFollPinAcquired = 138,
24682    VmstatNrFollPinReleased = 139,
24683    VmstatNrSecPageTablePages = 140,
24684    VmstatNrShadowCallStack = 141,
24685    VmstatNrSwapcached = 142,
24686    VmstatNrThrottledWritten = 143,
24687    VmstatPgallocDevice = 144,
24688    VmstatPgallocDma32 = 145,
24689    VmstatPgdemoteDirect = 146,
24690    VmstatPgdemoteKswapd = 147,
24691    VmstatPgreuse = 148,
24692    VmstatPgscanAnon = 149,
24693    VmstatPgscanFile = 150,
24694    VmstatPgskipDevice = 151,
24695    VmstatPgskipDma32 = 152,
24696    VmstatPgstealAnon = 153,
24697    VmstatPgstealFile = 154,
24698    VmstatThpCollapseAlloc = 155,
24699    VmstatThpCollapseAllocFailed = 156,
24700    VmstatThpDeferredSplitPage = 157,
24701    VmstatThpFaultAlloc = 158,
24702    VmstatThpFaultFallback = 159,
24703    VmstatThpFaultFallbackCharge = 160,
24704    VmstatThpFileAlloc = 161,
24705    VmstatThpFileFallback = 162,
24706    VmstatThpFileFallbackCharge = 163,
24707    VmstatThpFileMapped = 164,
24708    VmstatThpMigrationFail = 165,
24709    VmstatThpMigrationSplit = 166,
24710    VmstatThpMigrationSuccess = 167,
24711    VmstatThpScanExceedNonePte = 168,
24712    VmstatThpScanExceedSharePte = 169,
24713    VmstatThpScanExceedSwapPte = 170,
24714    VmstatThpSplitPage = 171,
24715    VmstatThpSplitPageFailed = 172,
24716    VmstatThpSplitPmd = 173,
24717    VmstatThpSwpout = 174,
24718    VmstatThpSwpoutFallback = 175,
24719    VmstatThpZeroPageAlloc = 176,
24720    VmstatThpZeroPageAllocFailed = 177,
24721    VmstatVmaLockAbort = 178,
24722    VmstatVmaLockMiss = 179,
24723    VmstatVmaLockRetry = 180,
24724    VmstatVmaLockSuccess = 181,
24725    VmstatWorkingsetActivateAnon = 182,
24726    VmstatWorkingsetActivateFile = 183,
24727    VmstatWorkingsetNodes = 184,
24728    VmstatWorkingsetRefaultAnon = 185,
24729    VmstatWorkingsetRefaultFile = 186,
24730    VmstatWorkingsetRestoreAnon = 187,
24731    VmstatWorkingsetRestoreFile = 188,
24732}
24733impl VmstatCounters {
24734    /// String value of the enum field names used in the ProtoBuf definition.
24735    ///
24736    /// The values are not transformed in any way and thus are considered stable
24737    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24738    pub fn as_str_name(&self) -> &'static str {
24739        match self {
24740            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
24741            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
24742            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
24743            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
24744            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
24745            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
24746            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
24747            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
24748            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
24749            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
24750            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
24751            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
24752            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
24753            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
24754            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
24755            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
24756            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
24757            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
24758            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
24759            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
24760            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
24761            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
24762            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
24763            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
24764            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
24765            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
24766            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
24767            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
24768            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
24769            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
24770            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
24771            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
24772            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
24773            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
24774            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
24775            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
24776            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
24777            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
24778            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
24779            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
24780            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
24781            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
24782            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
24783            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
24784            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
24785            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
24786            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
24787            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
24788            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
24789            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
24790            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
24791            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
24792            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
24793            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
24794            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
24795            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
24796            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
24797            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
24798            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
24799            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
24800            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
24801            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
24802            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
24803            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
24804            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
24805            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
24806            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
24807            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
24808            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
24809            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
24810            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
24811            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
24812            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
24813            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
24814            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
24815            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
24816            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
24817            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
24818            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
24819            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
24820            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
24821            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
24822            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
24823            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
24824            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
24825            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
24826            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
24827            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
24828            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
24829            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
24830            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
24831            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
24832            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
24833            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
24834            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
24835            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
24836            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
24837            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
24838            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
24839            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
24840            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
24841            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
24842            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
24843            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
24844            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
24845            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
24846            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
24847            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
24848            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
24849            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
24850            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
24851            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
24852            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
24853            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
24854            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
24855            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
24856            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
24857            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
24858            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
24859            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
24860            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
24861            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
24862            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
24863            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
24864            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
24865            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
24866            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
24867            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
24868            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
24869            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
24870            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
24871            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
24872            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
24873            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
24874            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
24875            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
24876            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
24877            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
24878            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
24879            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
24880            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
24881            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
24882            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
24883            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
24884            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
24885            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
24886            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
24887            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
24888            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
24889            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
24890            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
24891            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
24892            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
24893            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
24894            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
24895            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
24896            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
24897            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
24898            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
24899            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
24900            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
24901            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
24902            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
24903            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
24904            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
24905            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
24906            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
24907            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
24908            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
24909            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
24910            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
24911            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
24912            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
24913            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
24914            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
24915            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
24916            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
24917            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
24918            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
24919            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
24920            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
24921            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
24922            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
24923            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
24924            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
24925            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
24926            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
24927            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
24928            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
24929        }
24930    }
24931}
24932// End of protos/perfetto/trace/android/app_wakelock_data.proto
24933
24934// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
24935
24936/// Describes the packet type and direction. CMD and EVT are unidirectional, so
24937/// no need to differentiate the direction.
24938#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24939#[repr(i32)]
24940pub enum BluetoothTracePacketType {
24941    HciCmd = 1,
24942    HciEvt = 2,
24943    HciAclRx = 3,
24944    HciAclTx = 4,
24945    HciScoRx = 5,
24946    HciScoTx = 6,
24947    HciIsoRx = 7,
24948    HciIsoTx = 8,
24949}
24950impl BluetoothTracePacketType {
24951    /// String value of the enum field names used in the ProtoBuf definition.
24952    ///
24953    /// The values are not transformed in any way and thus are considered stable
24954    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24955    pub fn as_str_name(&self) -> &'static str {
24956        match self {
24957            BluetoothTracePacketType::HciCmd => "HCI_CMD",
24958            BluetoothTracePacketType::HciEvt => "HCI_EVT",
24959            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
24960            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
24961            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
24962            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
24963            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
24964            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
24965        }
24966    }
24967}
24968// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
24969
24970// Begin of protos/perfetto/trace/android/network_trace.proto
24971
24972#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24973#[repr(i32)]
24974pub enum TrafficDirection {
24975    DirUnspecified = 0,
24976    DirIngress = 1,
24977    DirEgress = 2,
24978}
24979impl TrafficDirection {
24980    /// String value of the enum field names used in the ProtoBuf definition.
24981    ///
24982    /// The values are not transformed in any way and thus are considered stable
24983    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24984    pub fn as_str_name(&self) -> &'static str {
24985        match self {
24986            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
24987            TrafficDirection::DirIngress => "DIR_INGRESS",
24988            TrafficDirection::DirEgress => "DIR_EGRESS",
24989        }
24990    }
24991}
24992#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24993#[repr(i32)]
24994pub enum TrustedOverlay {
24995    Unset = 0,
24996    Disabled = 1,
24997    Enabled = 2,
24998}
24999impl TrustedOverlay {
25000    /// String value of the enum field names used in the ProtoBuf definition.
25001    ///
25002    /// The values are not transformed in any way and thus are considered stable
25003    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25004    pub fn as_str_name(&self) -> &'static str {
25005        match self {
25006            TrustedOverlay::Unset => "UNSET",
25007            TrustedOverlay::Disabled => "DISABLED",
25008            TrustedOverlay::Enabled => "ENABLED",
25009        }
25010    }
25011}
25012/// Must match definition in the IComposerClient HAL
25013#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25014#[repr(i32)]
25015pub enum HwcCompositionType {
25016    /// Invalid composition type
25017    HwcTypeUnspecified = 0,
25018    /// Layer was composited by the client into the client target buffer
25019    HwcTypeClient = 1,
25020    /// Layer was composited by the device through hardware overlays
25021    HwcTypeDevice = 2,
25022    /// Layer was composited by the device using a color
25023    HwcTypeSolidColor = 3,
25024    /// Similar to DEVICE, but the layer position may have been asynchronously set
25025    /// through setCursorPosition
25026    HwcTypeCursor = 4,
25027    /// Layer was composited by the device via a sideband stream
25028    HwcTypeSideband = 5,
25029    /// Layer was composited by hardware optimized for display decoration
25030    HwcTypeDisplayDecoration = 6,
25031}
25032impl HwcCompositionType {
25033    /// String value of the enum field names used in the ProtoBuf definition.
25034    ///
25035    /// The values are not transformed in any way and thus are considered stable
25036    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25037    pub fn as_str_name(&self) -> &'static str {
25038        match self {
25039            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
25040            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
25041            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
25042            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
25043            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
25044            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
25045            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
25046        }
25047    }
25048}
25049#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25050#[repr(i32)]
25051pub enum FtraceParseStatus {
25052    FtraceStatusUnspecified = 0,
25053    /// Not written, used for convenience of implementation:
25054    FtraceStatusOk = 1,
25055    /// Issues with reading data out of the ftrace ring buffer:
25056    FtraceStatusUnexpectedReadError = 2,
25057    FtraceStatusPartialPageRead = 3,
25058    /// Ring buffer binary data not matching our understanding of the layout:
25059    FtraceStatusAbiInvalidPageHeader = 4,
25060    FtraceStatusAbiShortEventHeader = 5,
25061    FtraceStatusAbiNullPadding = 6,
25062    FtraceStatusAbiShortPaddingLength = 7,
25063    FtraceStatusAbiInvalidPaddingLength = 8,
25064    FtraceStatusAbiShortTimeExtend = 9,
25065    FtraceStatusAbiShortTimeStamp = 10,
25066    FtraceStatusAbiShortDataLength = 11,
25067    FtraceStatusAbiZeroDataLength = 12,
25068    FtraceStatusAbiInvalidDataLength = 13,
25069    FtraceStatusAbiShortEventId = 14,
25070    FtraceStatusAbiEndOverflow = 15,
25071    /// Issues with parsing the event payload:
25072    FtraceStatusShortCompactEvent = 16,
25073    FtraceStatusInvalidEvent = 17,
25074}
25075impl FtraceParseStatus {
25076    /// String value of the enum field names used in the ProtoBuf definition.
25077    ///
25078    /// The values are not transformed in any way and thus are considered stable
25079    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25080    pub fn as_str_name(&self) -> &'static str {
25081        match self {
25082            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
25083            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
25084            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
25085            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
25086            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
25087            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
25088            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
25089            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
25090            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
25091            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
25092            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
25093            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
25094            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
25095            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
25096            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
25097            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
25098            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
25099            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
25100        }
25101    }
25102}
25103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25104#[repr(i32)]
25105pub enum FtraceClock {
25106    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
25107    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
25108    Unspecified = 0,
25109    Unknown = 1,
25110    Global = 2,
25111    Local = 3,
25112    MonoRaw = 4,
25113}
25114impl FtraceClock {
25115    /// String value of the enum field names used in the ProtoBuf definition.
25116    ///
25117    /// The values are not transformed in any way and thus are considered stable
25118    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25119    pub fn as_str_name(&self) -> &'static str {
25120        match self {
25121            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
25122            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
25123            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
25124            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
25125            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
25126        }
25127    }
25128}
25129// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
25130
25131// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
25132
25133// Describes Chrome's Compositor scheduler's current state and associated
25134// variables.
25135//
25136// These protos and enums were adapted from the corresponding original JSON
25137// trace event for the scheduler state. In contrast to the JSON, we use strongly
25138// typed enum values instead of strings for many fields, and
25139// microsecond-granularity timestamps.
25140//
25141// The original format was generated in JSON by the code at
25142// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
25143//
25144// And is now generated as protozero:
25145// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
25146//
25147// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
25148
25149#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25150#[repr(i32)]
25151pub enum ChromeCompositorSchedulerAction {
25152    CcSchedulerActionUnspecified = 0,
25153    CcSchedulerActionNone = 1,
25154    CcSchedulerActionSendBeginMainFrame = 2,
25155    CcSchedulerActionCommit = 3,
25156    CcSchedulerActionActivateSyncTree = 4,
25157    CcSchedulerActionDrawIfPossible = 5,
25158    CcSchedulerActionDrawForced = 6,
25159    CcSchedulerActionDrawAbort = 7,
25160    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
25161    CcSchedulerActionPrepareTiles = 9,
25162    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
25163    CcSchedulerActionPerformImplSideInvalidation = 11,
25164    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
25165    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
25166}
25167impl ChromeCompositorSchedulerAction {
25168    /// String value of the enum field names used in the ProtoBuf definition.
25169    ///
25170    /// The values are not transformed in any way and thus are considered stable
25171    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25172    pub fn as_str_name(&self) -> &'static str {
25173        match self {
25174            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
25175            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
25176            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
25177            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
25178            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
25179            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
25180            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
25181            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
25182            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
25183            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
25184            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
25185            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
25186            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
25187            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
25188        }
25189    }
25190}
25191// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
25192
25193// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
25194
25195// Describes the state of the RendererScheduler for a given Renderer Process.
25196
25197/// RAIL Mode is an indication of the kind of work that a Renderer is currently
25198/// performing which is in turn used to prioritise work accordingly.
25199/// A fuller description of these modes can be found <https://web.dev/rail/>
25200#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25201#[repr(i32)]
25202pub enum ChromeRailMode {
25203    RailModeNone = 0,
25204    RailModeResponse = 1,
25205    RailModeAnimation = 2,
25206    RailModeIdle = 3,
25207    RailModeLoad = 4,
25208}
25209impl ChromeRailMode {
25210    /// String value of the enum field names used in the ProtoBuf definition.
25211    ///
25212    /// The values are not transformed in any way and thus are considered stable
25213    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25214    pub fn as_str_name(&self) -> &'static str {
25215        match self {
25216            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
25217            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
25218            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
25219            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
25220            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
25221        }
25222    }
25223}