perfetto_trace_protos/
perfetto.protos.rs

1// Begin of protos/perfetto/common/ftrace_descriptor.proto
2
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct FtraceDescriptor {
5    /// Report the available atrace categories.
6    ///
7    /// Used by Traceur via `perfetto --query`.
8    #[prost(message, repeated, tag="1")]
9    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
10}
11/// Nested message and enum types in `FtraceDescriptor`.
12pub mod ftrace_descriptor {
13    #[derive(Clone, PartialEq, ::prost::Message)]
14    pub struct AtraceCategory {
15        #[prost(string, optional, tag="1")]
16        pub name: ::core::option::Option<::prost::alloc::string::String>,
17        #[prost(string, optional, tag="2")]
18        pub description: ::core::option::Option<::prost::alloc::string::String>,
19    }
20}
21// End of protos/perfetto/common/ftrace_descriptor.proto
22
23// Begin of protos/perfetto/common/gpu_counter_descriptor.proto
24
25/// Description of GPU counters.
26/// This message is sent by a GPU counter producer to specify the counters
27/// available in the hardware.
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct GpuCounterDescriptor {
30    #[prost(message, repeated, tag="1")]
31    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
32    #[prost(message, repeated, tag="2")]
33    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
34    /// optional.  Minimum sampling period supported by the producer in
35    /// nanoseconds.
36    #[prost(uint64, optional, tag="3")]
37    pub min_sampling_period_ns: ::core::option::Option<u64>,
38    /// optional.  Maximum sampling period supported by the producer in
39    /// nanoseconds.
40    #[prost(uint64, optional, tag="4")]
41    pub max_sampling_period_ns: ::core::option::Option<u64>,
42    /// optional.  The producer supports counter sampling by instrumenting the
43    /// command buffer.
44    #[prost(bool, optional, tag="5")]
45    pub supports_instrumented_sampling: ::core::option::Option<bool>,
46}
47/// Nested message and enum types in `GpuCounterDescriptor`.
48pub mod gpu_counter_descriptor {
49    #[derive(Clone, PartialEq, ::prost::Message)]
50    pub struct GpuCounterSpec {
51        #[prost(uint32, optional, tag="1")]
52        pub counter_id: ::core::option::Option<u32>,
53        #[prost(string, optional, tag="2")]
54        pub name: ::core::option::Option<::prost::alloc::string::String>,
55        #[prost(string, optional, tag="3")]
56        pub description: ::core::option::Option<::prost::alloc::string::String>,
57        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
58        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
59        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
60        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
61        #[prost(bool, optional, tag="9")]
62        pub select_by_default: ::core::option::Option<bool>,
63        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
64        pub groups: ::prost::alloc::vec::Vec<i32>,
65        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
66        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
67    }
68    /// Nested message and enum types in `GpuCounterSpec`.
69    pub mod gpu_counter_spec {
70        #[derive(Clone, PartialEq, ::prost::Oneof)]
71        pub enum PeakValue {
72            #[prost(int64, tag="5")]
73            IntPeakValue(i64),
74            #[prost(double, tag="6")]
75            DoublePeakValue(f64),
76        }
77    }
78    /// Allow producer to group counters into block to represent counter islands.
79    /// A capacity may be specified to indicate the number of counters that can be
80    /// enable simultaneously in that block.
81    #[derive(Clone, PartialEq, ::prost::Message)]
82    pub struct GpuCounterBlock {
83        /// required. Unique ID for the counter group.
84        #[prost(uint32, optional, tag="1")]
85        pub block_id: ::core::option::Option<u32>,
86        /// optional. Number of counters supported by the block. No limit if unset.
87        #[prost(uint32, optional, tag="2")]
88        pub block_capacity: ::core::option::Option<u32>,
89        /// optional. Name of block.
90        #[prost(string, optional, tag="3")]
91        pub name: ::core::option::Option<::prost::alloc::string::String>,
92        /// optional. Description for the block.
93        #[prost(string, optional, tag="4")]
94        pub description: ::core::option::Option<::prost::alloc::string::String>,
95        /// list of counters that are part of the block.
96        #[prost(uint32, repeated, packed="false", tag="5")]
97        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
98    }
99    /// Logical groups for a counter.  This is used in the UI to present the
100    /// related counters together.
101    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
102    #[repr(i32)]
103    pub enum GpuCounterGroup {
104        Unclassified = 0,
105        System = 1,
106        Vertices = 2,
107        Fragments = 3,
108        Primitives = 4,
109        /// Includes counters relating to caching and bandwidth.
110        Memory = 5,
111        Compute = 6,
112    }
113    impl GpuCounterGroup {
114        /// String value of the enum field names used in the ProtoBuf definition.
115        ///
116        /// The values are not transformed in any way and thus are considered stable
117        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
118        pub fn as_str_name(&self) -> &'static str {
119            match self {
120                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
121                GpuCounterGroup::System => "SYSTEM",
122                GpuCounterGroup::Vertices => "VERTICES",
123                GpuCounterGroup::Fragments => "FRAGMENTS",
124                GpuCounterGroup::Primitives => "PRIMITIVES",
125                GpuCounterGroup::Memory => "MEMORY",
126                GpuCounterGroup::Compute => "COMPUTE",
127            }
128        }
129    }
130    /// next id: 41
131    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
132    #[repr(i32)]
133    pub enum MeasureUnit {
134        None = 0,
135        Bit = 1,
136        Kilobit = 2,
137        Megabit = 3,
138        Gigabit = 4,
139        Terabit = 5,
140        Petabit = 6,
141        Byte = 7,
142        Kilobyte = 8,
143        Megabyte = 9,
144        Gigabyte = 10,
145        Terabyte = 11,
146        Petabyte = 12,
147        Hertz = 13,
148        Kilohertz = 14,
149        Megahertz = 15,
150        Gigahertz = 16,
151        Terahertz = 17,
152        Petahertz = 18,
153        Nanosecond = 19,
154        Microsecond = 20,
155        Millisecond = 21,
156        Second = 22,
157        Minute = 23,
158        Hour = 24,
159        Vertex = 25,
160        Pixel = 26,
161        Triangle = 27,
162        Primitive = 38,
163        Fragment = 39,
164        Milliwatt = 28,
165        Watt = 29,
166        Kilowatt = 30,
167        Joule = 31,
168        Volt = 32,
169        Ampere = 33,
170        Celsius = 34,
171        Fahrenheit = 35,
172        Kelvin = 36,
173        /// Values should be out of 100.
174        Percent = 37,
175        Instruction = 40,
176    }
177    impl MeasureUnit {
178        /// String value of the enum field names used in the ProtoBuf definition.
179        ///
180        /// The values are not transformed in any way and thus are considered stable
181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
182        pub fn as_str_name(&self) -> &'static str {
183            match self {
184                MeasureUnit::None => "NONE",
185                MeasureUnit::Bit => "BIT",
186                MeasureUnit::Kilobit => "KILOBIT",
187                MeasureUnit::Megabit => "MEGABIT",
188                MeasureUnit::Gigabit => "GIGABIT",
189                MeasureUnit::Terabit => "TERABIT",
190                MeasureUnit::Petabit => "PETABIT",
191                MeasureUnit::Byte => "BYTE",
192                MeasureUnit::Kilobyte => "KILOBYTE",
193                MeasureUnit::Megabyte => "MEGABYTE",
194                MeasureUnit::Gigabyte => "GIGABYTE",
195                MeasureUnit::Terabyte => "TERABYTE",
196                MeasureUnit::Petabyte => "PETABYTE",
197                MeasureUnit::Hertz => "HERTZ",
198                MeasureUnit::Kilohertz => "KILOHERTZ",
199                MeasureUnit::Megahertz => "MEGAHERTZ",
200                MeasureUnit::Gigahertz => "GIGAHERTZ",
201                MeasureUnit::Terahertz => "TERAHERTZ",
202                MeasureUnit::Petahertz => "PETAHERTZ",
203                MeasureUnit::Nanosecond => "NANOSECOND",
204                MeasureUnit::Microsecond => "MICROSECOND",
205                MeasureUnit::Millisecond => "MILLISECOND",
206                MeasureUnit::Second => "SECOND",
207                MeasureUnit::Minute => "MINUTE",
208                MeasureUnit::Hour => "HOUR",
209                MeasureUnit::Vertex => "VERTEX",
210                MeasureUnit::Pixel => "PIXEL",
211                MeasureUnit::Triangle => "TRIANGLE",
212                MeasureUnit::Primitive => "PRIMITIVE",
213                MeasureUnit::Fragment => "FRAGMENT",
214                MeasureUnit::Milliwatt => "MILLIWATT",
215                MeasureUnit::Watt => "WATT",
216                MeasureUnit::Kilowatt => "KILOWATT",
217                MeasureUnit::Joule => "JOULE",
218                MeasureUnit::Volt => "VOLT",
219                MeasureUnit::Ampere => "AMPERE",
220                MeasureUnit::Celsius => "CELSIUS",
221                MeasureUnit::Fahrenheit => "FAHRENHEIT",
222                MeasureUnit::Kelvin => "KELVIN",
223                MeasureUnit::Percent => "PERCENT",
224                MeasureUnit::Instruction => "INSTRUCTION",
225            }
226        }
227    }
228}
229// End of protos/perfetto/common/gpu_counter_descriptor.proto
230
231// Begin of protos/perfetto/common/track_event_descriptor.proto
232
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct TrackEventCategory {
235    #[prost(string, optional, tag="1")]
236    pub name: ::core::option::Option<::prost::alloc::string::String>,
237    #[prost(string, optional, tag="2")]
238    pub description: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, repeated, tag="3")]
240    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct TrackEventDescriptor {
244    #[prost(message, repeated, tag="1")]
245    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
246}
247// End of protos/perfetto/common/track_event_descriptor.proto
248
249// Begin of protos/perfetto/common/data_source_descriptor.proto
250
251/// This message is sent from Producer(s) to the tracing Service when registering
252/// to advertise their capabilities. It describes the structure of tracing
253/// protos that will be produced by the data source and the supported filters.
254#[derive(Clone, PartialEq, ::prost::Message)]
255pub struct DataSourceDescriptor {
256    /// e.g., "linux.ftrace", "chromium.tracing"
257    #[prost(string, optional, tag="1")]
258    pub name: ::core::option::Option<::prost::alloc::string::String>,
259    /// When non-zero, this is a unique ID within the scope of the Producer for
260    /// this data source (it is NOT globally unique). This is useful to
261    /// differentiate between data sources with matching names when calling
262    /// UpdateDataSource(). This field has been introduced in November 2021
263    /// (v22, Android T) and is not supported on older versions.
264    #[prost(uint64, optional, tag="7")]
265    pub id: ::core::option::Option<u64>,
266    /// When true the data source is expected to ack the stop request through the
267    /// NotifyDataSourceStopped() IPC. This field has been introduced after
268    /// Android P in Jul 2018 and is not supported on older versions.
269    #[prost(bool, optional, tag="2")]
270    pub will_notify_on_stop: ::core::option::Option<bool>,
271    /// When true the data source is expected to ack the start request through the
272    /// NotifyDataSourceStarted() IPC. This field has been introduced after
273    /// Android P in March 2019 and is not supported on older versions.
274    #[prost(bool, optional, tag="3")]
275    pub will_notify_on_start: ::core::option::Option<bool>,
276    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
277    /// set if the data source writes packets that refer to previous trace
278    /// contents, and knows how to stop referring to the already-emitted data.
279    #[prost(bool, optional, tag="4")]
280    pub handles_incremental_state_clear: ::core::option::Option<bool>,
281    /// If true, indicates that the data source does nothing upon Flush. This
282    /// allows the service to reduce the flush-related IPC traffic and better deal
283    /// with frozen producers (see go/perfetto-frozen). This is usually the case
284    /// for data sources like 'track_event' that don't have access to the various
285    /// thread task runners to post a flush task and rely purely on server-side
286    /// scraping.
287    /// Introduced in v39 / Android V.
288    #[prost(bool, optional, tag="9")]
289    pub no_flush: ::core::option::Option<bool>,
290    /// Optional specification about available GPU counters.
291    #[prost(message, optional, tag="5")]
292    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
293    #[prost(message, optional, tag="6")]
294    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
295    #[prost(message, optional, tag="8")]
296    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
297}
298// End of protos/perfetto/common/data_source_descriptor.proto
299
300// Begin of protos/perfetto/common/tracing_service_state.proto
301
302/// Reports the state of the tracing service. Used to gather details about the
303/// data sources connected.
304/// See ConsumerPort::QueryServiceState().
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct TracingServiceState {
307    /// Lists all the producers connected.
308    #[prost(message, repeated, tag="1")]
309    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
310    /// Lists the data sources available.
311    #[prost(message, repeated, tag="2")]
312    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
313    /// Lists the tracing sessions active AND owned by a consumer that has the same
314    /// UID of the caller (or all of them if the caller is root).
315    /// Introduced in v24 / Android T.
316    #[prost(message, repeated, tag="6")]
317    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
318    /// This is always set to true from v24 and beyond. This flag is only used to
319    /// tell the difference between: (1) talking to a recent service which happens
320    /// to have no tracing session active; (2) talking to an older version of the
321    /// service which will never report any tracing session.
322    #[prost(bool, optional, tag="7")]
323    pub supports_tracing_sessions: ::core::option::Option<bool>,
324    /// Total number of tracing sessions.
325    #[prost(int32, optional, tag="3")]
326    pub num_sessions: ::core::option::Option<i32>,
327    /// Number of tracing sessions in the started state. Always <= num_sessions.
328    #[prost(int32, optional, tag="4")]
329    pub num_sessions_started: ::core::option::Option<i32>,
330    /// The version of traced (the same returned by `traced --version`).
331    /// This is a human readable string with and its format varies depending on
332    /// the build system and the repo (standalone vs AOSP).
333    /// This is intended for human debugging only.
334    #[prost(string, optional, tag="5")]
335    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
336}
337/// Nested message and enum types in `TracingServiceState`.
338pub mod tracing_service_state {
339    /// Describes a producer process.
340    #[derive(Clone, PartialEq, ::prost::Message)]
341    pub struct Producer {
342        /// Unique ID of the producer (monotonic counter).
343        #[prost(int32, optional, tag="1")]
344        pub id: ::core::option::Option<i32>,
345        /// Typically matches the process name.
346        #[prost(string, optional, tag="2")]
347        pub name: ::core::option::Option<::prost::alloc::string::String>,
348        /// Unix pid of the remote process. Supported only on Linux-based systems.
349        /// Introduced in v24 / Android T.
350        #[prost(int32, optional, tag="5")]
351        pub pid: ::core::option::Option<i32>,
352        /// Unix uid of the remote process.
353        #[prost(int32, optional, tag="3")]
354        pub uid: ::core::option::Option<i32>,
355        /// The version of the client library used by the producer.
356        /// This is a human readable string with and its format varies depending on
357        /// the build system and the repo (standalone vs AOSP).
358        /// This is intended for human debugging only.
359        #[prost(string, optional, tag="4")]
360        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
361        /// Returns true if the process appears to be frozen (Android only).
362        /// Introduced in Perfetto V49 / Android 24Q4.
363        #[prost(bool, optional, tag="6")]
364        pub frozen: ::core::option::Option<bool>,
365    }
366    /// Describes a data source registered by a producer. Data sources are listed
367    /// regardless of the fact that they are being used or not.
368    #[derive(Clone, PartialEq, ::prost::Message)]
369    pub struct DataSource {
370        /// Descriptor passed by the data source when calling RegisterDataSource().
371        #[prost(message, optional, tag="1")]
372        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
373        /// ID of the producer, as per Producer.id.
374        #[prost(int32, optional, tag="2")]
375        pub producer_id: ::core::option::Option<i32>,
376    }
377    #[derive(Clone, PartialEq, ::prost::Message)]
378    pub struct TracingSession {
379        /// The TracingSessionID.
380        #[prost(uint64, optional, tag="1")]
381        pub id: ::core::option::Option<u64>,
382        /// The Unix uid of the consumer that started the session.
383        /// This is meaningful only if the caller is root. In all other cases only
384        /// tracing sessions that match the caller UID will be displayed.
385        #[prost(int32, optional, tag="2")]
386        pub consumer_uid: ::core::option::Option<i32>,
387        /// Internal state of the tracing session.
388        /// These strings are FYI only and subjected to change.
389        #[prost(string, optional, tag="3")]
390        pub state: ::core::option::Option<::prost::alloc::string::String>,
391        /// The unique_session_name as set in the trace config (might be empty).
392        #[prost(string, optional, tag="4")]
393        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
394        /// The number and size of each buffer.
395        #[prost(uint32, repeated, packed="false", tag="5")]
396        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
397        /// Duration, as specified in the TraceConfig.duration_ms.
398        #[prost(uint32, optional, tag="6")]
399        pub duration_ms: ::core::option::Option<u32>,
400        /// Number of data sources involved in the session.
401        #[prost(uint32, optional, tag="7")]
402        pub num_data_sources: ::core::option::Option<u32>,
403        /// Time when the session was started, in the CLOCK_REALTIME domain.
404        /// Available only on Linux-based systems.
405        #[prost(int64, optional, tag="8")]
406        pub start_realtime_ns: ::core::option::Option<i64>,
407        // The fields below have been introduced in v42.
408
409        /// The bugreport_score, as set in TraceConfig.bugreport_score.
410        #[prost(int32, optional, tag="9")]
411        pub bugreport_score: ::core::option::Option<i32>,
412        /// As per TraceConfig.bugreport_filename.
413        #[prost(string, optional, tag="10")]
414        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
415        /// If true, the session is in the STARTED state. If false the session is in
416        /// any other state (see `state` field).
417        #[prost(bool, optional, tag="11")]
418        pub is_started: ::core::option::Option<bool>,
419    }
420}
421// End of protos/perfetto/common/builtin_clock.proto
422
423// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
424
425/// Data source that lists game modes and game interventions of games
426/// on an Android device.
427#[derive(Clone, PartialEq, ::prost::Message)]
428pub struct AndroidGameInterventionListConfig {
429    /// If not empty, emit info about only the following list of package names
430    /// (exact match, no regex). Otherwise, emit info about all packages.
431    #[prost(string, repeated, tag="1")]
432    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
433}
434// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
435
436// Begin of protos/perfetto/config/android/android_input_event_config.proto
437
438/// Custom configuration for the "android.input.inputevent" data source.
439///
440/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
441///
442/// Next ID: 5
443#[derive(Clone, PartialEq, ::prost::Message)]
444pub struct AndroidInputEventConfig {
445    /// The tracing mode to use. If unspecified, it will default to
446    /// TRACE_MODE_USE_RULES.
447    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
448    pub mode: ::core::option::Option<i32>,
449    /// The list of rules to use to determine the trace level of events.
450    /// Each event will be traced using the TraceLevel of the first rule that it
451    /// triggers from this list. The rules are evaluated in the order in which they
452    /// are specified. If an event does not match any of the rules,
453    /// TRACE_LEVEL_NONE will be used by default.
454    #[prost(message, repeated, tag="2")]
455    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
456    // --- Control flags ---
457
458    /// Trace input events processed by the system as they are being dispatched
459    /// to application windows. All trace rules will apply.
460    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
461    ///    it will
462    ///      trace InputDispatcher's inbound events (which does not include events
463    ///      synthesized within InputDispatcher) that match the rules.
464    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
465    ///    events
466    ///      matching the rules, including all events synthesized within
467    ///      InputDispatcher, will be traced.
468    #[prost(bool, optional, tag="3")]
469    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
470    /// Trace details about which windows the system is sending each input event
471    /// to. All trace rules will apply.
472    #[prost(bool, optional, tag="4")]
473    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
474}
475/// Nested message and enum types in `AndroidInputEventConfig`.
476pub mod android_input_event_config {
477    /// A rule that specifies the TraceLevel for an event based on matching
478    /// conditions. All matchers in the rule are optional. To trigger this rule, an
479    /// event must match all of its specified matchers (i.e. the matchers function
480    /// like a series of conditions connected by a logical 'AND' operator). A rule
481    /// with no specified matchers will match all events. Next ID: 6
482    #[derive(Clone, PartialEq, ::prost::Message)]
483    pub struct TraceRule {
484        /// The trace level to be used for events that trigger this rule.
485        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
486        #[prost(enumeration="TraceLevel", optional, tag="1")]
487        pub trace_level: ::core::option::Option<i32>,
488        // --- Optional Matchers ---
489
490        /// Package matchers
491        ///
492        /// Respectively matches if all or any of the target apps for this event are
493        /// contained in the specified list of package names.
494        ///
495        /// Intended usage:
496        ///    - Use match_all_packages to selectively allow tracing for the listed
497        ///    packages.
498        ///    - Use match_any_packages to selectively deny tracing for certain
499        ///    packages.
500        ///
501        /// WARNING: Great care must be taken when designing rules for field tracing!
502        ///           This is because each event is almost always sent to more than
503        ///           one app.
504        ///               For example, when allowing tracing for a package that has a
505        ///               spy window
506        ///           over the display (e.g. SystemUI) using match_any_packages,
507        ///           essentially all input will be recorded on that display. This is
508        ///           because the events will be sent to the spy as well as the
509        ///           foreground app, and regardless of what the foreground app is,
510        ///           the event will end up being traced.
511        ///               Alternatively, when attempting to block tracing for specific
512        ///               packages using
513        ///           match_all_packages, no events will likely be blocked. This is
514        ///           because the event will also be sent to other apps (such as, but
515        ///           not limited to, ones with spy windows), so the matcher will not
516        ///           match unless all other targets are also listed under the
517        ///           match_all_packages list.
518        #[prost(string, repeated, tag="2")]
519        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
520        #[prost(string, repeated, tag="3")]
521        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
522        /// Matches if the event is secure, which means that at least one of the
523        /// targets of this event is using the window flag FLAG_SECURE.
524        #[prost(bool, optional, tag="4")]
525        pub match_secure: ::core::option::Option<bool>,
526        /// Matches if there was an active IME connection while this event was being
527        /// processed.
528        #[prost(bool, optional, tag="5")]
529        pub match_ime_connection_active: ::core::option::Option<bool>,
530    }
531    /// Trace modes are tracing presets that are included in the system.
532    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
533    #[repr(i32)]
534    pub enum TraceMode {
535        /// Preset mode for maximal tracing.
536        /// WARNING: This will bypass all privacy measures on debuggable builds, and
537        /// will record all
538        ///           input events processed by the system, regardless of the context
539        ///           in which they were processed. It should only be used for tracing
540        ///           on a local device or for tests. It should NEVER be used for
541        ///           field tracing.
542        TraceAll = 0,
543        /// Use the tracing rules defined in this config to specify what events to
544        /// trace.
545        UseRules = 1,
546    }
547    impl TraceMode {
548        /// String value of the enum field names used in the ProtoBuf definition.
549        ///
550        /// The values are not transformed in any way and thus are considered stable
551        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
552        pub fn as_str_name(&self) -> &'static str {
553            match self {
554                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
555                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
556            }
557        }
558    }
559    /// The level of tracing that should be applied to an event.
560    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
561    #[repr(i32)]
562    pub enum TraceLevel {
563        /// Do not trace the input event.
564        None = 0,
565        /// Trace the event as a redacted event, where certain sensitive fields are
566        /// omitted from the trace, including the coordinates of pointer events and
567        /// the key/scan codes of key events.
568        Redacted = 1,
569        /// Trace the complete event.
570        Complete = 2,
571    }
572    impl TraceLevel {
573        /// String value of the enum field names used in the ProtoBuf definition.
574        ///
575        /// The values are not transformed in any way and thus are considered stable
576        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
577        pub fn as_str_name(&self) -> &'static str {
578            match self {
579                TraceLevel::None => "TRACE_LEVEL_NONE",
580                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
581                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
582            }
583        }
584    }
585}
586// End of protos/perfetto/common/android_log_constants.proto
587
588// Begin of protos/perfetto/config/android/android_log_config.proto
589
590#[derive(Clone, PartialEq, ::prost::Message)]
591pub struct AndroidLogConfig {
592    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
593    pub log_ids: ::prost::alloc::vec::Vec<i32>,
594    /// If set ignores all log messages whose prio is < the given value.
595    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
596    pub min_prio: ::core::option::Option<i32>,
597    /// If non-empty ignores all log messages whose tag doesn't match one of the
598    /// specified values.
599    #[prost(string, repeated, tag="4")]
600    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
601}
602// End of protos/perfetto/config/android/android_log_config.proto
603
604// Begin of protos/perfetto/config/android/android_polled_state_config.proto
605
606/// Data source that polls for display state. This should only be used for
607/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct AndroidPolledStateConfig {
610    /// Frequency of polling. If absent the state will be recorded once, at the
611    /// start of the trace.
612    /// This is required to be > 100ms to avoid excessive CPU usage.
613    #[prost(uint32, optional, tag="1")]
614    pub poll_ms: ::core::option::Option<u32>,
615}
616// End of protos/perfetto/config/android/android_polled_state_config.proto
617
618// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
619
620/// Data source that controls the system properties used to guard initialization
621/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
622/// processes like SurfaceFlinger.
623///
624/// This data source only tells Skia to initialized the Perfetto SDK and start
625/// routing data to the Track Event system instead of ATrace. For those events
626/// to actually show up in a trace, the track_event data source must be used as
627/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
628/// processes may need to be restarted for Skia to revert to using ATrace if
629/// Track Events are no longer desired.
630///
631/// In addition to switching Skia to use Perfetto's track_event data source,
632/// this "guard" also controls Skia's "broad tracing", which removes Skia's
633/// internal tracing constraints and allows the track_event config to specify
634/// which categories should be traced. Filtering to the "skia.always" category
635/// *tag* in a track_event config can be used to re-enable the standard
636/// constraints typically used with ATrace.
637///
638/// Data source name: android.sdk_sysprop_guard
639/// Introduced in Android 14 (U) QPR1.
640/// Next id: 4
641#[derive(Clone, PartialEq, ::prost::Message)]
642pub struct AndroidSdkSyspropGuardConfig {
643    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
644    /// integration with the track_event data source in RenderEngine.
645    /// If false or omitted, the simpler ATrace fallback is used.
646    ///
647    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
648    /// restarted.
649    ///
650    /// Specifically this sets the following system properties:
651    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
652    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
653    ///
654    /// Does not affect actual track_event data *collection*, which must be
655    /// configured separately.
656    #[prost(bool, optional, tag="1")]
657    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
658    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
659    /// with the track_event data source. hwui_package_name_filter
660    /// can be used to control which apps are affected.
661    /// If false or omitted, the simpler ATrace fallback is used.
662    ///
663    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
664    /// restarted.
665    ///
666    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
667    /// If filtering is NOT set, this controls these GLOBAL system properties:
668    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
669    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
670    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
671    /// for each package listed in the filter:
672    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
673    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
674    ///
675    /// Does not affect actual track_event data *collection*, which must be
676    /// configured separately.
677    #[prost(bool, optional, tag="2")]
678    pub hwui_skia_track_events: ::core::option::Option<bool>,
679    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
680    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
681    #[prost(string, repeated, tag="3")]
682    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
683}
684// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
685
686// Begin of protos/perfetto/config/android/android_system_property_config.proto
687
688/// Data source that polls for system properties.
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct AndroidSystemPropertyConfig {
691    /// Frequency of polling. If absent the state will be recorded once, at the
692    /// start of the trace.
693    /// This is required to be > 100ms to avoid excessive CPU usage.
694    #[prost(uint32, optional, tag="1")]
695    pub poll_ms: ::core::option::Option<u32>,
696    /// Properties to poll. All property names must start with "debug.tracing.".
697    #[prost(string, repeated, tag="2")]
698    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
699}
700// End of protos/perfetto/config/android/android_system_property_config.proto
701
702// Begin of protos/perfetto/config/android/app_wakelock_config.proto
703
704/// Configuration for the android.app_wakelocks data source.
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct AppWakelocksConfig {
707    /// Specifies the delay (in milliseconds) after which the data source will
708    /// attempt to write events. Writing less frequently reduces the trace size by
709    /// making better use of the packed arrays and reducing the total number of
710    /// TracePackets needed (which each have dozens of bytes of overhead). The
711    /// suggested delay is 5000ms.
712    #[prost(int32, optional, tag="1")]
713    pub write_delay_ms: ::core::option::Option<i32>,
714    /// When set, wakelocks held for less than this amount of time are filtered
715    /// from the resulting trace. Note: duration is computed by matching wakelocks
716    /// with identical attributes, not by tracking the underlying objects. The
717    /// threshold should be < the trace's flush_period_ms.
718    #[prost(int32, optional, tag="2")]
719    pub filter_duration_below_ms: ::core::option::Option<i32>,
720    /// When true, the owner_pid is dropped from the resulting output, reducing the
721    /// size of the interning tables.
722    #[prost(bool, optional, tag="3")]
723    pub drop_owner_pid: ::core::option::Option<bool>,
724}
725// End of protos/perfetto/config/android/app_wakelock_config.proto
726
727// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
728
729/// Data source that records CPU per UID data.
730#[derive(Clone, PartialEq, ::prost::Message)]
731pub struct CpuPerUidConfig {
732    /// Record at this frequency.
733    #[prost(uint32, optional, tag="1")]
734    pub poll_ms: ::core::option::Option<u32>,
735}
736// End of protos/perfetto/config/android/cpu_per_uid_config.proto
737
738// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
739
740/// Data source that records kernel (and native) wakelock data.
741#[derive(Clone, PartialEq, ::prost::Message)]
742pub struct KernelWakelocksConfig {
743    /// Record at this frequency.
744    #[prost(uint32, optional, tag="1")]
745    pub poll_ms: ::core::option::Option<u32>,
746}
747// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
748
749// Begin of protos/perfetto/config/android/network_trace_config.proto
750
751/// Network tracing data source that records details on all packets sent or
752/// received by the network.
753#[derive(Clone, PartialEq, ::prost::Message)]
754pub struct NetworkPacketTraceConfig {
755    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
756    /// ring buffer. The polling interval should be such that the ring buffer is
757    /// unlikely to fill in that interval (or that filling is an acceptable risk).
758    /// The minimum polling rate is 100ms (values below this are ignored).
759    /// Introduced in Android 14 (U).
760    #[prost(uint32, optional, tag="1")]
761    pub poll_ms: ::core::option::Option<u32>,
762    /// The aggregation_threshold is the number of packets at which an event will
763    /// switch from per-packet details to aggregate details. For example, a value
764    /// of 50 means that if a particular event (grouped by the unique combinations
765    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
766    /// packets, the exact timestamp and length are recorded for each packet. If
767    /// there were 50 or more packets in an event, it would only record the total
768    /// duration, packets, and length. A value of zero or unspecified will always
769    /// / record per-packet details. A value of 1 always records aggregate details.
770    #[prost(uint32, optional, tag="2")]
771    pub aggregation_threshold: ::core::option::Option<u32>,
772    /// Specifies the maximum number of packet contexts to intern at a time. This
773    /// prevents the interning table from growing too large and controls whether
774    /// interning is enabled or disabled (a value of zero disables interning and
775    /// is the default). When a data sources interning table reaches this amount,
776    /// packet contexts will be inlined into NetworkPacketEvents.
777    #[prost(uint32, optional, tag="3")]
778    pub intern_limit: ::core::option::Option<u32>,
779    /// The following fields specify whether certain fields should be dropped from
780    /// the output. Dropping fields improves normalization results, reduces the
781    /// size of the interning table, and slightly reduces event size.
782    #[prost(bool, optional, tag="4")]
783    pub drop_local_port: ::core::option::Option<bool>,
784    #[prost(bool, optional, tag="5")]
785    pub drop_remote_port: ::core::option::Option<bool>,
786    #[prost(bool, optional, tag="6")]
787    pub drop_tcp_flags: ::core::option::Option<bool>,
788}
789// End of protos/perfetto/config/android/network_trace_config.proto
790
791// Begin of protos/perfetto/config/android/packages_list_config.proto
792
793/// Data source that lists details (such as version code) about packages on an
794/// Android device.
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct PackagesListConfig {
797    /// If not empty, emit info about only the following list of package names
798    /// (exact match, no regex). Otherwise, emit info about all packages.
799    #[prost(string, repeated, tag="1")]
800    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
801}
802// End of protos/perfetto/config/android/packages_list_config.proto
803
804// Begin of protos/perfetto/config/android/pixel_modem_config.proto
805
806/// Data source that records events from the modem.
807#[derive(Clone, PartialEq, ::prost::Message)]
808pub struct PixelModemConfig {
809    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
810    pub event_group: ::core::option::Option<i32>,
811    /// If set, record only events with these hashes.
812    #[prost(int64, repeated, packed="false", tag="2")]
813    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
814    /// If set and allow_list is not set, deny events with these hashes.
815    #[prost(int64, repeated, packed="false", tag="3")]
816    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
817}
818/// Nested message and enum types in `PixelModemConfig`.
819pub mod pixel_modem_config {
820    /// Event group to record, as defined by the modem.
821    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
822    #[repr(i32)]
823    pub enum EventGroup {
824        Unknown = 0,
825        /// Events suitable for low bandwidth tracing only.
826        LowBandwidth = 1,
827        /// Events suitable for high and low bandwidth tracing.
828        HighAndLowBandwidth = 2,
829    }
830    impl EventGroup {
831        /// String value of the enum field names used in the ProtoBuf definition.
832        ///
833        /// The values are not transformed in any way and thus are considered stable
834        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
835        pub fn as_str_name(&self) -> &'static str {
836            match self {
837                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
838                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
839                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
840            }
841        }
842    }
843}
844// Begin of protos/perfetto/config/android/protolog_config.proto
845
846/// Custom configuration for the "android.protolog" data source.
847/// ProtoLog is a logging mechanism that is intented to be more efficient than
848/// logcat. This configures what logs to capture in the tracing instance.
849#[derive(Clone, PartialEq, ::prost::Message)]
850pub struct ProtoLogConfig {
851    /// Specified the configurations for each of the logging groups. If none is
852    /// specified for a group the defaults will be used.
853    #[prost(message, repeated, tag="1")]
854    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
855    /// Specified what tracing mode to use for the tracing instance.
856    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
857    pub tracing_mode: ::core::option::Option<i32>,
858    /// If set, any message with log level higher than this level (inclusive) will
859    /// be traced. Group overrides take precedence over this value.
860    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
861    pub default_log_from_level: ::core::option::Option<i32>,
862}
863/// Nested message and enum types in `ProtoLogConfig`.
864pub mod proto_log_config {
865    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
866    #[repr(i32)]
867    pub enum TracingMode {
868        /// When using the DEFAULT tracing mode, only log groups and levels specified
869        /// in the group_overrides are traced.
870        Default = 0,
871        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
872        /// traced, unless specified in the group_overrides.
873        EnableAll = 1,
874    }
875    impl TracingMode {
876        /// String value of the enum field names used in the ProtoBuf definition.
877        ///
878        /// The values are not transformed in any way and thus are considered stable
879        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
880        pub fn as_str_name(&self) -> &'static str {
881            match self {
882                TracingMode::Default => "DEFAULT",
883                TracingMode::EnableAll => "ENABLE_ALL",
884            }
885        }
886    }
887}
888#[derive(Clone, PartialEq, ::prost::Message)]
889pub struct ProtoLogGroup {
890    /// The ProtoLog group name this configuration entry applies to.
891    #[prost(string, optional, tag="1")]
892    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
893    /// Specify the level from which to start capturing protologs.
894    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
895    /// message will be traced.
896    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
897    pub log_from: ::core::option::Option<i32>,
898    /// When set to true we will collect the stacktrace for each protolog message
899    /// in this group that we are tracing.
900    #[prost(bool, optional, tag="3")]
901    pub collect_stacktrace: ::core::option::Option<bool>,
902}
903// End of protos/perfetto/config/android/protolog_config.proto
904
905// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
906
907/// Custom configuration for the "android.surfaceflinger.layers" data source.
908#[derive(Clone, PartialEq, ::prost::Message)]
909pub struct SurfaceFlingerLayersConfig {
910    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
911    pub mode: ::core::option::Option<i32>,
912    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
913    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
914}
915/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
916pub mod surface_flinger_layers_config {
917    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
918    #[repr(i32)]
919    pub enum Mode {
920        Unspecified = 0,
921        /// Trace layers snapshots. A snapshot is taken every time a layers change
922        /// occurs.
923        Active = 1,
924        /// Generate layers snapshots from the transactions kept in the
925        /// SurfaceFlinger's internal ring buffer.
926        /// The layers snapshots generation occurs when this data source is flushed.
927        Generated = 2,
928        /// Trace a single layers snapshot.
929        Dump = 3,
930        /// Default mode (applied by SurfaceFlinger if no mode is specified).
931        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
932        /// when a bugreport is taken.
933        GeneratedBugreportOnly = 4,
934    }
935    impl Mode {
936        /// String value of the enum field names used in the ProtoBuf definition.
937        ///
938        /// The values are not transformed in any way and thus are considered stable
939        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
940        pub fn as_str_name(&self) -> &'static str {
941            match self {
942                Mode::Unspecified => "MODE_UNSPECIFIED",
943                Mode::Active => "MODE_ACTIVE",
944                Mode::Generated => "MODE_GENERATED",
945                Mode::Dump => "MODE_DUMP",
946                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
947            }
948        }
949    }
950    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
951    #[repr(i32)]
952    pub enum TraceFlag {
953        Unspecified = 0,
954        Input = 2,
955        Composition = 4,
956        Extra = 8,
957        Hwc = 16,
958        Buffers = 32,
959        VirtualDisplays = 64,
960        /// INPUT | COMPOSITION | EXTRA
961        All = 14,
962    }
963    impl TraceFlag {
964        /// String value of the enum field names used in the ProtoBuf definition.
965        ///
966        /// The values are not transformed in any way and thus are considered stable
967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
968        pub fn as_str_name(&self) -> &'static str {
969            match self {
970                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
971                TraceFlag::Input => "TRACE_FLAG_INPUT",
972                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
973                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
974                TraceFlag::Hwc => "TRACE_FLAG_HWC",
975                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
976                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
977                TraceFlag::All => "TRACE_FLAG_ALL",
978            }
979        }
980    }
981}
982// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
983
984// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
985
986/// Custom configuration for the "android.surfaceflinger.transactions" data
987/// source.
988#[derive(Clone, PartialEq, ::prost::Message)]
989pub struct SurfaceFlingerTransactionsConfig {
990    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
991    pub mode: ::core::option::Option<i32>,
992}
993/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
994pub mod surface_flinger_transactions_config {
995    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
996    #[repr(i32)]
997    pub enum Mode {
998        Unspecified = 0,
999        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1000        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1001        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1002        /// initial state and the latest transactions.
1003        Continuous = 1,
1004        /// SurfaceFlinger writes the initial state and then each incoming
1005        /// transaction until the data source is stopped.
1006        Active = 2,
1007    }
1008    impl Mode {
1009        /// String value of the enum field names used in the ProtoBuf definition.
1010        ///
1011        /// The values are not transformed in any way and thus are considered stable
1012        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1013        pub fn as_str_name(&self) -> &'static str {
1014            match self {
1015                Mode::Unspecified => "MODE_UNSPECIFIED",
1016                Mode::Continuous => "MODE_CONTINUOUS",
1017                Mode::Active => "MODE_ACTIVE",
1018            }
1019        }
1020    }
1021}
1022// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1023
1024// Begin of protos/perfetto/config/android/windowmanager_config.proto
1025
1026/// Custom configuration for the "android.windowmanager" data source.
1027#[derive(Clone, PartialEq, ::prost::Message)]
1028pub struct WindowManagerConfig {
1029    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1030    pub log_frequency: ::core::option::Option<i32>,
1031    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1032    pub log_level: ::core::option::Option<i32>,
1033}
1034/// Nested message and enum types in `WindowManagerConfig`.
1035pub mod window_manager_config {
1036    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1037    #[repr(i32)]
1038    pub enum LogFrequency {
1039        Unspecified = 0,
1040        /// Trace state snapshots when a frame is committed.
1041        Frame = 1,
1042        /// Trace state snapshots every time a transaction is committed.
1043        Transaction = 2,
1044        /// Trace single state snapshots when the data source is started.
1045        SingleDump = 3,
1046    }
1047    impl LogFrequency {
1048        /// String value of the enum field names used in the ProtoBuf definition.
1049        ///
1050        /// The values are not transformed in any way and thus are considered stable
1051        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1052        pub fn as_str_name(&self) -> &'static str {
1053            match self {
1054                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1055                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1056                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1057                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1058            }
1059        }
1060    }
1061    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1062    #[repr(i32)]
1063    pub enum LogLevel {
1064        Unspecified = 0,
1065        /// Logs all elements with maximum amount of information.
1066        Verbose = 1,
1067        /// Logs all elements but doesn't write all configuration data.
1068        Debug = 2,
1069        /// Logs only visible elements, with the minimum amount of performance
1070        /// overhead
1071        Critical = 3,
1072    }
1073    impl LogLevel {
1074        /// String value of the enum field names used in the ProtoBuf definition.
1075        ///
1076        /// The values are not transformed in any way and thus are considered stable
1077        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1078        pub fn as_str_name(&self) -> &'static str {
1079            match self {
1080                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1081                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1082                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1083                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1084            }
1085        }
1086    }
1087}
1088// End of protos/perfetto/config/android/windowmanager_config.proto
1089
1090// Begin of protos/perfetto/config/chrome/chrome_config.proto
1091
1092#[derive(Clone, PartialEq, ::prost::Message)]
1093pub struct ChromeConfig {
1094    #[prost(string, optional, tag="1")]
1095    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1096    /// When enabled, the data source should only fill in fields in the output that
1097    /// are not potentially privacy sensitive.
1098    #[prost(bool, optional, tag="2")]
1099    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1100    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1101    /// JSON format. Note that the trace data will still be returned as a series of
1102    /// TracePackets, but the embedded data will be JSON instead of serialized
1103    /// protobuf.
1104    #[prost(bool, optional, tag="3")]
1105    pub convert_to_legacy_json: ::core::option::Option<bool>,
1106    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1107    pub client_priority: ::core::option::Option<i32>,
1108    /// Applicable only when using legacy JSON format.
1109    /// If |json_agent_label_filter| is not empty, only data pertaining to
1110    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1111    #[prost(string, optional, tag="5")]
1112    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1113    ///   When enabled, event names should not contain package names.
1114    #[prost(bool, optional, tag="6")]
1115    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1116}
1117/// Nested message and enum types in `ChromeConfig`.
1118pub mod chrome_config {
1119    /// Priority of the tracing session client. A higher priority session may
1120    /// preempt a lower priority one in configurations where concurrent sessions
1121    /// aren't supported.
1122    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1123    #[repr(i32)]
1124    pub enum ClientPriority {
1125        Unknown = 0,
1126        Background = 1,
1127        UserInitiated = 2,
1128    }
1129    impl ClientPriority {
1130        /// String value of the enum field names used in the ProtoBuf definition.
1131        ///
1132        /// The values are not transformed in any way and thus are considered stable
1133        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1134        pub fn as_str_name(&self) -> &'static str {
1135            match self {
1136                ClientPriority::Unknown => "UNKNOWN",
1137                ClientPriority::Background => "BACKGROUND",
1138                ClientPriority::UserInitiated => "USER_INITIATED",
1139            }
1140        }
1141    }
1142}
1143// End of protos/perfetto/config/chrome/chrome_config.proto
1144
1145// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1146
1147#[derive(Clone, PartialEq, ::prost::Message)]
1148pub struct ChromiumHistogramSamplesConfig {
1149    /// List of histograms to record. If no histogram is specified, all histograms
1150    /// are recorded.
1151    #[prost(message, repeated, tag="1")]
1152    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1153    /// Default: false (i.e. histogram names are NOT filtered out by default)
1154    /// When true, histogram_name will be filtered out.
1155    #[prost(bool, optional, tag="2")]
1156    pub filter_histogram_names: ::core::option::Option<bool>,
1157}
1158/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1159pub mod chromium_histogram_samples_config {
1160    /// Records when a value within the specified bounds [min_value, max_value] is
1161    /// emitted into a Chrome histogram.
1162    #[derive(Clone, PartialEq, ::prost::Message)]
1163    pub struct HistogramSample {
1164        #[prost(string, optional, tag="1")]
1165        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1166        #[prost(int64, optional, tag="2")]
1167        pub min_value: ::core::option::Option<i64>,
1168        #[prost(int64, optional, tag="3")]
1169        pub max_value: ::core::option::Option<i64>,
1170    }
1171}
1172// End of protos/perfetto/config/chrome/histogram_samples.proto
1173
1174// Begin of protos/perfetto/config/chrome/system_metrics.proto
1175
1176#[derive(Clone, PartialEq, ::prost::Message)]
1177pub struct ChromiumSystemMetricsConfig {
1178    /// Samples counters every X ms.
1179    #[prost(uint32, optional, tag="1")]
1180    pub sampling_interval_ms: ::core::option::Option<u32>,
1181}
1182// End of protos/perfetto/config/chrome/system_metrics.proto
1183
1184// Begin of protos/perfetto/config/chrome/v8_config.proto
1185
1186#[derive(Clone, PartialEq, ::prost::Message)]
1187pub struct V8Config {
1188    /// Whether to log the actual content of scripts (e.g. content of the JS file
1189    /// that was compiled to generate code).
1190    /// ATTENTION: This could considerably increase the size of the resuling trace
1191    ///             file.
1192    #[prost(bool, optional, tag="1")]
1193    pub log_script_sources: ::core::option::Option<bool>,
1194    /// Whether to log the generated code for jitted functions (machine code or
1195    /// bytecode).
1196    /// ATTENTION: This could considerably increase the size of the resuling trace
1197    ///             file.
1198    #[prost(bool, optional, tag="2")]
1199    pub log_instructions: ::core::option::Option<bool>,
1200}
1201// End of protos/perfetto/config/chrome/v8_config.proto
1202
1203// Begin of protos/perfetto/config/etw/etw_config.proto
1204
1205/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1206/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1207/// ns-evntrace-event_trace_properties
1208#[derive(Clone, PartialEq, ::prost::Message)]
1209pub struct EtwConfig {
1210    /// The kernel_flags determines the flags that will be used by the etw tracing
1211    /// session. These kernel flags have been built to expose the useful events
1212    /// captured from the kernel mode only.
1213    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1214    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1215}
1216/// Nested message and enum types in `EtwConfig`.
1217pub mod etw_config {
1218    /// The KernelFlag represent list of kernel flags that we are intrested in.
1219    /// To get a more extensive list run 'xperf -providers k'.
1220    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1221    #[repr(i32)]
1222    pub enum KernelFlag {
1223        Cswitch = 0,
1224        Dispatcher = 1,
1225    }
1226    impl KernelFlag {
1227        /// String value of the enum field names used in the ProtoBuf definition.
1228        ///
1229        /// The values are not transformed in any way and thus are considered stable
1230        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1231        pub fn as_str_name(&self) -> &'static str {
1232            match self {
1233                KernelFlag::Cswitch => "CSWITCH",
1234                KernelFlag::Dispatcher => "DISPATCHER",
1235            }
1236        }
1237    }
1238}
1239// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1240
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct FrozenFtraceConfig {
1243    /// The instance name which stores the previous boot ftrace data. Required.
1244    #[prost(string, optional, tag="1")]
1245    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1246}
1247// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1248
1249// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1250
1251/// Next id: 34
1252#[derive(Clone, PartialEq, ::prost::Message)]
1253pub struct FtraceConfig {
1254    /// Ftrace events to record, example: "sched/sched_switch".
1255    #[prost(string, repeated, tag="1")]
1256    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1257    /// Android-specific event categories:
1258    #[prost(string, repeated, tag="2")]
1259    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1260    #[prost(string, repeated, tag="3")]
1261    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1262    /// Some processes can emit data through atrace or through the perfetto SDK via
1263    /// the "track_event" data source. For these categories, the SDK will be
1264    /// preferred, if possible, for this config.
1265    #[prost(string, repeated, tag="28")]
1266    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1267    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1268    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1269    /// events for convenience (and the vendor-specific events on top).
1270    /// Introduced in: perfetto v52.
1271    #[prost(bool, optional, tag="34")]
1272    pub atrace_userspace_only: ::core::option::Option<bool>,
1273    /// Size of each per-cpu kernel ftrace ring buffer.
1274    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1275    /// buffers cannot be resized without pausing recording in the kernel.
1276    #[prost(uint32, optional, tag="10")]
1277    pub buffer_size_kb: ::core::option::Option<u32>,
1278    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1279    /// implementation to choose a bigger buffer size.
1280    ///
1281    /// Most configs for perfetto v43+ should simply leave both fields unset.
1282    ///
1283    /// If you need a config compatible with a range of perfetto builds and you
1284    /// used to set a non-default buffer_size_kb, consider setting both fields.
1285    /// Example:
1286    ///    buffer_size_kb: 4096
1287    ///    buffer_size_lower_bound: true
1288    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1289    /// On v43+, buffers will be at least 4 MB.
1290    /// In both cases, neither is guaranteed if there are other concurrent
1291    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1292    /// the recording in the kernel.
1293    /// Introduced in: perfetto v43.
1294    #[prost(bool, optional, tag="27")]
1295    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1296    /// If set, specifies how often the tracing daemon reads from the kernel ring
1297    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1298    /// Leave unset unless you're fine-tuning a local config.
1299    #[prost(uint32, optional, tag="11")]
1300    pub drain_period_ms: ::core::option::Option<u32>,
1301    /// If set, the tracing daemon will read kernel ring buffers as soon as
1302    /// they're filled past this percentage of occupancy. In other words, a value
1303    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1304    /// half-full. Not guaranteed if there are multiple concurrent tracing
1305    /// sessions.
1306    /// Currently does nothing on Linux kernels below v6.9.
1307    /// Introduced in: perfetto v48.
1308    #[prost(uint32, optional, tag="29")]
1309    pub drain_buffer_percent: ::core::option::Option<u32>,
1310    #[prost(message, optional, tag="12")]
1311    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1312    #[prost(message, optional, tag="22")]
1313    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1314    /// Enables symbol name resolution against /proc/kallsyms.
1315    /// It requires that either traced_probes is running as root or that
1316    /// kptr_restrict has been manually lowered.
1317    /// It does not disclose KASLR, symbol addresses are mangled.
1318    #[prost(bool, optional, tag="13")]
1319    pub symbolize_ksyms: ::core::option::Option<bool>,
1320    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1321    pub ksyms_mem_policy: ::core::option::Option<i32>,
1322    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1323    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1324    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1325    /// The historical context for this is the following:
1326    /// - Up to Android S (12), the rss_stat was internally throttled in its
1327    ///    kernel implementation.
1328    /// - A change introduced in the kernels after S has introduced a new
1329    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1330    ///    (hence very spammy).
1331    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1332    ///    need to deal with both cases.
1333    /// For more context: go/rss-stat-throttled.
1334    #[prost(bool, optional, tag="15")]
1335    pub throttle_rss_stat: ::core::option::Option<bool>,
1336    /// If true, use self-describing proto messages when writing events not known
1337    /// at compile time (aka generic events). Each event bundle will have a set of
1338    /// serialised proto descriptors for events within that bundle.
1339    /// Added in: perfetto v50.
1340    #[prost(bool, optional, tag="32")]
1341    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1342    /// If true, avoid enabling events that aren't statically known by
1343    /// traced_probes. Otherwise, the default is to emit such events as
1344    /// GenericFtraceEvent protos.
1345    /// Prefer to keep this flag at its default. This was added for Android
1346    /// tracing, where atrace categories and/or atrace HAL requested events can
1347    /// expand to events that aren't of interest to the tracing user.
1348    /// Introduced in: Android T.
1349    #[prost(bool, optional, tag="16")]
1350    pub disable_generic_events: ::core::option::Option<bool>,
1351    /// The subset of syscalls to record. To record all syscalls, leave this unset
1352    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1353    /// * before perfetto v43, requires the config to also enable
1354    ///    raw_syscalls/sys_{enter,exit}.
1355    /// * perfetto v43+ does the right thing if you set only this field.
1356    /// Example: ["sys_read", "sys_open"].
1357    /// Introduced in: Android U.
1358    #[prost(string, repeated, tag="18")]
1359    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1360    /// If true, enable the "function_graph" kernel tracer that emits events
1361    /// whenever a kernel function is entered and exited
1362    /// (funcgraph_entry/funcgraph_exit).
1363    /// Notes on use:
1364    /// * Requires |symbolize_ksyms| for function name resolution.
1365    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1366    ///    set of functions, otherwise the event bandwidth will be too high for
1367    ///    practical use.
1368    /// * The data source might be rejected if there is already a concurrent
1369    ///    ftrace data source that does not use function graph itself, as we do not
1370    ///    support switching kernel tracers mid-trace.
1371    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1372    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1373    ///    "function_graph".
1374    /// Android:
1375    /// * Available only on debuggable builds.
1376    /// * Introduced in: Android U.
1377    #[prost(bool, optional, tag="19")]
1378    pub enable_function_graph: ::core::option::Option<bool>,
1379    /// Constrains the set of functions traced when |enable_function_graph| is
1380    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1381    /// in which case all matching functions will be traced. See kernel
1382    /// documentation on ftrace "set_ftrace_filter" file for more details.
1383    /// Android:
1384    /// * Available only on debuggable builds.
1385    /// * Introduced in: Android U.
1386    #[prost(string, repeated, tag="20")]
1387    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1388    /// If |enable_function_graph| is true, trace this set of functions *and* all
1389    /// of its callees. Supports globs. Can be set together with
1390    /// |function_filters|, in which case only callees matching the filter will be
1391    /// traced. If setting both, you most likely want all roots to also be
1392    /// included in |function_filters|.
1393    /// Android:
1394    /// * Available only on debuggable builds.
1395    /// * Introduced in: Android U.
1396    #[prost(string, repeated, tag="21")]
1397    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1398    /// If |enable_function_graph| is true, only trace the specified
1399    /// number of calls down the stack. Sets the max_graph_depth value
1400    /// in sys/kernel/tracing/
1401    ///
1402    /// Only respected for the first tracing session that enables
1403    /// function_graph tracing.
1404    ///
1405    /// Introduced in: perfetto v51.
1406    /// Supported on: Android 25Q3+.
1407    #[prost(uint32, optional, tag="33")]
1408    pub function_graph_max_depth: ::core::option::Option<u32>,
1409    /// Ftrace events to record, specific for kprobes and kretprobes
1410    #[prost(message, repeated, tag="30")]
1411    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1412    /// If true, does not clear kernel ftrace buffers when starting the trace.
1413    /// This makes sense only if this is the first ftrace data source instance
1414    /// created after the daemon has been started. Can be useful for gathering boot
1415    /// traces, if ftrace has been separately configured (e.g. via kernel
1416    /// commandline).
1417    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1418    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1419    /// anything besides ftrace. Otherwise timestamps might be skewed.
1420    #[prost(bool, optional, tag="23")]
1421    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1422    /// If true, overrides the default timestamp clock and uses a raw hardware
1423    /// based monotonic clock for getting timestamps.
1424    /// * Introduced in: Android U.
1425    #[prost(bool, optional, tag="24")]
1426    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1427    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1428    /// for event recording. Normally, this means
1429    /// `/sys/kernel/tracing/instances/$instance_name`.
1430    ///
1431    /// The name "hyp" is reserved.
1432    ///
1433    /// The instance must already exist, the tracing daemon *will not* create it
1434    /// for you as it typically doesn't have such permissions.
1435    /// Only a subset of features is guaranteed to work with non-default instances,
1436    /// at the time of writing:
1437    ///   * ftrace_events
1438    ///   * buffer_size_kb
1439    #[prost(string, optional, tag="25")]
1440    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1441    /// For perfetto developer use. If true and on a debuggable android build,
1442    /// serialise raw tracing pages that the implementation cannot parse.
1443    #[prost(bool, optional, tag="31")]
1444    pub debug_ftrace_abi: ::core::option::Option<bool>,
1445    /// No-op in perfetto v28+. Name preserved because of existing references in
1446    /// textproto configs.
1447    #[deprecated]
1448    #[prost(bool, optional, tag="14")]
1449    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1450}
1451/// Nested message and enum types in `FtraceConfig`.
1452pub mod ftrace_config {
1453    /// Configuration for compact encoding of scheduler events. When enabled (and
1454    /// recording the relevant ftrace events), specific high-volume events are
1455    /// encoded in a denser format than normal.
1456    #[derive(Clone, PartialEq, ::prost::Message)]
1457    pub struct CompactSchedConfig {
1458        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1459        /// record those events in the compact format.
1460        ///
1461        /// If the field is unset, the default is:
1462        /// * perfetto v42.0+: enabled
1463        /// * before: disabled
1464        #[prost(bool, optional, tag="1")]
1465        pub enabled: ::core::option::Option<bool>,
1466    }
1467    /// Optional filter for "ftrace/print" events.
1468    ///
1469    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1470    /// are processed in order), its `allow` field will be used as the outcome: if
1471    /// `allow` is true, the event will be included in the trace, otherwise it will
1472    /// be discarded. If an event does not match any rule, it will be allowed by
1473    /// default (a rule with an empty prefix and allow=false, disallows everything
1474    /// by default).
1475    #[derive(Clone, PartialEq, ::prost::Message)]
1476    pub struct PrintFilter {
1477        #[prost(message, repeated, tag="1")]
1478        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1479    }
1480    /// Nested message and enum types in `PrintFilter`.
1481    pub mod print_filter {
1482        #[derive(Clone, PartialEq, ::prost::Message)]
1483        pub struct Rule {
1484            #[prost(bool, optional, tag="2")]
1485            pub allow: ::core::option::Option<bool>,
1486            #[prost(oneof="rule::Match", tags="1, 3")]
1487            pub r#match: ::core::option::Option<rule::Match>,
1488        }
1489        /// Nested message and enum types in `Rule`.
1490        pub mod rule {
1491            /// Matches an atrace message of the form:
1492            /// <type>|pid|<prefix>...
1493            #[derive(Clone, PartialEq, ::prost::Message)]
1494            pub struct AtraceMessage {
1495                #[prost(string, optional, tag="1")]
1496                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1497                #[prost(string, optional, tag="2")]
1498                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1499            }
1500            #[derive(Clone, PartialEq, ::prost::Oneof)]
1501            pub enum Match {
1502                /// This rule matches if `prefix` matches exactly with the beginning of
1503                /// the "ftrace/print" "buf" field.
1504                #[prost(string, tag="1")]
1505                Prefix(::prost::alloc::string::String),
1506                /// This rule matches if the "buf" field contains an atrace-style print
1507                /// message as specified in `atrace_msg`.
1508                #[prost(message, tag="3")]
1509                AtraceMsg(AtraceMessage),
1510            }
1511        }
1512    }
1513    #[derive(Clone, PartialEq, ::prost::Message)]
1514    pub struct KprobeEvent {
1515        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1516        #[prost(string, optional, tag="1")]
1517        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1518        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1519        pub r#type: ::core::option::Option<i32>,
1520    }
1521    /// Nested message and enum types in `KprobeEvent`.
1522    pub mod kprobe_event {
1523        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1524        #[repr(i32)]
1525        pub enum KprobeType {
1526            Unknown = 0,
1527            Kprobe = 1,
1528            Kretprobe = 2,
1529            Both = 3,
1530        }
1531        impl KprobeType {
1532            /// String value of the enum field names used in the ProtoBuf definition.
1533            ///
1534            /// The values are not transformed in any way and thus are considered stable
1535            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1536            pub fn as_str_name(&self) -> &'static str {
1537                match self {
1538                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1539                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1540                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1541                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1542                }
1543            }
1544        }
1545    }
1546    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1547    /// should keep the symbol map in memory (and reuse it for future tracing
1548    /// sessions) or clear it (saving memory) and re-create it on each tracing
1549    /// session (wasting cpu and wall time).
1550    /// The tradeoff is roughly:
1551    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1552    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1553    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1554    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1555    #[repr(i32)]
1556    pub enum KsymsMemPolicy {
1557        KsymsUnspecified = 0,
1558        KsymsCleanupOnStop = 1,
1559        KsymsRetain = 2,
1560    }
1561    impl KsymsMemPolicy {
1562        /// String value of the enum field names used in the ProtoBuf definition.
1563        ///
1564        /// The values are not transformed in any way and thus are considered stable
1565        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1566        pub fn as_str_name(&self) -> &'static str {
1567            match self {
1568                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1569                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1570                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1571            }
1572        }
1573    }
1574}
1575// End of protos/perfetto/config/ftrace/ftrace_config.proto
1576
1577// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1578
1579#[derive(Clone, PartialEq, ::prost::Message)]
1580pub struct GpuCounterConfig {
1581    /// Desired sampling interval for counters.
1582    #[prost(uint64, optional, tag="1")]
1583    pub counter_period_ns: ::core::option::Option<u64>,
1584    /// List of counters to be sampled. Counter IDs correspond to the ones
1585    /// described in GpuCounterSpec in the data source descriptor.
1586    #[prost(uint32, repeated, packed="false", tag="2")]
1587    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1588    /// Sample counters by instrumenting command buffers.
1589    #[prost(bool, optional, tag="3")]
1590    pub instrumented_sampling: ::core::option::Option<bool>,
1591    /// Fix gpu clock rate during trace session.
1592    #[prost(bool, optional, tag="4")]
1593    pub fix_gpu_clock: ::core::option::Option<bool>,
1594}
1595// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1596
1597// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1598
1599#[derive(Clone, PartialEq, ::prost::Message)]
1600pub struct GpuRenderStagesConfig {
1601    /// Enable to separate the color and depth/stencil load and store stages
1602    /// into a separate stages. If disabled, the depth/stencil load and store
1603    /// stages will be combined.  Disabled by default. This option has no effect if
1604    /// Low Overhead mode is enabled.
1605    #[prost(bool, optional, tag="1")]
1606    pub full_loadstore: ::core::option::Option<bool>,
1607    /// Use the low overhead mode for traces. In this mode render stages are
1608    /// combined into a single workload stage. This provides less granular data but
1609    /// induces minimal GPU overhead. Disabled by default.
1610    #[prost(bool, optional, tag="2")]
1611    pub low_overhead: ::core::option::Option<bool>,
1612    /// Trace metrics to capture for each render stage
1613    #[prost(string, repeated, tag="3")]
1614    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1615}
1616// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1617
1618// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1619
1620#[derive(Clone, PartialEq, ::prost::Message)]
1621pub struct VulkanMemoryConfig {
1622    /// Tracking driver memory usage events
1623    #[prost(bool, optional, tag="1")]
1624    pub track_driver_memory_usage: ::core::option::Option<bool>,
1625    /// Tracking device memory usage events
1626    #[prost(bool, optional, tag="2")]
1627    pub track_device_memory_usage: ::core::option::Option<bool>,
1628}
1629// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1630
1631// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1632
1633#[derive(Clone, PartialEq, ::prost::Message)]
1634pub struct InodeFileConfig {
1635    /// How long to pause between batches.
1636    #[prost(uint32, optional, tag="1")]
1637    pub scan_interval_ms: ::core::option::Option<u32>,
1638    /// How long to wait before the first scan in order to accumulate inodes.
1639    #[prost(uint32, optional, tag="2")]
1640    pub scan_delay_ms: ::core::option::Option<u32>,
1641    /// How many inodes to scan in one batch.
1642    #[prost(uint32, optional, tag="3")]
1643    pub scan_batch_size: ::core::option::Option<u32>,
1644    /// Do not scan for inodes not found in the static map.
1645    #[prost(bool, optional, tag="4")]
1646    pub do_not_scan: ::core::option::Option<bool>,
1647    /// If non-empty, only scan inodes corresponding to block devices named in
1648    /// this list.
1649    #[prost(string, repeated, tag="5")]
1650    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1651    /// When encountering an inode belonging to a block device corresponding
1652    /// to one of the mount points in this map, scan its scan_roots instead.
1653    #[prost(message, repeated, tag="6")]
1654    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1655}
1656/// Nested message and enum types in `InodeFileConfig`.
1657pub mod inode_file_config {
1658    #[derive(Clone, PartialEq, ::prost::Message)]
1659    pub struct MountPointMappingEntry {
1660        #[prost(string, optional, tag="1")]
1661        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1662        #[prost(string, repeated, tag="2")]
1663        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1664    }
1665}
1666// End of protos/perfetto/config/inode_file/inode_file_config.proto
1667
1668// Begin of protos/perfetto/config/interceptors/console_config.proto
1669
1670#[derive(Clone, PartialEq, ::prost::Message)]
1671pub struct ConsoleConfig {
1672    #[prost(enumeration="console_config::Output", optional, tag="1")]
1673    pub output: ::core::option::Option<i32>,
1674    #[prost(bool, optional, tag="2")]
1675    pub enable_colors: ::core::option::Option<bool>,
1676}
1677/// Nested message and enum types in `ConsoleConfig`.
1678pub mod console_config {
1679    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1680    #[repr(i32)]
1681    pub enum Output {
1682        Unspecified = 0,
1683        Stdout = 1,
1684        Stderr = 2,
1685    }
1686    impl Output {
1687        /// String value of the enum field names used in the ProtoBuf definition.
1688        ///
1689        /// The values are not transformed in any way and thus are considered stable
1690        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1691        pub fn as_str_name(&self) -> &'static str {
1692            match self {
1693                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1694                Output::Stdout => "OUTPUT_STDOUT",
1695                Output::Stderr => "OUTPUT_STDERR",
1696            }
1697        }
1698    }
1699}
1700// End of protos/perfetto/config/interceptors/console_config.proto
1701
1702// Begin of protos/perfetto/config/interceptor_config.proto
1703
1704/// Configuration for trace packet interception. Used for diverting trace data to
1705/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1706/// Perfetto SDK.
1707#[derive(Clone, PartialEq, ::prost::Message)]
1708pub struct InterceptorConfig {
1709    /// Matches the name given to RegisterInterceptor().
1710    #[prost(string, optional, tag="1")]
1711    pub name: ::core::option::Option<::prost::alloc::string::String>,
1712    #[prost(message, optional, tag="100")]
1713    pub console_config: ::core::option::Option<ConsoleConfig>,
1714}
1715// End of protos/perfetto/config/interceptor_config.proto
1716
1717// Begin of protos/perfetto/config/power/android_power_config.proto
1718
1719#[derive(Clone, PartialEq, ::prost::Message)]
1720pub struct AndroidPowerConfig {
1721    #[prost(uint32, optional, tag="1")]
1722    pub battery_poll_ms: ::core::option::Option<u32>,
1723    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1724    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1725    /// Where available enables per-power-rail measurements.
1726    #[prost(bool, optional, tag="3")]
1727    pub collect_power_rails: ::core::option::Option<bool>,
1728    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1729    /// Available from Android S.
1730    #[prost(bool, optional, tag="4")]
1731    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1732    /// Provides a breakdown of time in state for various subsystems.
1733    /// Available from Android U.
1734    #[prost(bool, optional, tag="5")]
1735    pub collect_entity_state_residency: ::core::option::Option<bool>,
1736}
1737/// Nested message and enum types in `AndroidPowerConfig`.
1738pub mod android_power_config {
1739    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1740    #[repr(i32)]
1741    pub enum BatteryCounters {
1742        BatteryCounterUnspecified = 0,
1743        /// Coulomb counter.
1744        BatteryCounterCharge = 1,
1745        /// Charge (%).
1746        BatteryCounterCapacityPercent = 2,
1747        /// Instantaneous current.
1748        BatteryCounterCurrent = 3,
1749        /// Avg current.
1750        BatteryCounterCurrentAvg = 4,
1751        /// Instantaneous voltage.
1752        BatteryCounterVoltage = 5,
1753    }
1754    impl BatteryCounters {
1755        /// String value of the enum field names used in the ProtoBuf definition.
1756        ///
1757        /// The values are not transformed in any way and thus are considered stable
1758        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1759        pub fn as_str_name(&self) -> &'static str {
1760            match self {
1761                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1762                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1763                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1764                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1765                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1766                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1767            }
1768        }
1769    }
1770}
1771// End of protos/perfetto/config/power/android_power_config.proto
1772
1773// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
1774
1775/// Configuration that allows to boost the priority of the 'traced' or
1776/// 'traced_probs' processes, by changing the scheduler configuration.
1777/// Only supported on Linux and Android the boosted process must have
1778/// 'CAP_SYS_NICE' capability.
1779#[derive(Clone, PartialEq, ::prost::Message)]
1780pub struct PriorityBoostConfig {
1781    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
1782    pub policy: ::core::option::Option<i32>,
1783    #[prost(uint32, optional, tag="2")]
1784    pub priority: ::core::option::Option<u32>,
1785}
1786/// Nested message and enum types in `PriorityBoostConfig`.
1787pub mod priority_boost_config {
1788    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1789    #[repr(i32)]
1790    pub enum BoostPolicy {
1791        PolicyUnspecified = 0,
1792        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
1793        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
1794        /// than default 0, 20 is the highest priority.
1795        /// Note: this is the opposite semantic of the cmdline nice, and is done for
1796        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
1797        PolicySchedOther = 1,
1798        /// The Real-time policy, Priority range: [1; 99]
1799        PolicySchedFifo = 2,
1800    }
1801    impl BoostPolicy {
1802        /// String value of the enum field names used in the ProtoBuf definition.
1803        ///
1804        /// The values are not transformed in any way and thus are considered stable
1805        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1806        pub fn as_str_name(&self) -> &'static str {
1807            match self {
1808                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
1809                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
1810                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
1811            }
1812        }
1813    }
1814}
1815// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
1816
1817#[derive(Clone, PartialEq, ::prost::Message)]
1818pub struct ProcessStatsConfig {
1819    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
1820    pub quirks: ::prost::alloc::vec::Vec<i32>,
1821    /// If enabled all processes will be scanned and dumped when the trace starts.
1822    #[prost(bool, optional, tag="2")]
1823    pub scan_all_processes_on_start: ::core::option::Option<bool>,
1824    /// If enabled thread names are also recoded (this is redundant if sched_switch
1825    /// is enabled).
1826    #[prost(bool, optional, tag="3")]
1827    pub record_thread_names: ::core::option::Option<bool>,
1828    /// If > 0 samples counters (see process_stats.proto) from
1829    /// /proc/pid/status and oom_score_adj every X ms.
1830    /// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
1831    /// This is required to be > 100ms to avoid excessive CPU usage.
1832    #[prost(uint32, optional, tag="4")]
1833    pub proc_stats_poll_ms: ::core::option::Option<u32>,
1834    // id 5 never used
1835
1836    /// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
1837    /// (default: |proc_stats_poll_ms|). If = 0, will be set to
1838    /// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
1839    /// multiple.
1840    #[prost(uint32, optional, tag="6")]
1841    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
1842    /// Niche feature: If true this will resolve file descriptors for each process
1843    /// so these can be mapped to their actual device or file.
1844    /// Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
1845    /// new fds opened after initially scanning a process will not be
1846    /// recognized.
1847    #[prost(bool, optional, tag="9")]
1848    pub resolve_process_fds: ::core::option::Option<bool>,
1849    /// If true, output will include memory stats from /proc/pid/smaps_rollup.
1850    ///
1851    /// Does NOT work with the Android system daemon by default, as it requires
1852    /// running the recording process (traced_probes or tracebox) as root. It is
1853    /// possible to avoid the root requirement, but the exact steps depend on the
1854    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
1855    /// check, and might be further covered by the procfs "hidepid" mount option.
1856    #[prost(bool, optional, tag="10")]
1857    pub scan_smaps_rollup: ::core::option::Option<bool>,
1858    /// If true: process descriptions will include process age (starttime in
1859    /// /proc/pid/stat).
1860    /// Introduced in: perfetto v44.
1861    #[prost(bool, optional, tag="11")]
1862    pub record_process_age: ::core::option::Option<bool>,
1863    /// If true and |proc_stats_poll_ms| is true, process stats will include time
1864    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
1865    /// Introduced in: perfetto v44.
1866    #[prost(bool, optional, tag="12")]
1867    pub record_process_runtime: ::core::option::Option<bool>,
1868}
1869/// Nested message and enum types in `ProcessStatsConfig`.
1870pub mod process_stats_config {
1871    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1872    #[repr(i32)]
1873    pub enum Quirks {
1874        Unspecified = 0,
1875        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
1876        /// startup is now disabled by default and can be re-enabled using the
1877        /// |scan_all_processes_on_start| arg.
1878        DisableInitialDump = 1,
1879        DisableOnDemand = 2,
1880    }
1881    impl Quirks {
1882        /// String value of the enum field names used in the ProtoBuf definition.
1883        ///
1884        /// The values are not transformed in any way and thus are considered stable
1885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1886        pub fn as_str_name(&self) -> &'static str {
1887            match self {
1888                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
1889                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
1890                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
1891            }
1892        }
1893    }
1894}
1895// End of protos/perfetto/config/process_stats/process_stats_config.proto
1896
1897// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
1898
1899/// Configuration for go/heapprofd.
1900/// Next id: 28
1901#[derive(Clone, PartialEq, ::prost::Message)]
1902pub struct HeapprofdConfig {
1903    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
1904    ///
1905    /// These are:
1906    /// * All heaps if heap_sampling_intervals is empty.
1907    /// * Those profiled due to all_heaps and not named in heaps if
1908    ///    heap_sampling_intervals is not empty.
1909    /// * The implicit libc.malloc heap if heaps is empty.
1910    ///
1911    /// Set to 1 for perfect accuracy.
1912    /// Otherwise, sample every sample_interval_bytes on average.
1913    ///
1914    /// See
1915    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
1916    /// for more details.
1917    ///
1918    /// BUGS
1919    /// Before Android 12, setting this to 0 would crash the target process.
1920    ///
1921    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
1922    /// this field or with heap_sampling_intervals), otherwise the producer will
1923    /// not start.
1924    #[prost(uint64, optional, tag="1")]
1925    pub sampling_interval_bytes: ::core::option::Option<u64>,
1926    /// If less than the given numbers of bytes are left free in the shared
1927    /// memory buffer, increase sampling interval by a factor of two.
1928    /// Adaptive sampling is disabled when set to 0.
1929    #[prost(uint64, optional, tag="24")]
1930    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
1931    /// Stop doubling the sampling_interval once the sampling interval has reached
1932    /// this value.
1933    #[prost(uint64, optional, tag="25")]
1934    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
1935    /// E.g. surfaceflinger, com.android.phone
1936    /// This input is normalized in the following way: if it contains slashes,
1937    /// everything up to the last slash is discarded. If it contains "@",
1938    /// everything after the first @ is discared.
1939    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
1940    /// This transformation is also applied to the processes' command lines when
1941    /// matching.
1942    #[prost(string, repeated, tag="2")]
1943    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1944    /// For watermark based triggering or local debugging.
1945    #[prost(uint64, repeated, packed="false", tag="4")]
1946    pub pid: ::prost::alloc::vec::Vec<u64>,
1947    /// Only profile target if it was installed by one of the packages given.
1948    /// Special values are:
1949    /// * @system: installed on the system partition
1950    /// * @product: installed on the product partition
1951    /// * @null: sideloaded
1952    /// Supported on Android 12+.
1953    #[prost(string, repeated, tag="26")]
1954    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1955    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
1956    /// "malloc".
1957    ///
1958    /// Introduced in Android 12.
1959    #[prost(string, repeated, tag="20")]
1960    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1961    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
1962    /// combination with all_heaps;
1963    ///
1964    /// Introduced in Android 12.
1965    #[prost(string, repeated, tag="27")]
1966    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1967    #[prost(bool, optional, tag="23")]
1968    pub stream_allocations: ::core::option::Option<bool>,
1969    /// If given, needs to be the same length as heaps and gives the sampling
1970    /// interval for the respective entry in heaps.
1971    ///
1972    /// Otherwise, sampling_interval_bytes is used.
1973    ///
1974    /// It is recommended to set sampling_interval_bytes to a reasonable default
1975    /// value when using this, as a value of 0 for sampling_interval_bytes will
1976    /// crash the target process before Android 12.
1977    ///
1978    /// Introduced in Android 12.
1979    ///
1980    /// All values must be non-zero or the producer will not start.
1981    #[prost(uint64, repeated, packed="false", tag="22")]
1982    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
1983    /// Sample all heaps registered by target process. Introduced in Android 12.
1984    #[prost(bool, optional, tag="21")]
1985    pub all_heaps: ::core::option::Option<bool>,
1986    /// Profile all processes eligible for profiling on the system.
1987    /// See
1988    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
1989    /// for which processes are eligible.
1990    ///
1991    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
1992    /// will crash when trying to launch a new process as it will have an
1993    /// unexpected open socket to heapprofd.
1994    ///
1995    /// heapprofd will likely be overloaded by the amount of data for low
1996    /// sampling intervals.
1997    #[prost(bool, optional, tag="5")]
1998    pub all: ::core::option::Option<bool>,
1999    /// Do not profile processes whose anon RSS + swap < given value.
2000    /// Introduced in Android 11.
2001    #[prost(uint32, optional, tag="15")]
2002    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2003    /// Stop profile if heapprofd memory usage goes beyond the given value.
2004    /// Introduced in Android 11.
2005    #[prost(uint32, optional, tag="16")]
2006    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2007    /// Stop profile if heapprofd CPU time since start of this data-source
2008    /// goes beyond given value.
2009    /// Introduced in Android 11.
2010    #[prost(uint64, optional, tag="17")]
2011    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2012    /// Do not emit function names for mappings starting with this prefix.
2013    /// E.g. /system to not emit symbols for any system libraries.
2014    #[prost(string, repeated, tag="7")]
2015    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2016    /// Dump at a predefined interval.
2017    #[prost(message, optional, tag="6")]
2018    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2019    /// Size of the shared memory buffer between the profiled processes and
2020    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2021    /// MiB.
2022    ///
2023    /// Needs to be:
2024    /// * at least 8192,
2025    /// * a power of two,
2026    /// * a multiple of 4096.
2027    #[prost(uint64, optional, tag="8")]
2028    pub shmem_size_bytes: ::core::option::Option<u64>,
2029    /// When the shmem buffer is full, block the client instead of ending the
2030    /// trace. Use with caution as this will significantly slow down the target
2031    /// process.
2032    #[prost(bool, optional, tag="9")]
2033    pub block_client: ::core::option::Option<bool>,
2034    /// If set, stop the trace session after blocking the client for this
2035    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2036    /// Introduced in Android 11.
2037    #[prost(uint32, optional, tag="14")]
2038    pub block_client_timeout_us: ::core::option::Option<u32>,
2039    /// Do not profile processes from startup, only match already running
2040    /// processes.
2041    ///
2042    /// Can not be set at the same time as no_running.
2043    /// Introduced in Android 11.
2044    #[prost(bool, optional, tag="10")]
2045    pub no_startup: ::core::option::Option<bool>,
2046    /// Do not profile running processes. Only match processes on startup.
2047    ///
2048    /// Can not be set at the same time as no_startup.
2049    /// Introduced in Android 11.
2050    #[prost(bool, optional, tag="11")]
2051    pub no_running: ::core::option::Option<bool>,
2052    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2053    /// at the point in time when the sampled heap usage of the process was at its
2054    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2055    /// self_allocated and self_freed to not be set.
2056    /// Introduced in Android 11.
2057    #[prost(bool, optional, tag="13")]
2058    pub dump_at_max: ::core::option::Option<bool>,
2059    // FEATURE FLAGS. THERE BE DRAGONS.
2060
2061    /// Escape hatch if the session is being torn down because of a forked child
2062    /// that shares memory space, but is not correctly identified as a vforked
2063    /// child.
2064    /// Introduced in Android 11.
2065    #[prost(bool, optional, tag="18")]
2066    pub disable_fork_teardown: ::core::option::Option<bool>,
2067    /// We try to automatically detect when a target applicatation vforks but then
2068    /// does a memory allocation (or free). This auto-detection can be disabled
2069    /// with this.
2070    /// Introduced in Android 11.
2071    #[prost(bool, optional, tag="19")]
2072    pub disable_vfork_detection: ::core::option::Option<bool>,
2073}
2074/// Nested message and enum types in `HeapprofdConfig`.
2075pub mod heapprofd_config {
2076    #[derive(Clone, PartialEq, ::prost::Message)]
2077    pub struct ContinuousDumpConfig {
2078        /// ms to wait before first dump.
2079        #[prost(uint32, optional, tag="5")]
2080        pub dump_phase_ms: ::core::option::Option<u32>,
2081        /// ms to wait between following dumps.
2082        #[prost(uint32, optional, tag="6")]
2083        pub dump_interval_ms: ::core::option::Option<u32>,
2084    }
2085}
2086// End of protos/perfetto/config/profiling/heapprofd_config.proto
2087
2088// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2089
2090/// Configuration for managed app heap graph snapshots.
2091#[derive(Clone, PartialEq, ::prost::Message)]
2092pub struct JavaHprofConfig {
2093    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2094    /// comm string). The semantics of this field were changed since its original
2095    /// introduction.
2096    ///
2097    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2098    /// the profiler will attempt to match it in two possible ways:
2099    /// * if the pattern starts with a '/', then it is matched against the first
2100    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2101    ///    "/bin/echo".
2102    /// * otherwise the pattern is matched against the part of argv0
2103    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2104    ///    For example "echo" would match "/bin/echo".
2105    ///
2106    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2107    /// normalized prior to an exact string comparison. Normalization is as
2108    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2109    /// the string contains forward slashes, trim everything up to and including
2110    /// the last one.
2111    ///
2112    /// Implementation note: in either case, at most 511 characters of cmdline
2113    /// are considered.
2114    #[prost(string, repeated, tag="1")]
2115    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2116    /// For watermark based triggering or local debugging.
2117    #[prost(uint64, repeated, packed="false", tag="2")]
2118    pub pid: ::prost::alloc::vec::Vec<u64>,
2119    /// Only profile target if it was installed by one of the packages given.
2120    /// Special values are:
2121    /// * @system: installed on the system partition
2122    /// * @product: installed on the product partition
2123    /// * @null: sideloaded
2124    /// Supported on Android 12+.
2125    #[prost(string, repeated, tag="7")]
2126    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2127    /// Dump at a predefined interval.
2128    #[prost(message, optional, tag="3")]
2129    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2130    /// Do not profile processes whose anon RSS + swap < given value.
2131    #[prost(uint32, optional, tag="4")]
2132    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2133    /// Include the process' /proc/self/smaps.
2134    /// This only shows maps that:
2135    /// * start with /system
2136    /// * start with /vendor
2137    /// * start with /data/app
2138    /// * contain "extracted in memory from Y", where Y matches any of the above
2139    #[prost(bool, optional, tag="5")]
2140    pub dump_smaps: ::core::option::Option<bool>,
2141    /// Exclude objects of the following types from the profile. This can be
2142    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2143    #[prost(string, repeated, tag="6")]
2144    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2145}
2146/// Nested message and enum types in `JavaHprofConfig`.
2147pub mod java_hprof_config {
2148    /// If dump_interval_ms != 0, the following configuration is used.
2149    #[derive(Clone, PartialEq, ::prost::Message)]
2150    pub struct ContinuousDumpConfig {
2151        /// ms to wait before first continuous dump.
2152        /// A dump is always created at the beginning of the trace.
2153        #[prost(uint32, optional, tag="1")]
2154        pub dump_phase_ms: ::core::option::Option<u32>,
2155        /// ms to wait between following dumps.
2156        #[prost(uint32, optional, tag="2")]
2157        pub dump_interval_ms: ::core::option::Option<u32>,
2158        /// If true, scans all the processes to find `process_cmdline` and filter by
2159        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2160        /// S-.
2161        ///
2162        /// If false, rescans all the processes to find on every dump. Default on
2163        /// Android T+.
2164        #[prost(bool, optional, tag="3")]
2165        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2166    }
2167}
2168// End of protos/perfetto/config/profiling/java_hprof_config.proto
2169
2170// Begin of protos/perfetto/common/perf_events.proto
2171
2172#[derive(Clone, PartialEq, ::prost::Message)]
2173pub struct PerfEvents {
2174}
2175/// Nested message and enum types in `PerfEvents`.
2176pub mod perf_events {
2177    /// The primary event to count. If recording multiple events, this
2178    /// counter is the "group leader".
2179    /// Commented from the perspective of its use in |PerfEventConfig|.
2180    /// Next id: 12
2181    #[derive(Clone, PartialEq, ::prost::Message)]
2182    pub struct Timebase {
2183        /// If set, samples will be timestamped with the given clock.
2184        /// If unset, the clock is chosen by the implementation.
2185        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2186        /// used for hardware events (due to interrupt safety), for which the
2187        /// recommendation is to use one of the monotonic clocks.
2188        #[prost(enumeration="PerfClock", optional, tag="11")]
2189        pub timestamp_clock: ::core::option::Option<i32>,
2190        /// Optional arbitrary name for the event, to identify it in the parsed
2191        /// trace. Does *not* affect the profiling itself. If unset, the trace
2192        /// parser will choose a suitable name.
2193        #[prost(string, optional, tag="10")]
2194        pub name: ::core::option::Option<::prost::alloc::string::String>,
2195        /// How often to snapshot the counter, along with any follower events and
2196        /// any additional sampled data such as callstacks.
2197        ///
2198        /// This choice also controls how the readings are taken:
2199        /// * With |frequency| or |period|, samples are taken by the kernel
2200        ///    into a ring buffer. Analogous to `perf record`.
2201        /// * With |poll_period_ms|, the userspace periodically snapshots
2202        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2203        /// Prefer the sampling options unless you're recording PMUs whose
2204        /// perf drivers only support the reading mode.
2205        ///
2206        /// If unset, an implementation-defined sampling default is used.
2207        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2208        pub interval: ::core::option::Option<timebase::Interval>,
2209        /// Counting event to use as the timebase.
2210        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2211        /// which is what you usually want.
2212        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2213        pub event: ::core::option::Option<timebase::Event>,
2214    }
2215    /// Nested message and enum types in `Timebase`.
2216    pub mod timebase {
2217        /// How often to snapshot the counter, along with any follower events and
2218        /// any additional sampled data such as callstacks.
2219        ///
2220        /// This choice also controls how the readings are taken:
2221        /// * With |frequency| or |period|, samples are taken by the kernel
2222        ///    into a ring buffer. Analogous to `perf record`.
2223        /// * With |poll_period_ms|, the userspace periodically snapshots
2224        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2225        /// Prefer the sampling options unless you're recording PMUs whose
2226        /// perf drivers only support the reading mode.
2227        ///
2228        /// If unset, an implementation-defined sampling default is used.
2229        #[derive(Clone, PartialEq, ::prost::Oneof)]
2230        pub enum Interval {
2231            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2232            /// same as 1/period.
2233            /// Details: the actual sampling will still be based on a period, but the
2234            /// kernel will dynamically adjust it based on the observed event rate, to
2235            /// approximate this frequency. Works best with steady-rate events like
2236            /// timers.
2237            /// Not guaranteed to be honored as the kernel can throttle the sampling
2238            /// rate if it's too high.
2239            #[prost(uint64, tag="2")]
2240            Frequency(u64),
2241            /// Per-cpu sampling will occur every |period| counts of |event|.
2242            /// Prefer |frequency| by default, as it's easier to oversample with a
2243            /// fixed period.
2244            /// Not guaranteed to be honored as the kernel can throttle the sampling
2245            /// rate if it's too high.
2246            #[prost(uint64, tag="1")]
2247            Period(u64),
2248            /// Per-cpu values are read by the userspace every interval. If using this
2249            /// mode, only follower events are supported. Options such as
2250            /// |PerfEventConfig.CallstackSampling| are incompatible.
2251            /// The period can't be guaranteed to be exact since the readings are taken
2252            /// by userspace.
2253            #[prost(uint32, tag="6")]
2254            PollPeriodMs(u32),
2255        }
2256        /// Counting event to use as the timebase.
2257        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2258        /// which is what you usually want.
2259        #[derive(Clone, PartialEq, ::prost::Oneof)]
2260        pub enum Event {
2261            #[prost(enumeration="super::Counter", tag="4")]
2262            Counter(i32),
2263            #[prost(message, tag="3")]
2264            Tracepoint(super::Tracepoint),
2265            #[prost(message, tag="5")]
2266            RawEvent(super::RawEvent),
2267        }
2268    }
2269    #[derive(Clone, PartialEq, ::prost::Message)]
2270    pub struct Tracepoint {
2271        /// Group and name for the tracepoint, acceptable forms:
2272        /// * "sched/sched_switch"
2273        /// * "sched:sched_switch"
2274        #[prost(string, optional, tag="1")]
2275        pub name: ::core::option::Option<::prost::alloc::string::String>,
2276        /// Optional field-level filter for the tracepoint. Only events matching this
2277        /// filter will be counted (and therefore contribute to the sampling period).
2278        /// Example: "prev_pid >= 42 && next_pid == 0".
2279        /// For full syntax, see kernel documentation on "Event filtering":
2280        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2281        #[prost(string, optional, tag="2")]
2282        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2283    }
2284    /// Syscall-level description of the event, propagated to the perf_event_attr
2285    /// struct. Primarily for local use-cases, since the event availability and
2286    /// encoding is hardware-specific.
2287    #[derive(Clone, PartialEq, ::prost::Message)]
2288    pub struct RawEvent {
2289        #[prost(uint32, optional, tag="1")]
2290        pub r#type: ::core::option::Option<u32>,
2291        #[prost(uint64, optional, tag="2")]
2292        pub config: ::core::option::Option<u64>,
2293        #[prost(uint64, optional, tag="3")]
2294        pub config1: ::core::option::Option<u64>,
2295        #[prost(uint64, optional, tag="4")]
2296        pub config2: ::core::option::Option<u64>,
2297    }
2298    /// Builtin counter names from the uapi header. Commented with their perf tool
2299    /// aliases.
2300    /// TODO(rsavitski): consider generating enums for cache events (should be
2301    /// finite), and generally make this list as extensive as possible. Excluding
2302    /// things like dynamic PMUs since those don't fit into a static enum.
2303    /// Next id: 21
2304    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2305    #[repr(i32)]
2306    pub enum Counter {
2307        UnknownCounter = 0,
2308        /// cpu-clock
2309        SwCpuClock = 1,
2310        /// page-faults, faults
2311        SwPageFaults = 2,
2312        /// task-clock
2313        SwTaskClock = 3,
2314        /// context-switches, cs
2315        SwContextSwitches = 4,
2316        /// cpu-migrations, migrations
2317        SwCpuMigrations = 5,
2318        /// minor-faults
2319        SwPageFaultsMin = 6,
2320        /// major-faults
2321        SwPageFaultsMaj = 7,
2322        /// alignment-faults
2323        SwAlignmentFaults = 8,
2324        /// emulation-faults
2325        SwEmulationFaults = 9,
2326        /// dummy
2327        SwDummy = 20,
2328        /// cpu-cycles, cycles
2329        HwCpuCycles = 10,
2330        /// instructions
2331        HwInstructions = 11,
2332        /// cache-references
2333        HwCacheReferences = 12,
2334        /// cache-misses
2335        HwCacheMisses = 13,
2336        /// branch-instructions, branches
2337        HwBranchInstructions = 14,
2338        /// branch-misses
2339        HwBranchMisses = 15,
2340        /// bus-cycles
2341        HwBusCycles = 16,
2342        /// stalled-cycles-frontend, idle-cycles-frontend
2343        HwStalledCyclesFrontend = 17,
2344        /// stalled-cycles-backend, idle-cycles-backend
2345        HwStalledCyclesBackend = 18,
2346        /// ref-cycles
2347        HwRefCpuCycles = 19,
2348    }
2349    impl Counter {
2350        /// String value of the enum field names used in the ProtoBuf definition.
2351        ///
2352        /// The values are not transformed in any way and thus are considered stable
2353        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2354        pub fn as_str_name(&self) -> &'static str {
2355            match self {
2356                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2357                Counter::SwCpuClock => "SW_CPU_CLOCK",
2358                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2359                Counter::SwTaskClock => "SW_TASK_CLOCK",
2360                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2361                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2362                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2363                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2364                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2365                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2366                Counter::SwDummy => "SW_DUMMY",
2367                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2368                Counter::HwInstructions => "HW_INSTRUCTIONS",
2369                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2370                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2371                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2372                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2373                Counter::HwBusCycles => "HW_BUS_CYCLES",
2374                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2375                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2376                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2377            }
2378        }
2379    }
2380    /// Subset of clocks that is supported by perf timestamping.
2381    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2382    /// would require additions to the trace clock synchronisation logic.
2383    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2384    #[repr(i32)]
2385    pub enum PerfClock {
2386        UnknownPerfClock = 0,
2387        Realtime = 1,
2388        Monotonic = 2,
2389        MonotonicRaw = 3,
2390        Boottime = 4,
2391    }
2392    impl PerfClock {
2393        /// String value of the enum field names used in the ProtoBuf definition.
2394        ///
2395        /// The values are not transformed in any way and thus are considered stable
2396        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2397        pub fn as_str_name(&self) -> &'static str {
2398            match self {
2399                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2400                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2401                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2402                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2403                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2404            }
2405        }
2406    }
2407}
2408/// Additional events associated with a leader.
2409/// Configuration is similar to Timebase event. Because data acquisition is
2410/// driven by the leader there is no option to configure the clock or the
2411/// frequency.
2412#[derive(Clone, PartialEq, ::prost::Message)]
2413pub struct FollowerEvent {
2414    #[prost(string, optional, tag="4")]
2415    pub name: ::core::option::Option<::prost::alloc::string::String>,
2416    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2417    pub event: ::core::option::Option<follower_event::Event>,
2418}
2419/// Nested message and enum types in `FollowerEvent`.
2420pub mod follower_event {
2421    #[derive(Clone, PartialEq, ::prost::Oneof)]
2422    pub enum Event {
2423        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2424        Counter(i32),
2425        #[prost(message, tag="2")]
2426        Tracepoint(super::perf_events::Tracepoint),
2427        #[prost(message, tag="3")]
2428        RawEvent(super::perf_events::RawEvent),
2429    }
2430}
2431// End of protos/perfetto/common/perf_events.proto
2432
2433// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2434
2435/// Configuration for the traced_perf profiler.
2436///
2437/// Example config for basic cpu profiling:
2438///    perf_event_config {
2439///      timebase {
2440///        frequency: 80
2441///      }
2442///      callstack_sampling {
2443///        scope {
2444///          target_cmdline: "surfaceflinger"
2445///          target_cmdline: "system_server"
2446///        }
2447///        kernel_frames: true
2448///      }
2449///    }
2450///
2451/// Next id: 21
2452#[derive(Clone, PartialEq, ::prost::Message)]
2453pub struct PerfEventConfig {
2454    /// What event to sample on, and how often.
2455    /// Defined in common/perf_events.proto.
2456    #[prost(message, optional, tag="15")]
2457    pub timebase: ::core::option::Option<perf_events::Timebase>,
2458    /// Other events associated with the leader described in the timebase.
2459    #[prost(message, repeated, tag="19")]
2460    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2461    /// If set, the profiler will sample userspace processes' callstacks at the
2462    /// interval specified by the |timebase|.
2463    /// If unset, the profiler will record only the event counts.
2464    #[prost(message, optional, tag="16")]
2465    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2466    /// List of cpu indices for counting. If empty, the default is all cpus.
2467    ///
2468    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2469    /// counter-only traces. A future change will likely reorganise the options,
2470    /// but this field will continue to be supported.
2471    ///
2472    /// Available since: perfetto v50.
2473    #[prost(uint32, repeated, packed="false", tag="20")]
2474    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2475    //
2476    // Kernel <-> userspace ring buffer options:
2477    //
2478
2479    /// How often the per-cpu ring buffers are read by the producer.
2480    /// If unset, an implementation-defined default is used.
2481    #[prost(uint32, optional, tag="8")]
2482    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2483    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2484    /// kernel. If set, must be a power of two.
2485    /// If unset, an implementation-defined default is used.
2486    #[prost(uint32, optional, tag="3")]
2487    pub ring_buffer_pages: ::core::option::Option<u32>,
2488    //
2489    // Daemon's resource usage limits:
2490    //
2491
2492    /// Drop samples if the heap memory held by the samples in the unwinder queue
2493    /// is above the given limit. This counts the memory across all concurrent data
2494    /// sources (not just this one's), and there is no fairness guarantee - the
2495    /// whole quota might be used up by a concurrent source.
2496    #[prost(uint64, optional, tag="17")]
2497    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2498    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2499    /// footprint exceeds this value.
2500    #[prost(uint32, optional, tag="13")]
2501    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2502    //
2503    // Uncommon options:
2504    //
2505
2506    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2507    /// sampled process. This is primarily for Android, where this lookup is
2508    /// asynchronous. As long as the producer is waiting, the associated samples
2509    /// will be kept enqueued (putting pressure on the capacity of the shared
2510    /// unwinding queue). Once a lookup for a process expires, all associated
2511    /// samples are discarded. However, if the lookup still succeeds after the
2512    /// timeout, future samples will be handled normally.
2513    /// If unset, an implementation-defined default is used.
2514    #[prost(uint32, optional, tag="9")]
2515    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2516    /// Optional period for clearing state cached by the unwinder. This is a heavy
2517    /// operation that is only necessary for traces that target a wide set of
2518    /// processes, and require the memory footprint to be reset periodically.
2519    /// If unset, the cached state will not be cleared.
2520    #[prost(uint32, optional, tag="10")]
2521    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2522    /// If set, only profile target if it was installed by a package with one of
2523    /// these names. Special values:
2524    /// * "@system": installed on the system partition
2525    /// * "@product": installed on the product partition
2526    /// * "@null": sideloaded
2527    /// Supported on Android 12+.
2528    #[prost(string, repeated, tag="18")]
2529    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2530    //
2531    // Deprecated (superseded by options above):
2532    //
2533    // Do not set *any* of these fields in new configs.
2534    //
2535
2536    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2537    /// We rely on this to detect such configs.
2538    #[prost(bool, optional, tag="1")]
2539    pub all_cpus: ::core::option::Option<bool>,
2540    #[prost(uint32, optional, tag="2")]
2541    pub sampling_frequency: ::core::option::Option<u32>,
2542    #[prost(bool, optional, tag="12")]
2543    pub kernel_frames: ::core::option::Option<bool>,
2544    #[prost(int32, repeated, packed="false", tag="4")]
2545    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2546    #[prost(string, repeated, tag="5")]
2547    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2548    #[prost(int32, repeated, packed="false", tag="6")]
2549    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2550    #[prost(string, repeated, tag="7")]
2551    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2552    #[prost(uint32, optional, tag="11")]
2553    pub additional_cmdline_count: ::core::option::Option<u32>,
2554}
2555/// Nested message and enum types in `PerfEventConfig`.
2556pub mod perf_event_config {
2557    //
2558    // Sub-messages (nested for generated code namespacing).
2559    //
2560
2561    #[derive(Clone, PartialEq, ::prost::Message)]
2562    pub struct CallstackSampling {
2563        /// Defines a set of processes for which samples are retained/skipped. If
2564        /// unset, all samples are kept, but beware that it will be very heavy on the
2565        /// stack unwinder, which might start dropping samples due to overload.
2566        #[prost(message, optional, tag="1")]
2567        pub scope: ::core::option::Option<Scope>,
2568        /// If true, callstacks will include the kernel-space frames. Such frames can
2569        /// be identified by a magical "kernel" string as their mapping name.
2570        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2571        /// manually unrestricted. On Android, the platform should do the right thing
2572        /// on debug builds.
2573        /// This does *not* disclose KASLR, as only the function names are emitted.
2574        #[prost(bool, optional, tag="2")]
2575        pub kernel_frames: ::core::option::Option<bool>,
2576        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2577        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2578        /// as the most common default (this defaulting is only applicable if the
2579        /// outer CallstackSampling message is explicitly set).
2580        #[prost(enumeration="UnwindMode", optional, tag="3")]
2581        pub user_frames: ::core::option::Option<i32>,
2582    }
2583    #[derive(Clone, PartialEq, ::prost::Message)]
2584    pub struct Scope {
2585        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2586        /// samples will be retained. If multiple allow/deny-lists are
2587        /// specified by the config, then all of them are evaluated for each sampled
2588        /// process.
2589        #[prost(int32, repeated, packed="false", tag="1")]
2590        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2591        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2592        /// comm string). The semantics of this field were changed since its original
2593        /// introduction.
2594        ///
2595        /// On Android T+ (13+), this field can specify a single wildcard (*), and
2596        /// the profiler will attempt to match it in two possible ways:
2597        /// * if the pattern starts with a '/', then it is matched against the first
2598        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2599        ///    "/bin/echo".
2600        /// * otherwise the pattern is matched against the part of argv0
2601        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2602        ///    For example "echo" would match "/bin/echo".
2603        ///
2604        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2605        /// normalized prior to an exact string comparison. Normalization is as
2606        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2607        /// the string contains forward slashes, trim everything up to and including
2608        /// the last one.
2609        ///
2610        /// Implementation note: in either case, at most 511 characters of cmdline
2611        /// are considered.
2612        #[prost(string, repeated, tag="2")]
2613        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2614        /// List of excluded pids.
2615        #[prost(int32, repeated, packed="false", tag="3")]
2616        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2617        /// List of excluded cmdlines. See description of |target_cmdline| for how
2618        /// this is handled.
2619        #[prost(string, repeated, tag="4")]
2620        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2621        // Niche features for systemwide callstacks:
2622
2623        /// Number of additional command lines to sample. Only those which are
2624        /// neither explicitly included nor excluded will be considered. Processes
2625        /// are accepted on a first come, first served basis.
2626        #[prost(uint32, optional, tag="5")]
2627        pub additional_cmdline_count: ::core::option::Option<u32>,
2628        /// If set to N, all encountered processes will be put into one of the N
2629        /// possible bins, and only one randomly-chosen bin will be selected for
2630        /// unwinding. The binning is simply "pid % N", under the assumption that
2631        /// low-order bits of pids are roughly uniformly distributed. Other explicit
2632        /// inclusions/exclusions in this |Scope| message are still respected.
2633        ///
2634        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
2635        /// values will be queryable in trace processor under the "stats" table as
2636        /// "perf_process_shard_count" and "perf_chosen_process_shard".
2637        ///
2638        /// NB: all data sources in a config that set |process_shard_count| must set
2639        /// it to the same value. The profiler will choose one bin for all those data
2640        /// sources.
2641        #[prost(uint32, optional, tag="6")]
2642        pub process_shard_count: ::core::option::Option<u32>,
2643    }
2644    /// Userspace unwinding mode. A possible future addition is kernel-unwound
2645    /// callchains for frame pointer based systems.
2646    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2647    #[repr(i32)]
2648    pub enum UnwindMode {
2649        UnwindUnknown = 0,
2650        /// Do not unwind userspace:
2651        UnwindSkip = 1,
2652        /// Use libunwindstack (default):
2653        UnwindDwarf = 2,
2654        /// Use userspace frame pointer unwinder:
2655        UnwindFramePointer = 3,
2656    }
2657    impl UnwindMode {
2658        /// String value of the enum field names used in the ProtoBuf definition.
2659        ///
2660        /// The values are not transformed in any way and thus are considered stable
2661        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2662        pub fn as_str_name(&self) -> &'static str {
2663            match self {
2664                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
2665                UnwindMode::UnwindSkip => "UNWIND_SKIP",
2666                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
2667                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
2668            }
2669        }
2670    }
2671}
2672// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
2673
2674/// This file is named 'statsd_tracing_config.proto' rather than
2675/// 'statsd_config.proto' (which would be more consistent with the other
2676/// config protos) so it doesn't show up and confuse folks looking for
2677/// the existing statsd_config.proto for configuring statsd itself.
2678/// Same for the config proto itself.
2679#[derive(Clone, PartialEq, ::prost::Message)]
2680pub struct StatsdTracingConfig {
2681    /// This is for the common case of the atom id being known in the enum AtomId.
2682    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2683    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
2684    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
2685    /// (e.g. non-upstream atoms that don't exist in AOSP).
2686    #[prost(int32, repeated, packed="false", tag="2")]
2687    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
2688    #[prost(message, repeated, tag="3")]
2689    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
2690}
2691#[derive(Clone, PartialEq, ::prost::Message)]
2692pub struct StatsdPullAtomConfig {
2693    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2694    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2695    #[prost(int32, repeated, packed="false", tag="2")]
2696    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2697    #[prost(int32, optional, tag="3")]
2698    pub pull_frequency_ms: ::core::option::Option<i32>,
2699    #[prost(string, repeated, tag="4")]
2700    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2701}
2702// End of protos/perfetto/common/sys_stats_counters.proto
2703
2704// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
2705
2706/// This file defines the configuration for the Linux /proc poller data source,
2707/// which injects counters in the trace.
2708/// Counters that are needed in the trace must be explicitly listed in the
2709/// *_counters fields. This is to avoid spamming the trace with all counters
2710/// at all times.
2711/// The sampling rate is configurable. All polling rates (*_period_ms) need
2712/// to be integer multiples of each other.
2713/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
2714/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
2715#[derive(Clone, PartialEq, ::prost::Message)]
2716pub struct SysStatsConfig {
2717    /// Polls /proc/meminfo every X ms, if non-zero.
2718    /// This is required to be > 10ms to avoid excessive CPU usage.
2719    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
2720    #[prost(uint32, optional, tag="1")]
2721    pub meminfo_period_ms: ::core::option::Option<u32>,
2722    /// If empty all known counters are reported. Otherwise, only the counters
2723    /// specified below are reported.
2724    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
2725    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
2726    /// Polls /proc/vmstat every X ms, if non-zero.
2727    /// This is required to be > 10ms to avoid excessive CPU usage.
2728    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
2729    #[prost(uint32, optional, tag="3")]
2730    pub vmstat_period_ms: ::core::option::Option<u32>,
2731    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
2732    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
2733    /// Pols /proc/stat every X ms, if non-zero.
2734    /// This is required to be > 10ms to avoid excessive CPU usage.
2735    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
2736    #[prost(uint32, optional, tag="5")]
2737    pub stat_period_ms: ::core::option::Option<u32>,
2738    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
2739    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
2740    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
2741    /// This is required to be > 10ms to avoid excessive CPU usage.
2742    /// This option can be used to record unchanging values.
2743    /// Updates from frequency changes can come from ftrace/set_clock_rate.
2744    #[prost(uint32, optional, tag="7")]
2745    pub devfreq_period_ms: ::core::option::Option<u32>,
2746    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
2747    /// This is required to be > 10ms to avoid excessive CPU usage.
2748    #[prost(uint32, optional, tag="8")]
2749    pub cpufreq_period_ms: ::core::option::Option<u32>,
2750    /// Polls /proc/buddyinfo every X ms, if non-zero.
2751    /// This is required to be > 10ms to avoid excessive CPU usage.
2752    #[prost(uint32, optional, tag="9")]
2753    pub buddyinfo_period_ms: ::core::option::Option<u32>,
2754    /// Polls /proc/diskstats every X ms, if non-zero.
2755    /// This is required to be > 10ms to avoid excessive CPU usage.
2756    #[prost(uint32, optional, tag="10")]
2757    pub diskstat_period_ms: ::core::option::Option<u32>,
2758    /// Polls /proc/pressure/* every X ms, if non-zero.
2759    /// This is required to be > 10ms to avoid excessive CPU usage.
2760    #[prost(uint32, optional, tag="11")]
2761    pub psi_period_ms: ::core::option::Option<u32>,
2762    /// Polls /sys/class/thermal/* every X ms, if non-zero.
2763    /// This is required to be > 10ms to avoid excessive CPU usage.
2764    #[prost(uint32, optional, tag="12")]
2765    pub thermal_period_ms: ::core::option::Option<u32>,
2766    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
2767    /// This is required to be > 10ms to avoid excessive CPU usage.
2768    #[prost(uint32, optional, tag="13")]
2769    pub cpuidle_period_ms: ::core::option::Option<u32>,
2770    /// Polls device-specific GPU frequency info every X ms, if non-zero.
2771    /// This is required to be > 10ms to avoid excessive CPU usage.
2772    #[prost(uint32, optional, tag="14")]
2773    pub gpufreq_period_ms: ::core::option::Option<u32>,
2774}
2775/// Nested message and enum types in `SysStatsConfig`.
2776pub mod sys_stats_config {
2777    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2778    #[repr(i32)]
2779    pub enum StatCounters {
2780        StatUnspecified = 0,
2781        StatCpuTimes = 1,
2782        StatIrqCounts = 2,
2783        StatSoftirqCounts = 3,
2784        StatForkCount = 4,
2785    }
2786    impl StatCounters {
2787        /// String value of the enum field names used in the ProtoBuf definition.
2788        ///
2789        /// The values are not transformed in any way and thus are considered stable
2790        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2791        pub fn as_str_name(&self) -> &'static str {
2792            match self {
2793                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
2794                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
2795                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
2796                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
2797                StatCounters::StatForkCount => "STAT_FORK_COUNT",
2798            }
2799        }
2800    }
2801}
2802// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
2803
2804// Begin of protos/perfetto/config/system_info/system_info_config.proto
2805
2806/// This data-source does a one-off recording of system information when
2807/// the trace starts.
2808/// Currently this includes:
2809/// - Values of
2810/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
2811/// datasource has no configuration options at present.
2812#[derive(Clone, PartialEq, ::prost::Message)]
2813pub struct SystemInfoConfig {
2814}
2815// End of protos/perfetto/config/system_info/system_info_config.proto
2816
2817// Begin of protos/perfetto/config/test_config.proto
2818
2819/// The configuration for a fake producer used in tests.
2820#[derive(Clone, PartialEq, ::prost::Message)]
2821pub struct TestConfig {
2822    /// The number of messages the fake producer should send.
2823    #[prost(uint32, optional, tag="1")]
2824    pub message_count: ::core::option::Option<u32>,
2825    /// The maximum number of messages which should be sent each second.
2826    /// The actual obserced speed may be lower if the producer is unable to
2827    /// work fast enough.
2828    /// If this is zero or unset, the producer will send as fast as possible.
2829    #[prost(uint32, optional, tag="2")]
2830    pub max_messages_per_second: ::core::option::Option<u32>,
2831    /// The seed value for a simple multiplicative congruential pseudo-random
2832    /// number sequence.
2833    #[prost(uint32, optional, tag="3")]
2834    pub seed: ::core::option::Option<u32>,
2835    /// The size of each message in bytes. Should be greater than or equal 5 to
2836    /// account for the number of bytes needed to encode the random number and a
2837    /// null byte for the string.
2838    #[prost(uint32, optional, tag="4")]
2839    pub message_size: ::core::option::Option<u32>,
2840    /// Whether the producer should send a event batch when the data source is
2841    /// is initially registered.
2842    #[prost(bool, optional, tag="5")]
2843    pub send_batch_on_register: ::core::option::Option<bool>,
2844    #[prost(message, optional, tag="6")]
2845    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
2846}
2847/// Nested message and enum types in `TestConfig`.
2848pub mod test_config {
2849    #[derive(Clone, PartialEq, ::prost::Message)]
2850    pub struct DummyFields {
2851        #[prost(uint32, optional, tag="1")]
2852        pub field_uint32: ::core::option::Option<u32>,
2853        #[prost(int32, optional, tag="2")]
2854        pub field_int32: ::core::option::Option<i32>,
2855        #[prost(uint64, optional, tag="3")]
2856        pub field_uint64: ::core::option::Option<u64>,
2857        #[prost(int64, optional, tag="4")]
2858        pub field_int64: ::core::option::Option<i64>,
2859        #[prost(fixed64, optional, tag="5")]
2860        pub field_fixed64: ::core::option::Option<u64>,
2861        #[prost(sfixed64, optional, tag="6")]
2862        pub field_sfixed64: ::core::option::Option<i64>,
2863        #[prost(fixed32, optional, tag="7")]
2864        pub field_fixed32: ::core::option::Option<u32>,
2865        #[prost(sfixed32, optional, tag="8")]
2866        pub field_sfixed32: ::core::option::Option<i32>,
2867        #[prost(double, optional, tag="9")]
2868        pub field_double: ::core::option::Option<f64>,
2869        #[prost(float, optional, tag="10")]
2870        pub field_float: ::core::option::Option<f32>,
2871        #[prost(sint64, optional, tag="11")]
2872        pub field_sint64: ::core::option::Option<i64>,
2873        #[prost(sint32, optional, tag="12")]
2874        pub field_sint32: ::core::option::Option<i32>,
2875        #[prost(string, optional, tag="13")]
2876        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
2877        #[prost(bytes="vec", optional, tag="14")]
2878        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2879    }
2880}
2881// End of protos/perfetto/config/test_config.proto
2882
2883// Begin of protos/perfetto/config/track_event/track_event_config.proto
2884
2885/// The following fields define the set of enabled trace categories. Each list
2886/// item is a glob.
2887///
2888/// To determine if category is enabled, it is checked against the filters in
2889/// the following order:
2890///
2891///    1. Exact matches in enabled categories.
2892///    2. Exact matches in enabled tags.
2893///    3. Exact matches in disabled categories.
2894///    4. Exact matches in disabled tags.
2895///    5. Pattern matches in enabled categories.
2896///    6. Pattern matches in enabled tags.
2897///    7. Pattern matches in disabled categories.
2898///    8. Pattern matches in disabled tags.
2899///
2900/// If none of the steps produced a match:
2901///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
2902///   default.
2903///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
2904///
2905/// Examples:
2906///
2907///   - To enable all non-slow/debug categories:
2908///
2909///        enabled_categories: "*"
2910///
2911///   - To enable specific categories:
2912///
2913///        disabled_categories: "*"
2914///        enabled_categories: "my_category"
2915///        enabled_categories: "my_category2"
2916///
2917///   - To enable only categories with a specific tag:
2918///
2919///        disabled_tags: "*"
2920///        enabled_tags: "my_tag"
2921///
2922#[derive(Clone, PartialEq, ::prost::Message)]
2923pub struct TrackEventConfig {
2924    /// Default: []
2925    #[prost(string, repeated, tag="1")]
2926    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2927    /// Default: []
2928    #[prost(string, repeated, tag="2")]
2929    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2930    /// Default: ["slow", "debug"]
2931    #[prost(string, repeated, tag="3")]
2932    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2933    /// Default: []
2934    #[prost(string, repeated, tag="4")]
2935    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2936    /// Default: false (i.e. enabled by default)
2937    #[prost(bool, optional, tag="5")]
2938    pub disable_incremental_timestamps: ::core::option::Option<bool>,
2939    /// Allows to specify a custom unit different than the default (ns).
2940    /// Also affects thread timestamps if enable_thread_time_sampling = true.
2941    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
2942    /// 3000 ns = 3 us.
2943    /// Default: 1 (if unset, it should be read as 1).
2944    #[prost(uint64, optional, tag="6")]
2945    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
2946    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
2947    /// When true, any debug annotations provided as arguments to the
2948    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
2949    /// still be emitted even if set to true.
2950    #[prost(bool, optional, tag="7")]
2951    pub filter_debug_annotations: ::core::option::Option<bool>,
2952    /// Default: false (i.e. disabled)
2953    /// When true, the SDK samples and emits the current thread time counter value
2954    /// for each event on the current thread's track. This value represents the
2955    /// total CPU time consumed by that thread since its creation.
2956    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
2957    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
2958    #[prost(bool, optional, tag="8")]
2959    pub enable_thread_time_sampling: ::core::option::Option<bool>,
2960    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
2961    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
2962    /// out.
2963    #[prost(bool, optional, tag="9")]
2964    pub filter_dynamic_event_names: ::core::option::Option<bool>,
2965}
2966// End of protos/perfetto/config/track_event/track_event_config.proto
2967
2968// Begin of protos/perfetto/config/data_source_config.proto
2969
2970/// The configuration that is passed to each data source when starting tracing.
2971/// Next id: 138
2972#[derive(Clone, PartialEq, ::prost::Message)]
2973pub struct DataSourceConfig {
2974    /// Data source unique name, e.g., "linux.ftrace". This must match
2975    /// the name passed by the data source when it registers (see
2976    /// RegisterDataSource()).
2977    #[prost(string, optional, tag="1")]
2978    pub name: ::core::option::Option<::prost::alloc::string::String>,
2979    /// The index of the logging buffer where TracePacket(s) will be stored.
2980    /// This field doesn't make a major difference for the Producer(s). The final
2981    /// logging buffers, in fact, are completely owned by the Service. We just ask
2982    /// the Producer to copy this number into the chunk headers it emits, so that
2983    /// the Service can quickly identify the buffer where to move the chunks into
2984    /// without expensive lookups on its fastpath.
2985    #[prost(uint32, optional, tag="2")]
2986    pub target_buffer: ::core::option::Option<u32>,
2987    /// Set by the service to indicate the duration of the trace.
2988    /// DO NOT SET in consumer as this will be overridden by the service.
2989    #[prost(uint32, optional, tag="3")]
2990    pub trace_duration_ms: ::core::option::Option<u32>,
2991    /// If true, |trace_duration_ms| should count also time in suspend. This
2992    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
2993    #[prost(bool, optional, tag="122")]
2994    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
2995    /// Set by the service to indicate how long it waits after StopDataSource.
2996    /// DO NOT SET in consumer as this will be overridden by the service.
2997    #[prost(uint32, optional, tag="7")]
2998    pub stop_timeout_ms: ::core::option::Option<u32>,
2999    /// Set by the service to indicate whether this tracing session has extra
3000    /// guardrails.
3001    /// DO NOT SET in consumer as this will be overridden by the service.
3002    #[prost(bool, optional, tag="6")]
3003    pub enable_extra_guardrails: ::core::option::Option<bool>,
3004    /// Set by the service to indicate which user initiated this trace.
3005    /// DO NOT SET in consumer as this will be overridden by the service.
3006    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3007    pub session_initiator: ::core::option::Option<i32>,
3008    /// Set by the service to indicate which tracing session the data source
3009    /// belongs to. The intended use case for this is checking if two data sources,
3010    /// one of which produces metadata for the other one, belong to the same trace
3011    /// session and hence should be linked together.
3012    /// This field was introduced in Aug 2018 after Android P.
3013    /// DO NOT SET in consumer as this will be overridden by the service.
3014    #[prost(uint64, optional, tag="4")]
3015    pub tracing_session_id: ::core::option::Option<u64>,
3016    /// How to behave when the producer runs out of space in the shared memory
3017    /// buffer. This is only honored by some data sources (in the SDK, the data
3018    /// sources registered with a configurable buffer exhausted policy).
3019    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3020    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3021    #[prost(message, optional, tag="10")]
3022    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3023    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3024    // data-sources and needs to be processed by the traced daemon.
3025
3026    // All data source config fields must be marked as \[lazy=true\]. This prevents
3027    // the proto-to-cpp generator from recursing into those when generating the
3028    // cpp classes and polluting tracing/core with data-source-specific classes.
3029    // Instead they are treated as opaque strings containing raw proto bytes.
3030
3031    /// Data source name: linux.ftrace
3032    #[prost(message, optional, tag="100")]
3033    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3034    /// Data source name: linux.inode_file_map
3035    #[prost(message, optional, tag="102")]
3036    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3037    /// Data source name: linux.process_stats
3038    #[prost(message, optional, tag="103")]
3039    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3040    /// Data source name: linux.sys_stats
3041    #[prost(message, optional, tag="104")]
3042    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3043    /// Data source name: android.heapprofd
3044    /// Introduced in Android 10.
3045    #[prost(message, optional, tag="105")]
3046    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3047    /// Data source name: android.java_hprof
3048    /// Introduced in Android 11.
3049    #[prost(message, optional, tag="110")]
3050    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3051    /// Data source name: android.power
3052    #[prost(message, optional, tag="106")]
3053    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3054    /// Data source name: android.log
3055    #[prost(message, optional, tag="107")]
3056    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3057    /// Data source name: gpu.counters
3058    #[prost(message, optional, tag="108")]
3059    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3060    /// Data source name: android.game_interventions
3061    #[prost(message, optional, tag="116")]
3062    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3063    /// Data source name: android.packages_list
3064    #[prost(message, optional, tag="109")]
3065    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3066    /// Data source name: linux.perf
3067    #[prost(message, optional, tag="111")]
3068    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3069    /// Data source name: vulkan.memory_tracker
3070    #[prost(message, optional, tag="112")]
3071    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3072    /// Data source name: track_event
3073    #[prost(message, optional, tag="113")]
3074    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3075    /// Data source name: android.polled_state
3076    #[prost(message, optional, tag="114")]
3077    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3078    /// Data source name: android.system_property
3079    #[prost(message, optional, tag="118")]
3080    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3081    /// Data source name: android.statsd
3082    #[prost(message, optional, tag="117")]
3083    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3084    /// Data source name: linux.system_info
3085    #[prost(message, optional, tag="119")]
3086    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3087    /// Data source name: linux.frozen_ftrace
3088    #[prost(message, optional, tag="136")]
3089    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3090    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3091    /// avoid proto serialization and de-serialization there because that would
3092    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3093    /// C++ class for it so it can pass around plain C++ objets.
3094    #[prost(message, optional, tag="101")]
3095    pub chrome_config: ::core::option::Option<ChromeConfig>,
3096    /// Data source name: code.v8.dev
3097    #[prost(message, optional, tag="127")]
3098    pub v8_config: ::core::option::Option<V8Config>,
3099    /// If an interceptor is specified here, packets for this data source will be
3100    /// rerouted to the interceptor instead of the main trace buffer. This can be
3101    /// used, for example, to write trace data into ETW or for logging trace points
3102    /// to the console.
3103    ///
3104    /// Note that interceptors are only supported by data sources registered
3105    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3106    /// traced_probes) may not support interception.
3107    #[prost(message, optional, tag="115")]
3108    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3109    /// Data source name: android.network_packets.
3110    /// Introduced in Android 14 (U).
3111    #[prost(message, optional, tag="120")]
3112    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3113    /// Data source name: android.surfaceflinger.layers
3114    #[prost(message, optional, tag="121")]
3115    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3116    /// Data source name: android.surfaceflinger.transactions
3117    #[prost(message, optional, tag="123")]
3118    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3119    /// Data source name: android.sdk_sysprop_guard
3120    /// Introduced in Android 14 (U) QPR1.
3121    #[prost(message, optional, tag="124")]
3122    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3123    /// Data source name: windows.etw
3124    #[prost(message, optional, tag="125")]
3125    pub etw_config: ::core::option::Option<EtwConfig>,
3126    /// Data source name: android.protolog
3127    #[prost(message, optional, tag="126")]
3128    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3129    /// Data source name: android.input.inputevent
3130    #[prost(message, optional, tag="128")]
3131    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3132    /// Data source name: android.pixel.modem
3133    #[prost(message, optional, tag="129")]
3134    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3135    /// Data source name: android.windowmanager
3136    #[prost(message, optional, tag="130")]
3137    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3138    /// Data source name: org.chromium.system_metrics
3139    #[prost(message, optional, tag="131")]
3140    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3141    /// Data source name: android.kernel_wakelocks
3142    #[prost(message, optional, tag="132")]
3143    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3144    /// Data source name: gpu.renderstages
3145    #[prost(message, optional, tag="133")]
3146    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3147    /// Data source name: org.chromium.histogram_samples
3148    #[prost(message, optional, tag="134")]
3149    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3150    /// Data source name: android.app_wakelocks
3151    #[prost(message, optional, tag="135")]
3152    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3153    /// Data source name: android.cpu_per_uid
3154    #[prost(message, optional, tag="137")]
3155    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3156    /// This is a fallback mechanism to send a free-form text config to the
3157    /// producer. In theory this should never be needed. All the code that
3158    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3159    /// the trace config proto and propagate unknown fields. However, if anything
3160    /// in the pipeline (client or backend) ends up breaking this forward compat
3161    /// plan, this field will become the escape hatch to allow future data sources
3162    /// to get some meaningful configuration.
3163    #[prost(string, optional, tag="1000")]
3164    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3165    /// This field is only used for testing.
3166    #[prost(message, optional, tag="1001")]
3167    pub for_testing: ::core::option::Option<TestConfig>,
3168}
3169/// Nested message and enum types in `DataSourceConfig`.
3170pub mod data_source_config {
3171    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3172    #[repr(i32)]
3173    pub enum SessionInitiator {
3174        Unspecified = 0,
3175        /// This trace was initiated from a trusted system app has DUMP and
3176        /// USAGE_STATS permission. This system app is expected to not expose the
3177        /// trace to the user of the device.
3178        /// This is determined by checking the UID initiating the trace.
3179        TrustedSystem = 1,
3180    }
3181    impl SessionInitiator {
3182        /// String value of the enum field names used in the ProtoBuf definition.
3183        ///
3184        /// The values are not transformed in any way and thus are considered stable
3185        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3186        pub fn as_str_name(&self) -> &'static str {
3187            match self {
3188                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3189                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3190            }
3191        }
3192    }
3193    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3194    #[repr(i32)]
3195    pub enum BufferExhaustedPolicy {
3196        /// The data source will use its default buffer exhausted policy, specified
3197        /// by the code when the data source is registered.
3198        BufferExhaustedUnspecified = 0,
3199        /// The data source will drop packets when there's no space in the shared
3200        /// memory buffer.
3201        BufferExhaustedDrop = 1,
3202        /// The data source will wait when there's no space in the shared memory
3203        /// buffer. If there's still not space, after a few seconds, the whole
3204        /// producer process will be aborted.
3205        BufferExhaustedStallThenAbort = 2,
3206        /// The data source will wait when there's no space in the shared memory
3207        /// buffer.  If there's still not space, after a few seconds, the data source
3208        /// will drop packets.
3209        BufferExhaustedStallThenDrop = 3,
3210    }
3211    impl BufferExhaustedPolicy {
3212        /// String value of the enum field names used in the ProtoBuf definition.
3213        ///
3214        /// The values are not transformed in any way and thus are considered stable
3215        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3216        pub fn as_str_name(&self) -> &'static str {
3217            match self {
3218                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3219                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3220                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3221                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3222            }
3223        }
3224    }
3225}
3226// End of protos/perfetto/config/data_source_config.proto
3227
3228// Begin of protos/perfetto/config/trace_config.proto
3229
3230/// The overall config that is used when starting a new tracing session through
3231/// ProducerPort::StartTracing().
3232/// It contains the general config for the logging buffer(s) and the configs for
3233/// all the data source being enabled.
3234///
3235/// Next id: 41.
3236#[derive(Clone, PartialEq, ::prost::Message)]
3237pub struct TraceConfig {
3238    #[prost(message, repeated, tag="1")]
3239    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3240    #[prost(message, repeated, tag="2")]
3241    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3242    #[prost(message, optional, tag="20")]
3243    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3244    /// If specified, the trace will be stopped |duration_ms| after starting.
3245    /// This does *not* count the time the system is suspended, so we will run
3246    /// for duration_ms of system activity, not wall time.
3247    ///
3248    /// However in case of traces with triggers, see
3249    /// TriggerConfig.trigger_timeout_ms instead.
3250    #[prost(uint32, optional, tag="3")]
3251    pub duration_ms: ::core::option::Option<u32>,
3252    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3253    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3254    /// Linux/Android, no-op on other platforms. This is used when dealing with
3255    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3256    /// wall-time, making them more likely to hit device reboots (and hence loss).
3257    /// This option also changes consistently the semantic of
3258    /// TriggerConfig.stop_delay_ms.
3259    #[prost(bool, optional, tag="36")]
3260    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3261    /// This is set when --dropbox is passed to the Perfetto command line client
3262    /// and enables guardrails that limit resource usage for traces requested
3263    /// by statsd.
3264    #[prost(bool, optional, tag="4")]
3265    pub enable_extra_guardrails: ::core::option::Option<bool>,
3266    /// Reject producers that are not running under the same UID as the tracing
3267    /// service.
3268    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3269    pub lockdown_mode: ::core::option::Option<i32>,
3270    #[prost(message, repeated, tag="6")]
3271    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3272    /// Statsd-specific metadata.
3273    #[prost(message, optional, tag="7")]
3274    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3275    /// When true && |output_path| is empty, the EnableTracing() request must
3276    /// provide a file descriptor. The service will then periodically read packets
3277    /// out of the trace buffer and store it into the passed file.
3278    /// If |output_path| is not empty no fd should be passed, the service
3279    /// will create a new file and write into that (see comment below).
3280    #[prost(bool, optional, tag="8")]
3281    pub write_into_file: ::core::option::Option<bool>,
3282    /// This must point to a non-existing file. If the file exists the service
3283    /// will NOT overwrite and will fail instead as a security precaution.
3284    /// On Android, when this is used with the system traced, the path must be
3285    /// within /data/misc/perfetto-traces/ or the trace will fail.
3286    /// This option has been introduced in Android R. Before R write_into_file
3287    /// can be used only with the "pass a file descriptor over IPC" mode.
3288    #[prost(string, optional, tag="29")]
3289    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3290    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3291    /// enforced (i.e. smaller values are ignored).
3292    #[prost(uint32, optional, tag="9")]
3293    pub file_write_period_ms: ::core::option::Option<u32>,
3294    /// Optional. When non zero the periodic write stops once at most X bytes
3295    /// have been written into the file. Tracing is disabled when this limit is
3296    /// reached, even if |duration_ms| has not been reached yet.
3297    #[prost(uint64, optional, tag="10")]
3298    pub max_file_size_bytes: ::core::option::Option<u64>,
3299    #[prost(message, optional, tag="11")]
3300    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3301    /// When true, data sources are not started until an explicit call to
3302    /// StartTracing() on the consumer port. This is to support early
3303    /// initialization and fast trace triggering. This can be used only when the
3304    /// Consumer explicitly triggers the StartTracing() method.
3305    /// This should not be used in a remote trace config via statsd, doing so will
3306    /// result in a hung trace session.
3307    #[prost(bool, optional, tag="12")]
3308    pub deferred_start: ::core::option::Option<bool>,
3309    /// When set, it periodically issues a Flush() to all data source, forcing them
3310    /// to commit their data into the tracing service. This can be used for
3311    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3312    /// events in the trace in windows of X ms.
3313    #[prost(uint32, optional, tag="13")]
3314    pub flush_period_ms: ::core::option::Option<u32>,
3315    /// Wait for this long for producers to acknowledge flush requests.
3316    /// Default 5s.
3317    #[prost(uint32, optional, tag="14")]
3318    pub flush_timeout_ms: ::core::option::Option<u32>,
3319    /// Wait for this long for producers to acknowledge stop requests.
3320    /// Default 5s.
3321    #[prost(uint32, optional, tag="23")]
3322    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3323    /// Android-only. If set, sends an intent to the Traceur system app when the
3324    /// trace ends to notify it about the trace readiness.
3325    #[prost(bool, optional, tag="16")]
3326    pub notify_traceur: ::core::option::Option<bool>,
3327    /// This field was introduced in Android S.
3328    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3329    /// for being attached to a bugreport. This field effectively acts as a z-index
3330    /// for bugreports. When Android's dumpstate runs perfetto
3331    /// --save-for-bugreport, traced will pick the tracing session with the highest
3332    /// score (score <= 0 is ignored) and:
3333    /// On Android S, T:  will steal its contents, save the trace into
3334    ///      a known path and stop prematurely.
3335    /// On Android U+: will create a read-only snapshot and save that into a known
3336    ///      path, without stoppin the original tracing session.
3337    /// When this field is set the tracing session becomes eligible to be cloned
3338    /// by other UIDs.
3339    #[prost(int32, optional, tag="30")]
3340    pub bugreport_score: ::core::option::Option<i32>,
3341    /// When set, defines name of the file that will be saved under
3342    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3343    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3344    /// starting from the highest `bugreport_score`.
3345    /// Introduced in v42 / Android V.
3346    #[prost(string, optional, tag="38")]
3347    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3348    #[prost(message, optional, tag="17")]
3349    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3350    /// When this is non-empty the perfetto command line tool will ignore the rest
3351    /// of this TraceConfig and instead connect to the perfetto service as a
3352    /// producer and send these triggers, potentially stopping or starting traces
3353    /// that were previous configured to use a TriggerConfig.
3354    #[prost(string, repeated, tag="18")]
3355    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3356    #[prost(message, optional, tag="21")]
3357    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3358    /// No longer needed as we unconditionally allow tracing on user builds.
3359    #[deprecated]
3360    #[prost(bool, optional, tag="19")]
3361    pub allow_user_build_tracing: ::core::option::Option<bool>,
3362    /// If set the tracing service will ensure there is at most one tracing session
3363    /// with this key.
3364    #[prost(string, optional, tag="22")]
3365    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3366    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3367    pub compression_type: ::core::option::Option<i32>,
3368    #[prost(message, optional, tag="25")]
3369    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3370    /// Android-only. Not for general use. If specified, sets the logging to statsd
3371    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3372    /// this to enabled (if not explicitly set in the config) when specifying
3373    /// --upload.
3374    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3375    pub statsd_logging: ::core::option::Option<i32>,
3376    /// An identifier clients can use to tie this trace to other logging.
3377    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3378    /// Trace UUID. If this field is set, the tracing service will respect the
3379    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3380    /// gap-less snapshotting is not used.
3381    #[deprecated]
3382    #[prost(int64, optional, tag="27")]
3383    pub trace_uuid_msb: ::core::option::Option<i64>,
3384    #[deprecated]
3385    #[prost(int64, optional, tag="28")]
3386    pub trace_uuid_lsb: ::core::option::Option<i64>,
3387    #[prost(message, optional, tag="33")]
3388    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3389    #[prost(message, optional, tag="34")]
3390    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3391    #[prost(message, optional, tag="35")]
3392    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3393    #[prost(message, repeated, tag="39")]
3394    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3395    /// Priority boost to be applied to the traced process, when the session is
3396    /// running.
3397    #[prost(message, optional, tag="40")]
3398    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3399}
3400/// Nested message and enum types in `TraceConfig`.
3401pub mod trace_config {
3402    #[derive(Clone, PartialEq, ::prost::Message)]
3403    pub struct BufferConfig {
3404        #[prost(uint32, optional, tag="1")]
3405        pub size_kb: ::core::option::Option<u32>,
3406        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3407        pub fill_policy: ::core::option::Option<i32>,
3408        /// When true the buffer is moved (rather than copied) onto the cloned
3409        /// session, and an empty buffer of the same size is allocated in the source
3410        /// tracing session. This feature will likely get deprecated in the future.
3411        /// It been introduced mainly to support the surfaceflinger snapshot dump
3412        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3413        /// that case we don't want to retain another in-memory copy of the buffer.
3414        #[prost(bool, optional, tag="5")]
3415        pub transfer_on_clone: ::core::option::Option<bool>,
3416        /// Used in conjunction with transfer_on_clone. When true the buffer is
3417        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3418        /// that if the data source took too long to write the data in a previous
3419        /// clone-related flush, we don't end up with a mixture of leftovers from
3420        /// the previous write and new data.
3421        #[prost(bool, optional, tag="6")]
3422        pub clear_before_clone: ::core::option::Option<bool>,
3423    }
3424    /// Nested message and enum types in `BufferConfig`.
3425    pub mod buffer_config {
3426        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3427        #[repr(i32)]
3428        pub enum FillPolicy {
3429            Unspecified = 0,
3430            /// Default behavior. The buffer operates as a conventional ring buffer.
3431            /// If the writer is faster than the reader (or if the reader reads only
3432            /// after tracing is stopped) newly written packets will overwrite old
3433            /// packets.
3434            RingBuffer = 1,
3435            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3436            /// the reader catches up with the writer. As soon as the writer hits
3437            /// an unread chunk, it stops accepting new data in the buffer.
3438            Discard = 2,
3439        }
3440        impl FillPolicy {
3441            /// String value of the enum field names used in the ProtoBuf definition.
3442            ///
3443            /// The values are not transformed in any way and thus are considered stable
3444            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3445            pub fn as_str_name(&self) -> &'static str {
3446                match self {
3447                    FillPolicy::Unspecified => "UNSPECIFIED",
3448                    FillPolicy::RingBuffer => "RING_BUFFER",
3449                    FillPolicy::Discard => "DISCARD",
3450                }
3451            }
3452        }
3453    }
3454    #[derive(Clone, PartialEq, ::prost::Message)]
3455    pub struct DataSource {
3456        /// Filters and data-source specific config. It contains also the unique name
3457        /// of the data source, the one passed in the  DataSourceDescriptor when they
3458        /// register on the service.
3459        #[prost(message, optional, tag="1")]
3460        pub config: ::core::option::Option<super::DataSourceConfig>,
3461        /// Optional. If multiple producers (~processes) expose the same data source
3462        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3463        /// the data source is enabled only for producers whose names match any of
3464        /// the filters.
3465        /// |producer_name_filter| has to be an exact match, while
3466        /// |producer_name_regex_filter| is a regular expression.
3467        /// This allows to enable a data source only for specific processes.
3468        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3469        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3470        #[prost(string, repeated, tag="2")]
3471        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3472        #[prost(string, repeated, tag="3")]
3473        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3474    }
3475    /// Config for disabling builtin data sources in the tracing service.
3476    #[derive(Clone, PartialEq, ::prost::Message)]
3477    pub struct BuiltinDataSource {
3478        /// Disable emitting clock timestamps into the trace.
3479        #[prost(bool, optional, tag="1")]
3480        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3481        /// Disable echoing the original trace config in the trace.
3482        #[prost(bool, optional, tag="2")]
3483        pub disable_trace_config: ::core::option::Option<bool>,
3484        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3485        #[prost(bool, optional, tag="3")]
3486        pub disable_system_info: ::core::option::Option<bool>,
3487        /// Disable emitting events for data-source state changes (e.g. the marker
3488        /// for all data sources having ACKed the start of the trace).
3489        #[prost(bool, optional, tag="4")]
3490        pub disable_service_events: ::core::option::Option<bool>,
3491        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3492        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3493        /// into the trace as part of the ClockSnapshots emitted by the service.
3494        /// Trace processor will attempt to translate packet/event timestamps from
3495        /// various data sources (and their chosen clock domains) to this domain
3496        /// during import. Added in Android R.
3497        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3498        pub primary_trace_clock: ::core::option::Option<i32>,
3499        /// Time interval in between snapshotting of sync markers, clock snapshots,
3500        /// stats, and other periodic service-emitted events. Note that the service
3501        /// only keeps track of the first and the most recent snapshot until
3502        /// ReadBuffers() is called.
3503        #[prost(uint32, optional, tag="6")]
3504        pub snapshot_interval_ms: ::core::option::Option<u32>,
3505        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3506        /// clock should be used for periodic snapshots of service-emitted events.
3507        /// This means, if a snapshot *should* have happened during suspend, it will
3508        /// happen immediately after the device resumes.
3509        ///
3510        /// Choosing a clock like this is done on best-effort basis; not all
3511        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3512        /// tasks counting suspend. If such a clock is not available, the service
3513        /// falls back to the best-available alternative.
3514        ///
3515        /// Introduced in Android S.
3516        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3517        /// crashes in S.
3518        #[prost(bool, optional, tag="7")]
3519        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3520        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3521        #[prost(bool, optional, tag="8")]
3522        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3523    }
3524    #[derive(Clone, PartialEq, ::prost::Message)]
3525    pub struct ProducerConfig {
3526        /// Identifies the producer for which this config is for.
3527        #[prost(string, optional, tag="1")]
3528        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3529        /// Specifies the preferred size of the shared memory buffer. If the size is
3530        /// larger than the max size, the max will be used. If it is smaller than
3531        /// the page size or doesn't fit pages evenly into it, it will fall back to
3532        /// the size specified by the producer or finally the default shared memory
3533        /// size.
3534        #[prost(uint32, optional, tag="2")]
3535        pub shm_size_kb: ::core::option::Option<u32>,
3536        /// Specifies the preferred size of each page in the shared memory buffer.
3537        /// Must be an integer multiple of 4K.
3538        #[prost(uint32, optional, tag="3")]
3539        pub page_size_kb: ::core::option::Option<u32>,
3540    }
3541    /// Contains statsd-specific metadata about an alert associated with the trace.
3542    #[derive(Clone, PartialEq, ::prost::Message)]
3543    pub struct StatsdMetadata {
3544        /// The identifier of the alert which triggered this trace.
3545        #[prost(int64, optional, tag="1")]
3546        pub triggering_alert_id: ::core::option::Option<i64>,
3547        /// The uid which registered the triggering configuration with statsd.
3548        #[prost(int32, optional, tag="2")]
3549        pub triggering_config_uid: ::core::option::Option<i32>,
3550        /// The identifier of the config which triggered the alert.
3551        #[prost(int64, optional, tag="3")]
3552        pub triggering_config_id: ::core::option::Option<i64>,
3553        /// The identifier of the subscription which triggered this trace.
3554        #[prost(int64, optional, tag="4")]
3555        pub triggering_subscription_id: ::core::option::Option<i64>,
3556    }
3557    /// Contains flags which override the default values of the guardrails inside
3558    /// Perfetto.
3559    #[derive(Clone, PartialEq, ::prost::Message)]
3560    pub struct GuardrailOverrides {
3561        /// Override the default limit (in bytes) for uploading data to server within
3562        /// a 24 hour period.
3563        /// On R-, this override only affected userdebug builds. Since S, it also
3564        /// affects user builds.
3565        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3566        /// was removed from Perfetto.
3567        #[deprecated]
3568        #[prost(uint64, optional, tag="1")]
3569        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3570        /// Overrides the guardrail for maximum trace buffer size.
3571        /// Available on U+
3572        #[prost(uint32, optional, tag="2")]
3573        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3574    }
3575    /// Triggers allow producers to start or stop the tracing session when an event
3576    /// occurs.
3577    ///
3578    /// For example if we are tracing probabilistically, most traces will be
3579    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3580    /// those traces during which the device temperature reached a certain
3581    /// threshold. In this case the producer can activate a trigger to keep
3582    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3583    /// (START_TRACING) because it knows something is about to happen.
3584    #[derive(Clone, PartialEq, ::prost::Message)]
3585    pub struct TriggerConfig {
3586        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3587        pub trigger_mode: ::core::option::Option<i32>,
3588        /// This flag is really a workaround for b/274931668. This is needed only
3589        /// when deploying configs to different versions of the tracing service.
3590        /// When this is set to true this has the same effect of setting trigger_mode
3591        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3592        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3593        /// versions of Android and fall back to STOP_TRACING on older versions where
3594        /// CLONE_SNAPSHOT did not exist.
3595        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3596        #[prost(bool, optional, tag="5")]
3597        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3598        /// A list of triggers which are related to this configuration. If ANY
3599        /// trigger is seen then an action will be performed based on |trigger_mode|.
3600        #[prost(message, repeated, tag="2")]
3601        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3602        /// Required and must be positive if a TriggerConfig is specified. This is
3603        /// how long this TraceConfig should wait for a trigger to arrive. After this
3604        /// period of time if no trigger is seen the TracingSession will be cleaned
3605        /// up.
3606        #[prost(uint32, optional, tag="3")]
3607        pub trigger_timeout_ms: ::core::option::Option<u32>,
3608    }
3609    /// Nested message and enum types in `TriggerConfig`.
3610    pub mod trigger_config {
3611        #[derive(Clone, PartialEq, ::prost::Message)]
3612        pub struct Trigger {
3613            /// The producer must specify this name to activate the trigger.
3614            #[prost(string, optional, tag="1")]
3615            pub name: ::core::option::Option<::prost::alloc::string::String>,
3616            /// An std::regex that will match the producer that can activate this
3617            /// trigger. This is optional. If unset any producers can activate this
3618            /// trigger.
3619            #[prost(string, optional, tag="2")]
3620            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3621            /// After a trigger is received either in START_TRACING or STOP_TRACING
3622            /// mode then the trace will end |stop_delay_ms| after triggering.
3623            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3624            /// snapshot.
3625            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3626            /// based on wall-clock, counting also time in suspend.
3627            #[prost(uint32, optional, tag="3")]
3628            pub stop_delay_ms: ::core::option::Option<u32>,
3629            /// Limits the number of traces this trigger can start/stop in a rolling
3630            /// 24 hour window. If this field is unset or zero, no limit is applied and
3631            /// activiation of this trigger *always* starts/stops the trace.
3632            #[prost(uint32, optional, tag="4")]
3633            pub max_per_24_h: ::core::option::Option<u32>,
3634            /// A value between 0 and 1 which encodes the probability of skipping a
3635            /// trigger with this name. This is useful for reducing the probability
3636            /// of high-frequency triggers from dominating trace finaization. If this
3637            /// field is unset or zero, the trigger will *never* be skipped. If this
3638            /// field is greater than or equal to 1, this trigger will *always* be
3639            /// skipped i.e. it will be as if this trigger was never included in the
3640            /// first place.
3641            /// This probability check is applied *before* any other limits. For
3642            /// example, if |max_per_24_h| is also set, first we will check if the
3643            /// probability bar is met and only then will we check the |max_per_24_h|
3644            /// limit.
3645            #[prost(double, optional, tag="5")]
3646            pub skip_probability: ::core::option::Option<f64>,
3647        }
3648        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3649        #[repr(i32)]
3650        pub enum TriggerMode {
3651            Unspecified = 0,
3652            /// When this mode is chosen, data sources are not started until one of the
3653            /// |triggers| are received. This supports early initialization and fast
3654            /// starting of the tracing system. On triggering, the session will then
3655            /// record for |stop_delay_ms|. However if no trigger is seen
3656            /// after |trigger_timeout_ms| the session will be stopped and no data will
3657            /// be returned.
3658            StartTracing = 1,
3659            /// When this mode is chosen, the session will be started via the normal
3660            /// EnableTracing() & StartTracing(). If no trigger is ever seen
3661            /// the session will be stopped after |trigger_timeout_ms| and no data will
3662            /// be returned. However if triggered the trace will stop after
3663            /// |stop_delay_ms| and any data in the buffer will be returned to the
3664            /// consumer.
3665            StopTracing = 2,
3666            /// When this mode is chosen, this causes a snapshot of the current tracing
3667            /// session to be created after |stop_delay_ms| while the current tracing
3668            /// session continues undisturbed (% an extra flush). This mode can be
3669            /// used only when the tracing session is handled by the "perfetto" cmdline
3670            /// client (which is true in 90% of cases). Part of the business logic
3671            /// necessary for this behavior, and ensuing file handling, lives in
3672            /// perfetto_cmd.cc . On other consumers, this causes only a notification
3673            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
3674            /// consumer is supposed to call CloneSession() itself after the event.
3675            /// Use use_clone_snapshot_if_available=true when targeting older versions
3676            /// of perfetto.
3677            CloneSnapshot = 4,
3678        }
3679        impl TriggerMode {
3680            /// String value of the enum field names used in the ProtoBuf definition.
3681            ///
3682            /// The values are not transformed in any way and thus are considered stable
3683            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3684            pub fn as_str_name(&self) -> &'static str {
3685                match self {
3686                    TriggerMode::Unspecified => "UNSPECIFIED",
3687                    TriggerMode::StartTracing => "START_TRACING",
3688                    TriggerMode::StopTracing => "STOP_TRACING",
3689                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
3690                }
3691            }
3692        }
3693    }
3694    /// Configuration for trace contents that reference earlier trace data. For
3695    /// example, a data source might intern strings, and emit packets containing
3696    /// {interned id : string} pairs. Future packets from that data source can then
3697    /// use the interned ids instead of duplicating the raw string contents. The
3698    /// trace parser will then need to use that interning table to fully interpret
3699    /// the rest of the trace.
3700    #[derive(Clone, PartialEq, ::prost::Message)]
3701    pub struct IncrementalStateConfig {
3702        /// If nonzero, notify eligible data sources to clear their incremental state
3703        /// periodically, with the given period. The notification is sent only to
3704        /// data sources that have |handles_incremental_state_clear| set in their
3705        /// DataSourceDescriptor. The notification requests that the data source
3706        /// stops referring to past trace contents. This is particularly useful when
3707        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
3708        /// trace data.
3709        ///
3710        /// Warning: this time-based global clearing is likely to be removed in the
3711        /// future, to be replaced with a smarter way of sending the notifications
3712        /// only when necessary.
3713        #[prost(uint32, optional, tag="1")]
3714        pub clear_period_ms: ::core::option::Option<u32>,
3715    }
3716    /// Android-only. Not for general use. If set, saves the trace into an
3717    /// incident. This field is read by perfetto_cmd, rather than the tracing
3718    /// service. This field must be set when passing the --upload flag to
3719    /// perfetto_cmd.
3720    ///
3721    /// In this message, either:
3722    ///   * all of |destination_package|, |destination_class| and |privacy_level|
3723    ///     must be set.
3724    ///   * |skip_incidentd| must be explicitly set to true.
3725    #[derive(Clone, PartialEq, ::prost::Message)]
3726    pub struct IncidentReportConfig {
3727        #[prost(string, optional, tag="1")]
3728        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
3729        #[prost(string, optional, tag="2")]
3730        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
3731        /// Level of filtering in the requested incident. See |Destination| in
3732        /// frameworks/base/core/proto/android/privacy.proto.
3733        #[prost(int32, optional, tag="3")]
3734        pub privacy_level: ::core::option::Option<i32>,
3735        /// If true, then skips saving the trace to incidentd.
3736        ///
3737        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3738        /// or when we explicitly don't want traces to go to incidentd even when they
3739        /// usually would (e.g. configs deployed using statsd but only used for
3740        /// inclusion in bugreports using |bugreport_score|).
3741        ///
3742        /// The motivation for having this flag, instead of just not setting
3743        /// |incident_report_config|, is prevent accidents where
3744        /// |incident_report_config| is omitted by mistake.
3745        #[prost(bool, optional, tag="5")]
3746        pub skip_incidentd: ::core::option::Option<bool>,
3747        /// If true, do not write the trace into dropbox (i.e. incident only).
3748        /// Otherwise, write to both dropbox and incident.
3749        /// TODO(lalitm): remove this field as we no longer use Dropbox.
3750        #[deprecated]
3751        #[prost(bool, optional, tag="4")]
3752        pub skip_dropbox: ::core::option::Option<bool>,
3753    }
3754    /// When set applies a post-filter to the trace contents using the filter
3755    /// provided. The filter is applied at ReadBuffers() time and works both in the
3756    /// case of IPC readback and write_into_file. This filter can be generated
3757    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
3758    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
3759    /// design.
3760    ///
3761    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
3762    /// Android T with a different field number. Updated in Android U with a new
3763    /// bytecode version which supports string filtering.
3764    ///
3765    /// =========================
3766    /// Filter bytecode.
3767    /// =========================
3768    #[derive(Clone, PartialEq, ::prost::Message)]
3769    pub struct TraceFilter {
3770        /// The bytecode as implemented in Android T.
3771        #[prost(bytes="vec", optional, tag="1")]
3772        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3773        /// The bytecode as implemented in Android U. Adds support for string
3774        /// filtering.
3775        #[prost(bytes="vec", optional, tag="2")]
3776        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3777        #[prost(message, optional, tag="3")]
3778        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
3779    }
3780    /// Nested message and enum types in `TraceFilter`.
3781    pub mod trace_filter {
3782        /// A rule specifies how strings should be filtered.
3783        #[derive(Clone, PartialEq, ::prost::Message)]
3784        pub struct StringFilterRule {
3785            /// The policy (i.e. algorithm) dictating how strings matching this rule
3786            /// should be handled.
3787            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
3788            pub policy: ::core::option::Option<i32>,
3789            /// The regex pattern used to match against each string.
3790            #[prost(string, optional, tag="2")]
3791            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
3792            /// The string which should appear after the tgid in atrace tracepoint
3793            /// strings.
3794            #[prost(string, optional, tag="3")]
3795            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
3796        }
3797        /// A chain is a list of rules which string will be sequentially checked
3798        /// against.
3799        #[derive(Clone, PartialEq, ::prost::Message)]
3800        pub struct StringFilterChain {
3801            #[prost(message, repeated, tag="1")]
3802            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
3803        }
3804        // =========================
3805        // String filtering
3806        // =========================
3807
3808        // The principles and terminology of string filtering is heavily inspired by
3809        // iptables. A "rule" decide how strings should be filtered. Each rule
3810        // contains a "policy" which indicates the algorithm to use for filtering.
3811        // A "chain" is a list of rules which will be sequentially checked against
3812        // each string.
3813        //
3814        // The first rule which applies to the string terminates filtering for that
3815        // string. If no rules apply, the string is left unchanged.
3816
3817        /// A policy specifies which algorithm should be used for filtering the
3818        /// string.
3819        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3820        #[repr(i32)]
3821        pub enum StringFilterPolicy {
3822            SfpUnspecified = 0,
3823            /// Tries to match the string field against |regex_pattern|. If it
3824            /// matches, all matching groups are "redacted" (i.e. replaced with a
3825            /// constant string) and filtering is terminated (i.e. no further rules are
3826            /// checked). If it doesn't match, the string is left unchanged and the
3827            /// next rule in chain is considered.
3828            SfpMatchRedactGroups = 1,
3829            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
3830            /// checking the regex. Specifically, it tries to parse the string field as
3831            /// an atrace tracepoint and checks if the post-tgid field starts with
3832            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3833            /// this check succeeds.
3834            SfpAtraceMatchRedactGroups = 2,
3835            /// Tries to match the string field against |regex_pattern|. If it
3836            /// matches, filtering is terminated (i.e. no further rules are checked).
3837            /// If it doesn't match, the string is left unchanged and the next rule in
3838            /// chain is considered.
3839            SfpMatchBreak = 3,
3840            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
3841            /// the regex. Specifically, it tries to parse the string field as an
3842            /// atrace tracepoint and checks if the post-tgid field starts with
3843            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
3844            /// this check succeeds.
3845            SfpAtraceMatchBreak = 4,
3846            /// Tries to repeatedly search (i.e. find substrings of) the string field
3847            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
3848            /// replaced with a constant string). Once there are no further matches,
3849            /// filtering is terminated (i.e. no further rules are checked).
3850            ///
3851            /// Note that this is policy is a "search" policy not a "match" policy
3852            /// unlike the above policies:
3853            ///   * Match policies require matching the full string i.e. there is an
3854            ///     implicit leading `^` and trailing `$`.
3855            ///   * Search policies perform repeated partial matching of the string
3856            ///     e.g.
3857            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
3858            ///       - Pattern: `foo=(\d+)`
3859            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
3860            ///     where P6O is the redaction string
3861            ///
3862            /// All of this is only performed after some pre-work where we try to parse
3863            /// the string field as an atrace tracepoint and check if the post-tgid
3864            /// field starts with |atrace_post_tgid_starts_with|.
3865            ///
3866            /// If there are no partial matches, the string is left unchanged and the
3867            /// next rule in chain is considered.
3868            SfpAtraceRepeatedSearchRedactGroups = 5,
3869        }
3870        impl StringFilterPolicy {
3871            /// String value of the enum field names used in the ProtoBuf definition.
3872            ///
3873            /// The values are not transformed in any way and thus are considered stable
3874            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3875            pub fn as_str_name(&self) -> &'static str {
3876                match self {
3877                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
3878                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
3879                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
3880                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
3881                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
3882                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
3883                }
3884            }
3885        }
3886    }
3887    /// Android-only. Not for general use. If set, reports the trace to the
3888    /// Android framework. This field is read by perfetto_cmd, rather than the
3889    /// tracing service. This field must be set when passing the --upload flag to
3890    /// perfetto_cmd.
3891    ///
3892    /// In this message, either:
3893    ///   * |reporter_service_package| and |reporter_service_class| must be set.
3894    ///   * |skip_reporting| must be explicitly set to true.
3895    #[derive(Clone, PartialEq, ::prost::Message)]
3896    pub struct AndroidReportConfig {
3897        #[prost(string, optional, tag="1")]
3898        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
3899        #[prost(string, optional, tag="2")]
3900        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
3901        /// If true, then skips reporting the trace to Android framework.
3902        ///
3903        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
3904        /// or when we explicitly don't want to report traces to the framework even
3905        /// when they usually would (e.g. configs deployed using statsd but only
3906        /// used for inclusion in bugreports using |bugreport_score|).
3907        ///
3908        /// The motivation for having this flag, instead of just not setting
3909        /// |framework_report_config|, is prevent accidents where
3910        /// |framework_report_config| is omitted by mistake.
3911        #[prost(bool, optional, tag="3")]
3912        pub skip_report: ::core::option::Option<bool>,
3913        /// If true, will direct the Android framework to read the data in trace
3914        /// file and pass it to the reporter class over a pipe instead of passing
3915        /// the file descriptor directly.
3916        ///
3917        /// This flag is needed because the Android test framework does not
3918        /// currently support priv-app helper apps (in terms of SELinux) and we
3919        /// really don't want to add an allow rule for untrusted_app to receive
3920        /// trace fds.
3921        ///
3922        /// Because of this, we instead will direct the framework to create a new
3923        /// pipe and pass this to the reporter process instead. As the pipe is
3924        /// created by the framework, we won't have any problems with SELinux
3925        /// (system_server is already allowed to pass pipe fds, even
3926        /// to untrusted apps).
3927        ///
3928        /// As the name suggests this option *MUST* only be used for testing.
3929        /// Note that the framework will reject (and drop) files which are too
3930        /// large both for simplicity and to be minimize the amount of data we
3931        /// pass to a non-priv app (note that the framework will still check
3932        /// manifest permissions even though SELinux permissions are worked around).
3933        #[prost(bool, optional, tag="4")]
3934        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
3935    }
3936    /// If set, delays the start of tracing by a random duration. The duration is
3937    /// chosen from a uniform distribution between the specified minimum and
3938    /// maximum.
3939    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
3940    /// not work if you communicate with traced directly over the consumer API.
3941    /// Introduced in Android T.
3942    #[derive(Clone, PartialEq, ::prost::Message)]
3943    pub struct CmdTraceStartDelay {
3944        #[prost(uint32, optional, tag="1")]
3945        pub min_delay_ms: ::core::option::Option<u32>,
3946        #[prost(uint32, optional, tag="2")]
3947        pub max_delay_ms: ::core::option::Option<u32>,
3948    }
3949    /// When non-empty, ensures that for a each semaphore named `name at most
3950    /// `max_other_session_count`` *other* sessions (whose value is taken of the
3951    /// minimum of all values specified by this config or any already-running
3952    /// session) can be be running.
3953    ///
3954    /// If a semaphore "acquisition" fails, EnableTracing will return an error
3955    /// and the tracing session will not be started (or elgible to start in
3956    /// the case of deferred sessions).
3957    ///
3958    /// This is easiest to explain with an example. Suppose the tracing service has
3959    /// the following active tracing sessions:
3960    ///    S1 = [{name=foo, max_other_session_count=2},
3961    ///          {name=bar, max_other_session_count=0}]
3962    ///    S2 = [{name=foo, max_other_session_count=1},
3963    ///          {name=baz, max_other_session_count=1}]
3964    ///
3965    /// Then, for a new session, the following would be the expected behaviour of
3966    /// EnableSession given the state of `session_semaphores`.
3967    ///    Q: session_semaphores = []
3968    ///    A: Allowed because it does not specify any semaphores. Will be allowed
3969    ///       no matter the state of any other tracing session.
3970    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
3971    ///    A: Allowed because both S2 and this config specify
3972    ///       max_other_session_count=1 for baz.
3973    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
3974    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
3975    ///       takes that slot.
3976    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
3977    ///    A: Denied because S1 takes the the slot specified by both S1 and
3978    ///       this config.
3979    ///
3980    /// Introduced in 24Q3 (Android V).
3981    #[derive(Clone, PartialEq, ::prost::Message)]
3982    pub struct SessionSemaphore {
3983        /// The name of the semaphore. Acts as a unique identifier across all
3984        /// tracing sessions (including the one being started).
3985        #[prost(string, optional, tag="1")]
3986        pub name: ::core::option::Option<::prost::alloc::string::String>,
3987        /// The maximum number of *other* sesssions which specify the same semaphore
3988        /// which can be active. The minimum of this value across all tracing
3989        /// sessions and the value specified by the config is used when deciding
3990        /// whether the tracing session can be started.
3991        #[prost(uint64, optional, tag="2")]
3992        pub max_other_session_count: ::core::option::Option<u64>,
3993    }
3994    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3995    #[repr(i32)]
3996    pub enum LockdownModeOperation {
3997        LockdownUnchanged = 0,
3998        LockdownClear = 1,
3999        LockdownSet = 2,
4000    }
4001    impl LockdownModeOperation {
4002        /// String value of the enum field names used in the ProtoBuf definition.
4003        ///
4004        /// The values are not transformed in any way and thus are considered stable
4005        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4006        pub fn as_str_name(&self) -> &'static str {
4007            match self {
4008                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4009                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4010                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4011            }
4012        }
4013    }
4014    /// Compress trace with the given method. Best effort.
4015    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4016    #[repr(i32)]
4017    pub enum CompressionType {
4018        Unspecified = 0,
4019        Deflate = 1,
4020    }
4021    impl CompressionType {
4022        /// String value of the enum field names used in the ProtoBuf definition.
4023        ///
4024        /// The values are not transformed in any way and thus are considered stable
4025        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4026        pub fn as_str_name(&self) -> &'static str {
4027            match self {
4028                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4029                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4030            }
4031        }
4032    }
4033    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4034    #[repr(i32)]
4035    pub enum StatsdLogging {
4036        Unspecified = 0,
4037        Enabled = 1,
4038        Disabled = 2,
4039    }
4040    impl StatsdLogging {
4041        /// String value of the enum field names used in the ProtoBuf definition.
4042        ///
4043        /// The values are not transformed in any way and thus are considered stable
4044        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4045        pub fn as_str_name(&self) -> &'static str {
4046            match self {
4047                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4048                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4049                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4050            }
4051        }
4052    }
4053}
4054// End of protos/perfetto/config/trace_config.proto
4055
4056// Begin of protos/perfetto/common/system_info.proto
4057
4058#[derive(Clone, PartialEq, ::prost::Message)]
4059pub struct Utsname {
4060    #[prost(string, optional, tag="1")]
4061    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4062    #[prost(string, optional, tag="2")]
4063    pub version: ::core::option::Option<::prost::alloc::string::String>,
4064    #[prost(string, optional, tag="3")]
4065    pub release: ::core::option::Option<::prost::alloc::string::String>,
4066    #[prost(string, optional, tag="4")]
4067    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4068}
4069/// Next id: 16
4070#[derive(Clone, PartialEq, ::prost::Message)]
4071pub struct SystemInfo {
4072    #[prost(message, optional, tag="1")]
4073    pub utsname: ::core::option::Option<Utsname>,
4074    #[prost(string, optional, tag="2")]
4075    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4076    /// The manufacturer of the product/hardware.
4077    /// Source : "ro.product.manufacturer"
4078    /// Introduced after Android W in Nov 2024 and is not supported on older
4079    /// versions.
4080    #[prost(string, optional, tag="14")]
4081    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4082    /// The SoC model from which trace is collected
4083    #[prost(string, optional, tag="9")]
4084    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4085    /// The guest SoC model from which trace is collected in case of VMs
4086    #[prost(string, optional, tag="13")]
4087    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4088    /// The hardware reversion from android device
4089    #[prost(string, optional, tag="10")]
4090    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4091    /// The storage component from android_device. This field has been introduced
4092    /// after Android W in Aug 2024 and is not supported on older versions.
4093    #[prost(string, optional, tag="11")]
4094    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4095    /// The RAM component information from android device. This field has been
4096    /// introduced after Android W in Aug 2024 and is not supported on older
4097    /// versions.
4098    #[prost(string, optional, tag="12")]
4099    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4100    /// The serial console information from android device.
4101    #[prost(string, optional, tag="15")]
4102    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4103    /// The version of traced (the same returned by `traced --version`).
4104    /// This is a human readable string with and its format varies depending on
4105    /// the build system and the repo (standalone vs AOSP).
4106    /// This is intended for human debugging only.
4107    #[prost(string, optional, tag="4")]
4108    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4109    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4110    /// Introduced in Android T.
4111    #[prost(uint64, optional, tag="5")]
4112    pub android_sdk_version: ::core::option::Option<u64>,
4113    /// Kernel page size - sysconf(_SC_PAGESIZE).
4114    #[prost(uint32, optional, tag="6")]
4115    pub page_size: ::core::option::Option<u32>,
4116    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4117    /// Might be different to the number of online cpus.
4118    /// Introduced in perfetto v44.
4119    #[prost(uint32, optional, tag="8")]
4120    pub num_cpus: ::core::option::Option<u32>,
4121    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4122    /// Introduced in v38 / Android V.
4123    #[prost(int32, optional, tag="7")]
4124    pub timezone_off_mins: ::core::option::Option<i32>,
4125    /// Ticks per second - sysconf(_SC_CLK_TCK).
4126    /// Not serialised as of perfetto v44.
4127    #[prost(int64, optional, tag="3")]
4128    pub hz: ::core::option::Option<i64>,
4129}
4130// End of protos/perfetto/common/system_info.proto
4131
4132// Begin of protos/perfetto/common/trace_stats.proto
4133
4134/// Statistics for the internals of the tracing service.
4135///
4136/// Next id: 19.
4137#[derive(Clone, PartialEq, ::prost::Message)]
4138pub struct TraceStats {
4139    /// Stats for the TraceBuffer(s) of the current trace session.
4140    #[prost(message, repeated, tag="1")]
4141    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4142    /// The thresholds of each the `writer_stats` histogram buckets. This is
4143    /// emitted only once as all WriterStats share the same bucket layout.
4144    /// This field has the same cardinality of the
4145    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4146    /// (The -1 is because the last overflow bucket is not reported in the _def).
4147    /// An array of values [10, 100, 1000] in the _def array means that there are
4148    /// four buckets (3 + the implicit overflow bucket):
4149    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4150    #[prost(int64, repeated, packed="false", tag="17")]
4151    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4152    #[prost(message, repeated, tag="18")]
4153    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4154    /// Num. producers connected (whether they are involved in the current tracing
4155    /// session or not).
4156    #[prost(uint32, optional, tag="2")]
4157    pub producers_connected: ::core::option::Option<u32>,
4158    /// Num. producers ever seen for all trace sessions since startup (it's a good
4159    /// proxy for inferring num. producers crashed / killed).
4160    #[prost(uint64, optional, tag="3")]
4161    pub producers_seen: ::core::option::Option<u64>,
4162    /// Num. data sources registered for all trace sessions.
4163    #[prost(uint32, optional, tag="4")]
4164    pub data_sources_registered: ::core::option::Option<u32>,
4165    /// Num. data sources ever seen for all trace sessions since startup.
4166    #[prost(uint64, optional, tag="5")]
4167    pub data_sources_seen: ::core::option::Option<u64>,
4168    /// Num. concurrently active tracing sessions.
4169    #[prost(uint32, optional, tag="6")]
4170    pub tracing_sessions: ::core::option::Option<u32>,
4171    /// Num. buffers for all tracing session (not just the current one). This will
4172    /// be >= buffer_stats.size(), because the latter is only about the current
4173    /// session.
4174    #[prost(uint32, optional, tag="7")]
4175    pub total_buffers: ::core::option::Option<u32>,
4176    // The fields below have been introduced in Android Q.
4177
4178    /// Num. chunks that were discarded by the service before attempting to commit
4179    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4180    #[prost(uint64, optional, tag="8")]
4181    pub chunks_discarded: ::core::option::Option<u64>,
4182    /// Num. patches that were discarded by the service before attempting to apply
4183    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4184    #[prost(uint64, optional, tag="9")]
4185    pub patches_discarded: ::core::option::Option<u64>,
4186    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4187    /// is a bug in the producer.
4188    #[prost(uint64, optional, tag="10")]
4189    pub invalid_packets: ::core::option::Option<u64>,
4190    #[prost(message, optional, tag="11")]
4191    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4192    /// Count of Flush() requests (either from the Consumer, or self-induced
4193    /// periodic flushes). The final Flush() is also included in the count.
4194    #[prost(uint64, optional, tag="12")]
4195    pub flushes_requested: ::core::option::Option<u64>,
4196    /// The count of the Flush() requests that were completed successfully.
4197    /// In a well behaving trace this should always be == `flush_requests`.
4198    #[prost(uint64, optional, tag="13")]
4199    pub flushes_succeeded: ::core::option::Option<u64>,
4200    /// The count of the Flush() requests that failed (in most timed out).
4201    /// In a well behaving trace this should always be == 0.
4202    #[prost(uint64, optional, tag="14")]
4203    pub flushes_failed: ::core::option::Option<u64>,
4204    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4205    pub final_flush_outcome: ::core::option::Option<i32>,
4206}
4207/// Nested message and enum types in `TraceStats`.
4208pub mod trace_stats {
4209    /// From TraceBuffer::Stats.
4210    ///
4211    /// Next id: 21.
4212    #[derive(Clone, PartialEq, ::prost::Message)]
4213    pub struct BufferStats {
4214        /// Size of the circular buffer in bytes.
4215        #[prost(uint64, optional, tag="12")]
4216        pub buffer_size: ::core::option::Option<u64>,
4217        /// Num. bytes written into the circular buffer, including chunk headers.
4218        #[prost(uint64, optional, tag="1")]
4219        pub bytes_written: ::core::option::Option<u64>,
4220        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4221        #[prost(uint64, optional, tag="13")]
4222        pub bytes_overwritten: ::core::option::Option<u64>,
4223        /// Total size of chunks that were fully read from the circular buffer by the
4224        /// consumer. This may not be equal to |bytes_written| either in the middle
4225        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4226        /// size of the chunks read from the buffer, including chunk headers, which
4227        /// will be different from the total size of packets returned to the
4228        /// consumer.
4229        ///
4230        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4231        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4232        /// adding the difference of |padding_bytes_written| and
4233        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4234        /// Note that this represents the total size of buffered data in the buffer,
4235        /// yet this data may be spread non-contiguously through the buffer and may
4236        /// be overridden before the utilization reaches 100%.
4237        #[prost(uint64, optional, tag="14")]
4238        pub bytes_read: ::core::option::Option<u64>,
4239        /// Num. bytes that were allocated as padding between chunks in the circular
4240        /// buffer.
4241        #[prost(uint64, optional, tag="15")]
4242        pub padding_bytes_written: ::core::option::Option<u64>,
4243        /// Num. of padding bytes that were removed from the circular buffer when
4244        /// they were overwritten.
4245        ///
4246        /// The difference between |padding_bytes_written| and
4247        /// |padding_bytes_cleared| denotes the total size of padding currently
4248        /// present in the buffer.
4249        #[prost(uint64, optional, tag="16")]
4250        pub padding_bytes_cleared: ::core::option::Option<u64>,
4251        /// Num. chunks (!= packets) written into the buffer.
4252        #[prost(uint64, optional, tag="2")]
4253        pub chunks_written: ::core::option::Option<u64>,
4254        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4255        /// the same chunk with additional packets appended to the end.
4256        #[prost(uint64, optional, tag="10")]
4257        pub chunks_rewritten: ::core::option::Option<u64>,
4258        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4259        #[prost(uint64, optional, tag="3")]
4260        pub chunks_overwritten: ::core::option::Option<u64>,
4261        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4262        /// is configured with FillPolicy == DISCARD.
4263        #[prost(uint64, optional, tag="18")]
4264        pub chunks_discarded: ::core::option::Option<u64>,
4265        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4266        /// the consumer. This may not be equal to |chunks_written| either in the
4267        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4268        #[prost(uint64, optional, tag="17")]
4269        pub chunks_read: ::core::option::Option<u64>,
4270        /// Num. chunks that were committed out of order.
4271        #[prost(uint64, optional, tag="11")]
4272        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4273        /// Num. times the ring buffer wrapped around.
4274        #[prost(uint64, optional, tag="4")]
4275        pub write_wrap_count: ::core::option::Option<u64>,
4276        /// Num. out-of-band (OOB) patches that succeeded.
4277        #[prost(uint64, optional, tag="5")]
4278        pub patches_succeeded: ::core::option::Option<u64>,
4279        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4280        #[prost(uint64, optional, tag="6")]
4281        pub patches_failed: ::core::option::Option<u64>,
4282        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4283        /// successful packet read.
4284        #[prost(uint64, optional, tag="7")]
4285        pub readaheads_succeeded: ::core::option::Option<u64>,
4286        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4287        /// Note that a small number > 0 is totally expected: occasionally, when
4288        /// issuing a read, the very last packet in a sequence might be incomplete
4289        /// (because the producer is still writing it while we read). The read will
4290        /// stop at that point, for that sequence, increasing this counter.
4291        #[prost(uint64, optional, tag="8")]
4292        pub readaheads_failed: ::core::option::Option<u64>,
4293        /// Num. of violations of the SharedMemoryABI found while writing or reading
4294        /// the buffer. This is an indication of either a bug in the producer(s) or
4295        /// malicious producer(s).
4296        #[prost(uint64, optional, tag="9")]
4297        pub abi_violations: ::core::option::Option<u64>,
4298        // The fields below have been introduced in Android R.
4299
4300        /// Num. of times the service detected packet loss on a trace writer
4301        /// sequence. This is usually caused by exhaustion of available chunks in the
4302        /// writer process's SMB. Note that this relies on the client's TraceWriter
4303        /// indicating this loss to the service -- packets lost for other reasons are
4304        /// not reflected in this stat.
4305        #[prost(uint64, optional, tag="19")]
4306        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4307    }
4308    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4309    /// visible as a unique sequence ID in the trace.
4310    #[derive(Clone, PartialEq, ::prost::Message)]
4311    pub struct WriterStats {
4312        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4313        /// correlate the stats with the actual packet types.
4314        #[prost(uint64, optional, tag="1")]
4315        pub sequence_id: ::core::option::Option<u64>,
4316        /// The buffer index (0..N, as defined in the TraceConfig).
4317        #[prost(uint32, optional, tag="4")]
4318        pub buffer: ::core::option::Option<u32>,
4319        /// These two arrays have the same cardinality and match the cardinality of
4320        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4321        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4322        /// for each bucket.
4323        #[prost(uint64, repeated, tag="2")]
4324        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4325        #[prost(int64, repeated, tag="3")]
4326        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4327    }
4328    /// This is set only when the TraceConfig specifies a TraceFilter.
4329    #[derive(Clone, PartialEq, ::prost::Message)]
4330    pub struct FilterStats {
4331        #[prost(uint64, optional, tag="1")]
4332        pub input_packets: ::core::option::Option<u64>,
4333        #[prost(uint64, optional, tag="2")]
4334        pub input_bytes: ::core::option::Option<u64>,
4335        #[prost(uint64, optional, tag="3")]
4336        pub output_bytes: ::core::option::Option<u64>,
4337        #[prost(uint64, optional, tag="4")]
4338        pub errors: ::core::option::Option<u64>,
4339        #[prost(uint64, optional, tag="5")]
4340        pub time_taken_ns: ::core::option::Option<u64>,
4341        /// The number of bytes discarded by the filter (i.e. output - input).
4342        /// The array has one entry for each buffer defined in the config (unless no
4343        /// packets for that buffer were seen and hence filtered).
4344        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4345        /// (output_bytes - input_bytes) because the filter might also discard
4346        /// server-generated synthetic packets, that have no buffer index.
4347        #[prost(uint64, repeated, packed="false", tag="20")]
4348        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4349    }
4350    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4351    #[repr(i32)]
4352    pub enum FinalFlushOutcome {
4353        FinalFlushUnspecified = 0,
4354        FinalFlushSucceeded = 1,
4355        FinalFlushFailed = 2,
4356    }
4357    impl FinalFlushOutcome {
4358        /// String value of the enum field names used in the ProtoBuf definition.
4359        ///
4360        /// The values are not transformed in any way and thus are considered stable
4361        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4362        pub fn as_str_name(&self) -> &'static str {
4363            match self {
4364                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4365                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4366                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4367            }
4368        }
4369    }
4370}
4371// End of protos/perfetto/common/trace_stats.proto
4372
4373// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4374
4375#[derive(Clone, PartialEq, ::prost::Message)]
4376pub struct AndroidGameInterventionList {
4377    #[prost(message, repeated, tag="1")]
4378    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4379    /// True when at least one error occurred when parsing
4380    /// game_mode_intervention.list
4381    #[prost(bool, optional, tag="2")]
4382    pub parse_error: ::core::option::Option<bool>,
4383    /// Failed to open / read game_mode_intervention.list
4384    #[prost(bool, optional, tag="3")]
4385    pub read_error: ::core::option::Option<bool>,
4386}
4387/// Nested message and enum types in `AndroidGameInterventionList`.
4388pub mod android_game_intervention_list {
4389    #[derive(Clone, PartialEq, ::prost::Message)]
4390    pub struct GameModeInfo {
4391        #[prost(uint32, optional, tag="1")]
4392        pub mode: ::core::option::Option<u32>,
4393        #[prost(bool, optional, tag="2")]
4394        pub use_angle: ::core::option::Option<bool>,
4395        #[prost(float, optional, tag="3")]
4396        pub resolution_downscale: ::core::option::Option<f32>,
4397        #[prost(float, optional, tag="4")]
4398        pub fps: ::core::option::Option<f32>,
4399    }
4400    #[derive(Clone, PartialEq, ::prost::Message)]
4401    pub struct GamePackageInfo {
4402        #[prost(string, optional, tag="1")]
4403        pub name: ::core::option::Option<::prost::alloc::string::String>,
4404        #[prost(uint64, optional, tag="2")]
4405        pub uid: ::core::option::Option<u64>,
4406        #[prost(uint32, optional, tag="3")]
4407        pub current_mode: ::core::option::Option<u32>,
4408        #[prost(message, repeated, tag="4")]
4409        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4410    }
4411}
4412// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4413
4414// Begin of protos/perfetto/trace/android/android_log.proto
4415
4416#[derive(Clone, PartialEq, ::prost::Message)]
4417pub struct AndroidLogPacket {
4418    #[prost(message, repeated, tag="1")]
4419    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4420    #[prost(message, optional, tag="2")]
4421    pub stats: ::core::option::Option<android_log_packet::Stats>,
4422}
4423/// Nested message and enum types in `AndroidLogPacket`.
4424pub mod android_log_packet {
4425    #[derive(Clone, PartialEq, ::prost::Message)]
4426    pub struct LogEvent {
4427        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4428        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4429        pub log_id: ::core::option::Option<i32>,
4430        /// PID (TGID), TID and UID of the task that emitted the event.
4431        #[prost(int32, optional, tag="2")]
4432        pub pid: ::core::option::Option<i32>,
4433        #[prost(int32, optional, tag="3")]
4434        pub tid: ::core::option::Option<i32>,
4435        #[prost(int32, optional, tag="4")]
4436        pub uid: ::core::option::Option<i32>,
4437        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4438        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4439        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4440        #[prost(uint64, optional, tag="5")]
4441        pub timestamp: ::core::option::Option<u64>,
4442        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4443        /// the second column of /system/etc/event-log-tags. For all other events,
4444        /// |tag| is the app-specified argument passed to __android_log_write().
4445        #[prost(string, optional, tag="6")]
4446        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4447        /// Empty when log_id == LID_EVENTS.
4448        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4449        pub prio: ::core::option::Option<i32>,
4450        /// Empty when log_id == LID_EVENTS.
4451        #[prost(string, optional, tag="8")]
4452        pub message: ::core::option::Option<::prost::alloc::string::String>,
4453        /// Only populated when log_id == LID_EVENTS.
4454        #[prost(message, repeated, tag="9")]
4455        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4456    }
4457    /// Nested message and enum types in `LogEvent`.
4458    pub mod log_event {
4459        #[derive(Clone, PartialEq, ::prost::Message)]
4460        pub struct Arg {
4461            #[prost(string, optional, tag="1")]
4462            pub name: ::core::option::Option<::prost::alloc::string::String>,
4463            #[prost(oneof="arg::Value", tags="2, 3, 4")]
4464            pub value: ::core::option::Option<arg::Value>,
4465        }
4466        /// Nested message and enum types in `Arg`.
4467        pub mod arg {
4468            #[derive(Clone, PartialEq, ::prost::Oneof)]
4469            pub enum Value {
4470                #[prost(int64, tag="2")]
4471                IntValue(i64),
4472                #[prost(float, tag="3")]
4473                FloatValue(f32),
4474                #[prost(string, tag="4")]
4475                StringValue(::prost::alloc::string::String),
4476            }
4477        }
4478    }
4479    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
4480    /// absolute counters since the beginning of the lifetime of the tracing
4481    /// session and NOT relative to the previous Stats snapshot).
4482    #[derive(Clone, PartialEq, ::prost::Message)]
4483    pub struct Stats {
4484        /// Total number of log events seen, including errors and skipped entries
4485        /// (num of events stored in the trace = total - failed - skipped).
4486        #[prost(uint64, optional, tag="1")]
4487        pub num_total: ::core::option::Option<u64>,
4488        /// Parser failures.
4489        #[prost(uint64, optional, tag="2")]
4490        pub num_failed: ::core::option::Option<u64>,
4491        /// Messages skipped due to filters.
4492        #[prost(uint64, optional, tag="3")]
4493        pub num_skipped: ::core::option::Option<u64>,
4494    }
4495}
4496// End of protos/perfetto/trace/android/android_log.proto
4497
4498// Begin of protos/perfetto/trace/android/android_system_property.proto
4499
4500#[derive(Clone, PartialEq, ::prost::Message)]
4501pub struct AndroidSystemProperty {
4502    #[prost(message, repeated, tag="1")]
4503    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
4504}
4505/// Nested message and enum types in `AndroidSystemProperty`.
4506pub mod android_system_property {
4507    #[derive(Clone, PartialEq, ::prost::Message)]
4508    pub struct PropertyValue {
4509        #[prost(string, optional, tag="1")]
4510        pub name: ::core::option::Option<::prost::alloc::string::String>,
4511        #[prost(string, optional, tag="2")]
4512        pub value: ::core::option::Option<::prost::alloc::string::String>,
4513    }
4514}
4515// End of protos/perfetto/trace/android/android_system_property.proto
4516
4517// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
4518
4519/// AppWakelockInfo describes the time-independent properties of a wakelock, such
4520/// as the owning package or wakelock tag. This is interned to reduce trace size.
4521/// Event bundles refer to interned wakelock info by the iid.
4522#[derive(Clone, PartialEq, ::prost::Message)]
4523pub struct AppWakelockInfo {
4524    /// The interned id of this wakelock.
4525    #[prost(int32, optional, tag="1")]
4526    pub iid: ::core::option::Option<i32>,
4527    /// The app-provided tag of the wakelock.
4528    #[prost(string, optional, tag="2")]
4529    pub tag: ::core::option::Option<::prost::alloc::string::String>,
4530    /// The wakelock flags (such as partial vs full).
4531    #[prost(int32, optional, tag="3")]
4532    pub flags: ::core::option::Option<i32>,
4533    /// The pid that created the wakelock.
4534    #[prost(int32, optional, tag="4")]
4535    pub owner_pid: ::core::option::Option<i32>,
4536    /// The uid that created the wakelock.
4537    #[prost(int32, optional, tag="5")]
4538    pub owner_uid: ::core::option::Option<i32>,
4539    /// The uid of the work source root (if present).
4540    #[prost(int32, optional, tag="6")]
4541    pub work_uid: ::core::option::Option<i32>,
4542}
4543/// AppWakelockBundle describes one or more wakelock events. Events are written
4544/// in two paired array, such that the details for event i are in intern_id\[i\]
4545/// and encoded_ts\[i\].
4546#[derive(Clone, PartialEq, ::prost::Message)]
4547pub struct AppWakelockBundle {
4548    /// The interned id for the WakelockInfo of the event.
4549    #[prost(uint32, repeated, tag="1")]
4550    pub intern_id: ::prost::alloc::vec::Vec<u32>,
4551    /// The timestamp and event type, encoded as:
4552    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
4553    #[prost(uint64, repeated, tag="2")]
4554    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
4555    /// For writing single packets (mainly by tokenization).
4556    #[prost(message, optional, tag="3")]
4557    pub info: ::core::option::Option<AppWakelockInfo>,
4558    #[prost(bool, optional, tag="4")]
4559    pub acquired: ::core::option::Option<bool>,
4560}
4561/// Trace event for bluetooth
4562#[derive(Clone, PartialEq, ::prost::Message)]
4563pub struct BluetoothTraceEvent {
4564    /// Packet type and direction
4565    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
4566    pub packet_type: ::core::option::Option<i32>,
4567    /// Total count of the packets collected during the collection interval
4568    #[prost(uint32, optional, tag="2")]
4569    pub count: ::core::option::Option<u32>,
4570    /// Total cumulative length of the packets collected during the collection
4571    /// interval
4572    #[prost(uint32, optional, tag="3")]
4573    pub length: ::core::option::Option<u32>,
4574    /// The collection interval in nanoseconds. This is the duration between the
4575    /// first and last packets collected.
4576    #[prost(uint32, optional, tag="4")]
4577    pub duration: ::core::option::Option<u32>,
4578    /// In case of CMD type, further breakdown of the type of command
4579    #[prost(uint32, optional, tag="5")]
4580    pub op_code: ::core::option::Option<u32>,
4581    /// In the case of EVT type, further breakdown of the type of event
4582    #[prost(uint32, optional, tag="6")]
4583    pub event_code: ::core::option::Option<u32>,
4584    /// When applicable for EVT type, further breakdown of event type into specific
4585    /// subevent
4586    #[prost(uint32, optional, tag="7")]
4587    pub subevent_code: ::core::option::Option<u32>,
4588    /// Associated handle for the bluetooth packet
4589    #[prost(uint32, optional, tag="8")]
4590    pub connection_handle: ::core::option::Option<u32>,
4591}
4592// End of protos/perfetto/trace/android/bluetooth_trace.proto
4593
4594// Begin of protos/perfetto/trace/android/camera_event.proto
4595
4596/// A profiling event corresponding to a single camera frame. This message
4597/// collects important details and timestamps involved in producing a single
4598/// camera frame.
4599/// Next ID: 17
4600#[derive(Clone, PartialEq, ::prost::Message)]
4601pub struct AndroidCameraFrameEvent {
4602    /// Identifier for the CameraCaptureSession this frame originates from. See:
4603    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4604    #[prost(uint64, optional, tag="1")]
4605    pub session_id: ::core::option::Option<u64>,
4606    /// Identifier for the camera sensor that is the source of this frame. This may
4607    /// be either a physical or logical camera (up to vendor interpretation).
4608    #[prost(uint32, optional, tag="2")]
4609    pub camera_id: ::core::option::Option<u32>,
4610    /// The frame number identifying this frame on this camera.
4611    #[prost(int64, optional, tag="3")]
4612    pub frame_number: ::core::option::Option<i64>,
4613    /// Identifier for the CaptureRequest. See:
4614    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
4615    ///
4616    /// If multiple cameras are streaming simultaneously, the request_id may be
4617    /// used to identify which frames were captured in service of the same request.
4618    #[prost(int64, optional, tag="4")]
4619    pub request_id: ::core::option::Option<i64>,
4620    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
4621    /// received by the camera HAL pipeline. Note that this request may wait for
4622    /// some time before processing actually begins. See also
4623    /// request_processing_started_ns.
4624    #[prost(int64, optional, tag="5")]
4625    pub request_received_ns: ::core::option::Option<i64>,
4626    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
4627    /// processing by the camera HAL pipeline. This is the time at which the
4628    /// pipeline actually begins to work on the request.
4629    #[prost(int64, optional, tag="6")]
4630    pub request_processing_started_ns: ::core::option::Option<i64>,
4631    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
4632    #[prost(int64, optional, tag="7")]
4633    pub start_of_exposure_ns: ::core::option::Option<i64>,
4634    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
4635    /// event.
4636    #[prost(int64, optional, tag="8")]
4637    pub start_of_frame_ns: ::core::option::Option<i64>,
4638    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
4639    /// for the frame.
4640    #[prost(int64, optional, tag="9")]
4641    pub responses_all_sent_ns: ::core::option::Option<i64>,
4642    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
4643    pub capture_result_status: ::core::option::Option<i32>,
4644    /// The number of sensor frames that were skipped between this frame and the
4645    /// previous frame. Under normal operation, this should be zero. Any number
4646    /// greater than zero indicates dropped sensor frames.
4647    #[prost(int32, optional, tag="11")]
4648    pub skipped_sensor_frames: ::core::option::Option<i32>,
4649    /// The value of CONTROL_CAPTURE_INTENT. See:
4650    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
4651    #[prost(int32, optional, tag="12")]
4652    pub capture_intent: ::core::option::Option<i32>,
4653    /// The number of streams in the capture request.
4654    #[prost(int32, optional, tag="13")]
4655    pub num_streams: ::core::option::Option<i32>,
4656    #[prost(message, repeated, tag="14")]
4657    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
4658    /// These fields capture vendor-specific additions to this proto message. In
4659    /// practice `vendor_data` typically contains a serialized message of the
4660    /// vendor's design, and `vendor_data_version` is incremented each time there
4661    /// is a backwards incompatible change made to the message.
4662    #[prost(int32, optional, tag="15")]
4663    pub vendor_data_version: ::core::option::Option<i32>,
4664    #[prost(bytes="vec", optional, tag="16")]
4665    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4666}
4667/// Nested message and enum types in `AndroidCameraFrameEvent`.
4668pub mod android_camera_frame_event {
4669    /// A profiling event corresponding to a single node processing within the
4670    /// camera pipeline. Intuitively this corresponds to a single stage of
4671    /// processing to produce a camera frame. Next ID: 6
4672    #[derive(Clone, PartialEq, ::prost::Message)]
4673    pub struct CameraNodeProcessingDetails {
4674        #[prost(int64, optional, tag="1")]
4675        pub node_id: ::core::option::Option<i64>,
4676        /// The timestamp at which node processing begins to run.
4677        #[prost(int64, optional, tag="2")]
4678        pub start_processing_ns: ::core::option::Option<i64>,
4679        /// The timestamp at which node processing finishes running.
4680        #[prost(int64, optional, tag="3")]
4681        pub end_processing_ns: ::core::option::Option<i64>,
4682        /// The delay between inputs becoming ready and the node actually beginning
4683        /// to run.
4684        #[prost(int64, optional, tag="4")]
4685        pub scheduling_latency_ns: ::core::option::Option<i64>,
4686    }
4687    /// The error status, if any, reported to the camera framework. Any status
4688    /// other than STATUS_OK indicates a dropped frame.
4689    /// Next Enum: 6
4690    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4691    #[repr(i32)]
4692    pub enum CaptureResultStatus {
4693        StatusUnspecified = 0,
4694        StatusOk = 1,
4695        /// Early metadata was returned to the camera framework with an error.
4696        StatusEarlyMetadataError = 2,
4697        /// Final metadata was returned to the camera framework with an error.
4698        StatusFinalMetadataError = 3,
4699        /// One or more buffers were returned to the camera framework with an error.
4700        StatusBufferError = 4,
4701        /// The frame was dropped as a result of a flush operation.
4702        StatusFlushError = 5,
4703    }
4704    impl CaptureResultStatus {
4705        /// String value of the enum field names used in the ProtoBuf definition.
4706        ///
4707        /// The values are not transformed in any way and thus are considered stable
4708        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4709        pub fn as_str_name(&self) -> &'static str {
4710            match self {
4711                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
4712                CaptureResultStatus::StatusOk => "STATUS_OK",
4713                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
4714                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
4715                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
4716                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
4717            }
4718        }
4719    }
4720}
4721/// A profiling event that may be emitted periodically (i.e., at a slower rate
4722/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
4723/// session-specific values.
4724#[derive(Clone, PartialEq, ::prost::Message)]
4725pub struct AndroidCameraSessionStats {
4726    /// Identifier for the CameraCaptureSession this frame originates from. See:
4727    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4728    #[prost(uint64, optional, tag="1")]
4729    pub session_id: ::core::option::Option<u64>,
4730    #[prost(message, optional, tag="2")]
4731    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
4732}
4733/// Nested message and enum types in `AndroidCameraSessionStats`.
4734pub mod android_camera_session_stats {
4735    /// Although vendor implementations may vary, camera pipeline processing is
4736    /// typically arranged into a directed graph-like structure. This message is
4737    /// used to record that graph.
4738    #[derive(Clone, PartialEq, ::prost::Message)]
4739    pub struct CameraGraph {
4740        #[prost(message, repeated, tag="1")]
4741        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
4742        #[prost(message, repeated, tag="2")]
4743        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
4744    }
4745    /// Nested message and enum types in `CameraGraph`.
4746    pub mod camera_graph {
4747        #[derive(Clone, PartialEq, ::prost::Message)]
4748        pub struct CameraNode {
4749            #[prost(int64, optional, tag="1")]
4750            pub node_id: ::core::option::Option<i64>,
4751            /// A list of inputs consumed by this node.
4752            #[prost(int64, repeated, packed="false", tag="2")]
4753            pub input_ids: ::prost::alloc::vec::Vec<i64>,
4754            /// A list of outputs produced by this node.
4755            #[prost(int64, repeated, packed="false", tag="3")]
4756            pub output_ids: ::prost::alloc::vec::Vec<i64>,
4757            /// These fields capture vendor-specific additions to this proto message.
4758            /// In practice `vendor_data` typically contains a serialized message of
4759            /// the vendor's design, and `vendor_data_version` is incremented each time
4760            /// there is a backwards incompatible change made to the message.
4761            #[prost(int32, optional, tag="4")]
4762            pub vendor_data_version: ::core::option::Option<i32>,
4763            #[prost(bytes="vec", optional, tag="5")]
4764            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4765        }
4766        /// An adjacency list describing connections between CameraNodes, mapping
4767        /// nodes and their outputs to other nodes that consume them as inputs.
4768        #[derive(Clone, PartialEq, ::prost::Message)]
4769        pub struct CameraEdge {
4770            /// The pair of IDs identifying the node and output connected by this edge.
4771            #[prost(int64, optional, tag="1")]
4772            pub output_node_id: ::core::option::Option<i64>,
4773            #[prost(int64, optional, tag="2")]
4774            pub output_id: ::core::option::Option<i64>,
4775            /// The pair of IDs identifying the node and input connected by this edge.
4776            #[prost(int64, optional, tag="3")]
4777            pub input_node_id: ::core::option::Option<i64>,
4778            #[prost(int64, optional, tag="4")]
4779            pub input_id: ::core::option::Option<i64>,
4780            /// These fields capture vendor-specific additions to this proto message.
4781            /// In practice `vendor_data` typically contains a serialized message of
4782            /// the vendor's design, and `vendor_data_version` is incremented each time
4783            /// there is a backwards incompatible change made to the message.
4784            #[prost(int32, optional, tag="5")]
4785            pub vendor_data_version: ::core::option::Option<i32>,
4786            #[prost(bytes="vec", optional, tag="6")]
4787            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4788        }
4789    }
4790}
4791// End of protos/perfetto/trace/android/camera_event.proto
4792
4793// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
4794
4795#[derive(Clone, PartialEq, ::prost::Message)]
4796pub struct CpuPerUidData {
4797    /// Number of clusters in the device. This will only be filled in the first
4798    /// packet in a sequence.
4799    #[prost(uint32, optional, tag="1")]
4800    pub cluster_count: ::core::option::Option<u32>,
4801    /// The UIDs for which we have data in this packet.
4802    #[prost(uint32, repeated, tag="2")]
4803    pub uid: ::prost::alloc::vec::Vec<u32>,
4804    /// List of times for {UID, cluster} tuples. This will be cluster_count
4805    /// times as long as the UID list.
4806    ///
4807    /// Ordered like:
4808    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
4809    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
4810    ///
4811    /// Each value is an absolute count for the first packet in a sequence, and a
4812    /// delta thereafter. UIDs for which all clusters have a zero delta are
4813    /// omitted; a single non-zero value for any cluster for a UID will cause
4814    /// values for all clusters to be recorded.
4815    #[prost(uint64, repeated, tag="3")]
4816    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
4817}
4818// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
4819
4820// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
4821
4822/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
4823/// Used in comparing the expected timeline of a frame to the actual timeline.
4824/// Key terms:
4825///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
4826///     2) SurfaceFrame - represents App's work on its frame
4827///     3) Timeline = start to end of a component's(app/SF) work on a frame.
4828/// SurfaceFlinger composites frames from many apps together, so
4829///     One DisplayFrame can map to N SurfaceFrame(s)
4830/// This relationship can be reconstructed by using
4831///     DisplayFrame.token = SurfaceFrame.display_frame_token
4832#[derive(Clone, PartialEq, ::prost::Message)]
4833pub struct FrameTimelineEvent {
4834    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
4835    pub event: ::core::option::Option<frame_timeline_event::Event>,
4836}
4837/// Nested message and enum types in `FrameTimelineEvent`.
4838pub mod frame_timeline_event {
4839    /// Indicates the start of expected timeline slice for SurfaceFrames.
4840    #[derive(Clone, PartialEq, ::prost::Message)]
4841    pub struct ExpectedSurfaceFrameStart {
4842        /// Cookie used to correlate between the start and end messages of the same
4843        /// frame. Since all values except the ts are same for start and end, cookie
4844        /// helps in preventing redundant data transmission.
4845        /// The same cookie is used only by start and end messages of a single frame
4846        /// and is otherwise unique.
4847        #[prost(int64, optional, tag="1")]
4848        pub cookie: ::core::option::Option<i64>,
4849        /// Token received by the app for its work. Can be shared between multiple
4850        /// layers of the same app (example: pip mode).
4851        #[prost(int64, optional, tag="2")]
4852        pub token: ::core::option::Option<i64>,
4853        /// The corresponding DisplayFrame token is required to link the App's work
4854        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4855        /// DisplayFrame.
4856        /// this.display_frame_token = DisplayFrame.token
4857        #[prost(int64, optional, tag="3")]
4858        pub display_frame_token: ::core::option::Option<i64>,
4859        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4860        /// the respective process track group.
4861        #[prost(int32, optional, tag="4")]
4862        pub pid: ::core::option::Option<i32>,
4863        #[prost(string, optional, tag="5")]
4864        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4865    }
4866    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
4867    /// includes the jank information.
4868    #[derive(Clone, PartialEq, ::prost::Message)]
4869    pub struct ActualSurfaceFrameStart {
4870        /// Cookie used to correlate between the start and end messages of the same
4871        /// frame. Since all values except the ts are same for start and end, cookie
4872        /// helps in preventing redundant data transmission.
4873        /// The same cookie is used only by start and end messages of a single frame
4874        /// and is otherwise unique.
4875        #[prost(int64, optional, tag="1")]
4876        pub cookie: ::core::option::Option<i64>,
4877        /// Token received by the app for its work. Can be shared between multiple
4878        /// layers of the same app (example: pip mode).
4879        #[prost(int64, optional, tag="2")]
4880        pub token: ::core::option::Option<i64>,
4881        /// The corresponding DisplayFrame token is required to link the App's work
4882        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
4883        /// DisplayFrame.
4884        /// this.display_frame_token = DisplayFrame.token
4885        #[prost(int64, optional, tag="3")]
4886        pub display_frame_token: ::core::option::Option<i64>,
4887        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
4888        /// the respective process track group.
4889        #[prost(int32, optional, tag="4")]
4890        pub pid: ::core::option::Option<i32>,
4891        #[prost(string, optional, tag="5")]
4892        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
4893        #[prost(enumeration="PresentType", optional, tag="6")]
4894        pub present_type: ::core::option::Option<i32>,
4895        #[prost(bool, optional, tag="7")]
4896        pub on_time_finish: ::core::option::Option<bool>,
4897        #[prost(bool, optional, tag="8")]
4898        pub gpu_composition: ::core::option::Option<bool>,
4899        /// A bitmask of JankType. More than one reason can be attributed to a janky
4900        /// frame.
4901        #[prost(int32, optional, tag="9")]
4902        pub jank_type: ::core::option::Option<i32>,
4903        #[prost(enumeration="PredictionType", optional, tag="10")]
4904        pub prediction_type: ::core::option::Option<i32>,
4905        #[prost(bool, optional, tag="11")]
4906        pub is_buffer: ::core::option::Option<bool>,
4907        #[prost(enumeration="JankSeverityType", optional, tag="12")]
4908        pub jank_severity_type: ::core::option::Option<i32>,
4909    }
4910    /// Indicates the start of expected timeline slice for DisplayFrames.
4911    #[derive(Clone, PartialEq, ::prost::Message)]
4912    pub struct ExpectedDisplayFrameStart {
4913        /// Cookie used to correlate between the start and end messages of the same
4914        /// frame. Since all values except the ts are same for start and end, cookie
4915        /// helps in preventing redundant data transmission.
4916        /// The same cookie is used only by start and end messages of a single frame
4917        /// and is otherwise unique.
4918        #[prost(int64, optional, tag="1")]
4919        pub cookie: ::core::option::Option<i64>,
4920        /// Token received by SurfaceFlinger for its work
4921        /// this.token = SurfaceFrame.display_frame_token
4922        #[prost(int64, optional, tag="2")]
4923        pub token: ::core::option::Option<i64>,
4924        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
4925        /// inside the SurfaceFlinger process group.
4926        #[prost(int32, optional, tag="3")]
4927        pub pid: ::core::option::Option<i32>,
4928    }
4929    /// Indicates the start of actual timeline slice for DisplayFrames. Also
4930    /// includes the jank information.
4931    #[derive(Clone, PartialEq, ::prost::Message)]
4932    pub struct ActualDisplayFrameStart {
4933        /// Cookie used to correlate between the start and end messages of the same
4934        /// frame. Since all values except the ts are same for start and end, cookie
4935        /// helps in preventing redundant data transmission.
4936        /// The same cookie is used only by start and end messages of a single frame
4937        /// and is otherwise unique.
4938        #[prost(int64, optional, tag="1")]
4939        pub cookie: ::core::option::Option<i64>,
4940        /// Token received by SurfaceFlinger for its work
4941        /// this.token = SurfaceFrame.display_frame_token
4942        #[prost(int64, optional, tag="2")]
4943        pub token: ::core::option::Option<i64>,
4944        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
4945        /// inside the SurfaceFlinger process group.
4946        #[prost(int32, optional, tag="3")]
4947        pub pid: ::core::option::Option<i32>,
4948        #[prost(enumeration="PresentType", optional, tag="4")]
4949        pub present_type: ::core::option::Option<i32>,
4950        #[prost(bool, optional, tag="5")]
4951        pub on_time_finish: ::core::option::Option<bool>,
4952        #[prost(bool, optional, tag="6")]
4953        pub gpu_composition: ::core::option::Option<bool>,
4954        /// A bitmask of JankType. More than one reason can be attributed to a janky
4955        /// frame.
4956        #[prost(int32, optional, tag="7")]
4957        pub jank_type: ::core::option::Option<i32>,
4958        #[prost(enumeration="PredictionType", optional, tag="8")]
4959        pub prediction_type: ::core::option::Option<i32>,
4960        #[prost(enumeration="JankSeverityType", optional, tag="9")]
4961        pub jank_severity_type: ::core::option::Option<i32>,
4962    }
4963    /// FrameEnd just sends the cookie to indicate that the corresponding
4964    /// <display/surface>frame slice's end.
4965    #[derive(Clone, PartialEq, ::prost::Message)]
4966    pub struct FrameEnd {
4967        #[prost(int64, optional, tag="1")]
4968        pub cookie: ::core::option::Option<i64>,
4969    }
4970    /// Specifies the reason(s) most likely to have caused the jank.
4971    /// Used as a bitmask.
4972    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4973    #[repr(i32)]
4974    pub enum JankType {
4975        JankUnspecified = 0,
4976        JankNone = 1,
4977        JankSfScheduling = 2,
4978        JankPredictionError = 4,
4979        JankDisplayHal = 8,
4980        JankSfCpuDeadlineMissed = 16,
4981        JankSfGpuDeadlineMissed = 32,
4982        JankAppDeadlineMissed = 64,
4983        JankBufferStuffing = 128,
4984        JankUnknown = 256,
4985        JankSfStuffing = 512,
4986        JankDropped = 1024,
4987    }
4988    impl JankType {
4989        /// String value of the enum field names used in the ProtoBuf definition.
4990        ///
4991        /// The values are not transformed in any way and thus are considered stable
4992        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4993        pub fn as_str_name(&self) -> &'static str {
4994            match self {
4995                JankType::JankUnspecified => "JANK_UNSPECIFIED",
4996                JankType::JankNone => "JANK_NONE",
4997                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
4998                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
4999                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5000                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5001                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5002                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5003                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5004                JankType::JankUnknown => "JANK_UNKNOWN",
5005                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5006                JankType::JankDropped => "JANK_DROPPED",
5007            }
5008        }
5009    }
5010    /// Specifies the severity of a jank.
5011    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5012    #[repr(i32)]
5013    pub enum JankSeverityType {
5014        SeverityUnknown = 0,
5015        SeverityNone = 1,
5016        SeverityPartial = 2,
5017        SeverityFull = 3,
5018    }
5019    impl JankSeverityType {
5020        /// String value of the enum field names used in the ProtoBuf definition.
5021        ///
5022        /// The values are not transformed in any way and thus are considered stable
5023        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5024        pub fn as_str_name(&self) -> &'static str {
5025            match self {
5026                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5027                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5028                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5029                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5030            }
5031        }
5032    }
5033    /// Specifies how a frame was presented on screen w.r.t. timing.
5034    /// Can be different for SurfaceFrame and DisplayFrame.
5035    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5036    #[repr(i32)]
5037    pub enum PresentType {
5038        PresentUnspecified = 0,
5039        PresentOnTime = 1,
5040        PresentLate = 2,
5041        PresentEarly = 3,
5042        PresentDropped = 4,
5043        PresentUnknown = 5,
5044    }
5045    impl PresentType {
5046        /// String value of the enum field names used in the ProtoBuf definition.
5047        ///
5048        /// The values are not transformed in any way and thus are considered stable
5049        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5050        pub fn as_str_name(&self) -> &'static str {
5051            match self {
5052                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5053                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5054                PresentType::PresentLate => "PRESENT_LATE",
5055                PresentType::PresentEarly => "PRESENT_EARLY",
5056                PresentType::PresentDropped => "PRESENT_DROPPED",
5057                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5058            }
5059        }
5060    }
5061    /// Specifies if the predictions for the frame are still valid, expired or
5062    /// unknown.
5063    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5064    #[repr(i32)]
5065    pub enum PredictionType {
5066        PredictionUnspecified = 0,
5067        PredictionValid = 1,
5068        PredictionExpired = 2,
5069        PredictionUnknown = 3,
5070    }
5071    impl PredictionType {
5072        /// String value of the enum field names used in the ProtoBuf definition.
5073        ///
5074        /// The values are not transformed in any way and thus are considered stable
5075        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5076        pub fn as_str_name(&self) -> &'static str {
5077            match self {
5078                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5079                PredictionType::PredictionValid => "PREDICTION_VALID",
5080                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5081                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5082            }
5083        }
5084    }
5085    #[derive(Clone, PartialEq, ::prost::Oneof)]
5086    pub enum Event {
5087        #[prost(message, tag="1")]
5088        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5089        #[prost(message, tag="2")]
5090        ActualDisplayFrameStart(ActualDisplayFrameStart),
5091        #[prost(message, tag="3")]
5092        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5093        #[prost(message, tag="4")]
5094        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5095        #[prost(message, tag="5")]
5096        FrameEnd(FrameEnd),
5097    }
5098}
5099// End of protos/perfetto/trace/android/frame_timeline_event.proto
5100
5101// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5102
5103/// Generated by Android's GpuService.
5104#[derive(Clone, PartialEq, ::prost::Message)]
5105pub struct GpuMemTotalEvent {
5106    #[prost(uint32, optional, tag="1")]
5107    pub gpu_id: ::core::option::Option<u32>,
5108    #[prost(uint32, optional, tag="2")]
5109    pub pid: ::core::option::Option<u32>,
5110    #[prost(uint64, optional, tag="3")]
5111    pub size: ::core::option::Option<u64>,
5112}
5113// End of protos/perfetto/trace/android/gpu_mem_event.proto
5114
5115// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5116
5117/// Generated by Android's SurfaceFlinger.
5118#[derive(Clone, PartialEq, ::prost::Message)]
5119pub struct GraphicsFrameEvent {
5120    #[prost(message, optional, tag="1")]
5121    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5122}
5123/// Nested message and enum types in `GraphicsFrameEvent`.
5124pub mod graphics_frame_event {
5125    #[derive(Clone, PartialEq, ::prost::Message)]
5126    pub struct BufferEvent {
5127        #[prost(uint32, optional, tag="1")]
5128        pub frame_number: ::core::option::Option<u32>,
5129        #[prost(enumeration="BufferEventType", optional, tag="2")]
5130        pub r#type: ::core::option::Option<i32>,
5131        #[prost(string, optional, tag="3")]
5132        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5133        /// If no duration is set, the event is an instant event.
5134        #[prost(uint64, optional, tag="4")]
5135        pub duration_ns: ::core::option::Option<u64>,
5136        /// Unique buffer identifier.
5137        #[prost(uint32, optional, tag="5")]
5138        pub buffer_id: ::core::option::Option<u32>,
5139    }
5140    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5141    #[repr(i32)]
5142    pub enum BufferEventType {
5143        Unspecified = 0,
5144        Dequeue = 1,
5145        Queue = 2,
5146        Post = 3,
5147        AcquireFence = 4,
5148        Latch = 5,
5149        /// HWC will compose this buffer
5150        HwcCompositionQueued = 6,
5151        /// renderEngine composition
5152        FallbackComposition = 7,
5153        PresentFence = 8,
5154        ReleaseFence = 9,
5155        Modify = 10,
5156        Detach = 11,
5157        Attach = 12,
5158        Cancel = 13,
5159    }
5160    impl BufferEventType {
5161        /// String value of the enum field names used in the ProtoBuf definition.
5162        ///
5163        /// The values are not transformed in any way and thus are considered stable
5164        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5165        pub fn as_str_name(&self) -> &'static str {
5166            match self {
5167                BufferEventType::Unspecified => "UNSPECIFIED",
5168                BufferEventType::Dequeue => "DEQUEUE",
5169                BufferEventType::Queue => "QUEUE",
5170                BufferEventType::Post => "POST",
5171                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5172                BufferEventType::Latch => "LATCH",
5173                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5174                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5175                BufferEventType::PresentFence => "PRESENT_FENCE",
5176                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5177                BufferEventType::Modify => "MODIFY",
5178                BufferEventType::Detach => "DETACH",
5179                BufferEventType::Attach => "ATTACH",
5180                BufferEventType::Cancel => "CANCEL",
5181            }
5182        }
5183    }
5184}
5185// End of protos/perfetto/trace/android/graphics_frame_event.proto
5186
5187// Begin of protos/perfetto/trace/android/initial_display_state.proto
5188
5189#[derive(Clone, PartialEq, ::prost::Message)]
5190pub struct InitialDisplayState {
5191    /// Same values as android.view.Display.STATE_*
5192    #[prost(int32, optional, tag="1")]
5193    pub display_state: ::core::option::Option<i32>,
5194    #[prost(double, optional, tag="2")]
5195    pub brightness: ::core::option::Option<f64>,
5196}
5197// End of protos/perfetto/trace/android/initial_display_state.proto
5198
5199// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
5200
5201#[derive(Clone, PartialEq, ::prost::Message)]
5202pub struct KernelWakelockData {
5203    /// This is only emitted when we encounter new wakelocks.
5204    #[prost(message, repeated, tag="1")]
5205    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
5206    /// Interning id.
5207    #[prost(uint32, repeated, tag="2")]
5208    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
5209    /// If we interned the wakelock name in this packet, this is the total time
5210    /// the wakelock has been held.
5211    /// If not, it's a delta from the last time we saw it.
5212    #[prost(uint64, repeated, tag="3")]
5213    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
5214    #[prost(uint64, optional, tag="4")]
5215    pub error_flags: ::core::option::Option<u64>,
5216}
5217/// Nested message and enum types in `KernelWakelockData`.
5218pub mod kernel_wakelock_data {
5219    #[derive(Clone, PartialEq, ::prost::Message)]
5220    pub struct Wakelock {
5221        /// Interning id.
5222        #[prost(uint32, optional, tag="1")]
5223        pub wakelock_id: ::core::option::Option<u32>,
5224        /// Name of the wakelock.
5225        #[prost(string, optional, tag="2")]
5226        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
5227        /// Type of the wakelock. We record data about both true kernel wakelocks
5228        /// and "native" wakelocks which are taken in userspace but are more
5229        /// conceptually similar to kernel wakelocks than normal userspace ones.
5230        #[prost(enumeration="wakelock::Type", optional, tag="3")]
5231        pub wakelock_type: ::core::option::Option<i32>,
5232    }
5233    /// Nested message and enum types in `Wakelock`.
5234    pub mod wakelock {
5235        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5236        #[repr(i32)]
5237        pub enum Type {
5238            WakelockTypeUnknown = 0,
5239            WakelockTypeKernel = 1,
5240            WakelockTypeNative = 2,
5241        }
5242        impl Type {
5243            /// String value of the enum field names used in the ProtoBuf definition.
5244            ///
5245            /// The values are not transformed in any way and thus are considered stable
5246            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5247            pub fn as_str_name(&self) -> &'static str {
5248                match self {
5249                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5250                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5251                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5252                }
5253            }
5254        }
5255    }
5256}
5257/// NetworkPacketEvent records the details of a single packet sent or received
5258/// on the network (in Linux kernel terminology, one sk_buff struct).
5259#[derive(Clone, PartialEq, ::prost::Message)]
5260pub struct NetworkPacketEvent {
5261    /// The direction traffic is flowing for this event.
5262    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5263    pub direction: ::core::option::Option<i32>,
5264    /// The name of the interface if available (e.g. 'rmnet0').
5265    #[prost(string, optional, tag="2")]
5266    pub interface: ::core::option::Option<::prost::alloc::string::String>,
5267    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5268    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5269    /// NetworkPacketContext.
5270    #[prost(uint32, optional, tag="3")]
5271    pub length: ::core::option::Option<u32>,
5272    /// The Linux user id associated with the packet's socket.
5273    #[prost(uint32, optional, tag="4")]
5274    pub uid: ::core::option::Option<u32>,
5275    /// The Android network tag associated with the packet's socket.
5276    #[prost(uint32, optional, tag="5")]
5277    pub tag: ::core::option::Option<u32>,
5278    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5279    #[prost(uint32, optional, tag="6")]
5280    pub ip_proto: ::core::option::Option<u32>,
5281    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5282    #[prost(uint32, optional, tag="7")]
5283    pub tcp_flags: ::core::option::Option<u32>,
5284    /// The local udp/tcp port of the packet.
5285    #[prost(uint32, optional, tag="8")]
5286    pub local_port: ::core::option::Option<u32>,
5287    /// The remote udp/tcp port of the packet.
5288    #[prost(uint32, optional, tag="9")]
5289    pub remote_port: ::core::option::Option<u32>,
5290    /// The 1-byte ICMP type identifier.
5291    #[prost(uint32, optional, tag="10")]
5292    pub icmp_type: ::core::option::Option<u32>,
5293    /// The 1-byte ICMP code identifier.
5294    #[prost(uint32, optional, tag="11")]
5295    pub icmp_code: ::core::option::Option<u32>,
5296}
5297/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5298#[derive(Clone, PartialEq, ::prost::Message)]
5299pub struct NetworkPacketBundle {
5300    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5301    /// enclosing TracePacket's timestamp.
5302    #[prost(uint64, repeated, tag="3")]
5303    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5304    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5305    #[prost(uint32, repeated, tag="4")]
5306    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5307    /// Total number of packets in the bundle (when above aggregation_threshold).
5308    #[prost(uint32, optional, tag="5")]
5309    pub total_packets: ::core::option::Option<u32>,
5310    /// Duration between first and last packet (when above aggregation_threshold).
5311    #[prost(uint64, optional, tag="6")]
5312    pub total_duration: ::core::option::Option<u64>,
5313    /// Total packet length in bytes (when above aggregation_threshold).
5314    #[prost(uint64, optional, tag="7")]
5315    pub total_length: ::core::option::Option<u64>,
5316    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5317    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5318}
5319/// Nested message and enum types in `NetworkPacketBundle`.
5320pub mod network_packet_bundle {
5321    #[derive(Clone, PartialEq, ::prost::Oneof)]
5322    pub enum PacketContext {
5323        /// The intern id for looking up the associated packet context.
5324        #[prost(uint64, tag="1")]
5325        Iid(u64),
5326        /// The inlined context for events in this bundle.
5327        #[prost(message, tag="2")]
5328        Ctx(super::NetworkPacketEvent),
5329    }
5330}
5331/// An internable packet context.
5332#[derive(Clone, PartialEq, ::prost::Message)]
5333pub struct NetworkPacketContext {
5334    #[prost(uint64, optional, tag="1")]
5335    pub iid: ::core::option::Option<u64>,
5336    #[prost(message, optional, tag="2")]
5337    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5338}
5339// End of protos/perfetto/trace/android/network_trace.proto
5340
5341// Begin of protos/perfetto/trace/android/packages_list.proto
5342
5343#[derive(Clone, PartialEq, ::prost::Message)]
5344pub struct PackagesList {
5345    #[prost(message, repeated, tag="1")]
5346    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5347    /// At least one error occurred parsing the packages.list.
5348    #[prost(bool, optional, tag="2")]
5349    pub parse_error: ::core::option::Option<bool>,
5350    /// Failed to open / read packages.list.
5351    #[prost(bool, optional, tag="3")]
5352    pub read_error: ::core::option::Option<bool>,
5353}
5354/// Nested message and enum types in `PackagesList`.
5355pub mod packages_list {
5356    #[derive(Clone, PartialEq, ::prost::Message)]
5357    pub struct PackageInfo {
5358        #[prost(string, optional, tag="1")]
5359        pub name: ::core::option::Option<::prost::alloc::string::String>,
5360        #[prost(uint64, optional, tag="2")]
5361        pub uid: ::core::option::Option<u64>,
5362        #[prost(bool, optional, tag="3")]
5363        pub debuggable: ::core::option::Option<bool>,
5364        #[prost(bool, optional, tag="4")]
5365        pub profileable_from_shell: ::core::option::Option<bool>,
5366        #[prost(int64, optional, tag="5")]
5367        pub version_code: ::core::option::Option<i64>,
5368    }
5369}
5370// End of protos/perfetto/trace/android/packages_list.proto
5371
5372// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5373
5374#[derive(Clone, PartialEq, ::prost::Message)]
5375pub struct PixelModemEvents {
5376    /// Pigweed-format dehydrated events.
5377    #[prost(bytes="vec", repeated, tag="1")]
5378    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5379    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5380    /// timestamp is the absolute timestamp of the first event. Subsequent
5381    /// timestamps are deltas from the previous timestamp.
5382    /// The nth entry from `events` gets the nth entry here.
5383    #[prost(uint64, repeated, packed="false", tag="2")]
5384    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5385}
5386/// NB: this is not emitted in the trace but can be prepended later.
5387#[derive(Clone, PartialEq, ::prost::Message)]
5388pub struct PixelModemTokenDatabase {
5389    /// Pigweed-format database to allow event rehydration.
5390    #[prost(bytes="vec", optional, tag="1")]
5391    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5392}
5393// End of protos/perfetto/trace/android/pixel_modem_events.proto
5394
5395// Begin of protos/perfetto/trace/android/protolog.proto
5396
5397/// represents a single log entry 
5398#[derive(Clone, PartialEq, ::prost::Message)]
5399pub struct ProtoLogMessage {
5400    /// log statement identifier, created from message string and log level. 
5401    #[prost(fixed64, optional, tag="1")]
5402    pub message_id: ::core::option::Option<u64>,
5403    /// string parameters passed to the log call that have been interned. 
5404    #[prost(uint32, repeated, packed="false", tag="2")]
5405    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5406    /// integer parameters passed to the log call. 
5407    #[prost(sint64, repeated, packed="false", tag="3")]
5408    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5409    /// floating point parameters passed to the log call. 
5410    #[prost(double, repeated, packed="false", tag="4")]
5411    pub double_params: ::prost::alloc::vec::Vec<f64>,
5412    /// boolean parameters passed to the log call. 
5413    #[prost(int32, repeated, packed="false", tag="5")]
5414    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5415    /// id of the interned stacktrace string
5416    /// (only dumped if explicitly confuigured to do so)
5417    #[prost(uint32, optional, tag="6")]
5418    pub stacktrace_iid: ::core::option::Option<u32>,
5419}
5420/// contains all the data required to fully decode the protolog messages 
5421#[derive(Clone, PartialEq, ::prost::Message)]
5422pub struct ProtoLogViewerConfig {
5423    #[prost(message, repeated, tag="1")]
5424    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
5425    #[prost(message, repeated, tag="2")]
5426    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
5427}
5428/// Nested message and enum types in `ProtoLogViewerConfig`.
5429pub mod proto_log_viewer_config {
5430    #[derive(Clone, PartialEq, ::prost::Message)]
5431    pub struct MessageData {
5432        /// the id of the message that is logged in a ProtoLogMessage
5433        #[prost(fixed64, optional, tag="1")]
5434        pub message_id: ::core::option::Option<u64>,
5435        /// the string representation of the message
5436        #[prost(string, optional, tag="2")]
5437        pub message: ::core::option::Option<::prost::alloc::string::String>,
5438        /// the level of the message
5439        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
5440        pub level: ::core::option::Option<i32>,
5441        /// the id of the log group this message belongs to
5442        #[prost(uint32, optional, tag="4")]
5443        pub group_id: ::core::option::Option<u32>,
5444        /// path to the file where the message was logged
5445        #[prost(string, optional, tag="5")]
5446        pub location: ::core::option::Option<::prost::alloc::string::String>,
5447    }
5448    /// information about a ProtoLog log group 
5449    #[derive(Clone, PartialEq, ::prost::Message)]
5450    pub struct Group {
5451        #[prost(uint32, optional, tag="1")]
5452        pub id: ::core::option::Option<u32>,
5453        #[prost(string, optional, tag="2")]
5454        pub name: ::core::option::Option<::prost::alloc::string::String>,
5455        #[prost(string, optional, tag="3")]
5456        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5457    }
5458}
5459// End of protos/perfetto/trace/android/protolog.proto
5460
5461// Begin of protos/perfetto/trace/android/shell_transition.proto
5462
5463/// ShellTransition messages record information about the shell transitions in
5464/// the system. This is used to track the animations that are created and execute
5465/// through the shell transition system.
5466#[derive(Clone, PartialEq, ::prost::Message)]
5467pub struct ShellTransition {
5468    /// The unique identifier of the transition.
5469    #[prost(int32, optional, tag="1")]
5470    pub id: ::core::option::Option<i32>,
5471    /// The time the transition was created on the WM side
5472    /// (using SystemClock.elapsedRealtimeNanos())
5473    #[prost(int64, optional, tag="2")]
5474    pub create_time_ns: ::core::option::Option<i64>,
5475    /// The time the transition was sent from the WM side to shell
5476    /// (using SystemClock.elapsedRealtimeNanos())
5477    #[prost(int64, optional, tag="3")]
5478    pub send_time_ns: ::core::option::Option<i64>,
5479    /// The time the transition was dispatched by shell to execute
5480    /// (using SystemClock.elapsedRealtimeNanos())
5481    #[prost(int64, optional, tag="4")]
5482    pub dispatch_time_ns: ::core::option::Option<i64>,
5483    /// If the transition merge was accepted by the transition handler, this
5484    /// contains the time the transition was merged into transition with id
5485    /// `merge_target`.
5486    /// (using SystemClock.elapsedRealtimeNanos())
5487    #[prost(int64, optional, tag="5")]
5488    pub merge_time_ns: ::core::option::Option<i64>,
5489    /// The time shell proposed the transition should be merged to the transition
5490    /// handler into transition with id `merge_target`.
5491    /// (using SystemClock.elapsedRealtimeNanos()).
5492    #[prost(int64, optional, tag="6")]
5493    pub merge_request_time_ns: ::core::option::Option<i64>,
5494    /// If the transition was aborted on the shell side, this is the time that
5495    /// occurred.
5496    /// (using SystemClock.elapsedRealtimeNanos())
5497    #[prost(int64, optional, tag="7")]
5498    pub shell_abort_time_ns: ::core::option::Option<i64>,
5499    /// If the transition was aborted on the wm side, this is the time that
5500    /// occurred.
5501    /// (using SystemClock.elapsedRealtimeNanos())
5502    #[prost(int64, optional, tag="8")]
5503    pub wm_abort_time_ns: ::core::option::Option<i64>,
5504    /// The time WM considers the transition to be complete.
5505    /// (using SystemClock.elapsedRealtimeNanos())
5506    #[prost(int64, optional, tag="9")]
5507    pub finish_time_ns: ::core::option::Option<i64>,
5508    /// The id of the transaction that WM proposed to use as the starting
5509    /// transaction. It contains all the layer changes required to setup the
5510    /// transition and should be executed right at the start of the transition
5511    /// by the transition handler.
5512    #[prost(uint64, optional, tag="10")]
5513    pub start_transaction_id: ::core::option::Option<u64>,
5514    /// The if of the transaction that WM proposed to use as the finish
5515    /// transaction. It contains all the layer changes required to set the final
5516    /// state of the transition.
5517    #[prost(uint64, optional, tag="11")]
5518    pub finish_transaction_id: ::core::option::Option<u64>,
5519    /// The id of the handler that executed the transition. A HandlerMappings
5520    /// message in the trace will contain the mapping of id to a string
5521    /// representation of the handler.
5522    #[prost(int32, optional, tag="12")]
5523    pub handler: ::core::option::Option<i32>,
5524    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
5525    #[prost(int32, optional, tag="13")]
5526    pub r#type: ::core::option::Option<i32>,
5527    /// The list of targets that are part of this transition.
5528    #[prost(message, repeated, tag="14")]
5529    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
5530    /// The id of the transition we have requested to merge or have merged this
5531    /// transition into.
5532    #[prost(int32, optional, tag="15")]
5533    pub merge_target: ::core::option::Option<i32>,
5534    /// The flags set on this transition.
5535    #[prost(int32, optional, tag="16")]
5536    pub flags: ::core::option::Option<i32>,
5537    /// The time the starting window was removed. Tracked because this can
5538    /// happen after the transition finishes, but the app may not yet be visible
5539    /// until the starting window is removed. So in a sense the transition is not
5540    /// finished until the starting window is removed. (b/284302118)
5541    /// (using SystemClock.elapsedRealtimeNanos())
5542    #[prost(int64, optional, tag="17")]
5543    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
5544}
5545/// Nested message and enum types in `ShellTransition`.
5546pub mod shell_transition {
5547    /// Contains the information about the windows targeted in a transition.
5548    #[derive(Clone, PartialEq, ::prost::Message)]
5549    pub struct Target {
5550        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
5551        #[prost(int32, optional, tag="1")]
5552        pub mode: ::core::option::Option<i32>,
5553        /// The layer id of this target.
5554        #[prost(int32, optional, tag="2")]
5555        pub layer_id: ::core::option::Option<i32>,
5556        /// The window id of this target.
5557        #[prost(int32, optional, tag="3")]
5558        pub window_id: ::core::option::Option<i32>,
5559        /// The flags set on this target.
5560        #[prost(int32, optional, tag="4")]
5561        pub flags: ::core::option::Option<i32>,
5562    }
5563}
5564/// Contains mappings from handler ids to string representation of the handlers.
5565#[derive(Clone, PartialEq, ::prost::Message)]
5566pub struct ShellHandlerMappings {
5567    #[prost(message, repeated, tag="1")]
5568    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
5569}
5570#[derive(Clone, PartialEq, ::prost::Message)]
5571pub struct ShellHandlerMapping {
5572    /// The id of the handler used in the ShellTransition message.
5573    #[prost(int32, optional, tag="1")]
5574    pub id: ::core::option::Option<i32>,
5575    /// A human readable and meaningful string representation of the handler.
5576    #[prost(string, optional, tag="2")]
5577    pub name: ::core::option::Option<::prost::alloc::string::String>,
5578}
5579// End of protos/perfetto/trace/android/shell_transition.proto
5580
5581// Begin of protos/perfetto/trace/android/graphics/rect.proto
5582
5583#[derive(Clone, PartialEq, ::prost::Message)]
5584pub struct RectProto {
5585    #[prost(int32, optional, tag="1")]
5586    pub left: ::core::option::Option<i32>,
5587    #[prost(int32, optional, tag="2")]
5588    pub top: ::core::option::Option<i32>,
5589    #[prost(int32, optional, tag="3")]
5590    pub right: ::core::option::Option<i32>,
5591    #[prost(int32, optional, tag="4")]
5592    pub bottom: ::core::option::Option<i32>,
5593}
5594// End of protos/perfetto/trace/android/graphics/rect.proto
5595
5596// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
5597
5598#[derive(Clone, PartialEq, ::prost::Message)]
5599pub struct RegionProto {
5600    #[prost(message, repeated, tag="2")]
5601    pub rect: ::prost::alloc::vec::Vec<RectProto>,
5602}
5603#[derive(Clone, PartialEq, ::prost::Message)]
5604pub struct SizeProto {
5605    #[prost(int32, optional, tag="1")]
5606    pub w: ::core::option::Option<i32>,
5607    #[prost(int32, optional, tag="2")]
5608    pub h: ::core::option::Option<i32>,
5609}
5610#[derive(Clone, PartialEq, ::prost::Message)]
5611pub struct TransformProto {
5612    #[prost(float, optional, tag="1")]
5613    pub dsdx: ::core::option::Option<f32>,
5614    #[prost(float, optional, tag="2")]
5615    pub dtdx: ::core::option::Option<f32>,
5616    #[prost(float, optional, tag="3")]
5617    pub dsdy: ::core::option::Option<f32>,
5618    #[prost(float, optional, tag="4")]
5619    pub dtdy: ::core::option::Option<f32>,
5620    #[prost(int32, optional, tag="5")]
5621    pub r#type: ::core::option::Option<i32>,
5622}
5623#[derive(Clone, PartialEq, ::prost::Message)]
5624pub struct ColorProto {
5625    #[prost(float, optional, tag="1")]
5626    pub r: ::core::option::Option<f32>,
5627    #[prost(float, optional, tag="2")]
5628    pub g: ::core::option::Option<f32>,
5629    #[prost(float, optional, tag="3")]
5630    pub b: ::core::option::Option<f32>,
5631    #[prost(float, optional, tag="4")]
5632    pub a: ::core::option::Option<f32>,
5633}
5634#[derive(Clone, PartialEq, ::prost::Message)]
5635pub struct InputWindowInfoProto {
5636    #[prost(uint32, optional, tag="1")]
5637    pub layout_params_flags: ::core::option::Option<u32>,
5638    #[prost(int32, optional, tag="2")]
5639    pub layout_params_type: ::core::option::Option<i32>,
5640    #[prost(message, optional, tag="3")]
5641    pub frame: ::core::option::Option<RectProto>,
5642    #[prost(message, optional, tag="4")]
5643    pub touchable_region: ::core::option::Option<RegionProto>,
5644    #[prost(int32, optional, tag="5")]
5645    pub surface_inset: ::core::option::Option<i32>,
5646    #[prost(bool, optional, tag="6")]
5647    pub visible: ::core::option::Option<bool>,
5648    #[deprecated]
5649    #[prost(bool, optional, tag="7")]
5650    pub can_receive_keys: ::core::option::Option<bool>,
5651    #[prost(bool, optional, tag="8")]
5652    pub focusable: ::core::option::Option<bool>,
5653    #[prost(bool, optional, tag="9")]
5654    pub has_wallpaper: ::core::option::Option<bool>,
5655    #[prost(float, optional, tag="10")]
5656    pub global_scale_factor: ::core::option::Option<f32>,
5657    #[deprecated]
5658    #[prost(float, optional, tag="11")]
5659    pub window_x_scale: ::core::option::Option<f32>,
5660    #[deprecated]
5661    #[prost(float, optional, tag="12")]
5662    pub window_y_scale: ::core::option::Option<f32>,
5663    #[prost(int32, optional, tag="13")]
5664    pub crop_layer_id: ::core::option::Option<i32>,
5665    #[prost(bool, optional, tag="14")]
5666    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
5667    #[prost(message, optional, tag="15")]
5668    pub touchable_region_crop: ::core::option::Option<RectProto>,
5669    #[prost(message, optional, tag="16")]
5670    pub transform: ::core::option::Option<TransformProto>,
5671    #[prost(uint32, optional, tag="17")]
5672    pub input_config: ::core::option::Option<u32>,
5673}
5674#[derive(Clone, PartialEq, ::prost::Message)]
5675pub struct BlurRegion {
5676    #[prost(uint32, optional, tag="1")]
5677    pub blur_radius: ::core::option::Option<u32>,
5678    #[prost(uint32, optional, tag="2")]
5679    pub corner_radius_tl: ::core::option::Option<u32>,
5680    #[prost(uint32, optional, tag="3")]
5681    pub corner_radius_tr: ::core::option::Option<u32>,
5682    #[prost(uint32, optional, tag="4")]
5683    pub corner_radius_bl: ::core::option::Option<u32>,
5684    #[prost(float, optional, tag="5")]
5685    pub corner_radius_br: ::core::option::Option<f32>,
5686    #[prost(float, optional, tag="6")]
5687    pub alpha: ::core::option::Option<f32>,
5688    #[prost(int32, optional, tag="7")]
5689    pub left: ::core::option::Option<i32>,
5690    #[prost(int32, optional, tag="8")]
5691    pub top: ::core::option::Option<i32>,
5692    #[prost(int32, optional, tag="9")]
5693    pub right: ::core::option::Option<i32>,
5694    #[prost(int32, optional, tag="10")]
5695    pub bottom: ::core::option::Option<i32>,
5696}
5697#[derive(Clone, PartialEq, ::prost::Message)]
5698pub struct ColorTransformProto {
5699    /// This will be a 4x4 matrix of float values
5700    #[prost(float, repeated, tag="1")]
5701    pub val: ::prost::alloc::vec::Vec<f32>,
5702}
5703// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
5704
5705/// Message used by Winscope to process legacy trace files.
5706/// Represents a file full of surface flinger trace entries.
5707/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
5708/// (.LYRTRACE), such that they can be easily identified.
5709#[derive(Clone, PartialEq, ::prost::Message)]
5710pub struct LayersTraceFileProto {
5711    /// Must be the first field, set to value in MagicNumber
5712    #[prost(fixed64, optional, tag="1")]
5713    pub magic_number: ::core::option::Option<u64>,
5714    #[prost(message, repeated, tag="2")]
5715    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
5716    /// Offset between real-time clock and elapsed time clock in nanoseconds.
5717    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
5718    /// systemTime(SYSTEM_TIME_MONOTONIC)
5719    #[prost(fixed64, optional, tag="3")]
5720    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
5721}
5722/// Nested message and enum types in `LayersTraceFileProto`.
5723pub mod layers_trace_file_proto {
5724    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
5725    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
5726    /// and there's no nice way to put 64bit constants into .proto files.
5727    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5728    #[repr(i32)]
5729    pub enum MagicNumber {
5730        Invalid = 0,
5731        /// LYRT (little-endian ASCII)
5732        L = 1414682956,
5733        /// RACE (little-endian ASCII)
5734        H = 1162035538,
5735    }
5736    impl MagicNumber {
5737        /// String value of the enum field names used in the ProtoBuf definition.
5738        ///
5739        /// The values are not transformed in any way and thus are considered stable
5740        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5741        pub fn as_str_name(&self) -> &'static str {
5742            match self {
5743                MagicNumber::Invalid => "INVALID",
5744                MagicNumber::L => "MAGIC_NUMBER_L",
5745                MagicNumber::H => "MAGIC_NUMBER_H",
5746            }
5747        }
5748    }
5749}
5750#[derive(Clone, PartialEq, ::prost::Message)]
5751pub struct LayersSnapshotProto {
5752    /// elapsed realtime in nanos since boot of when this entry was logged
5753    #[prost(sfixed64, optional, tag="1")]
5754    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
5755    /// SurfaceFlinger's stage where the snapshot was triggered.
5756    /// Currently either "visibleRegionsDirty" or "bufferLatched".
5757    #[prost(string, optional, tag="2")]
5758    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
5759    #[prost(message, optional, tag="3")]
5760    pub layers: ::core::option::Option<LayersProto>,
5761    /// Blob for the current HWC information for all layers, reported by dumpsys.
5762    /// Example:
5763    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
5764    #[prost(string, optional, tag="4")]
5765    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
5766    /// Excludes state sent during composition like visible region and composition
5767    /// type.
5768    #[prost(bool, optional, tag="5")]
5769    pub excludes_composition_state: ::core::option::Option<bool>,
5770    /// Number of missed entries since the last entry was recorded.
5771    #[prost(uint32, optional, tag="6")]
5772    pub missed_entries: ::core::option::Option<u32>,
5773    #[prost(message, repeated, tag="7")]
5774    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
5775    #[prost(int64, optional, tag="8")]
5776    pub vsync_id: ::core::option::Option<i64>,
5777}
5778/// Contains a list of all layers.
5779#[derive(Clone, PartialEq, ::prost::Message)]
5780pub struct LayersProto {
5781    #[prost(message, repeated, tag="1")]
5782    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
5783}
5784#[derive(Clone, PartialEq, ::prost::Message)]
5785pub struct DisplayProto {
5786    #[prost(uint64, optional, tag="1")]
5787    pub id: ::core::option::Option<u64>,
5788    /// Display descriptor, e.g. "Built-In Screen"
5789    #[prost(string, optional, tag="2")]
5790    pub name: ::core::option::Option<::prost::alloc::string::String>,
5791    #[prost(uint32, optional, tag="3")]
5792    pub layer_stack: ::core::option::Option<u32>,
5793    #[prost(message, optional, tag="4")]
5794    pub size: ::core::option::Option<SizeProto>,
5795    #[prost(message, optional, tag="5")]
5796    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
5797    #[prost(message, optional, tag="6")]
5798    pub transform: ::core::option::Option<TransformProto>,
5799    #[prost(bool, optional, tag="7")]
5800    pub is_virtual: ::core::option::Option<bool>,
5801    #[prost(double, optional, tag="8")]
5802    pub dpi_x: ::core::option::Option<f64>,
5803    #[prost(double, optional, tag="9")]
5804    pub dpi_y: ::core::option::Option<f64>,
5805}
5806/// Information about each layer.
5807#[derive(Clone, PartialEq, ::prost::Message)]
5808pub struct LayerProto {
5809    /// unique id per layer.
5810    #[prost(int32, optional, tag="1")]
5811    pub id: ::core::option::Option<i32>,
5812    /// unique name per layer.
5813    /// Example: "Wallpaper".
5814    #[prost(string, optional, tag="2")]
5815    pub name: ::core::option::Option<::prost::alloc::string::String>,
5816    /// list of children this layer may have. May be empty.
5817    #[prost(int32, repeated, tag="3")]
5818    pub children: ::prost::alloc::vec::Vec<i32>,
5819    /// list of layers that are z order relative to this layer.
5820    #[prost(int32, repeated, tag="4")]
5821    pub relatives: ::prost::alloc::vec::Vec<i32>,
5822    /// The type of layer.
5823    /// Examples: "ContainerLayer", "BufferStateLayer".
5824    #[prost(string, optional, tag="5")]
5825    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
5826    #[prost(message, optional, tag="6")]
5827    pub transparent_region: ::core::option::Option<RegionProto>,
5828    #[prost(message, optional, tag="7")]
5829    pub visible_region: ::core::option::Option<RegionProto>,
5830    #[prost(message, optional, tag="8")]
5831    pub damage_region: ::core::option::Option<RegionProto>,
5832    #[prost(uint32, optional, tag="9")]
5833    pub layer_stack: ::core::option::Option<u32>,
5834    /// The layer's z order. Can be z order in layer stack, relative to parent,
5835    /// or relative to another layer specified in zOrderRelative.
5836    #[prost(int32, optional, tag="10")]
5837    pub z: ::core::option::Option<i32>,
5838    /// The layer's position on the display.
5839    #[prost(message, optional, tag="11")]
5840    pub position: ::core::option::Option<PositionProto>,
5841    /// The layer's requested position.
5842    #[prost(message, optional, tag="12")]
5843    pub requested_position: ::core::option::Option<PositionProto>,
5844    /// The layer's size.
5845    #[prost(message, optional, tag="13")]
5846    pub size: ::core::option::Option<SizeProto>,
5847    /// The layer's crop in its own bounds.
5848    #[prost(message, optional, tag="14")]
5849    pub crop: ::core::option::Option<RectProto>,
5850    /// The layer's crop in its parent's bounds.
5851    #[deprecated]
5852    #[prost(message, optional, tag="15")]
5853    pub final_crop: ::core::option::Option<RectProto>,
5854    #[prost(bool, optional, tag="16")]
5855    pub is_opaque: ::core::option::Option<bool>,
5856    #[prost(bool, optional, tag="17")]
5857    pub invalidate: ::core::option::Option<bool>,
5858    /// Composition states's dataspace.
5859    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
5860    /// See full enum in
5861    /// frameworks/native/libs/nativewindow/include/android/data_space.h
5862    #[prost(string, optional, tag="18")]
5863    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
5864    /// Buffer's pixel format
5865    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
5866    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
5867    #[prost(string, optional, tag="19")]
5868    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
5869    /// The layer's actual color.
5870    #[prost(message, optional, tag="20")]
5871    pub color: ::core::option::Option<ColorProto>,
5872    /// The layer's requested color.
5873    #[prost(message, optional, tag="21")]
5874    pub requested_color: ::core::option::Option<ColorProto>,
5875    /// Can be any combination of
5876    ///     hidden = 0x01
5877    ///     opaque = 0x02,
5878    ///     secure = 0x80,
5879    #[prost(uint32, optional, tag="22")]
5880    pub flags: ::core::option::Option<u32>,
5881    /// The layer's actual transform
5882    #[prost(message, optional, tag="23")]
5883    pub transform: ::core::option::Option<TransformProto>,
5884    /// The layer's requested transform.
5885    #[prost(message, optional, tag="24")]
5886    pub requested_transform: ::core::option::Option<TransformProto>,
5887    /// The parent layer. This value can be null if there is no parent.
5888    #[prost(int32, optional, tag="25")]
5889    pub parent: ::core::option::Option<i32>,
5890    /// The layer that this layer has a z order relative to. This value can be
5891    /// null.
5892    #[prost(int32, optional, tag="26")]
5893    pub z_order_relative_of: ::core::option::Option<i32>,
5894    /// This value can be null if there's nothing to draw.
5895    #[prost(message, optional, tag="27")]
5896    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
5897    /// The number of frames available.
5898    #[prost(int32, optional, tag="28")]
5899    pub queued_frames: ::core::option::Option<i32>,
5900    #[prost(bool, optional, tag="29")]
5901    pub refresh_pending: ::core::option::Option<bool>,
5902    /// The layer's composer backend destination frame
5903    #[prost(message, optional, tag="30")]
5904    pub hwc_frame: ::core::option::Option<RectProto>,
5905    /// The layer's composer backend source crop
5906    #[prost(message, optional, tag="31")]
5907    pub hwc_crop: ::core::option::Option<FloatRectProto>,
5908    /// The layer's composer backend transform
5909    #[prost(int32, optional, tag="32")]
5910    pub hwc_transform: ::core::option::Option<i32>,
5911    #[deprecated]
5912    #[prost(int32, optional, tag="33")]
5913    pub window_type: ::core::option::Option<i32>,
5914    #[deprecated]
5915    #[prost(int32, optional, tag="34")]
5916    pub app_id: ::core::option::Option<i32>,
5917    /// The layer's composition type
5918    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
5919    pub hwc_composition_type: ::core::option::Option<i32>,
5920    /// If it's a buffer layer, indicate if the content is protected
5921    #[prost(bool, optional, tag="36")]
5922    pub is_protected: ::core::option::Option<bool>,
5923    /// Current frame number being rendered.
5924    #[prost(uint64, optional, tag="37")]
5925    pub curr_frame: ::core::option::Option<u64>,
5926    /// A list of barriers that the layer is waiting to update state.
5927    #[prost(message, repeated, tag="38")]
5928    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
5929    /// If active_buffer is not null, record its transform.
5930    #[prost(message, optional, tag="39")]
5931    pub buffer_transform: ::core::option::Option<TransformProto>,
5932    #[prost(int32, optional, tag="40")]
5933    pub effective_scaling_mode: ::core::option::Option<i32>,
5934    /// Layer's corner radius
5935    #[deprecated]
5936    #[prost(float, optional, tag="41")]
5937    pub corner_radius: ::core::option::Option<f32>,
5938    /// Metadata map. May be empty.
5939    #[prost(map="int32, string", tag="42")]
5940    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
5941    #[prost(message, optional, tag="43")]
5942    pub effective_transform: ::core::option::Option<TransformProto>,
5943    #[prost(message, optional, tag="44")]
5944    pub source_bounds: ::core::option::Option<FloatRectProto>,
5945    #[prost(message, optional, tag="45")]
5946    pub bounds: ::core::option::Option<FloatRectProto>,
5947    #[prost(message, optional, tag="46")]
5948    pub screen_bounds: ::core::option::Option<FloatRectProto>,
5949    #[prost(message, optional, tag="47")]
5950    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
5951    /// Crop used to draw the rounded corner.
5952    #[prost(message, optional, tag="48")]
5953    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
5954    /// length of the shadow to draw around the layer, it may be set on the
5955    /// layer or set by a parent layer.
5956    #[prost(float, optional, tag="49")]
5957    pub shadow_radius: ::core::option::Option<f32>,
5958    #[prost(message, optional, tag="50")]
5959    pub color_transform: ::core::option::Option<ColorTransformProto>,
5960    #[prost(bool, optional, tag="51")]
5961    pub is_relative_of: ::core::option::Option<bool>,
5962    /// Layer's background blur radius in pixels.
5963    #[prost(int32, optional, tag="52")]
5964    pub background_blur_radius: ::core::option::Option<i32>,
5965    #[prost(uint32, optional, tag="53")]
5966    pub owner_uid: ::core::option::Option<u32>,
5967    /// Regions of a layer, where blur should be applied.
5968    #[prost(message, repeated, tag="54")]
5969    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
5970    #[prost(bool, optional, tag="55")]
5971    pub is_trusted_overlay: ::core::option::Option<bool>,
5972    /// Corner radius explicitly set on layer rather than inherited
5973    #[deprecated]
5974    #[prost(float, optional, tag="56")]
5975    pub requested_corner_radius: ::core::option::Option<f32>,
5976    #[prost(message, optional, tag="57")]
5977    pub destination_frame: ::core::option::Option<RectProto>,
5978    #[prost(uint32, optional, tag="58")]
5979    pub original_id: ::core::option::Option<u32>,
5980    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
5981    pub trusted_overlay: ::core::option::Option<i32>,
5982    /// Layer's scale during background blur, relative to 1.0f=100%
5983    #[prost(float, optional, tag="60")]
5984    pub background_blur_scale: ::core::option::Option<f32>,
5985    /// Layer's corner radius.
5986    #[prost(message, optional, tag="61")]
5987    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
5988    /// Corner radius explicitly set on layer rather than inherited
5989    #[prost(message, optional, tag="62")]
5990    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
5991    /// Corner radius explicity set as drawn by client
5992    #[prost(message, optional, tag="63")]
5993    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
5994}
5995#[derive(Clone, PartialEq, ::prost::Message)]
5996pub struct PositionProto {
5997    #[prost(float, optional, tag="1")]
5998    pub x: ::core::option::Option<f32>,
5999    #[prost(float, optional, tag="2")]
6000    pub y: ::core::option::Option<f32>,
6001}
6002#[derive(Clone, PartialEq, ::prost::Message)]
6003pub struct FloatRectProto {
6004    #[prost(float, optional, tag="1")]
6005    pub left: ::core::option::Option<f32>,
6006    #[prost(float, optional, tag="2")]
6007    pub top: ::core::option::Option<f32>,
6008    #[prost(float, optional, tag="3")]
6009    pub right: ::core::option::Option<f32>,
6010    #[prost(float, optional, tag="4")]
6011    pub bottom: ::core::option::Option<f32>,
6012}
6013#[derive(Clone, PartialEq, ::prost::Message)]
6014pub struct CornerRadiiProto {
6015    #[prost(float, optional, tag="1")]
6016    pub tl: ::core::option::Option<f32>,
6017    #[prost(float, optional, tag="2")]
6018    pub tr: ::core::option::Option<f32>,
6019    #[prost(float, optional, tag="3")]
6020    pub bl: ::core::option::Option<f32>,
6021    #[prost(float, optional, tag="4")]
6022    pub br: ::core::option::Option<f32>,
6023}
6024#[derive(Clone, PartialEq, ::prost::Message)]
6025pub struct ActiveBufferProto {
6026    #[prost(uint32, optional, tag="1")]
6027    pub width: ::core::option::Option<u32>,
6028    #[prost(uint32, optional, tag="2")]
6029    pub height: ::core::option::Option<u32>,
6030    #[prost(uint32, optional, tag="3")]
6031    pub stride: ::core::option::Option<u32>,
6032    #[prost(int32, optional, tag="4")]
6033    pub format: ::core::option::Option<i32>,
6034    #[prost(uint64, optional, tag="5")]
6035    pub usage: ::core::option::Option<u64>,
6036}
6037#[derive(Clone, PartialEq, ::prost::Message)]
6038pub struct BarrierLayerProto {
6039    /// layer id the barrier is waiting on.
6040    #[prost(int32, optional, tag="1")]
6041    pub id: ::core::option::Option<i32>,
6042    /// frame number the barrier is waiting on.
6043    #[prost(uint64, optional, tag="2")]
6044    pub frame_number: ::core::option::Option<u64>,
6045}
6046// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6047
6048// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6049
6050/// Message used by Winscope to process legacy trace files.
6051/// Represents a file full of surface flinger transactions.
6052/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6053/// (.TNXTRACE), such that they can be easily identified.
6054#[derive(Clone, PartialEq, ::prost::Message)]
6055pub struct TransactionTraceFile {
6056    /// Must be the first field, set to value in MagicNumber
6057    #[prost(fixed64, optional, tag="1")]
6058    pub magic_number: ::core::option::Option<u64>,
6059    #[prost(message, repeated, tag="2")]
6060    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6061    /// offset between real-time clock and elapsed time clock in nanoseconds.
6062    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6063    /// systemTime(SYSTEM_TIME_MONOTONIC)
6064    #[prost(fixed64, optional, tag="3")]
6065    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6066    #[prost(uint32, optional, tag="4")]
6067    pub version: ::core::option::Option<u32>,
6068}
6069/// Nested message and enum types in `TransactionTraceFile`.
6070pub mod transaction_trace_file {
6071    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6072    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6073    /// and there's no nice way to put 64bit constants into .proto files.
6074    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6075    #[repr(i32)]
6076    pub enum MagicNumber {
6077        Invalid = 0,
6078        /// TNXT (little-endian ASCII)
6079        L = 1415073364,
6080        /// RACE (little-endian ASCII)
6081        H = 1162035538,
6082    }
6083    impl MagicNumber {
6084        /// String value of the enum field names used in the ProtoBuf definition.
6085        ///
6086        /// The values are not transformed in any way and thus are considered stable
6087        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6088        pub fn as_str_name(&self) -> &'static str {
6089            match self {
6090                MagicNumber::Invalid => "INVALID",
6091                MagicNumber::L => "MAGIC_NUMBER_L",
6092                MagicNumber::H => "MAGIC_NUMBER_H",
6093            }
6094        }
6095    }
6096}
6097#[derive(Clone, PartialEq, ::prost::Message)]
6098pub struct TransactionTraceEntry {
6099    #[prost(int64, optional, tag="1")]
6100    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6101    #[prost(int64, optional, tag="2")]
6102    pub vsync_id: ::core::option::Option<i64>,
6103    #[prost(message, repeated, tag="3")]
6104    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6105    #[prost(message, repeated, tag="4")]
6106    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6107    #[prost(uint32, repeated, packed="false", tag="5")]
6108    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6109    #[prost(message, repeated, tag="6")]
6110    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6111    #[prost(int32, repeated, packed="false", tag="7")]
6112    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6113    #[prost(uint32, repeated, packed="false", tag="8")]
6114    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6115    #[prost(bool, optional, tag="9")]
6116    pub displays_changed: ::core::option::Option<bool>,
6117    #[prost(message, repeated, tag="10")]
6118    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
6119}
6120#[derive(Clone, PartialEq, ::prost::Message)]
6121pub struct DisplayInfo {
6122    #[prost(uint32, optional, tag="1")]
6123    pub layer_stack: ::core::option::Option<u32>,
6124    #[prost(int32, optional, tag="2")]
6125    pub display_id: ::core::option::Option<i32>,
6126    #[prost(int32, optional, tag="3")]
6127    pub logical_width: ::core::option::Option<i32>,
6128    #[prost(int32, optional, tag="4")]
6129    pub logical_height: ::core::option::Option<i32>,
6130    #[prost(message, optional, tag="5")]
6131    pub transform_inverse: ::core::option::Option<Transform>,
6132    #[prost(message, optional, tag="6")]
6133    pub transform: ::core::option::Option<Transform>,
6134    #[prost(bool, optional, tag="7")]
6135    pub receives_input: ::core::option::Option<bool>,
6136    #[prost(bool, optional, tag="8")]
6137    pub is_secure: ::core::option::Option<bool>,
6138    #[prost(bool, optional, tag="9")]
6139    pub is_primary: ::core::option::Option<bool>,
6140    #[prost(bool, optional, tag="10")]
6141    pub is_virtual: ::core::option::Option<bool>,
6142    #[prost(int32, optional, tag="11")]
6143    pub rotation_flags: ::core::option::Option<i32>,
6144    #[prost(int32, optional, tag="12")]
6145    pub transform_hint: ::core::option::Option<i32>,
6146}
6147#[derive(Clone, PartialEq, ::prost::Message)]
6148pub struct LayerCreationArgs {
6149    #[prost(uint32, optional, tag="1")]
6150    pub layer_id: ::core::option::Option<u32>,
6151    #[prost(string, optional, tag="2")]
6152    pub name: ::core::option::Option<::prost::alloc::string::String>,
6153    #[prost(uint32, optional, tag="3")]
6154    pub flags: ::core::option::Option<u32>,
6155    #[prost(uint32, optional, tag="4")]
6156    pub parent_id: ::core::option::Option<u32>,
6157    #[prost(uint32, optional, tag="5")]
6158    pub mirror_from_id: ::core::option::Option<u32>,
6159    #[prost(bool, optional, tag="6")]
6160    pub add_to_root: ::core::option::Option<bool>,
6161    #[prost(uint32, optional, tag="7")]
6162    pub layer_stack_to_mirror: ::core::option::Option<u32>,
6163}
6164#[derive(Clone, PartialEq, ::prost::Message)]
6165pub struct Transform {
6166    #[prost(float, optional, tag="1")]
6167    pub dsdx: ::core::option::Option<f32>,
6168    #[prost(float, optional, tag="2")]
6169    pub dtdx: ::core::option::Option<f32>,
6170    #[prost(float, optional, tag="3")]
6171    pub dtdy: ::core::option::Option<f32>,
6172    #[prost(float, optional, tag="4")]
6173    pub dsdy: ::core::option::Option<f32>,
6174    #[prost(float, optional, tag="5")]
6175    pub tx: ::core::option::Option<f32>,
6176    #[prost(float, optional, tag="6")]
6177    pub ty: ::core::option::Option<f32>,
6178}
6179#[derive(Clone, PartialEq, ::prost::Message)]
6180pub struct TransactionState {
6181    #[prost(int32, optional, tag="1")]
6182    pub pid: ::core::option::Option<i32>,
6183    #[prost(int32, optional, tag="2")]
6184    pub uid: ::core::option::Option<i32>,
6185    #[prost(int64, optional, tag="3")]
6186    pub vsync_id: ::core::option::Option<i64>,
6187    #[prost(int32, optional, tag="4")]
6188    pub input_event_id: ::core::option::Option<i32>,
6189    #[prost(int64, optional, tag="5")]
6190    pub post_time: ::core::option::Option<i64>,
6191    #[prost(uint64, optional, tag="6")]
6192    pub transaction_id: ::core::option::Option<u64>,
6193    #[prost(message, repeated, tag="7")]
6194    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
6195    #[prost(message, repeated, tag="8")]
6196    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
6197    #[prost(uint64, repeated, packed="false", tag="9")]
6198    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
6199    #[prost(uint64, optional, tag="10")]
6200    pub apply_token: ::core::option::Option<u64>,
6201}
6202/// Keep insync with layer_state_t
6203#[derive(Clone, PartialEq, ::prost::Message)]
6204pub struct LayerState {
6205    #[prost(uint32, optional, tag="1")]
6206    pub layer_id: ::core::option::Option<u32>,
6207    #[prost(uint64, optional, tag="2")]
6208    pub what: ::core::option::Option<u64>,
6209    #[prost(float, optional, tag="3")]
6210    pub x: ::core::option::Option<f32>,
6211    #[prost(float, optional, tag="4")]
6212    pub y: ::core::option::Option<f32>,
6213    #[prost(int32, optional, tag="5")]
6214    pub z: ::core::option::Option<i32>,
6215    #[prost(uint32, optional, tag="6")]
6216    pub w: ::core::option::Option<u32>,
6217    #[prost(uint32, optional, tag="7")]
6218    pub h: ::core::option::Option<u32>,
6219    #[prost(uint32, optional, tag="8")]
6220    pub layer_stack: ::core::option::Option<u32>,
6221    #[prost(uint32, optional, tag="9")]
6222    pub flags: ::core::option::Option<u32>,
6223    #[prost(uint32, optional, tag="10")]
6224    pub mask: ::core::option::Option<u32>,
6225    #[prost(message, optional, tag="11")]
6226    pub matrix: ::core::option::Option<layer_state::Matrix22>,
6227    #[deprecated]
6228    #[prost(float, optional, tag="12")]
6229    pub corner_radius: ::core::option::Option<f32>,
6230    #[prost(uint32, optional, tag="13")]
6231    pub background_blur_radius: ::core::option::Option<u32>,
6232    #[prost(uint32, optional, tag="14")]
6233    pub parent_id: ::core::option::Option<u32>,
6234    #[prost(uint32, optional, tag="15")]
6235    pub relative_parent_id: ::core::option::Option<u32>,
6236    #[prost(float, optional, tag="16")]
6237    pub alpha: ::core::option::Option<f32>,
6238    #[prost(message, optional, tag="17")]
6239    pub color: ::core::option::Option<layer_state::Color3>,
6240    #[prost(message, optional, tag="18")]
6241    pub transparent_region: ::core::option::Option<RegionProto>,
6242    #[prost(uint32, optional, tag="19")]
6243    pub transform: ::core::option::Option<u32>,
6244    #[prost(bool, optional, tag="20")]
6245    pub transform_to_display_inverse: ::core::option::Option<bool>,
6246    #[prost(message, optional, tag="21")]
6247    pub crop: ::core::option::Option<RectProto>,
6248    #[prost(message, optional, tag="22")]
6249    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
6250    #[prost(int32, optional, tag="23")]
6251    pub api: ::core::option::Option<i32>,
6252    #[prost(bool, optional, tag="24")]
6253    pub has_sideband_stream: ::core::option::Option<bool>,
6254    #[prost(message, optional, tag="25")]
6255    pub color_transform: ::core::option::Option<ColorTransformProto>,
6256    #[prost(message, repeated, tag="26")]
6257    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6258    #[prost(message, optional, tag="27")]
6259    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
6260    #[prost(float, optional, tag="28")]
6261    pub bg_color_alpha: ::core::option::Option<f32>,
6262    #[prost(int32, optional, tag="29")]
6263    pub bg_color_dataspace: ::core::option::Option<i32>,
6264    #[prost(bool, optional, tag="30")]
6265    pub color_space_agnostic: ::core::option::Option<bool>,
6266    #[prost(float, optional, tag="31")]
6267    pub shadow_radius: ::core::option::Option<f32>,
6268    #[prost(int32, optional, tag="32")]
6269    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6270    #[prost(float, optional, tag="33")]
6271    pub frame_rate: ::core::option::Option<f32>,
6272    #[prost(int32, optional, tag="34")]
6273    pub frame_rate_compatibility: ::core::option::Option<i32>,
6274    #[prost(int32, optional, tag="35")]
6275    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6276    #[prost(uint32, optional, tag="36")]
6277    pub fixed_transform_hint: ::core::option::Option<u32>,
6278    #[prost(uint64, optional, tag="37")]
6279    pub frame_number: ::core::option::Option<u64>,
6280    #[prost(bool, optional, tag="38")]
6281    pub auto_refresh: ::core::option::Option<bool>,
6282    /// unused
6283    #[prost(bool, optional, tag="39")]
6284    pub is_trusted_overlay: ::core::option::Option<bool>,
6285    #[prost(message, optional, tag="40")]
6286    pub buffer_crop: ::core::option::Option<RectProto>,
6287    #[prost(message, optional, tag="41")]
6288    pub destination_frame: ::core::option::Option<RectProto>,
6289    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6290    pub drop_input_mode: ::core::option::Option<i32>,
6291    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6292    pub trusted_overlay: ::core::option::Option<i32>,
6293    #[prost(float, optional, tag="44")]
6294    pub background_blur_scale: ::core::option::Option<f32>,
6295    #[prost(message, optional, tag="45")]
6296    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6297    #[prost(message, optional, tag="46")]
6298    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6299}
6300/// Nested message and enum types in `LayerState`.
6301pub mod layer_state {
6302    #[derive(Clone, PartialEq, ::prost::Message)]
6303    pub struct Matrix22 {
6304        #[prost(float, optional, tag="1")]
6305        pub dsdx: ::core::option::Option<f32>,
6306        #[prost(float, optional, tag="2")]
6307        pub dtdx: ::core::option::Option<f32>,
6308        #[prost(float, optional, tag="3")]
6309        pub dtdy: ::core::option::Option<f32>,
6310        #[prost(float, optional, tag="4")]
6311        pub dsdy: ::core::option::Option<f32>,
6312    }
6313    #[derive(Clone, PartialEq, ::prost::Message)]
6314    pub struct CornerRadii {
6315        #[prost(float, optional, tag="1")]
6316        pub tl: ::core::option::Option<f32>,
6317        #[prost(float, optional, tag="2")]
6318        pub tr: ::core::option::Option<f32>,
6319        #[prost(float, optional, tag="3")]
6320        pub bl: ::core::option::Option<f32>,
6321        #[prost(float, optional, tag="4")]
6322        pub br: ::core::option::Option<f32>,
6323    }
6324    #[derive(Clone, PartialEq, ::prost::Message)]
6325    pub struct Color3 {
6326        #[prost(float, optional, tag="1")]
6327        pub r: ::core::option::Option<f32>,
6328        #[prost(float, optional, tag="2")]
6329        pub g: ::core::option::Option<f32>,
6330        #[prost(float, optional, tag="3")]
6331        pub b: ::core::option::Option<f32>,
6332    }
6333    #[derive(Clone, PartialEq, ::prost::Message)]
6334    pub struct BufferData {
6335        #[prost(uint64, optional, tag="1")]
6336        pub buffer_id: ::core::option::Option<u64>,
6337        #[prost(uint32, optional, tag="2")]
6338        pub width: ::core::option::Option<u32>,
6339        #[prost(uint32, optional, tag="3")]
6340        pub height: ::core::option::Option<u32>,
6341        #[prost(uint64, optional, tag="4")]
6342        pub frame_number: ::core::option::Option<u64>,
6343        #[prost(uint32, optional, tag="5")]
6344        pub flags: ::core::option::Option<u32>,
6345        #[prost(uint64, optional, tag="6")]
6346        pub cached_buffer_id: ::core::option::Option<u64>,
6347        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
6348        pub pixel_format: ::core::option::Option<i32>,
6349        #[prost(uint64, optional, tag="8")]
6350        pub usage: ::core::option::Option<u64>,
6351    }
6352    /// Nested message and enum types in `BufferData`.
6353    pub mod buffer_data {
6354        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6355        #[repr(i32)]
6356        pub enum BufferDataChange {
6357            None = 0,
6358            FenceChanged = 1,
6359            FrameNumberChanged = 2,
6360            CachedBufferChanged = 4,
6361        }
6362        impl BufferDataChange {
6363            /// String value of the enum field names used in the ProtoBuf definition.
6364            ///
6365            /// The values are not transformed in any way and thus are considered stable
6366            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6367            pub fn as_str_name(&self) -> &'static str {
6368                match self {
6369                    BufferDataChange::None => "BufferDataChangeNone",
6370                    BufferDataChange::FenceChanged => "fenceChanged",
6371                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
6372                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
6373                }
6374            }
6375        }
6376        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6377        #[repr(i32)]
6378        pub enum PixelFormat {
6379            Unknown = 0,
6380            Custom = -4,
6381            Translucent = -3,
6382            Transparent = -2,
6383            Opaque = -1,
6384            Rgba8888 = 1,
6385            Rgbx8888 = 2,
6386            Rgb888 = 3,
6387            Rgb565 = 4,
6388            Bgra8888 = 5,
6389            Rgba5551 = 6,
6390            Rgba4444 = 7,
6391            RgbaFp16 = 22,
6392            Rgba1010102 = 43,
6393            R8 = 56,
6394        }
6395        impl PixelFormat {
6396            /// String value of the enum field names used in the ProtoBuf definition.
6397            ///
6398            /// The values are not transformed in any way and thus are considered stable
6399            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6400            pub fn as_str_name(&self) -> &'static str {
6401                match self {
6402                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
6403                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
6404                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
6405                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
6406                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
6407                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
6408                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
6409                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
6410                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
6411                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
6412                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
6413                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
6414                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
6415                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
6416                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
6417                }
6418            }
6419        }
6420    }
6421    #[derive(Clone, PartialEq, ::prost::Message)]
6422    pub struct WindowInfo {
6423        #[prost(uint32, optional, tag="1")]
6424        pub layout_params_flags: ::core::option::Option<u32>,
6425        #[prost(int32, optional, tag="2")]
6426        pub layout_params_type: ::core::option::Option<i32>,
6427        #[prost(message, optional, tag="3")]
6428        pub touchable_region: ::core::option::Option<super::RegionProto>,
6429        #[prost(int32, optional, tag="4")]
6430        pub surface_inset: ::core::option::Option<i32>,
6431        /// unused
6432        #[prost(bool, optional, tag="5")]
6433        pub focusable: ::core::option::Option<bool>,
6434        /// unused
6435        #[prost(bool, optional, tag="6")]
6436        pub has_wallpaper: ::core::option::Option<bool>,
6437        #[prost(float, optional, tag="7")]
6438        pub global_scale_factor: ::core::option::Option<f32>,
6439        #[prost(uint32, optional, tag="8")]
6440        pub crop_layer_id: ::core::option::Option<u32>,
6441        #[prost(bool, optional, tag="9")]
6442        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6443        #[prost(message, optional, tag="10")]
6444        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
6445        #[prost(message, optional, tag="11")]
6446        pub transform: ::core::option::Option<super::Transform>,
6447        #[prost(uint32, optional, tag="12")]
6448        pub input_config: ::core::option::Option<u32>,
6449    }
6450    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
6451    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
6452    /// enums have to be 32 bits and there's no nice way to put 64bit constants
6453    /// into .proto files.
6454    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6455    #[repr(i32)]
6456    pub enum ChangesLsb {
6457        EChangesLsbNone = 0,
6458        EPositionChanged = 1,
6459        ELayerChanged = 2,
6460        /// unused = 0x00000004;
6461        EAlphaChanged = 8,
6462        EMatrixChanged = 16,
6463        ETransparentRegionChanged = 32,
6464        EFlagsChanged = 64,
6465        ELayerStackChanged = 128,
6466        EReleaseBufferListenerChanged = 1024,
6467        EShadowRadiusChanged = 2048,
6468        EBufferCropChanged = 8192,
6469        ERelativeLayerChanged = 16384,
6470        EReparent = 32768,
6471        EColorChanged = 65536,
6472        EBufferTransformChanged = 262144,
6473        ETransformToDisplayInverseChanged = 524288,
6474        ECropChanged = 1048576,
6475        EBufferChanged = 2097152,
6476        EAcquireFenceChanged = 4194304,
6477        EDataspaceChanged = 8388608,
6478        EHdrMetadataChanged = 16777216,
6479        ESurfaceDamageRegionChanged = 33554432,
6480        EApiChanged = 67108864,
6481        ESidebandStreamChanged = 134217728,
6482        EColorTransformChanged = 268435456,
6483        EHasListenerCallbacksChanged = 536870912,
6484        EInputInfoChanged = 1073741824,
6485        /// 0x80000000; (proto stores enums as signed int)
6486        ECornerRadiusChanged = -2147483648,
6487    }
6488    impl ChangesLsb {
6489        /// String value of the enum field names used in the ProtoBuf definition.
6490        ///
6491        /// The values are not transformed in any way and thus are considered stable
6492        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6493        pub fn as_str_name(&self) -> &'static str {
6494            match self {
6495                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
6496                ChangesLsb::EPositionChanged => "ePositionChanged",
6497                ChangesLsb::ELayerChanged => "eLayerChanged",
6498                ChangesLsb::EAlphaChanged => "eAlphaChanged",
6499                ChangesLsb::EMatrixChanged => "eMatrixChanged",
6500                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
6501                ChangesLsb::EFlagsChanged => "eFlagsChanged",
6502                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
6503                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
6504                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
6505                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
6506                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
6507                ChangesLsb::EReparent => "eReparent",
6508                ChangesLsb::EColorChanged => "eColorChanged",
6509                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
6510                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
6511                ChangesLsb::ECropChanged => "eCropChanged",
6512                ChangesLsb::EBufferChanged => "eBufferChanged",
6513                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
6514                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
6515                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
6516                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
6517                ChangesLsb::EApiChanged => "eApiChanged",
6518                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
6519                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
6520                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
6521                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
6522                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
6523            }
6524        }
6525    }
6526    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6527    #[repr(i32)]
6528    pub enum ChangesMsb {
6529        EChangesMsbNone = 0,
6530        EDestinationFrameChanged = 1,
6531        ECachedBufferChanged = 2,
6532        EBackgroundColorChanged = 4,
6533        EMetadataChanged = 8,
6534        EColorSpaceAgnosticChanged = 16,
6535        EFrameRateSelectionPriority = 32,
6536        EFrameRateChanged = 64,
6537        EBackgroundBlurRadiusChanged = 128,
6538        EProducerDisconnect = 256,
6539        EFixedTransformHintChanged = 512,
6540        EFrameNumberChanged = 1024,
6541        EBlurRegionsChanged = 2048,
6542        EAutoRefreshChanged = 4096,
6543        EStretchChanged = 8192,
6544        ETrustedOverlayChanged = 16384,
6545        EDropInputModeChanged = 32768,
6546        EClientDrawnCornerRadiusChanged = 65536,
6547    }
6548    impl ChangesMsb {
6549        /// String value of the enum field names used in the ProtoBuf definition.
6550        ///
6551        /// The values are not transformed in any way and thus are considered stable
6552        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6553        pub fn as_str_name(&self) -> &'static str {
6554            match self {
6555                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
6556                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
6557                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
6558                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
6559                ChangesMsb::EMetadataChanged => "eMetadataChanged",
6560                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
6561                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
6562                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
6563                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
6564                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
6565                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
6566                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
6567                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
6568                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
6569                ChangesMsb::EStretchChanged => "eStretchChanged",
6570                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
6571                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
6572                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
6573            }
6574        }
6575    }
6576    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6577    #[repr(i32)]
6578    pub enum Flags {
6579        EFlagsNone = 0,
6580        ELayerHidden = 1,
6581        ELayerOpaque = 2,
6582        ELayerSkipScreenshot = 64,
6583        ELayerSecure = 128,
6584        EEnableBackpressure = 256,
6585        ELayerIsDisplayDecoration = 512,
6586    }
6587    impl Flags {
6588        /// String value of the enum field names used in the ProtoBuf definition.
6589        ///
6590        /// The values are not transformed in any way and thus are considered stable
6591        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6592        pub fn as_str_name(&self) -> &'static str {
6593            match self {
6594                Flags::EFlagsNone => "eFlagsNone",
6595                Flags::ELayerHidden => "eLayerHidden",
6596                Flags::ELayerOpaque => "eLayerOpaque",
6597                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
6598                Flags::ELayerSecure => "eLayerSecure",
6599                Flags::EEnableBackpressure => "eEnableBackpressure",
6600                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
6601            }
6602        }
6603    }
6604    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6605    #[repr(i32)]
6606    pub enum DropInputMode {
6607        None = 0,
6608        All = 1,
6609        Obscured = 2,
6610    }
6611    impl DropInputMode {
6612        /// String value of the enum field names used in the ProtoBuf definition.
6613        ///
6614        /// The values are not transformed in any way and thus are considered stable
6615        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6616        pub fn as_str_name(&self) -> &'static str {
6617            match self {
6618                DropInputMode::None => "NONE",
6619                DropInputMode::All => "ALL",
6620                DropInputMode::Obscured => "OBSCURED",
6621            }
6622        }
6623    }
6624}
6625#[derive(Clone, PartialEq, ::prost::Message)]
6626pub struct DisplayState {
6627    #[prost(int32, optional, tag="1")]
6628    pub id: ::core::option::Option<i32>,
6629    #[prost(uint32, optional, tag="2")]
6630    pub what: ::core::option::Option<u32>,
6631    #[prost(uint32, optional, tag="3")]
6632    pub flags: ::core::option::Option<u32>,
6633    #[prost(uint32, optional, tag="4")]
6634    pub layer_stack: ::core::option::Option<u32>,
6635    #[prost(uint32, optional, tag="5")]
6636    pub orientation: ::core::option::Option<u32>,
6637    #[prost(message, optional, tag="6")]
6638    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6639    #[prost(message, optional, tag="7")]
6640    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
6641    #[prost(uint32, optional, tag="8")]
6642    pub width: ::core::option::Option<u32>,
6643    #[prost(uint32, optional, tag="9")]
6644    pub height: ::core::option::Option<u32>,
6645}
6646/// Nested message and enum types in `DisplayState`.
6647pub mod display_state {
6648    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6649    #[repr(i32)]
6650    pub enum Changes {
6651        EChangesNone = 0,
6652        ESurfaceChanged = 1,
6653        ELayerStackChanged = 2,
6654        EDisplayProjectionChanged = 4,
6655        EDisplaySizeChanged = 8,
6656        EFlagsChanged = 16,
6657    }
6658    impl Changes {
6659        /// String value of the enum field names used in the ProtoBuf definition.
6660        ///
6661        /// The values are not transformed in any way and thus are considered stable
6662        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6663        pub fn as_str_name(&self) -> &'static str {
6664            match self {
6665                Changes::EChangesNone => "eChangesNone",
6666                Changes::ESurfaceChanged => "eSurfaceChanged",
6667                Changes::ELayerStackChanged => "eLayerStackChanged",
6668                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
6669                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
6670                Changes::EFlagsChanged => "eFlagsChanged",
6671            }
6672        }
6673    }
6674}
6675// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6676
6677// Begin of protos/perfetto/trace/android/winscope_extensions.proto
6678
6679#[derive(Clone, PartialEq, ::prost::Message)]
6680pub struct WinscopeExtensions {
6681}
6682// End of protos/perfetto/trace/android/winscope_extensions.proto
6683
6684// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6685
6686/// This message is not intended to be written by the chrome on the device.
6687/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
6688/// part of the trace that's written by the telemetry tracing agent).
6689#[derive(Clone, PartialEq, ::prost::Message)]
6690pub struct ChromeBenchmarkMetadata {
6691    /// Time when the benchmark execution started (host unixtime in microseconds).
6692    #[prost(int64, optional, tag="1")]
6693    pub benchmark_start_time_us: ::core::option::Option<i64>,
6694    /// Time when this particular story was run (host unixtime in microseconds).
6695    #[prost(int64, optional, tag="2")]
6696    pub story_run_time_us: ::core::option::Option<i64>,
6697    /// Name of benchmark.
6698    #[prost(string, optional, tag="3")]
6699    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
6700    /// Description of benchmark.
6701    #[prost(string, optional, tag="4")]
6702    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
6703    /// Optional label.
6704    #[prost(string, optional, tag="5")]
6705    pub label: ::core::option::Option<::prost::alloc::string::String>,
6706    /// Name of story.
6707    #[prost(string, optional, tag="6")]
6708    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
6709    /// List of story tags.
6710    #[prost(string, repeated, tag="7")]
6711    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6712    /// Index of the story run (>0 if the same story was run several times).
6713    #[prost(int32, optional, tag="8")]
6714    pub story_run_index: ::core::option::Option<i32>,
6715    /// Whether this run failed.
6716    #[prost(bool, optional, tag="9")]
6717    pub had_failures: ::core::option::Option<bool>,
6718}
6719// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6720
6721// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
6722
6723/// Metadata for chrome traces.
6724#[derive(Clone, PartialEq, ::prost::Message)]
6725pub struct ChromeMetadataPacket {
6726    #[prost(message, optional, tag="1")]
6727    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
6728    /// Version code of Chrome used by Android's Play Store. This field is only set
6729    /// on Android.
6730    #[prost(int32, optional, tag="2")]
6731    pub chrome_version_code: ::core::option::Option<i32>,
6732    /// Comma separated list of enabled categories for tracing. The list of
6733    /// possible category strings are listed in code
6734    /// base/trace_event/builtin_categories.h.
6735    #[prost(string, optional, tag="3")]
6736    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
6737    /// List of Finch study/groups that apply to this trace.
6738    #[prost(message, repeated, tag="4")]
6739    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
6740}
6741/// Nested message and enum types in `ChromeMetadataPacket`.
6742pub mod chrome_metadata_packet {
6743    /// Finch name and group based on the ActiveGroupId.
6744    #[derive(Clone, PartialEq, ::prost::Message)]
6745    pub struct FinchHash {
6746        #[prost(uint32, optional, tag="1")]
6747        pub name: ::core::option::Option<u32>,
6748        #[prost(uint32, optional, tag="2")]
6749        pub group: ::core::option::Option<u32>,
6750    }
6751}
6752/// Metadata related to background tracing scenarios, states and triggers.
6753#[derive(Clone, PartialEq, ::prost::Message)]
6754pub struct BackgroundTracingMetadata {
6755    /// Specifies the rule that caused the trace to be uploaded.
6756    #[prost(message, optional, tag="1")]
6757    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
6758    /// List of all active triggers in current session, when trace was triggered.
6759    #[prost(message, repeated, tag="2")]
6760    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
6761    /// Hash of the scenario name.
6762    #[prost(fixed32, optional, tag="3")]
6763    pub scenario_name_hash: ::core::option::Option<u32>,
6764}
6765/// Nested message and enum types in `BackgroundTracingMetadata`.
6766pub mod background_tracing_metadata {
6767    /// Information about a trigger rule defined in the experiment config.
6768    #[derive(Clone, PartialEq, ::prost::Message)]
6769    pub struct TriggerRule {
6770        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
6771        pub trigger_type: ::core::option::Option<i32>,
6772        #[prost(message, optional, tag="2")]
6773        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
6774        #[prost(message, optional, tag="3")]
6775        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
6776        /// Hash of the rule name.
6777        #[prost(fixed32, optional, tag="4")]
6778        pub name_hash: ::core::option::Option<u32>,
6779    }
6780    /// Nested message and enum types in `TriggerRule`.
6781    pub mod trigger_rule {
6782        /// Configuration of histogram trigger.
6783        #[derive(Clone, PartialEq, ::prost::Message)]
6784        pub struct HistogramRule {
6785            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
6786            #[prost(fixed64, optional, tag="1")]
6787            pub histogram_name_hash: ::core::option::Option<u64>,
6788            /// Range of values of the histogram that activates trigger.
6789            #[prost(int64, optional, tag="2")]
6790            pub histogram_min_trigger: ::core::option::Option<i64>,
6791            #[prost(int64, optional, tag="3")]
6792            pub histogram_max_trigger: ::core::option::Option<i64>,
6793        }
6794        /// Configuration of named trigger.
6795        #[derive(Clone, PartialEq, ::prost::Message)]
6796        pub struct NamedRule {
6797            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
6798            pub event_type: ::core::option::Option<i32>,
6799            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
6800            /// content-trigger that actually fired.
6801            #[prost(fixed64, optional, tag="2")]
6802            pub content_trigger_name_hash: ::core::option::Option<u64>,
6803        }
6804        /// Nested message and enum types in `NamedRule`.
6805        pub mod named_rule {
6806            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6807            #[repr(i32)]
6808            pub enum EventType {
6809                Unspecified = 0,
6810                SessionRestore = 1,
6811                Navigation = 2,
6812                Startup = 3,
6813                ReachedCode = 4,
6814                ContentTrigger = 5,
6815                TestRule = 1000,
6816            }
6817            impl EventType {
6818                /// String value of the enum field names used in the ProtoBuf definition.
6819                ///
6820                /// The values are not transformed in any way and thus are considered stable
6821                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6822                pub fn as_str_name(&self) -> &'static str {
6823                    match self {
6824                        EventType::Unspecified => "UNSPECIFIED",
6825                        EventType::SessionRestore => "SESSION_RESTORE",
6826                        EventType::Navigation => "NAVIGATION",
6827                        EventType::Startup => "STARTUP",
6828                        EventType::ReachedCode => "REACHED_CODE",
6829                        EventType::ContentTrigger => "CONTENT_TRIGGER",
6830                        EventType::TestRule => "TEST_RULE",
6831                    }
6832                }
6833            }
6834        }
6835        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6836        #[repr(i32)]
6837        pub enum TriggerType {
6838            TriggerUnspecified = 0,
6839            /// Traces are triggered by specific range of values of an UMA histogram.
6840            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
6841            /// Traces are triggered by specific named events in chromium codebase,
6842            /// like "second-update-failure".
6843            MonitorAndDumpWhenTriggerNamed = 2,
6844        }
6845        impl TriggerType {
6846            /// String value of the enum field names used in the ProtoBuf definition.
6847            ///
6848            /// The values are not transformed in any way and thus are considered stable
6849            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6850            pub fn as_str_name(&self) -> &'static str {
6851                match self {
6852                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
6853                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
6854                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
6855                }
6856            }
6857        }
6858    }
6859}
6860// End of protos/perfetto/trace/chrome/chrome_metadata.proto
6861
6862// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
6863
6864#[derive(Clone, PartialEq, ::prost::Message)]
6865pub struct ChromeTracedValue {
6866    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
6867    pub nested_type: ::core::option::Option<i32>,
6868    #[prost(string, repeated, tag="2")]
6869    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6870    #[prost(message, repeated, tag="3")]
6871    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6872    #[prost(message, repeated, tag="4")]
6873    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
6874    #[prost(int32, optional, tag="5")]
6875    pub int_value: ::core::option::Option<i32>,
6876    #[prost(double, optional, tag="6")]
6877    pub double_value: ::core::option::Option<f64>,
6878    #[prost(bool, optional, tag="7")]
6879    pub bool_value: ::core::option::Option<bool>,
6880    #[prost(string, optional, tag="8")]
6881    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
6882}
6883/// Nested message and enum types in `ChromeTracedValue`.
6884pub mod chrome_traced_value {
6885    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6886    #[repr(i32)]
6887    pub enum NestedType {
6888        Dict = 0,
6889        Array = 1,
6890    }
6891    impl NestedType {
6892        /// String value of the enum field names used in the ProtoBuf definition.
6893        ///
6894        /// The values are not transformed in any way and thus are considered stable
6895        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6896        pub fn as_str_name(&self) -> &'static str {
6897            match self {
6898                NestedType::Dict => "DICT",
6899                NestedType::Array => "ARRAY",
6900            }
6901        }
6902    }
6903}
6904#[derive(Clone, PartialEq, ::prost::Message)]
6905pub struct ChromeStringTableEntry {
6906    #[prost(string, optional, tag="1")]
6907    pub value: ::core::option::Option<::prost::alloc::string::String>,
6908    #[prost(int32, optional, tag="2")]
6909    pub index: ::core::option::Option<i32>,
6910}
6911/// Deprecated, use TrackEvent protos instead.
6912#[derive(Clone, PartialEq, ::prost::Message)]
6913pub struct ChromeTraceEvent {
6914    #[prost(string, optional, tag="1")]
6915    pub name: ::core::option::Option<::prost::alloc::string::String>,
6916    #[prost(int64, optional, tag="2")]
6917    pub timestamp: ::core::option::Option<i64>,
6918    #[prost(int32, optional, tag="3")]
6919    pub phase: ::core::option::Option<i32>,
6920    #[prost(int32, optional, tag="4")]
6921    pub thread_id: ::core::option::Option<i32>,
6922    #[prost(int64, optional, tag="5")]
6923    pub duration: ::core::option::Option<i64>,
6924    #[prost(int64, optional, tag="6")]
6925    pub thread_duration: ::core::option::Option<i64>,
6926    #[prost(string, optional, tag="7")]
6927    pub scope: ::core::option::Option<::prost::alloc::string::String>,
6928    #[prost(uint64, optional, tag="8")]
6929    pub id: ::core::option::Option<u64>,
6930    #[prost(uint32, optional, tag="9")]
6931    pub flags: ::core::option::Option<u32>,
6932    #[prost(string, optional, tag="10")]
6933    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
6934    #[prost(int32, optional, tag="11")]
6935    pub process_id: ::core::option::Option<i32>,
6936    #[prost(int64, optional, tag="12")]
6937    pub thread_timestamp: ::core::option::Option<i64>,
6938    #[prost(uint64, optional, tag="13")]
6939    pub bind_id: ::core::option::Option<u64>,
6940    #[prost(message, repeated, tag="14")]
6941    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
6942    /// Takes precedence over respectively |name| and
6943    /// |category_group_name_index| if set,
6944    /// and are indices into |string_table|.
6945    #[prost(uint32, optional, tag="15")]
6946    pub name_index: ::core::option::Option<u32>,
6947    #[prost(uint32, optional, tag="16")]
6948    pub category_group_name_index: ::core::option::Option<u32>,
6949}
6950/// Nested message and enum types in `ChromeTraceEvent`.
6951pub mod chrome_trace_event {
6952    #[derive(Clone, PartialEq, ::prost::Message)]
6953    pub struct Arg {
6954        #[prost(string, optional, tag="1")]
6955        pub name: ::core::option::Option<::prost::alloc::string::String>,
6956        /// Takes precedence over |name| if set,
6957        /// and is an index into |string_table|.
6958        #[prost(uint32, optional, tag="9")]
6959        pub name_index: ::core::option::Option<u32>,
6960        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
6961        pub value: ::core::option::Option<arg::Value>,
6962    }
6963    /// Nested message and enum types in `Arg`.
6964    pub mod arg {
6965        #[derive(Clone, PartialEq, ::prost::Oneof)]
6966        pub enum Value {
6967            #[prost(bool, tag="2")]
6968            BoolValue(bool),
6969            #[prost(uint64, tag="3")]
6970            UintValue(u64),
6971            #[prost(int64, tag="4")]
6972            IntValue(i64),
6973            #[prost(double, tag="5")]
6974            DoubleValue(f64),
6975            #[prost(string, tag="6")]
6976            StringValue(::prost::alloc::string::String),
6977            /// Pointers are stored in a separate type as the JSON output treats them
6978            /// differently from other uint64 values.
6979            #[prost(uint64, tag="7")]
6980            PointerValue(u64),
6981            #[prost(string, tag="8")]
6982            JsonValue(::prost::alloc::string::String),
6983            #[prost(message, tag="10")]
6984            TracedValue(super::super::ChromeTracedValue),
6985        }
6986    }
6987}
6988#[derive(Clone, PartialEq, ::prost::Message)]
6989pub struct ChromeMetadata {
6990    #[prost(string, optional, tag="1")]
6991    pub name: ::core::option::Option<::prost::alloc::string::String>,
6992    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
6993    pub value: ::core::option::Option<chrome_metadata::Value>,
6994}
6995/// Nested message and enum types in `ChromeMetadata`.
6996pub mod chrome_metadata {
6997    #[derive(Clone, PartialEq, ::prost::Oneof)]
6998    pub enum Value {
6999        #[prost(string, tag="2")]
7000        StringValue(::prost::alloc::string::String),
7001        #[prost(bool, tag="3")]
7002        BoolValue(bool),
7003        #[prost(int64, tag="4")]
7004        IntValue(i64),
7005        #[prost(string, tag="5")]
7006        JsonValue(::prost::alloc::string::String),
7007    }
7008}
7009/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7010/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7011/// TODO(eseckler): Update these agents to become perfetto producers.
7012#[derive(Clone, PartialEq, ::prost::Message)]
7013pub struct ChromeLegacyJsonTrace {
7014    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7015    pub r#type: ::core::option::Option<i32>,
7016    #[prost(string, optional, tag="2")]
7017    pub data: ::core::option::Option<::prost::alloc::string::String>,
7018}
7019/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7020pub mod chrome_legacy_json_trace {
7021    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7022    #[repr(i32)]
7023    pub enum TraceType {
7024        UserTrace = 0,
7025        /// Deprecated.
7026        SystemTrace = 1,
7027    }
7028    impl TraceType {
7029        /// String value of the enum field names used in the ProtoBuf definition.
7030        ///
7031        /// The values are not transformed in any way and thus are considered stable
7032        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7033        pub fn as_str_name(&self) -> &'static str {
7034            match self {
7035                TraceType::UserTrace => "USER_TRACE",
7036                TraceType::SystemTrace => "SYSTEM_TRACE",
7037            }
7038        }
7039    }
7040}
7041#[derive(Clone, PartialEq, ::prost::Message)]
7042pub struct ChromeEventBundle {
7043    /// Deprecated, use TrackEvent protos instead.
7044    #[deprecated]
7045    #[prost(message, repeated, tag="1")]
7046    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7047    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7048    /// which contains typed fields.
7049    #[prost(message, repeated, tag="2")]
7050    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7051    /// ftrace output from CrOS and Cast system tracing agents.
7052    /// TODO(eseckler): Replace system traces with native perfetto service.
7053    #[prost(string, repeated, tag="4")]
7054    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7055    #[prost(message, repeated, tag="5")]
7056    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7057    /// Contents of a string table that's valid for
7058    /// the whole ChromeEventBundle entry.
7059    #[deprecated]
7060    #[prost(message, repeated, tag="3")]
7061    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7062}
7063// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7064
7065// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7066
7067/// Information about a specific trigger during a background tracing scenario
7068/// Associated packet timestamps are useful to delimitate a scenario range in a
7069/// trace. Triggers are also useful for filtering traces.
7070#[derive(Clone, PartialEq, ::prost::Message)]
7071pub struct ChromeTrigger {
7072    /// Name of the trigger which was received.
7073    #[prost(string, optional, tag="1")]
7074    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7075    /// SHA1 hash of the trigger name.
7076    #[prost(fixed32, optional, tag="2")]
7077    pub trigger_name_hash: ::core::option::Option<u32>,
7078    /// Flow id which should terminate on this trigger.
7079    #[prost(fixed64, optional, tag="3")]
7080    pub flow_id: ::core::option::Option<u64>,
7081}
7082// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7083
7084// Begin of protos/perfetto/trace/chrome/v8.proto
7085
7086// These are the protos for the V8 data source.
7087//
7088// All events are associated to a V8 isolate instance. There can be multiple
7089// instances associated to a given thread, although this is rare.
7090//
7091// Generated code in V8 is allocated in the V8 heap (in a special executeable
7092// section), this means that code can be garbage collected (when no longer used)
7093// or can be moved around (e.g. during heap compactation). This means that a
7094// given callsite might correspond to function `A` at one point in time and to
7095// function `B` later on.
7096// In addition V8 code has various levels of optimization, so a function might
7097// have multiple associated code snippets.
7098//
7099// V8 does not track code deletion, so we have to indirectly infer it by
7100// detecting code overlaps, if a newer code creation event overlaps with older
7101// code we need to asume that the old code was deleted. Code moves are logged,
7102// and there is an event to track those.
7103
7104/// Strings used by V8 can have different encodings, instead of coverting to a
7105/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7106/// "raw" string and do the convestion at trace ingestion time.
7107///
7108/// ATTENTION: There is some overhead in using a message (as opossed to having
7109/// the `oneof encoded_string`` direcly embedded in the message), so use this
7110/// message in places were these extra bytes don't matter that much.
7111/// Next id: 5
7112#[derive(Clone, PartialEq, ::prost::Message)]
7113pub struct V8String {
7114    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7115    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7116}
7117/// Nested message and enum types in `V8String`.
7118pub mod v8_string {
7119    #[derive(Clone, PartialEq, ::prost::Oneof)]
7120    pub enum EncodedString {
7121        /// ISO/IEC 8859-1:1998 encoding aka latin1
7122        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7123        #[prost(bytes, tag="1")]
7124        Latin1(::prost::alloc::vec::Vec<u8>),
7125        /// UTF-16 Little Endian Encoding
7126        #[prost(bytes, tag="2")]
7127        Utf16Le(::prost::alloc::vec::Vec<u8>),
7128        /// UTF-16 Big Endian Encoding
7129        #[prost(bytes, tag="3")]
7130        Utf16Be(::prost::alloc::vec::Vec<u8>),
7131    }
7132}
7133/// Interned version of V8String
7134#[derive(Clone, PartialEq, ::prost::Message)]
7135pub struct InternedV8String {
7136    #[prost(uint64, optional, tag="1")]
7137    pub iid: ::core::option::Option<u64>,
7138    /// We inline the fields in V8String here to save some bytes in the serialized
7139    /// proto format. Interning is about saving bytes so this makes sense here.
7140    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7141    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7142}
7143/// Nested message and enum types in `InternedV8String`.
7144pub mod interned_v8_string {
7145    /// We inline the fields in V8String here to save some bytes in the serialized
7146    /// proto format. Interning is about saving bytes so this makes sense here.
7147    #[derive(Clone, PartialEq, ::prost::Oneof)]
7148    pub enum EncodedString {
7149        /// ISO/IEC 8859-1:1998 encoding aka latin1
7150        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7151        #[prost(bytes, tag="2")]
7152        Latin1(::prost::alloc::vec::Vec<u8>),
7153        /// UTF-16 Little Endian Encoding
7154        #[prost(bytes, tag="3")]
7155        Utf16Le(::prost::alloc::vec::Vec<u8>),
7156        /// UTF-16 Big Endian Encoding
7157        #[prost(bytes, tag="4")]
7158        Utf16Be(::prost::alloc::vec::Vec<u8>),
7159    }
7160}
7161/// Represents a script that was compiled to generate code. Some V8 code is
7162/// generated out of scripts and will reference a V8Script other types of code
7163/// will not (e.g. builtins).
7164#[derive(Clone, PartialEq, ::prost::Message)]
7165pub struct InternedV8JsScript {
7166    #[prost(uint64, optional, tag="1")]
7167    pub iid: ::core::option::Option<u64>,
7168    /// Unique in a given isolate
7169    #[prost(int32, optional, tag="2")]
7170    pub script_id: ::core::option::Option<i32>,
7171    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7172    pub r#type: ::core::option::Option<i32>,
7173    #[prost(message, optional, tag="4")]
7174    pub name: ::core::option::Option<V8String>,
7175    /// Actual source of the script
7176    #[prost(message, optional, tag="5")]
7177    pub source: ::core::option::Option<V8String>,
7178}
7179/// Nested message and enum types in `InternedV8JsScript`.
7180pub mod interned_v8_js_script {
7181    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7182    #[repr(i32)]
7183    pub enum Type {
7184        Unknown = 0,
7185        Normal = 1,
7186        Eval = 2,
7187        Module = 3,
7188        Native = 4,
7189        Extension = 5,
7190        Inspector = 6,
7191    }
7192    impl Type {
7193        /// String value of the enum field names used in the ProtoBuf definition.
7194        ///
7195        /// The values are not transformed in any way and thus are considered stable
7196        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7197        pub fn as_str_name(&self) -> &'static str {
7198            match self {
7199                Type::Unknown => "TYPE_UNKNOWN",
7200                Type::Normal => "TYPE_NORMAL",
7201                Type::Eval => "TYPE_EVAL",
7202                Type::Module => "TYPE_MODULE",
7203                Type::Native => "TYPE_NATIVE",
7204                Type::Extension => "TYPE_EXTENSION",
7205                Type::Inspector => "TYPE_INSPECTOR",
7206            }
7207        }
7208    }
7209}
7210#[derive(Clone, PartialEq, ::prost::Message)]
7211pub struct InternedV8WasmScript {
7212    #[prost(uint64, optional, tag="1")]
7213    pub iid: ::core::option::Option<u64>,
7214    /// Unique in a given isolate
7215    #[prost(int32, optional, tag="2")]
7216    pub script_id: ::core::option::Option<i32>,
7217    #[prost(string, optional, tag="3")]
7218    pub url: ::core::option::Option<::prost::alloc::string::String>,
7219    /// Raw transferred wasm native module wire bytes.
7220    #[prost(bytes="vec", optional, tag="4")]
7221    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7222}
7223#[derive(Clone, PartialEq, ::prost::Message)]
7224pub struct InternedV8JsFunction {
7225    #[prost(uint64, optional, tag="1")]
7226    pub iid: ::core::option::Option<u64>,
7227    #[prost(uint64, optional, tag="2")]
7228    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7229    #[prost(uint64, optional, tag="3")]
7230    pub v8_js_script_iid: ::core::option::Option<u64>,
7231    #[prost(bool, optional, tag="4")]
7232    pub is_toplevel: ::core::option::Option<bool>,
7233    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7234    pub kind: ::core::option::Option<i32>,
7235    /// Where in the script source this function is defined. This is counted in
7236    /// bytes not characters.
7237    #[prost(uint32, optional, tag="6")]
7238    pub byte_offset: ::core::option::Option<u32>,
7239    #[prost(uint32, optional, tag="7")]
7240    pub line: ::core::option::Option<u32>,
7241    #[prost(uint32, optional, tag="8")]
7242    pub column: ::core::option::Option<u32>,
7243}
7244/// Nested message and enum types in `InternedV8JsFunction`.
7245pub mod interned_v8_js_function {
7246    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7247    #[repr(i32)]
7248    pub enum Kind {
7249        Unknown = 0,
7250        NormalFunction = 1,
7251        Module = 2,
7252        AsyncModule = 3,
7253        BaseConstructor = 4,
7254        DefaultBaseConstructor = 5,
7255        DefaultDerivedConstructor = 6,
7256        DerivedConstructor = 7,
7257        GetterFunction = 8,
7258        StaticGetterFunction = 9,
7259        SetterFunction = 10,
7260        StaticSetterFunction = 11,
7261        ArrowFunction = 12,
7262        AsyncArrowFunction = 13,
7263        AsyncFunction = 14,
7264        AsyncConciseMethod = 15,
7265        StaticAsyncConciseMethod = 16,
7266        AsyncConciseGeneratorMethod = 17,
7267        StaticAsyncConciseGeneratorMethod = 18,
7268        AsyncGeneratorFunction = 19,
7269        GeneratorFunction = 20,
7270        ConciseGeneratorMethod = 21,
7271        StaticConciseGeneratorMethod = 22,
7272        ConciseMethod = 23,
7273        StaticConciseMethod = 24,
7274        ClassMembersInitializerFunction = 25,
7275        ClassStaticInitializerFunction = 26,
7276        Invalid = 27,
7277    }
7278    impl Kind {
7279        /// String value of the enum field names used in the ProtoBuf definition.
7280        ///
7281        /// The values are not transformed in any way and thus are considered stable
7282        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7283        pub fn as_str_name(&self) -> &'static str {
7284            match self {
7285                Kind::Unknown => "KIND_UNKNOWN",
7286                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7287                Kind::Module => "KIND_MODULE",
7288                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7289                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7290                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7291                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7292                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7293                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7294                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7295                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7296                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7297                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7298                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7299                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7300                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7301                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7302                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7303                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7304                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7305                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7306                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7307                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7308                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7309                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7310                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7311                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7312                Kind::Invalid => "KIND_INVALID",
7313            }
7314        }
7315    }
7316}
7317/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7318/// engine.
7319#[derive(Clone, PartialEq, ::prost::Message)]
7320pub struct InternedV8Isolate {
7321    #[prost(uint64, optional, tag="1")]
7322    pub iid: ::core::option::Option<u64>,
7323    #[prost(uint32, optional, tag="2")]
7324    pub pid: ::core::option::Option<u32>,
7325    /// Process unique isolate id.
7326    #[prost(int32, optional, tag="3")]
7327    pub isolate_id: ::core::option::Option<i32>,
7328    #[prost(message, optional, tag="4")]
7329    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7330    /// The embedded blob holds code for built in functions that are precompiled in
7331    /// the V8 library.
7332    #[prost(uint64, optional, tag="5")]
7333    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7334    #[prost(uint64, optional, tag="6")]
7335    pub embedded_blob_code_size: ::core::option::Option<u64>,
7336}
7337/// Nested message and enum types in `InternedV8Isolate`.
7338pub mod interned_v8_isolate {
7339    /// A code range is a virtual memory cage that may contain executable code.
7340    /// Depending on the Isolate settings the Isolate might have one or not.
7341    /// See:
7342    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7343    /// If the isolate defines code range this will be tracked here.
7344    #[derive(Clone, PartialEq, ::prost::Message)]
7345    pub struct CodeRange {
7346        #[prost(uint64, optional, tag="1")]
7347        pub base_address: ::core::option::Option<u64>,
7348        #[prost(uint64, optional, tag="2")]
7349        pub size: ::core::option::Option<u64>,
7350        /// Used when short builtin calls are enabled, where embedded builtins are
7351        /// copied into the CodeRange so calls can be nearer.
7352        #[prost(uint64, optional, tag="3")]
7353        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7354        /// Whether this code range is shared with other Isolates in the same process
7355        #[prost(bool, optional, tag="4")]
7356        pub is_process_wide: ::core::option::Option<bool>,
7357    }
7358}
7359#[derive(Clone, PartialEq, ::prost::Message)]
7360pub struct V8JsCode {
7361    #[prost(uint64, optional, tag="1")]
7362    pub v8_isolate_iid: ::core::option::Option<u64>,
7363    #[prost(uint32, optional, tag="2")]
7364    pub tid: ::core::option::Option<u32>,
7365    #[prost(uint64, optional, tag="3")]
7366    pub v8_js_function_iid: ::core::option::Option<u64>,
7367    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7368    pub tier: ::core::option::Option<i32>,
7369    #[prost(uint64, optional, tag="5")]
7370    pub instruction_start: ::core::option::Option<u64>,
7371    #[prost(uint64, optional, tag="6")]
7372    pub instruction_size_bytes: ::core::option::Option<u64>,
7373    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7374    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7375}
7376/// Nested message and enum types in `V8JsCode`.
7377pub mod v8_js_code {
7378    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7379    #[repr(i32)]
7380    pub enum Tier {
7381        Unknown = 0,
7382        Ignition = 1,
7383        Sparkplug = 2,
7384        Maglev = 3,
7385        Turboshaft = 4,
7386        Turbofan = 5,
7387    }
7388    impl Tier {
7389        /// String value of the enum field names used in the ProtoBuf definition.
7390        ///
7391        /// The values are not transformed in any way and thus are considered stable
7392        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7393        pub fn as_str_name(&self) -> &'static str {
7394            match self {
7395                Tier::Unknown => "TIER_UNKNOWN",
7396                Tier::Ignition => "TIER_IGNITION",
7397                Tier::Sparkplug => "TIER_SPARKPLUG",
7398                Tier::Maglev => "TIER_MAGLEV",
7399                Tier::Turboshaft => "TIER_TURBOSHAFT",
7400                Tier::Turbofan => "TIER_TURBOFAN",
7401            }
7402        }
7403    }
7404    #[derive(Clone, PartialEq, ::prost::Oneof)]
7405    pub enum Instructions {
7406        #[prost(bytes, tag="7")]
7407        MachineCode(::prost::alloc::vec::Vec<u8>),
7408        #[prost(bytes, tag="8")]
7409        Bytecode(::prost::alloc::vec::Vec<u8>),
7410    }
7411}
7412#[derive(Clone, PartialEq, ::prost::Message)]
7413pub struct V8InternalCode {
7414    #[prost(uint64, optional, tag="1")]
7415    pub v8_isolate_iid: ::core::option::Option<u64>,
7416    #[prost(uint32, optional, tag="2")]
7417    pub tid: ::core::option::Option<u32>,
7418    #[prost(string, optional, tag="3")]
7419    pub name: ::core::option::Option<::prost::alloc::string::String>,
7420    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7421    pub r#type: ::core::option::Option<i32>,
7422    #[prost(int32, optional, tag="5")]
7423    pub builtin_id: ::core::option::Option<i32>,
7424    #[prost(uint64, optional, tag="6")]
7425    pub instruction_start: ::core::option::Option<u64>,
7426    #[prost(uint64, optional, tag="7")]
7427    pub instruction_size_bytes: ::core::option::Option<u64>,
7428    #[prost(bytes="vec", optional, tag="8")]
7429    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7430}
7431/// Nested message and enum types in `V8InternalCode`.
7432pub mod v8_internal_code {
7433    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7434    #[repr(i32)]
7435    pub enum Type {
7436        Unknown = 0,
7437        BytecodeHandler = 1,
7438        ForTesting = 2,
7439        Builtin = 3,
7440        WasmFunction = 4,
7441        WasmToCapiFunction = 5,
7442        WasmToJsFunction = 6,
7443        JsToWasmFunction = 7,
7444        JsToJsFunction = 8,
7445        CWasmEntry = 9,
7446    }
7447    impl Type {
7448        /// String value of the enum field names used in the ProtoBuf definition.
7449        ///
7450        /// The values are not transformed in any way and thus are considered stable
7451        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7452        pub fn as_str_name(&self) -> &'static str {
7453            match self {
7454                Type::Unknown => "TYPE_UNKNOWN",
7455                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7456                Type::ForTesting => "TYPE_FOR_TESTING",
7457                Type::Builtin => "TYPE_BUILTIN",
7458                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7459                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7460                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7461                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7462                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7463                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7464            }
7465        }
7466    }
7467}
7468#[derive(Clone, PartialEq, ::prost::Message)]
7469pub struct V8WasmCode {
7470    #[prost(uint64, optional, tag="1")]
7471    pub v8_isolate_iid: ::core::option::Option<u64>,
7472    #[prost(uint32, optional, tag="2")]
7473    pub tid: ::core::option::Option<u32>,
7474    #[prost(uint64, optional, tag="3")]
7475    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7476    #[prost(string, optional, tag="4")]
7477    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7478    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7479    pub tier: ::core::option::Option<i32>,
7480    #[prost(int32, optional, tag="6")]
7481    pub code_offset_in_module: ::core::option::Option<i32>,
7482    #[prost(uint64, optional, tag="7")]
7483    pub instruction_start: ::core::option::Option<u64>,
7484    #[prost(uint64, optional, tag="8")]
7485    pub instruction_size_bytes: ::core::option::Option<u64>,
7486    #[prost(bytes="vec", optional, tag="9")]
7487    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7488}
7489/// Nested message and enum types in `V8WasmCode`.
7490pub mod v8_wasm_code {
7491    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7492    #[repr(i32)]
7493    pub enum Tier {
7494        Unknown = 0,
7495        Liftoff = 1,
7496        Turbofan = 2,
7497    }
7498    impl Tier {
7499        /// String value of the enum field names used in the ProtoBuf definition.
7500        ///
7501        /// The values are not transformed in any way and thus are considered stable
7502        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7503        pub fn as_str_name(&self) -> &'static str {
7504            match self {
7505                Tier::Unknown => "TIER_UNKNOWN",
7506                Tier::Liftoff => "TIER_LIFTOFF",
7507                Tier::Turbofan => "TIER_TURBOFAN",
7508            }
7509        }
7510    }
7511}
7512#[derive(Clone, PartialEq, ::prost::Message)]
7513pub struct V8RegExpCode {
7514    #[prost(uint64, optional, tag="1")]
7515    pub v8_isolate_iid: ::core::option::Option<u64>,
7516    #[prost(uint32, optional, tag="2")]
7517    pub tid: ::core::option::Option<u32>,
7518    #[prost(message, optional, tag="3")]
7519    pub pattern: ::core::option::Option<V8String>,
7520    #[prost(uint64, optional, tag="4")]
7521    pub instruction_start: ::core::option::Option<u64>,
7522    #[prost(uint64, optional, tag="5")]
7523    pub instruction_size_bytes: ::core::option::Option<u64>,
7524    #[prost(bytes="vec", optional, tag="6")]
7525    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7526}
7527/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7528/// memory by V8's GC.
7529#[derive(Clone, PartialEq, ::prost::Message)]
7530pub struct V8CodeMove {
7531    #[prost(uint64, optional, tag="1")]
7532    pub isolate_iid: ::core::option::Option<u64>,
7533    #[prost(uint32, optional, tag="2")]
7534    pub tid: ::core::option::Option<u32>,
7535    #[prost(uint64, optional, tag="3")]
7536    pub from_instruction_start_address: ::core::option::Option<u64>,
7537    #[prost(uint64, optional, tag="4")]
7538    pub to_instruction_start_address: ::core::option::Option<u64>,
7539    #[prost(uint64, optional, tag="5")]
7540    pub instruction_size_bytes: ::core::option::Option<u64>,
7541    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7542    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7543}
7544/// Nested message and enum types in `V8CodeMove`.
7545pub mod v8_code_move {
7546    #[derive(Clone, PartialEq, ::prost::Oneof)]
7547    pub enum ToInstructions {
7548        #[prost(bytes, tag="6")]
7549        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7550        #[prost(bytes, tag="7")]
7551        ToBytecode(::prost::alloc::vec::Vec<u8>),
7552    }
7553}
7554#[derive(Clone, PartialEq, ::prost::Message)]
7555pub struct V8CodeDefaults {
7556    #[prost(uint32, optional, tag="1")]
7557    pub tid: ::core::option::Option<u32>,
7558}
7559// End of protos/perfetto/trace/chrome/v8.proto
7560
7561// Begin of protos/perfetto/trace/clock_snapshot.proto
7562
7563/// A snapshot of clock readings to allow for trace alignment.
7564#[derive(Clone, PartialEq, ::prost::Message)]
7565pub struct ClockSnapshot {
7566    #[prost(message, repeated, tag="1")]
7567    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
7568    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
7569    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
7570    /// attempt to translate packet/event timestamps from various data sources (and
7571    /// their chosen clock domains) to this domain during import.
7572    #[prost(enumeration="BuiltinClock", optional, tag="2")]
7573    pub primary_trace_clock: ::core::option::Option<i32>,
7574}
7575/// Nested message and enum types in `ClockSnapshot`.
7576pub mod clock_snapshot {
7577    #[derive(Clone, PartialEq, ::prost::Message)]
7578    pub struct Clock {
7579        /// Clock IDs have the following semantic:
7580        /// [1, 63]:    Builtin types, see BuiltinClock from
7581        ///              ../common/builtin_clock.proto.
7582        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
7583        ///              are only valid within the same |trusted_packet_sequence_id|
7584        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
7585        ///              that emitted the clock snapshot).
7586        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
7587        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
7588        #[prost(uint32, optional, tag="1")]
7589        pub clock_id: ::core::option::Option<u32>,
7590        /// Absolute timestamp. Unit is ns unless specified otherwise by the
7591        /// unit_multiplier_ns field below.
7592        #[prost(uint64, optional, tag="2")]
7593        pub timestamp: ::core::option::Option<u64>,
7594        /// When true each TracePacket's timestamp should be interpreted as a delta
7595        /// from the last TracePacket's timestamp (referencing this clock) emitted by
7596        /// the same packet_sequence_id. Should only be used for user-defined
7597        /// sequence-local clocks. The first packet timestamp after each
7598        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
7599        /// the ClockSnapshot.
7600        #[prost(bool, optional, tag="3")]
7601        pub is_incremental: ::core::option::Option<bool>,
7602        /// Allows to specify a custom unit different than the default (ns) for this
7603        /// clock domain.
7604        ///
7605        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
7606        ///    as 3000 ns = 3 us.
7607        /// * All snapshots for the same clock within a trace need to use the same
7608        ///    unit.
7609        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
7610        #[prost(uint64, optional, tag="4")]
7611        pub unit_multiplier_ns: ::core::option::Option<u64>,
7612    }
7613    /// Nested message and enum types in `Clock`.
7614    pub mod clock {
7615        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
7616        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7617        #[repr(i32)]
7618        pub enum BuiltinClocks {
7619            Unknown = 0,
7620            Realtime = 1,
7621            RealtimeCoarse = 2,
7622            Monotonic = 3,
7623            MonotonicCoarse = 4,
7624            MonotonicRaw = 5,
7625            Boottime = 6,
7626            BuiltinClockMaxId = 63,
7627        }
7628        impl BuiltinClocks {
7629            /// String value of the enum field names used in the ProtoBuf definition.
7630            ///
7631            /// The values are not transformed in any way and thus are considered stable
7632            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7633            pub fn as_str_name(&self) -> &'static str {
7634                match self {
7635                    BuiltinClocks::Unknown => "UNKNOWN",
7636                    BuiltinClocks::Realtime => "REALTIME",
7637                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
7638                    BuiltinClocks::Monotonic => "MONOTONIC",
7639                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
7640                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
7641                    BuiltinClocks::Boottime => "BOOTTIME",
7642                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
7643                }
7644            }
7645        }
7646    }
7647}
7648// End of protos/perfetto/trace/clock_snapshot.proto
7649
7650// Begin of protos/perfetto/trace/etw/etw.proto
7651
7652/// Proto definition based on the Thread_v2 CSwitch class definition
7653/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
7654#[derive(Clone, PartialEq, ::prost::Message)]
7655pub struct CSwitchEtwEvent {
7656    /// New thread ID after the switch.
7657    #[prost(uint32, optional, tag="1")]
7658    pub new_thread_id: ::core::option::Option<u32>,
7659    /// Previous thread ID.
7660    #[prost(uint32, optional, tag="2")]
7661    pub old_thread_id: ::core::option::Option<u32>,
7662    /// Thread priority of the new thread.
7663    #[prost(sint32, optional, tag="3")]
7664    pub new_thread_priority: ::core::option::Option<i32>,
7665    /// Thread priority of the previous thread.
7666    #[prost(sint32, optional, tag="4")]
7667    pub old_thread_priority: ::core::option::Option<i32>,
7668    /// The index of the C-state that was last used by the processor. A value of 0
7669    /// represents the lightest idle state with higher values representing deeper
7670    /// C-states.
7671    #[prost(uint32, optional, tag="5")]
7672    pub previous_c_state: ::core::option::Option<u32>,
7673    /// Ideal wait time of the previous thread.
7674    #[prost(sint32, optional, tag="9")]
7675    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
7676    /// Wait time for the new thread.
7677    #[prost(uint32, optional, tag="10")]
7678    pub new_thread_wait_time: ::core::option::Option<u32>,
7679    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
7680    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
7681    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
7682    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
7683    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
7684    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
7685}
7686/// Nested message and enum types in `CSwitchEtwEvent`.
7687pub mod c_switch_etw_event {
7688    /// Wait reason for the previous thread. The ordering is important as based on
7689    /// the OldThreadWaitReason definition from the link above. The following are
7690    /// the possible values:
7691    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7692    #[repr(i32)]
7693    pub enum OldThreadWaitReason {
7694        Executive = 0,
7695        FreePage = 1,
7696        PageIn = 2,
7697        PoolAllocation = 3,
7698        DelayExecution = 4,
7699        Suspend = 5,
7700        UserRequest = 6,
7701        WrExecutive = 7,
7702        WrFreePage = 8,
7703        WrPageIn = 9,
7704        WrPoolAllocation = 10,
7705        WrDelayExecution = 11,
7706        WrSuspended = 12,
7707        WrUserRequest = 13,
7708        WrEventPair = 14,
7709        WrQueue = 15,
7710        WrLpcReceiver = 16,
7711        WrLpcReply = 17,
7712        WrVirtualMemory = 18,
7713        WrPageOut = 19,
7714        WrRendezVous = 20,
7715        WrKeyedEvent = 21,
7716        WrTerminated = 22,
7717        WrProcessInSwap = 23,
7718        WrCpuRateControl = 24,
7719        WrCalloutStack = 25,
7720        WrKernel = 26,
7721        WrResource = 27,
7722        WrPushLock = 28,
7723        WrMutex = 29,
7724        WrQuantumEnd = 30,
7725        WrDispatchInt = 31,
7726        WrPreempted = 32,
7727        WrYieldExecution = 33,
7728        WrFastMutex = 34,
7729        WrGuardMutex = 35,
7730        WrRundown = 36,
7731        MaximumWaitReason = 37,
7732    }
7733    impl OldThreadWaitReason {
7734        /// String value of the enum field names used in the ProtoBuf definition.
7735        ///
7736        /// The values are not transformed in any way and thus are considered stable
7737        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7738        pub fn as_str_name(&self) -> &'static str {
7739            match self {
7740                OldThreadWaitReason::Executive => "EXECUTIVE",
7741                OldThreadWaitReason::FreePage => "FREE_PAGE",
7742                OldThreadWaitReason::PageIn => "PAGE_IN",
7743                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
7744                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
7745                OldThreadWaitReason::Suspend => "SUSPEND",
7746                OldThreadWaitReason::UserRequest => "USER_REQUEST",
7747                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
7748                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
7749                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
7750                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
7751                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
7752                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
7753                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
7754                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
7755                OldThreadWaitReason::WrQueue => "WR_QUEUE",
7756                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
7757                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
7758                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
7759                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
7760                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
7761                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
7762                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
7763                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
7764                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
7765                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
7766                OldThreadWaitReason::WrKernel => "WR_KERNEL",
7767                OldThreadWaitReason::WrResource => "WR_RESOURCE",
7768                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
7769                OldThreadWaitReason::WrMutex => "WR_MUTEX",
7770                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
7771                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
7772                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
7773                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
7774                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
7775                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
7776                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
7777                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
7778            }
7779        }
7780    }
7781    /// Wait mode for the previous thread. The ordering is important as based on
7782    /// the OldThreadWaitMode definition from the link above. The following are the
7783    /// possible values:
7784    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7785    #[repr(i32)]
7786    pub enum OldThreadWaitMode {
7787        KernelMode = 0,
7788        UserMode = 1,
7789    }
7790    impl OldThreadWaitMode {
7791        /// String value of the enum field names used in the ProtoBuf definition.
7792        ///
7793        /// The values are not transformed in any way and thus are considered stable
7794        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7795        pub fn as_str_name(&self) -> &'static str {
7796            match self {
7797                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
7798                OldThreadWaitMode::UserMode => "USER_MODE",
7799            }
7800        }
7801    }
7802    /// State of the previous thread. The ordering is important as based on the
7803    /// OldThreadState definition from the link above. The following are the
7804    /// possible state values:
7805    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7806    #[repr(i32)]
7807    pub enum OldThreadState {
7808        Initialized = 0,
7809        Ready = 1,
7810        Running = 2,
7811        Standby = 3,
7812        Terminated = 4,
7813        Waiting = 5,
7814        Transition = 6,
7815        DeferredReady = 7,
7816    }
7817    impl OldThreadState {
7818        /// String value of the enum field names used in the ProtoBuf definition.
7819        ///
7820        /// The values are not transformed in any way and thus are considered stable
7821        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7822        pub fn as_str_name(&self) -> &'static str {
7823            match self {
7824                OldThreadState::Initialized => "INITIALIZED",
7825                OldThreadState::Ready => "READY",
7826                OldThreadState::Running => "RUNNING",
7827                OldThreadState::Standby => "STANDBY",
7828                OldThreadState::Terminated => "TERMINATED",
7829                OldThreadState::Waiting => "WAITING",
7830                OldThreadState::Transition => "TRANSITION",
7831                OldThreadState::DeferredReady => "DEFERRED_READY",
7832            }
7833        }
7834    }
7835    #[derive(Clone, PartialEq, ::prost::Oneof)]
7836    pub enum OldThreadWaitReasonEnumOrInt {
7837        #[prost(enumeration="OldThreadWaitReason", tag="6")]
7838        OldThreadWaitReason(i32),
7839        #[prost(int32, tag="11")]
7840        OldThreadWaitReasonInt(i32),
7841    }
7842    #[derive(Clone, PartialEq, ::prost::Oneof)]
7843    pub enum OldThreadWaitModeEnumOrInt {
7844        #[prost(enumeration="OldThreadWaitMode", tag="7")]
7845        OldThreadWaitMode(i32),
7846        #[prost(int32, tag="12")]
7847        OldThreadWaitModeInt(i32),
7848    }
7849    #[derive(Clone, PartialEq, ::prost::Oneof)]
7850    pub enum OldThreadStateEnumOrInt {
7851        #[prost(enumeration="OldThreadState", tag="8")]
7852        OldThreadState(i32),
7853        #[prost(sint32, tag="13")]
7854        OldThreadStateInt(i32),
7855    }
7856}
7857/// Proto definition based on the Thread_v2 CSwitch class definition
7858/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
7859#[derive(Clone, PartialEq, ::prost::Message)]
7860pub struct ReadyThreadEtwEvent {
7861    /// The thread identifier of the thread being readied for execution.
7862    #[prost(uint32, optional, tag="1")]
7863    pub t_thread_id: ::core::option::Option<u32>,
7864    ///   The value by which the priority is being adjusted.
7865    #[prost(sint32, optional, tag="3")]
7866    pub adjust_increment: ::core::option::Option<i32>,
7867    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
7868    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
7869    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
7870    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
7871}
7872/// Nested message and enum types in `ReadyThreadEtwEvent`.
7873pub mod ready_thread_etw_event {
7874    /// The reason for the priority boost. The ordering is important as based on
7875    /// the AdjustReason definition from the link above.
7876    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7877    #[repr(i32)]
7878    pub enum AdjustReason {
7879        IgnoreTheIncrement = 0,
7880        /// Apply the increment, which will decay incrementally at the end of each
7881        /// quantum.
7882        ApplyIncrement = 1,
7883        /// Apply the increment as a boost that will decay in its entirety at quantum
7884        /// (typically for priority donation).
7885        ApplyIncrementBoost = 2,
7886    }
7887    impl AdjustReason {
7888        /// String value of the enum field names used in the ProtoBuf definition.
7889        ///
7890        /// The values are not transformed in any way and thus are considered stable
7891        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7892        pub fn as_str_name(&self) -> &'static str {
7893            match self {
7894                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
7895                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
7896                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
7897            }
7898        }
7899    }
7900    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7901    #[repr(i32)]
7902    pub enum TraceFlag {
7903        Unspecified = 0,
7904        /// The thread has been readied from DPC (deferred procedure call).
7905        ThreadReadied = 1,
7906        /// The kernel stack is currently swapped out.
7907        KernelStackSwappedOut = 2,
7908        /// The process address space is swapped out.
7909        ProcessAddressSwappedOut = 4,
7910    }
7911    impl TraceFlag {
7912        /// String value of the enum field names used in the ProtoBuf definition.
7913        ///
7914        /// The values are not transformed in any way and thus are considered stable
7915        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7916        pub fn as_str_name(&self) -> &'static str {
7917            match self {
7918                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
7919                TraceFlag::ThreadReadied => "THREAD_READIED",
7920                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
7921                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
7922            }
7923        }
7924    }
7925    #[derive(Clone, PartialEq, ::prost::Oneof)]
7926    pub enum AdjustReasonEnumOrInt {
7927        #[prost(enumeration="AdjustReason", tag="2")]
7928        AdjustReason(i32),
7929        #[prost(int32, tag="5")]
7930        AdjustReasonInt(i32),
7931    }
7932    #[derive(Clone, PartialEq, ::prost::Oneof)]
7933    pub enum FlagEnumOrInt {
7934        #[prost(enumeration="TraceFlag", tag="4")]
7935        Flag(i32),
7936        #[prost(int32, tag="6")]
7937        FlagInt(i32),
7938    }
7939}
7940// Begin of protos/perfetto/trace/etw/etw_event.proto
7941
7942#[derive(Clone, PartialEq, ::prost::Message)]
7943pub struct EtwTraceEvent {
7944    #[prost(uint64, optional, tag="1")]
7945    pub timestamp: ::core::option::Option<u64>,
7946    #[prost(uint32, optional, tag="4")]
7947    pub cpu: ::core::option::Option<u32>,
7948    #[prost(uint32, optional, tag="5")]
7949    pub thread_id: ::core::option::Option<u32>,
7950    #[prost(oneof="etw_trace_event::Event", tags="2, 3")]
7951    pub event: ::core::option::Option<etw_trace_event::Event>,
7952}
7953/// Nested message and enum types in `EtwTraceEvent`.
7954pub mod etw_trace_event {
7955    #[derive(Clone, PartialEq, ::prost::Oneof)]
7956    pub enum Event {
7957        #[prost(message, tag="2")]
7958        CSwitch(super::CSwitchEtwEvent),
7959        #[prost(message, tag="3")]
7960        ReadyThread(super::ReadyThreadEtwEvent),
7961    }
7962}
7963// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
7964
7965/// The result of tracing one or more etw event uses per-processor buffers where
7966/// an in-use buffer is assigned to each processor at all times. Therefore,
7967/// collecting multiple events they should already be synchronized.
7968#[derive(Clone, PartialEq, ::prost::Message)]
7969pub struct EtwTraceEventBundle {
7970    #[prost(uint32, optional, tag="1")]
7971    pub cpu: ::core::option::Option<u32>,
7972    #[prost(message, repeated, tag="2")]
7973    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
7974}
7975// Begin of protos/perfetto/common/descriptor.proto
7976
7977/// The protocol compiler can output a FileDescriptorSet containing the .proto
7978/// files it parses.
7979#[derive(Clone, PartialEq, ::prost::Message)]
7980pub struct FileDescriptorSet {
7981    #[prost(message, repeated, tag="1")]
7982    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
7983}
7984/// Describes a complete .proto file.
7985#[derive(Clone, PartialEq, ::prost::Message)]
7986pub struct FileDescriptorProto {
7987    /// file name, relative to root of source tree
7988    #[prost(string, optional, tag="1")]
7989    pub name: ::core::option::Option<::prost::alloc::string::String>,
7990    /// e.g. "foo", "foo.bar", etc.
7991    #[prost(string, optional, tag="2")]
7992    pub package: ::core::option::Option<::prost::alloc::string::String>,
7993    /// Names of files imported by this file.
7994    #[prost(string, repeated, tag="3")]
7995    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7996    /// Indexes of the public imported files in the dependency list above.
7997    #[prost(int32, repeated, packed="false", tag="10")]
7998    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
7999    /// Indexes of the weak imported files in the dependency list.
8000    /// For Google-internal migration only. Do not use.
8001    #[prost(int32, repeated, packed="false", tag="11")]
8002    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8003    /// All top-level definitions in this file.
8004    #[prost(message, repeated, tag="4")]
8005    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8006    #[prost(message, repeated, tag="5")]
8007    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8008    #[prost(message, repeated, tag="7")]
8009    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8010}
8011/// Describes a message type.
8012#[derive(Clone, PartialEq, ::prost::Message)]
8013pub struct DescriptorProto {
8014    #[prost(string, optional, tag="1")]
8015    pub name: ::core::option::Option<::prost::alloc::string::String>,
8016    #[prost(message, repeated, tag="2")]
8017    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8018    #[prost(message, repeated, tag="6")]
8019    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8020    #[prost(message, repeated, tag="3")]
8021    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8022    #[prost(message, repeated, tag="4")]
8023    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8024    #[prost(message, repeated, tag="8")]
8025    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8026    #[prost(message, repeated, tag="9")]
8027    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8028    /// Reserved field names, which may not be used by fields in the same message.
8029    /// A given name may only be reserved once.
8030    #[prost(string, repeated, tag="10")]
8031    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8032}
8033/// Nested message and enum types in `DescriptorProto`.
8034pub mod descriptor_proto {
8035    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8036    /// fields or extension ranges in the same message. Reserved ranges may
8037    /// not overlap.
8038    #[derive(Clone, PartialEq, ::prost::Message)]
8039    pub struct ReservedRange {
8040        /// Inclusive.
8041        #[prost(int32, optional, tag="1")]
8042        pub start: ::core::option::Option<i32>,
8043        /// Exclusive.
8044        #[prost(int32, optional, tag="2")]
8045        pub end: ::core::option::Option<i32>,
8046    }
8047}
8048/// A message representing a option the parser does not recognize. This only
8049/// appears in options protos created by the compiler::Parser class.
8050/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8051/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8052/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8053/// in them.
8054#[derive(Clone, PartialEq, ::prost::Message)]
8055pub struct UninterpretedOption {
8056    #[prost(message, repeated, tag="2")]
8057    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8058    /// The value of the uninterpreted option, in whatever type the tokenizer
8059    /// identified it as during parsing. Exactly one of these should be set.
8060    #[prost(string, optional, tag="3")]
8061    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8062    #[prost(uint64, optional, tag="4")]
8063    pub positive_int_value: ::core::option::Option<u64>,
8064    #[prost(int64, optional, tag="5")]
8065    pub negative_int_value: ::core::option::Option<i64>,
8066    #[prost(double, optional, tag="6")]
8067    pub double_value: ::core::option::Option<f64>,
8068    #[prost(bytes="vec", optional, tag="7")]
8069    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8070    #[prost(string, optional, tag="8")]
8071    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8072}
8073/// Nested message and enum types in `UninterpretedOption`.
8074pub mod uninterpreted_option {
8075    /// The name of the uninterpreted option.  Each string represents a segment in
8076    /// a dot-separated name.  is_extension is true iff a segment represents an
8077    /// extension (denoted with parentheses in options specs in .proto files).
8078    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8079    /// "foo.(bar.baz).moo".
8080    #[derive(Clone, PartialEq, ::prost::Message)]
8081    pub struct NamePart {
8082        #[prost(string, optional, tag="1")]
8083        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8084        #[prost(bool, optional, tag="2")]
8085        pub is_extension: ::core::option::Option<bool>,
8086    }
8087}
8088#[derive(Clone, PartialEq, ::prost::Message)]
8089pub struct FieldOptions {
8090    /// The packed option can be enabled for repeated primitive fields to enable
8091    /// a more efficient representation on the wire. Rather than repeatedly
8092    /// writing the tag and type for each element, the entire array is encoded as
8093    /// a single length-delimited blob. In proto3, only explicit setting it to
8094    /// false will avoid using packed encoding.
8095    #[prost(bool, optional, tag="2")]
8096    pub packed: ::core::option::Option<bool>,
8097    /// The parser stores options it doesn't recognize here. See above.
8098    #[prost(message, repeated, tag="999")]
8099    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8100}
8101/// Describes a field within a message.
8102#[derive(Clone, PartialEq, ::prost::Message)]
8103pub struct FieldDescriptorProto {
8104    #[prost(string, optional, tag="1")]
8105    pub name: ::core::option::Option<::prost::alloc::string::String>,
8106    #[prost(int32, optional, tag="3")]
8107    pub number: ::core::option::Option<i32>,
8108    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
8109    pub label: ::core::option::Option<i32>,
8110    /// If type_name is set, this need not be set.  If both this and type_name
8111    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8112    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
8113    pub r#type: ::core::option::Option<i32>,
8114    /// For message and enum types, this is the name of the type.  If the name
8115    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8116    /// rules are used to find the type (i.e. first the nested types within this
8117    /// message are searched, then within the parent, on up to the root
8118    /// namespace).
8119    #[prost(string, optional, tag="6")]
8120    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8121    /// For extensions, this is the name of the type being extended.  It is
8122    /// resolved in the same manner as type_name.
8123    #[prost(string, optional, tag="2")]
8124    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8125    /// For numeric types, contains the original text representation of the value.
8126    /// For booleans, "true" or "false".
8127    /// For strings, contains the default text contents (not escaped in any way).
8128    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8129    /// TODO(kenton):  Base-64 encode?
8130    #[prost(string, optional, tag="7")]
8131    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8132    #[prost(message, optional, tag="8")]
8133    pub options: ::core::option::Option<FieldOptions>,
8134    /// If set, gives the index of a oneof in the containing type's oneof_decl
8135    /// list.  This field is a member of that oneof.
8136    #[prost(int32, optional, tag="9")]
8137    pub oneof_index: ::core::option::Option<i32>,
8138}
8139/// Nested message and enum types in `FieldDescriptorProto`.
8140pub mod field_descriptor_proto {
8141    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8142    #[repr(i32)]
8143    pub enum Type {
8144        /// 0 is reserved for errors.
8145        /// Order is weird for historical reasons.
8146        Double = 1,
8147        Float = 2,
8148        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8149        /// negative values are likely.
8150        Int64 = 3,
8151        Uint64 = 4,
8152        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8153        /// negative values are likely.
8154        Int32 = 5,
8155        Fixed64 = 6,
8156        Fixed32 = 7,
8157        Bool = 8,
8158        String = 9,
8159        /// Tag-delimited aggregate.
8160        /// Group type is deprecated and not supported in proto3. However, Proto3
8161        /// implementations should still be able to parse the group wire format and
8162        /// treat group fields as unknown fields.
8163        Group = 10,
8164        /// Length-delimited aggregate.
8165        Message = 11,
8166        /// New in version 2.
8167        Bytes = 12,
8168        Uint32 = 13,
8169        Enum = 14,
8170        Sfixed32 = 15,
8171        Sfixed64 = 16,
8172        /// Uses ZigZag encoding.
8173        Sint32 = 17,
8174        /// Uses ZigZag encoding.
8175        Sint64 = 18,
8176    }
8177    impl Type {
8178        /// String value of the enum field names used in the ProtoBuf definition.
8179        ///
8180        /// The values are not transformed in any way and thus are considered stable
8181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8182        pub fn as_str_name(&self) -> &'static str {
8183            match self {
8184                Type::Double => "TYPE_DOUBLE",
8185                Type::Float => "TYPE_FLOAT",
8186                Type::Int64 => "TYPE_INT64",
8187                Type::Uint64 => "TYPE_UINT64",
8188                Type::Int32 => "TYPE_INT32",
8189                Type::Fixed64 => "TYPE_FIXED64",
8190                Type::Fixed32 => "TYPE_FIXED32",
8191                Type::Bool => "TYPE_BOOL",
8192                Type::String => "TYPE_STRING",
8193                Type::Group => "TYPE_GROUP",
8194                Type::Message => "TYPE_MESSAGE",
8195                Type::Bytes => "TYPE_BYTES",
8196                Type::Uint32 => "TYPE_UINT32",
8197                Type::Enum => "TYPE_ENUM",
8198                Type::Sfixed32 => "TYPE_SFIXED32",
8199                Type::Sfixed64 => "TYPE_SFIXED64",
8200                Type::Sint32 => "TYPE_SINT32",
8201                Type::Sint64 => "TYPE_SINT64",
8202            }
8203        }
8204    }
8205    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8206    #[repr(i32)]
8207    pub enum Label {
8208        /// 0 is reserved for errors
8209        Optional = 1,
8210        Required = 2,
8211        Repeated = 3,
8212    }
8213    impl Label {
8214        /// String value of the enum field names used in the ProtoBuf definition.
8215        ///
8216        /// The values are not transformed in any way and thus are considered stable
8217        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8218        pub fn as_str_name(&self) -> &'static str {
8219            match self {
8220                Label::Optional => "LABEL_OPTIONAL",
8221                Label::Required => "LABEL_REQUIRED",
8222                Label::Repeated => "LABEL_REPEATED",
8223            }
8224        }
8225    }
8226}
8227/// Describes a oneof.
8228#[derive(Clone, PartialEq, ::prost::Message)]
8229pub struct OneofDescriptorProto {
8230    #[prost(string, optional, tag="1")]
8231    pub name: ::core::option::Option<::prost::alloc::string::String>,
8232    #[prost(message, optional, tag="2")]
8233    pub options: ::core::option::Option<OneofOptions>,
8234}
8235/// Describes an enum type.
8236#[derive(Clone, PartialEq, ::prost::Message)]
8237pub struct EnumDescriptorProto {
8238    #[prost(string, optional, tag="1")]
8239    pub name: ::core::option::Option<::prost::alloc::string::String>,
8240    #[prost(message, repeated, tag="2")]
8241    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8242    /// Reserved enum value names, which may not be reused. A given name may only
8243    /// be reserved once.
8244    #[prost(string, repeated, tag="5")]
8245    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8246}
8247/// Describes a value within an enum.
8248#[derive(Clone, PartialEq, ::prost::Message)]
8249pub struct EnumValueDescriptorProto {
8250    #[prost(string, optional, tag="1")]
8251    pub name: ::core::option::Option<::prost::alloc::string::String>,
8252    #[prost(int32, optional, tag="2")]
8253    pub number: ::core::option::Option<i32>,
8254}
8255#[derive(Clone, PartialEq, ::prost::Message)]
8256pub struct OneofOptions {
8257}
8258// End of protos/perfetto/common/descriptor.proto
8259
8260// Begin of protos/perfetto/trace/extension_descriptor.proto
8261
8262/// This message contains descriptors used to parse extension fields of
8263/// TrackEvent.
8264///
8265/// See docs/design-docs/extensions.md for more details.
8266#[derive(Clone, PartialEq, ::prost::Message)]
8267pub struct ExtensionDescriptor {
8268    #[prost(message, optional, tag="1")]
8269    pub extension_set: ::core::option::Option<FileDescriptorSet>,
8270}
8271// End of protos/perfetto/trace/extension_descriptor.proto
8272
8273// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
8274
8275/// Represents the mapping between inode numbers in a block device and their path
8276/// on the filesystem
8277#[derive(Clone, PartialEq, ::prost::Message)]
8278pub struct InodeFileMap {
8279    #[prost(uint64, optional, tag="1")]
8280    pub block_device_id: ::core::option::Option<u64>,
8281    /// The mount points of the block device, e.g. \["system"\].
8282    #[prost(string, repeated, tag="2")]
8283    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8284    /// The list of all the entries from the block device
8285    #[prost(message, repeated, tag="3")]
8286    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
8287}
8288/// Nested message and enum types in `InodeFileMap`.
8289pub mod inode_file_map {
8290    /// Representation of Entry
8291    #[derive(Clone, PartialEq, ::prost::Message)]
8292    pub struct Entry {
8293        #[prost(uint64, optional, tag="1")]
8294        pub inode_number: ::core::option::Option<u64>,
8295        /// The path to the file, e.g. "etc/file.xml"
8296        /// List of strings for multiple hardlinks
8297        #[prost(string, repeated, tag="2")]
8298        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8299        #[prost(enumeration="entry::Type", optional, tag="3")]
8300        pub r#type: ::core::option::Option<i32>,
8301    }
8302    /// Nested message and enum types in `Entry`.
8303    pub mod entry {
8304        /// The file type
8305        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8306        #[repr(i32)]
8307        pub enum Type {
8308            Unknown = 0,
8309            File = 1,
8310            Directory = 2,
8311        }
8312        impl Type {
8313            /// String value of the enum field names used in the ProtoBuf definition.
8314            ///
8315            /// The values are not transformed in any way and thus are considered stable
8316            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8317            pub fn as_str_name(&self) -> &'static str {
8318                match self {
8319                    Type::Unknown => "UNKNOWN",
8320                    Type::File => "FILE",
8321                    Type::Directory => "DIRECTORY",
8322                }
8323            }
8324        }
8325    }
8326}
8327// End of protos/perfetto/trace/filesystem/inode_file_map.proto
8328
8329// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8330
8331#[derive(Clone, PartialEq, ::prost::Message)]
8332pub struct AndroidFsDatareadEndFtraceEvent {
8333    #[prost(int32, optional, tag="1")]
8334    pub bytes: ::core::option::Option<i32>,
8335    #[prost(uint64, optional, tag="2")]
8336    pub ino: ::core::option::Option<u64>,
8337    #[prost(int64, optional, tag="3")]
8338    pub offset: ::core::option::Option<i64>,
8339}
8340#[derive(Clone, PartialEq, ::prost::Message)]
8341pub struct AndroidFsDatareadStartFtraceEvent {
8342    #[prost(int32, optional, tag="1")]
8343    pub bytes: ::core::option::Option<i32>,
8344    #[prost(string, optional, tag="2")]
8345    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8346    #[prost(int64, optional, tag="3")]
8347    pub i_size: ::core::option::Option<i64>,
8348    #[prost(uint64, optional, tag="4")]
8349    pub ino: ::core::option::Option<u64>,
8350    #[prost(int64, optional, tag="5")]
8351    pub offset: ::core::option::Option<i64>,
8352    #[prost(string, optional, tag="6")]
8353    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8354    #[prost(int32, optional, tag="7")]
8355    pub pid: ::core::option::Option<i32>,
8356}
8357#[derive(Clone, PartialEq, ::prost::Message)]
8358pub struct AndroidFsDatawriteEndFtraceEvent {
8359    #[prost(int32, optional, tag="1")]
8360    pub bytes: ::core::option::Option<i32>,
8361    #[prost(uint64, optional, tag="2")]
8362    pub ino: ::core::option::Option<u64>,
8363    #[prost(int64, optional, tag="3")]
8364    pub offset: ::core::option::Option<i64>,
8365}
8366#[derive(Clone, PartialEq, ::prost::Message)]
8367pub struct AndroidFsDatawriteStartFtraceEvent {
8368    #[prost(int32, optional, tag="1")]
8369    pub bytes: ::core::option::Option<i32>,
8370    #[prost(string, optional, tag="2")]
8371    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8372    #[prost(int64, optional, tag="3")]
8373    pub i_size: ::core::option::Option<i64>,
8374    #[prost(uint64, optional, tag="4")]
8375    pub ino: ::core::option::Option<u64>,
8376    #[prost(int64, optional, tag="5")]
8377    pub offset: ::core::option::Option<i64>,
8378    #[prost(string, optional, tag="6")]
8379    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8380    #[prost(int32, optional, tag="7")]
8381    pub pid: ::core::option::Option<i32>,
8382}
8383#[derive(Clone, PartialEq, ::prost::Message)]
8384pub struct AndroidFsFsyncEndFtraceEvent {
8385    #[prost(int32, optional, tag="1")]
8386    pub bytes: ::core::option::Option<i32>,
8387    #[prost(uint64, optional, tag="2")]
8388    pub ino: ::core::option::Option<u64>,
8389    #[prost(int64, optional, tag="3")]
8390    pub offset: ::core::option::Option<i64>,
8391}
8392#[derive(Clone, PartialEq, ::prost::Message)]
8393pub struct AndroidFsFsyncStartFtraceEvent {
8394    #[prost(string, optional, tag="1")]
8395    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8396    #[prost(int64, optional, tag="2")]
8397    pub i_size: ::core::option::Option<i64>,
8398    #[prost(uint64, optional, tag="3")]
8399    pub ino: ::core::option::Option<u64>,
8400    #[prost(string, optional, tag="4")]
8401    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8402    #[prost(int32, optional, tag="5")]
8403    pub pid: ::core::option::Option<i32>,
8404}
8405// End of protos/perfetto/trace/ftrace/android_fs.proto
8406
8407// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
8408
8409#[derive(Clone, PartialEq, ::prost::Message)]
8410pub struct BclIrqTriggerFtraceEvent {
8411    #[prost(int32, optional, tag="1")]
8412    pub id: ::core::option::Option<i32>,
8413    #[prost(int32, optional, tag="2")]
8414    pub throttle: ::core::option::Option<i32>,
8415    #[prost(int32, optional, tag="3")]
8416    pub cpu0_limit: ::core::option::Option<i32>,
8417    #[prost(int32, optional, tag="4")]
8418    pub cpu1_limit: ::core::option::Option<i32>,
8419    #[prost(int32, optional, tag="5")]
8420    pub cpu2_limit: ::core::option::Option<i32>,
8421    #[prost(int32, optional, tag="6")]
8422    pub tpu_limit: ::core::option::Option<i32>,
8423    #[prost(int32, optional, tag="7")]
8424    pub gpu_limit: ::core::option::Option<i32>,
8425    #[prost(int32, optional, tag="8")]
8426    pub voltage: ::core::option::Option<i32>,
8427    #[prost(int32, optional, tag="9")]
8428    pub capacity: ::core::option::Option<i32>,
8429}
8430// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
8431
8432// Begin of protos/perfetto/trace/ftrace/binder.proto
8433
8434#[derive(Clone, PartialEq, ::prost::Message)]
8435pub struct BinderTransactionFtraceEvent {
8436    #[prost(int32, optional, tag="1")]
8437    pub debug_id: ::core::option::Option<i32>,
8438    #[prost(int32, optional, tag="2")]
8439    pub target_node: ::core::option::Option<i32>,
8440    #[prost(int32, optional, tag="3")]
8441    pub to_proc: ::core::option::Option<i32>,
8442    #[prost(int32, optional, tag="4")]
8443    pub to_thread: ::core::option::Option<i32>,
8444    #[prost(int32, optional, tag="5")]
8445    pub reply: ::core::option::Option<i32>,
8446    #[prost(uint32, optional, tag="6")]
8447    pub code: ::core::option::Option<u32>,
8448    #[prost(uint32, optional, tag="7")]
8449    pub flags: ::core::option::Option<u32>,
8450}
8451#[derive(Clone, PartialEq, ::prost::Message)]
8452pub struct BinderTransactionReceivedFtraceEvent {
8453    #[prost(int32, optional, tag="1")]
8454    pub debug_id: ::core::option::Option<i32>,
8455}
8456#[derive(Clone, PartialEq, ::prost::Message)]
8457pub struct BinderSetPriorityFtraceEvent {
8458    #[prost(int32, optional, tag="1")]
8459    pub proc: ::core::option::Option<i32>,
8460    #[prost(int32, optional, tag="2")]
8461    pub thread: ::core::option::Option<i32>,
8462    #[prost(uint32, optional, tag="3")]
8463    pub old_prio: ::core::option::Option<u32>,
8464    #[prost(uint32, optional, tag="4")]
8465    pub new_prio: ::core::option::Option<u32>,
8466    #[prost(uint32, optional, tag="5")]
8467    pub desired_prio: ::core::option::Option<u32>,
8468}
8469#[derive(Clone, PartialEq, ::prost::Message)]
8470pub struct BinderLockFtraceEvent {
8471    #[prost(string, optional, tag="1")]
8472    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8473}
8474#[derive(Clone, PartialEq, ::prost::Message)]
8475pub struct BinderLockedFtraceEvent {
8476    #[prost(string, optional, tag="1")]
8477    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8478}
8479#[derive(Clone, PartialEq, ::prost::Message)]
8480pub struct BinderUnlockFtraceEvent {
8481    #[prost(string, optional, tag="1")]
8482    pub tag: ::core::option::Option<::prost::alloc::string::String>,
8483}
8484#[derive(Clone, PartialEq, ::prost::Message)]
8485pub struct BinderTransactionAllocBufFtraceEvent {
8486    #[prost(uint64, optional, tag="1")]
8487    pub data_size: ::core::option::Option<u64>,
8488    #[prost(int32, optional, tag="2")]
8489    pub debug_id: ::core::option::Option<i32>,
8490    #[prost(uint64, optional, tag="3")]
8491    pub offsets_size: ::core::option::Option<u64>,
8492    #[prost(uint64, optional, tag="4")]
8493    pub extra_buffers_size: ::core::option::Option<u64>,
8494}
8495#[derive(Clone, PartialEq, ::prost::Message)]
8496pub struct BinderCommandFtraceEvent {
8497    #[prost(uint32, optional, tag="1")]
8498    pub cmd: ::core::option::Option<u32>,
8499}
8500#[derive(Clone, PartialEq, ::prost::Message)]
8501pub struct BinderReturnFtraceEvent {
8502    #[prost(uint32, optional, tag="1")]
8503    pub cmd: ::core::option::Option<u32>,
8504}
8505// End of protos/perfetto/trace/ftrace/binder.proto
8506
8507// Begin of protos/perfetto/trace/ftrace/block.proto
8508
8509#[derive(Clone, PartialEq, ::prost::Message)]
8510pub struct BlockRqIssueFtraceEvent {
8511    #[prost(uint64, optional, tag="1")]
8512    pub dev: ::core::option::Option<u64>,
8513    #[prost(uint64, optional, tag="2")]
8514    pub sector: ::core::option::Option<u64>,
8515    #[prost(uint32, optional, tag="3")]
8516    pub nr_sector: ::core::option::Option<u32>,
8517    #[prost(uint32, optional, tag="4")]
8518    pub bytes: ::core::option::Option<u32>,
8519    #[prost(string, optional, tag="5")]
8520    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8521    #[prost(string, optional, tag="6")]
8522    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8523    #[prost(string, optional, tag="7")]
8524    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8525}
8526#[derive(Clone, PartialEq, ::prost::Message)]
8527pub struct BlockBioBackmergeFtraceEvent {
8528    #[prost(uint64, optional, tag="1")]
8529    pub dev: ::core::option::Option<u64>,
8530    #[prost(uint64, optional, tag="2")]
8531    pub sector: ::core::option::Option<u64>,
8532    #[prost(uint32, optional, tag="3")]
8533    pub nr_sector: ::core::option::Option<u32>,
8534    #[prost(string, optional, tag="4")]
8535    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8536    #[prost(string, optional, tag="5")]
8537    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8538}
8539#[derive(Clone, PartialEq, ::prost::Message)]
8540pub struct BlockBioBounceFtraceEvent {
8541    #[prost(uint64, optional, tag="1")]
8542    pub dev: ::core::option::Option<u64>,
8543    #[prost(uint64, optional, tag="2")]
8544    pub sector: ::core::option::Option<u64>,
8545    #[prost(uint32, optional, tag="3")]
8546    pub nr_sector: ::core::option::Option<u32>,
8547    #[prost(string, optional, tag="4")]
8548    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8549    #[prost(string, optional, tag="5")]
8550    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8551}
8552#[derive(Clone, PartialEq, ::prost::Message)]
8553pub struct BlockBioCompleteFtraceEvent {
8554    #[prost(uint64, optional, tag="1")]
8555    pub dev: ::core::option::Option<u64>,
8556    #[prost(uint64, optional, tag="2")]
8557    pub sector: ::core::option::Option<u64>,
8558    #[prost(uint32, optional, tag="3")]
8559    pub nr_sector: ::core::option::Option<u32>,
8560    #[prost(int32, optional, tag="4")]
8561    pub error: ::core::option::Option<i32>,
8562    #[prost(string, optional, tag="5")]
8563    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8564}
8565#[derive(Clone, PartialEq, ::prost::Message)]
8566pub struct BlockBioFrontmergeFtraceEvent {
8567    #[prost(uint64, optional, tag="1")]
8568    pub dev: ::core::option::Option<u64>,
8569    #[prost(uint64, optional, tag="2")]
8570    pub sector: ::core::option::Option<u64>,
8571    #[prost(uint32, optional, tag="3")]
8572    pub nr_sector: ::core::option::Option<u32>,
8573    #[prost(string, optional, tag="4")]
8574    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8575    #[prost(string, optional, tag="5")]
8576    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8577}
8578#[derive(Clone, PartialEq, ::prost::Message)]
8579pub struct BlockBioQueueFtraceEvent {
8580    #[prost(uint64, optional, tag="1")]
8581    pub dev: ::core::option::Option<u64>,
8582    #[prost(uint64, optional, tag="2")]
8583    pub sector: ::core::option::Option<u64>,
8584    #[prost(uint32, optional, tag="3")]
8585    pub nr_sector: ::core::option::Option<u32>,
8586    #[prost(string, optional, tag="4")]
8587    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8588    #[prost(string, optional, tag="5")]
8589    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8590}
8591#[derive(Clone, PartialEq, ::prost::Message)]
8592pub struct BlockBioRemapFtraceEvent {
8593    #[prost(uint64, optional, tag="1")]
8594    pub dev: ::core::option::Option<u64>,
8595    #[prost(uint64, optional, tag="2")]
8596    pub sector: ::core::option::Option<u64>,
8597    #[prost(uint32, optional, tag="3")]
8598    pub nr_sector: ::core::option::Option<u32>,
8599    #[prost(uint64, optional, tag="4")]
8600    pub old_dev: ::core::option::Option<u64>,
8601    #[prost(uint64, optional, tag="5")]
8602    pub old_sector: ::core::option::Option<u64>,
8603    #[prost(string, optional, tag="6")]
8604    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8605}
8606#[derive(Clone, PartialEq, ::prost::Message)]
8607pub struct BlockDirtyBufferFtraceEvent {
8608    #[prost(uint64, optional, tag="1")]
8609    pub dev: ::core::option::Option<u64>,
8610    #[prost(uint64, optional, tag="2")]
8611    pub sector: ::core::option::Option<u64>,
8612    #[prost(uint64, optional, tag="3")]
8613    pub size: ::core::option::Option<u64>,
8614}
8615#[derive(Clone, PartialEq, ::prost::Message)]
8616pub struct BlockGetrqFtraceEvent {
8617    #[prost(uint64, optional, tag="1")]
8618    pub dev: ::core::option::Option<u64>,
8619    #[prost(uint64, optional, tag="2")]
8620    pub sector: ::core::option::Option<u64>,
8621    #[prost(uint32, optional, tag="3")]
8622    pub nr_sector: ::core::option::Option<u32>,
8623    #[prost(string, optional, tag="4")]
8624    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8625    #[prost(string, optional, tag="5")]
8626    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8627}
8628#[derive(Clone, PartialEq, ::prost::Message)]
8629pub struct BlockPlugFtraceEvent {
8630    #[prost(string, optional, tag="1")]
8631    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8632}
8633#[derive(Clone, PartialEq, ::prost::Message)]
8634pub struct BlockRqAbortFtraceEvent {
8635    #[prost(uint64, optional, tag="1")]
8636    pub dev: ::core::option::Option<u64>,
8637    #[prost(uint64, optional, tag="2")]
8638    pub sector: ::core::option::Option<u64>,
8639    #[prost(uint32, optional, tag="3")]
8640    pub nr_sector: ::core::option::Option<u32>,
8641    #[prost(int32, optional, tag="4")]
8642    pub errors: ::core::option::Option<i32>,
8643    #[prost(string, optional, tag="5")]
8644    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8645    #[prost(string, optional, tag="6")]
8646    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8647}
8648#[derive(Clone, PartialEq, ::prost::Message)]
8649pub struct BlockRqCompleteFtraceEvent {
8650    #[prost(uint64, optional, tag="1")]
8651    pub dev: ::core::option::Option<u64>,
8652    #[prost(uint64, optional, tag="2")]
8653    pub sector: ::core::option::Option<u64>,
8654    #[prost(uint32, optional, tag="3")]
8655    pub nr_sector: ::core::option::Option<u32>,
8656    #[prost(int32, optional, tag="4")]
8657    pub errors: ::core::option::Option<i32>,
8658    #[prost(string, optional, tag="5")]
8659    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8660    #[prost(string, optional, tag="6")]
8661    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8662    #[prost(int32, optional, tag="7")]
8663    pub error: ::core::option::Option<i32>,
8664}
8665#[derive(Clone, PartialEq, ::prost::Message)]
8666pub struct BlockRqInsertFtraceEvent {
8667    #[prost(uint64, optional, tag="1")]
8668    pub dev: ::core::option::Option<u64>,
8669    #[prost(uint64, optional, tag="2")]
8670    pub sector: ::core::option::Option<u64>,
8671    #[prost(uint32, optional, tag="3")]
8672    pub nr_sector: ::core::option::Option<u32>,
8673    #[prost(uint32, optional, tag="4")]
8674    pub bytes: ::core::option::Option<u32>,
8675    #[prost(string, optional, tag="5")]
8676    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8677    #[prost(string, optional, tag="6")]
8678    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8679    #[prost(string, optional, tag="7")]
8680    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8681}
8682#[derive(Clone, PartialEq, ::prost::Message)]
8683pub struct BlockRqRemapFtraceEvent {
8684    #[prost(uint64, optional, tag="1")]
8685    pub dev: ::core::option::Option<u64>,
8686    #[prost(uint64, optional, tag="2")]
8687    pub sector: ::core::option::Option<u64>,
8688    #[prost(uint32, optional, tag="3")]
8689    pub nr_sector: ::core::option::Option<u32>,
8690    #[prost(uint64, optional, tag="4")]
8691    pub old_dev: ::core::option::Option<u64>,
8692    #[prost(uint64, optional, tag="5")]
8693    pub old_sector: ::core::option::Option<u64>,
8694    #[prost(uint32, optional, tag="6")]
8695    pub nr_bios: ::core::option::Option<u32>,
8696    #[prost(string, optional, tag="7")]
8697    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8698}
8699#[derive(Clone, PartialEq, ::prost::Message)]
8700pub struct BlockRqRequeueFtraceEvent {
8701    #[prost(uint64, optional, tag="1")]
8702    pub dev: ::core::option::Option<u64>,
8703    #[prost(uint64, optional, tag="2")]
8704    pub sector: ::core::option::Option<u64>,
8705    #[prost(uint32, optional, tag="3")]
8706    pub nr_sector: ::core::option::Option<u32>,
8707    #[prost(int32, optional, tag="4")]
8708    pub errors: ::core::option::Option<i32>,
8709    #[prost(string, optional, tag="5")]
8710    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8711    #[prost(string, optional, tag="6")]
8712    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8713}
8714#[derive(Clone, PartialEq, ::prost::Message)]
8715pub struct BlockSleeprqFtraceEvent {
8716    #[prost(uint64, optional, tag="1")]
8717    pub dev: ::core::option::Option<u64>,
8718    #[prost(uint64, optional, tag="2")]
8719    pub sector: ::core::option::Option<u64>,
8720    #[prost(uint32, optional, tag="3")]
8721    pub nr_sector: ::core::option::Option<u32>,
8722    #[prost(string, optional, tag="4")]
8723    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8724    #[prost(string, optional, tag="5")]
8725    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8726}
8727#[derive(Clone, PartialEq, ::prost::Message)]
8728pub struct BlockSplitFtraceEvent {
8729    #[prost(uint64, optional, tag="1")]
8730    pub dev: ::core::option::Option<u64>,
8731    #[prost(uint64, optional, tag="2")]
8732    pub sector: ::core::option::Option<u64>,
8733    #[prost(uint64, optional, tag="3")]
8734    pub new_sector: ::core::option::Option<u64>,
8735    #[prost(string, optional, tag="4")]
8736    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8737    #[prost(string, optional, tag="5")]
8738    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8739}
8740#[derive(Clone, PartialEq, ::prost::Message)]
8741pub struct BlockTouchBufferFtraceEvent {
8742    #[prost(uint64, optional, tag="1")]
8743    pub dev: ::core::option::Option<u64>,
8744    #[prost(uint64, optional, tag="2")]
8745    pub sector: ::core::option::Option<u64>,
8746    #[prost(uint64, optional, tag="3")]
8747    pub size: ::core::option::Option<u64>,
8748}
8749#[derive(Clone, PartialEq, ::prost::Message)]
8750pub struct BlockUnplugFtraceEvent {
8751    #[prost(int32, optional, tag="1")]
8752    pub nr_rq: ::core::option::Option<i32>,
8753    #[prost(string, optional, tag="2")]
8754    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8755}
8756#[derive(Clone, PartialEq, ::prost::Message)]
8757pub struct BlockIoStartFtraceEvent {
8758    #[prost(uint64, optional, tag="1")]
8759    pub dev: ::core::option::Option<u64>,
8760    #[prost(uint64, optional, tag="2")]
8761    pub sector: ::core::option::Option<u64>,
8762    #[prost(uint32, optional, tag="3")]
8763    pub nr_sector: ::core::option::Option<u32>,
8764    #[prost(uint32, optional, tag="4")]
8765    pub bytes: ::core::option::Option<u32>,
8766    #[prost(uint32, optional, tag="5")]
8767    pub ioprio: ::core::option::Option<u32>,
8768    #[prost(string, optional, tag="6")]
8769    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8770    #[prost(string, optional, tag="7")]
8771    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8772    #[prost(string, optional, tag="8")]
8773    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8774}
8775#[derive(Clone, PartialEq, ::prost::Message)]
8776pub struct BlockIoDoneFtraceEvent {
8777    #[prost(uint64, optional, tag="1")]
8778    pub dev: ::core::option::Option<u64>,
8779    #[prost(uint64, optional, tag="2")]
8780    pub sector: ::core::option::Option<u64>,
8781    #[prost(uint32, optional, tag="3")]
8782    pub nr_sector: ::core::option::Option<u32>,
8783    #[prost(uint32, optional, tag="4")]
8784    pub bytes: ::core::option::Option<u32>,
8785    #[prost(uint32, optional, tag="5")]
8786    pub ioprio: ::core::option::Option<u32>,
8787    #[prost(string, optional, tag="6")]
8788    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
8789    #[prost(string, optional, tag="7")]
8790    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8791    #[prost(string, optional, tag="8")]
8792    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
8793}
8794// End of protos/perfetto/trace/ftrace/block.proto
8795
8796// Begin of protos/perfetto/trace/ftrace/cgroup.proto
8797
8798#[derive(Clone, PartialEq, ::prost::Message)]
8799pub struct CgroupAttachTaskFtraceEvent {
8800    #[prost(int32, optional, tag="1")]
8801    pub dst_root: ::core::option::Option<i32>,
8802    #[prost(int32, optional, tag="2")]
8803    pub dst_id: ::core::option::Option<i32>,
8804    #[prost(int32, optional, tag="3")]
8805    pub pid: ::core::option::Option<i32>,
8806    #[prost(string, optional, tag="4")]
8807    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8808    #[prost(string, optional, tag="5")]
8809    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8810    #[prost(int32, optional, tag="6")]
8811    pub dst_level: ::core::option::Option<i32>,
8812    #[prost(string, optional, tag="7")]
8813    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
8814}
8815#[derive(Clone, PartialEq, ::prost::Message)]
8816pub struct CgroupMkdirFtraceEvent {
8817    #[prost(int32, optional, tag="1")]
8818    pub root: ::core::option::Option<i32>,
8819    #[prost(int32, optional, tag="2")]
8820    pub id: ::core::option::Option<i32>,
8821    #[prost(string, optional, tag="3")]
8822    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8823    #[prost(int32, optional, tag="4")]
8824    pub level: ::core::option::Option<i32>,
8825    #[prost(string, optional, tag="5")]
8826    pub path: ::core::option::Option<::prost::alloc::string::String>,
8827}
8828#[derive(Clone, PartialEq, ::prost::Message)]
8829pub struct CgroupRemountFtraceEvent {
8830    #[prost(int32, optional, tag="1")]
8831    pub root: ::core::option::Option<i32>,
8832    #[prost(uint32, optional, tag="2")]
8833    pub ss_mask: ::core::option::Option<u32>,
8834    #[prost(string, optional, tag="3")]
8835    pub name: ::core::option::Option<::prost::alloc::string::String>,
8836}
8837#[derive(Clone, PartialEq, ::prost::Message)]
8838pub struct CgroupRmdirFtraceEvent {
8839    #[prost(int32, optional, tag="1")]
8840    pub root: ::core::option::Option<i32>,
8841    #[prost(int32, optional, tag="2")]
8842    pub id: ::core::option::Option<i32>,
8843    #[prost(string, optional, tag="3")]
8844    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8845    #[prost(int32, optional, tag="4")]
8846    pub level: ::core::option::Option<i32>,
8847    #[prost(string, optional, tag="5")]
8848    pub path: ::core::option::Option<::prost::alloc::string::String>,
8849}
8850#[derive(Clone, PartialEq, ::prost::Message)]
8851pub struct CgroupTransferTasksFtraceEvent {
8852    #[prost(int32, optional, tag="1")]
8853    pub dst_root: ::core::option::Option<i32>,
8854    #[prost(int32, optional, tag="2")]
8855    pub dst_id: ::core::option::Option<i32>,
8856    #[prost(int32, optional, tag="3")]
8857    pub pid: ::core::option::Option<i32>,
8858    #[prost(string, optional, tag="4")]
8859    pub comm: ::core::option::Option<::prost::alloc::string::String>,
8860    #[prost(string, optional, tag="5")]
8861    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8862    #[prost(int32, optional, tag="6")]
8863    pub dst_level: ::core::option::Option<i32>,
8864    #[prost(string, optional, tag="7")]
8865    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
8866}
8867#[derive(Clone, PartialEq, ::prost::Message)]
8868pub struct CgroupDestroyRootFtraceEvent {
8869    #[prost(int32, optional, tag="1")]
8870    pub root: ::core::option::Option<i32>,
8871    #[prost(uint32, optional, tag="2")]
8872    pub ss_mask: ::core::option::Option<u32>,
8873    #[prost(string, optional, tag="3")]
8874    pub name: ::core::option::Option<::prost::alloc::string::String>,
8875}
8876#[derive(Clone, PartialEq, ::prost::Message)]
8877pub struct CgroupReleaseFtraceEvent {
8878    #[prost(int32, optional, tag="1")]
8879    pub root: ::core::option::Option<i32>,
8880    #[prost(int32, optional, tag="2")]
8881    pub id: ::core::option::Option<i32>,
8882    #[prost(string, optional, tag="3")]
8883    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8884    #[prost(int32, optional, tag="4")]
8885    pub level: ::core::option::Option<i32>,
8886    #[prost(string, optional, tag="5")]
8887    pub path: ::core::option::Option<::prost::alloc::string::String>,
8888}
8889#[derive(Clone, PartialEq, ::prost::Message)]
8890pub struct CgroupRenameFtraceEvent {
8891    #[prost(int32, optional, tag="1")]
8892    pub root: ::core::option::Option<i32>,
8893    #[prost(int32, optional, tag="2")]
8894    pub id: ::core::option::Option<i32>,
8895    #[prost(string, optional, tag="3")]
8896    pub cname: ::core::option::Option<::prost::alloc::string::String>,
8897    #[prost(int32, optional, tag="4")]
8898    pub level: ::core::option::Option<i32>,
8899    #[prost(string, optional, tag="5")]
8900    pub path: ::core::option::Option<::prost::alloc::string::String>,
8901}
8902#[derive(Clone, PartialEq, ::prost::Message)]
8903pub struct CgroupSetupRootFtraceEvent {
8904    #[prost(int32, optional, tag="1")]
8905    pub root: ::core::option::Option<i32>,
8906    #[prost(uint32, optional, tag="2")]
8907    pub ss_mask: ::core::option::Option<u32>,
8908    #[prost(string, optional, tag="3")]
8909    pub name: ::core::option::Option<::prost::alloc::string::String>,
8910}
8911// End of protos/perfetto/trace/ftrace/cgroup.proto
8912
8913// Begin of protos/perfetto/trace/ftrace/clk.proto
8914
8915#[derive(Clone, PartialEq, ::prost::Message)]
8916pub struct ClkEnableFtraceEvent {
8917    #[prost(string, optional, tag="1")]
8918    pub name: ::core::option::Option<::prost::alloc::string::String>,
8919}
8920#[derive(Clone, PartialEq, ::prost::Message)]
8921pub struct ClkDisableFtraceEvent {
8922    #[prost(string, optional, tag="1")]
8923    pub name: ::core::option::Option<::prost::alloc::string::String>,
8924}
8925#[derive(Clone, PartialEq, ::prost::Message)]
8926pub struct ClkSetRateFtraceEvent {
8927    #[prost(string, optional, tag="1")]
8928    pub name: ::core::option::Option<::prost::alloc::string::String>,
8929    #[prost(uint64, optional, tag="2")]
8930    pub rate: ::core::option::Option<u64>,
8931}
8932// End of protos/perfetto/trace/ftrace/clk.proto
8933
8934// Begin of protos/perfetto/trace/ftrace/cma.proto
8935
8936#[derive(Clone, PartialEq, ::prost::Message)]
8937pub struct CmaAllocStartFtraceEvent {
8938    #[prost(uint32, optional, tag="1")]
8939    pub align: ::core::option::Option<u32>,
8940    #[prost(uint32, optional, tag="2")]
8941    pub count: ::core::option::Option<u32>,
8942    #[prost(string, optional, tag="3")]
8943    pub name: ::core::option::Option<::prost::alloc::string::String>,
8944}
8945#[derive(Clone, PartialEq, ::prost::Message)]
8946pub struct CmaAllocInfoFtraceEvent {
8947    #[prost(uint32, optional, tag="1")]
8948    pub align: ::core::option::Option<u32>,
8949    #[prost(uint32, optional, tag="2")]
8950    pub count: ::core::option::Option<u32>,
8951    #[prost(uint32, optional, tag="3")]
8952    pub err_iso: ::core::option::Option<u32>,
8953    #[prost(uint32, optional, tag="4")]
8954    pub err_mig: ::core::option::Option<u32>,
8955    #[prost(uint32, optional, tag="5")]
8956    pub err_test: ::core::option::Option<u32>,
8957    #[prost(string, optional, tag="6")]
8958    pub name: ::core::option::Option<::prost::alloc::string::String>,
8959    #[prost(uint64, optional, tag="7")]
8960    pub nr_mapped: ::core::option::Option<u64>,
8961    #[prost(uint64, optional, tag="8")]
8962    pub nr_migrated: ::core::option::Option<u64>,
8963    #[prost(uint64, optional, tag="9")]
8964    pub nr_reclaimed: ::core::option::Option<u64>,
8965    #[prost(uint64, optional, tag="10")]
8966    pub pfn: ::core::option::Option<u64>,
8967}
8968// End of protos/perfetto/trace/ftrace/cma.proto
8969
8970// Begin of protos/perfetto/trace/ftrace/compaction.proto
8971
8972#[derive(Clone, PartialEq, ::prost::Message)]
8973pub struct MmCompactionBeginFtraceEvent {
8974    #[prost(uint64, optional, tag="1")]
8975    pub zone_start: ::core::option::Option<u64>,
8976    #[prost(uint64, optional, tag="2")]
8977    pub migrate_pfn: ::core::option::Option<u64>,
8978    #[prost(uint64, optional, tag="3")]
8979    pub free_pfn: ::core::option::Option<u64>,
8980    #[prost(uint64, optional, tag="4")]
8981    pub zone_end: ::core::option::Option<u64>,
8982    #[prost(uint32, optional, tag="5")]
8983    pub sync: ::core::option::Option<u32>,
8984}
8985#[derive(Clone, PartialEq, ::prost::Message)]
8986pub struct MmCompactionDeferCompactionFtraceEvent {
8987    #[prost(int32, optional, tag="1")]
8988    pub nid: ::core::option::Option<i32>,
8989    #[prost(uint32, optional, tag="2")]
8990    pub idx: ::core::option::Option<u32>,
8991    #[prost(int32, optional, tag="3")]
8992    pub order: ::core::option::Option<i32>,
8993    #[prost(uint32, optional, tag="4")]
8994    pub considered: ::core::option::Option<u32>,
8995    #[prost(uint32, optional, tag="5")]
8996    pub defer_shift: ::core::option::Option<u32>,
8997    #[prost(int32, optional, tag="6")]
8998    pub order_failed: ::core::option::Option<i32>,
8999}
9000#[derive(Clone, PartialEq, ::prost::Message)]
9001pub struct MmCompactionDeferredFtraceEvent {
9002    #[prost(int32, optional, tag="1")]
9003    pub nid: ::core::option::Option<i32>,
9004    #[prost(uint32, optional, tag="2")]
9005    pub idx: ::core::option::Option<u32>,
9006    #[prost(int32, optional, tag="3")]
9007    pub order: ::core::option::Option<i32>,
9008    #[prost(uint32, optional, tag="4")]
9009    pub considered: ::core::option::Option<u32>,
9010    #[prost(uint32, optional, tag="5")]
9011    pub defer_shift: ::core::option::Option<u32>,
9012    #[prost(int32, optional, tag="6")]
9013    pub order_failed: ::core::option::Option<i32>,
9014}
9015#[derive(Clone, PartialEq, ::prost::Message)]
9016pub struct MmCompactionDeferResetFtraceEvent {
9017    #[prost(int32, optional, tag="1")]
9018    pub nid: ::core::option::Option<i32>,
9019    #[prost(uint32, optional, tag="2")]
9020    pub idx: ::core::option::Option<u32>,
9021    #[prost(int32, optional, tag="3")]
9022    pub order: ::core::option::Option<i32>,
9023    #[prost(uint32, optional, tag="4")]
9024    pub considered: ::core::option::Option<u32>,
9025    #[prost(uint32, optional, tag="5")]
9026    pub defer_shift: ::core::option::Option<u32>,
9027    #[prost(int32, optional, tag="6")]
9028    pub order_failed: ::core::option::Option<i32>,
9029}
9030#[derive(Clone, PartialEq, ::prost::Message)]
9031pub struct MmCompactionEndFtraceEvent {
9032    #[prost(uint64, optional, tag="1")]
9033    pub zone_start: ::core::option::Option<u64>,
9034    #[prost(uint64, optional, tag="2")]
9035    pub migrate_pfn: ::core::option::Option<u64>,
9036    #[prost(uint64, optional, tag="3")]
9037    pub free_pfn: ::core::option::Option<u64>,
9038    #[prost(uint64, optional, tag="4")]
9039    pub zone_end: ::core::option::Option<u64>,
9040    #[prost(uint32, optional, tag="5")]
9041    pub sync: ::core::option::Option<u32>,
9042    #[prost(int32, optional, tag="6")]
9043    pub status: ::core::option::Option<i32>,
9044}
9045#[derive(Clone, PartialEq, ::prost::Message)]
9046pub struct MmCompactionFinishedFtraceEvent {
9047    #[prost(int32, optional, tag="1")]
9048    pub nid: ::core::option::Option<i32>,
9049    #[prost(uint32, optional, tag="2")]
9050    pub idx: ::core::option::Option<u32>,
9051    #[prost(int32, optional, tag="3")]
9052    pub order: ::core::option::Option<i32>,
9053    #[prost(int32, optional, tag="4")]
9054    pub ret: ::core::option::Option<i32>,
9055}
9056#[derive(Clone, PartialEq, ::prost::Message)]
9057pub struct MmCompactionIsolateFreepagesFtraceEvent {
9058    #[prost(uint64, optional, tag="1")]
9059    pub start_pfn: ::core::option::Option<u64>,
9060    #[prost(uint64, optional, tag="2")]
9061    pub end_pfn: ::core::option::Option<u64>,
9062    #[prost(uint64, optional, tag="3")]
9063    pub nr_scanned: ::core::option::Option<u64>,
9064    #[prost(uint64, optional, tag="4")]
9065    pub nr_taken: ::core::option::Option<u64>,
9066}
9067#[derive(Clone, PartialEq, ::prost::Message)]
9068pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9069    #[prost(uint64, optional, tag="1")]
9070    pub start_pfn: ::core::option::Option<u64>,
9071    #[prost(uint64, optional, tag="2")]
9072    pub end_pfn: ::core::option::Option<u64>,
9073    #[prost(uint64, optional, tag="3")]
9074    pub nr_scanned: ::core::option::Option<u64>,
9075    #[prost(uint64, optional, tag="4")]
9076    pub nr_taken: ::core::option::Option<u64>,
9077}
9078#[derive(Clone, PartialEq, ::prost::Message)]
9079pub struct MmCompactionKcompactdSleepFtraceEvent {
9080    #[prost(int32, optional, tag="1")]
9081    pub nid: ::core::option::Option<i32>,
9082}
9083#[derive(Clone, PartialEq, ::prost::Message)]
9084pub struct MmCompactionKcompactdWakeFtraceEvent {
9085    #[prost(int32, optional, tag="1")]
9086    pub nid: ::core::option::Option<i32>,
9087    #[prost(int32, optional, tag="2")]
9088    pub order: ::core::option::Option<i32>,
9089    #[prost(uint32, optional, tag="3")]
9090    pub classzone_idx: ::core::option::Option<u32>,
9091    #[prost(uint32, optional, tag="4")]
9092    pub highest_zoneidx: ::core::option::Option<u32>,
9093}
9094#[derive(Clone, PartialEq, ::prost::Message)]
9095pub struct MmCompactionMigratepagesFtraceEvent {
9096    #[prost(uint64, optional, tag="1")]
9097    pub nr_migrated: ::core::option::Option<u64>,
9098    #[prost(uint64, optional, tag="2")]
9099    pub nr_failed: ::core::option::Option<u64>,
9100}
9101#[derive(Clone, PartialEq, ::prost::Message)]
9102pub struct MmCompactionSuitableFtraceEvent {
9103    #[prost(int32, optional, tag="1")]
9104    pub nid: ::core::option::Option<i32>,
9105    #[prost(uint32, optional, tag="2")]
9106    pub idx: ::core::option::Option<u32>,
9107    #[prost(int32, optional, tag="3")]
9108    pub order: ::core::option::Option<i32>,
9109    #[prost(int32, optional, tag="4")]
9110    pub ret: ::core::option::Option<i32>,
9111}
9112#[derive(Clone, PartialEq, ::prost::Message)]
9113pub struct MmCompactionTryToCompactPagesFtraceEvent {
9114    #[prost(int32, optional, tag="1")]
9115    pub order: ::core::option::Option<i32>,
9116    #[prost(uint32, optional, tag="2")]
9117    pub gfp_mask: ::core::option::Option<u32>,
9118    #[prost(uint32, optional, tag="3")]
9119    pub mode: ::core::option::Option<u32>,
9120    #[prost(int32, optional, tag="4")]
9121    pub prio: ::core::option::Option<i32>,
9122}
9123#[derive(Clone, PartialEq, ::prost::Message)]
9124pub struct MmCompactionWakeupKcompactdFtraceEvent {
9125    #[prost(int32, optional, tag="1")]
9126    pub nid: ::core::option::Option<i32>,
9127    #[prost(int32, optional, tag="2")]
9128    pub order: ::core::option::Option<i32>,
9129    #[prost(uint32, optional, tag="3")]
9130    pub classzone_idx: ::core::option::Option<u32>,
9131    #[prost(uint32, optional, tag="4")]
9132    pub highest_zoneidx: ::core::option::Option<u32>,
9133}
9134// End of protos/perfetto/trace/ftrace/compaction.proto
9135
9136// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
9137
9138#[derive(Clone, PartialEq, ::prost::Message)]
9139pub struct ParamSetValueCpmFtraceEvent {
9140    #[prost(string, optional, tag="1")]
9141    pub body: ::core::option::Option<::prost::alloc::string::String>,
9142    #[prost(uint32, optional, tag="2")]
9143    pub value: ::core::option::Option<u32>,
9144    #[prost(int64, optional, tag="3")]
9145    pub timestamp: ::core::option::Option<i64>,
9146}
9147// End of protos/perfetto/trace/ftrace/cpm_trace.proto
9148
9149// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
9150
9151#[derive(Clone, PartialEq, ::prost::Message)]
9152pub struct CpuhpExitFtraceEvent {
9153    #[prost(uint32, optional, tag="1")]
9154    pub cpu: ::core::option::Option<u32>,
9155    #[prost(int32, optional, tag="2")]
9156    pub idx: ::core::option::Option<i32>,
9157    #[prost(int32, optional, tag="3")]
9158    pub ret: ::core::option::Option<i32>,
9159    #[prost(int32, optional, tag="4")]
9160    pub state: ::core::option::Option<i32>,
9161}
9162#[derive(Clone, PartialEq, ::prost::Message)]
9163pub struct CpuhpMultiEnterFtraceEvent {
9164    #[prost(uint32, optional, tag="1")]
9165    pub cpu: ::core::option::Option<u32>,
9166    #[prost(uint64, optional, tag="2")]
9167    pub fun: ::core::option::Option<u64>,
9168    #[prost(int32, optional, tag="3")]
9169    pub idx: ::core::option::Option<i32>,
9170    #[prost(int32, optional, tag="4")]
9171    pub target: ::core::option::Option<i32>,
9172}
9173#[derive(Clone, PartialEq, ::prost::Message)]
9174pub struct CpuhpEnterFtraceEvent {
9175    #[prost(uint32, optional, tag="1")]
9176    pub cpu: ::core::option::Option<u32>,
9177    #[prost(uint64, optional, tag="2")]
9178    pub fun: ::core::option::Option<u64>,
9179    #[prost(int32, optional, tag="3")]
9180    pub idx: ::core::option::Option<i32>,
9181    #[prost(int32, optional, tag="4")]
9182    pub target: ::core::option::Option<i32>,
9183}
9184#[derive(Clone, PartialEq, ::prost::Message)]
9185pub struct CpuhpLatencyFtraceEvent {
9186    #[prost(uint32, optional, tag="1")]
9187    pub cpu: ::core::option::Option<u32>,
9188    #[prost(int32, optional, tag="2")]
9189    pub ret: ::core::option::Option<i32>,
9190    #[prost(uint32, optional, tag="3")]
9191    pub state: ::core::option::Option<u32>,
9192    #[prost(uint64, optional, tag="4")]
9193    pub time: ::core::option::Option<u64>,
9194}
9195#[derive(Clone, PartialEq, ::prost::Message)]
9196pub struct CpuhpPauseFtraceEvent {
9197    #[prost(uint32, optional, tag="1")]
9198    pub active_cpus: ::core::option::Option<u32>,
9199    #[prost(uint32, optional, tag="2")]
9200    pub cpus: ::core::option::Option<u32>,
9201    #[prost(uint32, optional, tag="3")]
9202    pub pause: ::core::option::Option<u32>,
9203    #[prost(uint32, optional, tag="4")]
9204    pub time: ::core::option::Option<u32>,
9205}
9206// End of protos/perfetto/trace/ftrace/cpuhp.proto
9207
9208// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
9209
9210#[derive(Clone, PartialEq, ::prost::Message)]
9211pub struct CrosEcSensorhubDataFtraceEvent {
9212    #[prost(int64, optional, tag="1")]
9213    pub current_time: ::core::option::Option<i64>,
9214    #[prost(int64, optional, tag="2")]
9215    pub current_timestamp: ::core::option::Option<i64>,
9216    #[prost(int64, optional, tag="3")]
9217    pub delta: ::core::option::Option<i64>,
9218    #[prost(uint32, optional, tag="4")]
9219    pub ec_fifo_timestamp: ::core::option::Option<u32>,
9220    #[prost(uint32, optional, tag="5")]
9221    pub ec_sensor_num: ::core::option::Option<u32>,
9222    #[prost(int64, optional, tag="6")]
9223    pub fifo_timestamp: ::core::option::Option<i64>,
9224}
9225// End of protos/perfetto/trace/ftrace/cros_ec.proto
9226
9227// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
9228
9229#[derive(Clone, PartialEq, ::prost::Message)]
9230pub struct DcvshFreqFtraceEvent {
9231    #[prost(uint64, optional, tag="1")]
9232    pub cpu: ::core::option::Option<u64>,
9233    #[prost(uint64, optional, tag="2")]
9234    pub freq: ::core::option::Option<u64>,
9235}
9236// End of protos/perfetto/trace/ftrace/dcvsh.proto
9237
9238// Begin of protos/perfetto/trace/ftrace/devfreq.proto
9239
9240#[derive(Clone, PartialEq, ::prost::Message)]
9241pub struct DevfreqFrequencyFtraceEvent {
9242    #[prost(string, optional, tag="1")]
9243    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
9244    #[prost(uint64, optional, tag="2")]
9245    pub freq: ::core::option::Option<u64>,
9246    #[prost(uint64, optional, tag="3")]
9247    pub prev_freq: ::core::option::Option<u64>,
9248    #[prost(uint64, optional, tag="4")]
9249    pub busy_time: ::core::option::Option<u64>,
9250    #[prost(uint64, optional, tag="5")]
9251    pub total_time: ::core::option::Option<u64>,
9252}
9253// End of protos/perfetto/trace/ftrace/devfreq.proto
9254
9255// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
9256
9257#[derive(Clone, PartialEq, ::prost::Message)]
9258pub struct DmaFenceInitFtraceEvent {
9259    #[prost(uint32, optional, tag="1")]
9260    pub context: ::core::option::Option<u32>,
9261    #[prost(string, optional, tag="2")]
9262    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9263    #[prost(uint32, optional, tag="3")]
9264    pub seqno: ::core::option::Option<u32>,
9265    #[prost(string, optional, tag="4")]
9266    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9267}
9268#[derive(Clone, PartialEq, ::prost::Message)]
9269pub struct DmaFenceEmitFtraceEvent {
9270    #[prost(uint32, optional, tag="1")]
9271    pub context: ::core::option::Option<u32>,
9272    #[prost(string, optional, tag="2")]
9273    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9274    #[prost(uint32, optional, tag="3")]
9275    pub seqno: ::core::option::Option<u32>,
9276    #[prost(string, optional, tag="4")]
9277    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9278}
9279#[derive(Clone, PartialEq, ::prost::Message)]
9280pub struct DmaFenceSignaledFtraceEvent {
9281    #[prost(uint32, optional, tag="1")]
9282    pub context: ::core::option::Option<u32>,
9283    #[prost(string, optional, tag="2")]
9284    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9285    #[prost(uint32, optional, tag="3")]
9286    pub seqno: ::core::option::Option<u32>,
9287    #[prost(string, optional, tag="4")]
9288    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9289}
9290#[derive(Clone, PartialEq, ::prost::Message)]
9291pub struct DmaFenceWaitStartFtraceEvent {
9292    #[prost(uint32, optional, tag="1")]
9293    pub context: ::core::option::Option<u32>,
9294    #[prost(string, optional, tag="2")]
9295    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9296    #[prost(uint32, optional, tag="3")]
9297    pub seqno: ::core::option::Option<u32>,
9298    #[prost(string, optional, tag="4")]
9299    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9300}
9301#[derive(Clone, PartialEq, ::prost::Message)]
9302pub struct DmaFenceWaitEndFtraceEvent {
9303    #[prost(uint32, optional, tag="1")]
9304    pub context: ::core::option::Option<u32>,
9305    #[prost(string, optional, tag="2")]
9306    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9307    #[prost(uint32, optional, tag="3")]
9308    pub seqno: ::core::option::Option<u32>,
9309    #[prost(string, optional, tag="4")]
9310    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9311}
9312// End of protos/perfetto/trace/ftrace/dma_fence.proto
9313
9314// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9315
9316#[derive(Clone, PartialEq, ::prost::Message)]
9317pub struct DmaHeapStatFtraceEvent {
9318    #[prost(uint64, optional, tag="1")]
9319    pub inode: ::core::option::Option<u64>,
9320    #[prost(int64, optional, tag="2")]
9321    pub len: ::core::option::Option<i64>,
9322    #[prost(uint64, optional, tag="3")]
9323    pub total_allocated: ::core::option::Option<u64>,
9324}
9325// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9326
9327// Begin of protos/perfetto/trace/ftrace/dpu.proto
9328
9329#[derive(Clone, PartialEq, ::prost::Message)]
9330pub struct DpuTracingMarkWriteFtraceEvent {
9331    #[prost(int32, optional, tag="1")]
9332    pub pid: ::core::option::Option<i32>,
9333    #[prost(string, optional, tag="2")]
9334    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
9335    #[prost(uint32, optional, tag="3")]
9336    pub trace_begin: ::core::option::Option<u32>,
9337    #[prost(string, optional, tag="4")]
9338    pub name: ::core::option::Option<::prost::alloc::string::String>,
9339    #[prost(uint32, optional, tag="5")]
9340    pub r#type: ::core::option::Option<u32>,
9341    #[prost(int32, optional, tag="6")]
9342    pub value: ::core::option::Option<i32>,
9343}
9344#[derive(Clone, PartialEq, ::prost::Message)]
9345pub struct DpuDsiCmdFifoStatusFtraceEvent {
9346    #[prost(uint32, optional, tag="1")]
9347    pub header: ::core::option::Option<u32>,
9348    #[prost(uint32, optional, tag="2")]
9349    pub payload: ::core::option::Option<u32>,
9350}
9351#[derive(Clone, PartialEq, ::prost::Message)]
9352pub struct DpuDsiRxFtraceEvent {
9353    #[prost(uint32, optional, tag="1")]
9354    pub cmd: ::core::option::Option<u32>,
9355    #[prost(uint32, optional, tag="2")]
9356    pub rx_buf: ::core::option::Option<u32>,
9357}
9358#[derive(Clone, PartialEq, ::prost::Message)]
9359pub struct DpuDsiTxFtraceEvent {
9360    #[prost(uint32, optional, tag="1")]
9361    pub r#type: ::core::option::Option<u32>,
9362    #[prost(uint32, optional, tag="2")]
9363    pub tx_buf: ::core::option::Option<u32>,
9364    #[prost(uint32, optional, tag="3")]
9365    pub last: ::core::option::Option<u32>,
9366    #[prost(uint32, optional, tag="4")]
9367    pub delay_ms: ::core::option::Option<u32>,
9368}
9369#[derive(Clone, PartialEq, ::prost::Message)]
9370pub struct DpuDispDpuUnderrunFtraceEvent {
9371    #[prost(int32, optional, tag="1")]
9372    pub id: ::core::option::Option<i32>,
9373    #[prost(int32, optional, tag="2")]
9374    pub frames_pending: ::core::option::Option<i32>,
9375    #[prost(int32, optional, tag="3")]
9376    pub vsync_count: ::core::option::Option<i32>,
9377}
9378#[derive(Clone, PartialEq, ::prost::Message)]
9379pub struct DpuDispVblankIrqEnableFtraceEvent {
9380    #[prost(int32, optional, tag="1")]
9381    pub id: ::core::option::Option<i32>,
9382    #[prost(int32, optional, tag="2")]
9383    pub output_id: ::core::option::Option<i32>,
9384    #[prost(int32, optional, tag="3")]
9385    pub enable: ::core::option::Option<i32>,
9386}
9387// End of protos/perfetto/trace/ftrace/dpu.proto
9388
9389// Begin of protos/perfetto/trace/ftrace/drm.proto
9390
9391#[derive(Clone, PartialEq, ::prost::Message)]
9392pub struct DrmVblankEventFtraceEvent {
9393    #[prost(int32, optional, tag="1")]
9394    pub crtc: ::core::option::Option<i32>,
9395    #[prost(uint32, optional, tag="2")]
9396    pub high_prec: ::core::option::Option<u32>,
9397    #[prost(uint32, optional, tag="3")]
9398    pub seq: ::core::option::Option<u32>,
9399    #[prost(int64, optional, tag="4")]
9400    pub time: ::core::option::Option<i64>,
9401}
9402#[derive(Clone, PartialEq, ::prost::Message)]
9403pub struct DrmVblankEventDeliveredFtraceEvent {
9404    #[prost(int32, optional, tag="1")]
9405    pub crtc: ::core::option::Option<i32>,
9406    #[prost(uint64, optional, tag="2")]
9407    pub file: ::core::option::Option<u64>,
9408    #[prost(uint32, optional, tag="3")]
9409    pub seq: ::core::option::Option<u32>,
9410}
9411// End of protos/perfetto/trace/ftrace/drm.proto
9412
9413// Begin of protos/perfetto/trace/ftrace/dwc3.proto
9414
9415#[derive(Clone, PartialEq, ::prost::Message)]
9416pub struct Dwc3AllocRequestFtraceEvent {
9417    #[prost(string, optional, tag="1")]
9418    pub name: ::core::option::Option<::prost::alloc::string::String>,
9419    #[prost(uint64, optional, tag="2")]
9420    pub req: ::core::option::Option<u64>,
9421    #[prost(uint32, optional, tag="3")]
9422    pub actual: ::core::option::Option<u32>,
9423    #[prost(uint32, optional, tag="4")]
9424    pub length: ::core::option::Option<u32>,
9425    #[prost(int32, optional, tag="5")]
9426    pub status: ::core::option::Option<i32>,
9427    #[prost(int32, optional, tag="6")]
9428    pub zero: ::core::option::Option<i32>,
9429    #[prost(int32, optional, tag="7")]
9430    pub short_not_ok: ::core::option::Option<i32>,
9431    #[prost(int32, optional, tag="8")]
9432    pub no_interrupt: ::core::option::Option<i32>,
9433}
9434#[derive(Clone, PartialEq, ::prost::Message)]
9435pub struct Dwc3CompleteTrbFtraceEvent {
9436    #[prost(string, optional, tag="1")]
9437    pub name: ::core::option::Option<::prost::alloc::string::String>,
9438    #[prost(uint64, optional, tag="2")]
9439    pub trb: ::core::option::Option<u64>,
9440    #[prost(uint32, optional, tag="3")]
9441    pub allocated: ::core::option::Option<u32>,
9442    #[prost(uint32, optional, tag="4")]
9443    pub queued: ::core::option::Option<u32>,
9444    #[prost(uint32, optional, tag="5")]
9445    pub bpl: ::core::option::Option<u32>,
9446    #[prost(uint32, optional, tag="6")]
9447    pub bph: ::core::option::Option<u32>,
9448    #[prost(uint32, optional, tag="7")]
9449    pub size: ::core::option::Option<u32>,
9450    #[prost(uint32, optional, tag="8")]
9451    pub ctrl: ::core::option::Option<u32>,
9452    #[prost(uint32, optional, tag="9")]
9453    pub r#type: ::core::option::Option<u32>,
9454    #[prost(uint32, optional, tag="10")]
9455    pub enqueue: ::core::option::Option<u32>,
9456    #[prost(uint32, optional, tag="11")]
9457    pub dequeue: ::core::option::Option<u32>,
9458}
9459#[derive(Clone, PartialEq, ::prost::Message)]
9460pub struct Dwc3CtrlReqFtraceEvent {
9461    #[prost(uint32, optional, tag="1")]
9462    pub b_request_type: ::core::option::Option<u32>,
9463    #[prost(uint32, optional, tag="2")]
9464    pub b_request: ::core::option::Option<u32>,
9465    #[prost(uint32, optional, tag="3")]
9466    pub w_value: ::core::option::Option<u32>,
9467    #[prost(uint32, optional, tag="4")]
9468    pub w_index: ::core::option::Option<u32>,
9469    #[prost(uint32, optional, tag="5")]
9470    pub w_length: ::core::option::Option<u32>,
9471    #[prost(string, optional, tag="6")]
9472    pub str: ::core::option::Option<::prost::alloc::string::String>,
9473}
9474#[derive(Clone, PartialEq, ::prost::Message)]
9475pub struct Dwc3EpDequeueFtraceEvent {
9476    #[prost(string, optional, tag="1")]
9477    pub name: ::core::option::Option<::prost::alloc::string::String>,
9478    #[prost(uint64, optional, tag="2")]
9479    pub req: ::core::option::Option<u64>,
9480    #[prost(uint32, optional, tag="3")]
9481    pub actual: ::core::option::Option<u32>,
9482    #[prost(uint32, optional, tag="4")]
9483    pub length: ::core::option::Option<u32>,
9484    #[prost(int32, optional, tag="5")]
9485    pub status: ::core::option::Option<i32>,
9486    #[prost(int32, optional, tag="6")]
9487    pub zero: ::core::option::Option<i32>,
9488    #[prost(int32, optional, tag="7")]
9489    pub short_not_ok: ::core::option::Option<i32>,
9490    #[prost(int32, optional, tag="8")]
9491    pub no_interrupt: ::core::option::Option<i32>,
9492}
9493#[derive(Clone, PartialEq, ::prost::Message)]
9494pub struct Dwc3EpQueueFtraceEvent {
9495    #[prost(string, optional, tag="1")]
9496    pub name: ::core::option::Option<::prost::alloc::string::String>,
9497    #[prost(uint64, optional, tag="2")]
9498    pub req: ::core::option::Option<u64>,
9499    #[prost(uint32, optional, tag="3")]
9500    pub actual: ::core::option::Option<u32>,
9501    #[prost(uint32, optional, tag="4")]
9502    pub length: ::core::option::Option<u32>,
9503    #[prost(int32, optional, tag="5")]
9504    pub status: ::core::option::Option<i32>,
9505    #[prost(int32, optional, tag="6")]
9506    pub zero: ::core::option::Option<i32>,
9507    #[prost(int32, optional, tag="7")]
9508    pub short_not_ok: ::core::option::Option<i32>,
9509    #[prost(int32, optional, tag="8")]
9510    pub no_interrupt: ::core::option::Option<i32>,
9511}
9512#[derive(Clone, PartialEq, ::prost::Message)]
9513pub struct Dwc3EventFtraceEvent {
9514    #[prost(uint32, optional, tag="1")]
9515    pub event: ::core::option::Option<u32>,
9516    #[prost(uint32, optional, tag="2")]
9517    pub ep0state: ::core::option::Option<u32>,
9518    #[prost(string, optional, tag="3")]
9519    pub str: ::core::option::Option<::prost::alloc::string::String>,
9520}
9521#[derive(Clone, PartialEq, ::prost::Message)]
9522pub struct Dwc3FreeRequestFtraceEvent {
9523    #[prost(string, optional, tag="1")]
9524    pub name: ::core::option::Option<::prost::alloc::string::String>,
9525    #[prost(uint64, optional, tag="2")]
9526    pub req: ::core::option::Option<u64>,
9527    #[prost(uint32, optional, tag="3")]
9528    pub actual: ::core::option::Option<u32>,
9529    #[prost(uint32, optional, tag="4")]
9530    pub length: ::core::option::Option<u32>,
9531    #[prost(int32, optional, tag="5")]
9532    pub status: ::core::option::Option<i32>,
9533    #[prost(int32, optional, tag="6")]
9534    pub zero: ::core::option::Option<i32>,
9535    #[prost(int32, optional, tag="7")]
9536    pub short_not_ok: ::core::option::Option<i32>,
9537    #[prost(int32, optional, tag="8")]
9538    pub no_interrupt: ::core::option::Option<i32>,
9539}
9540#[derive(Clone, PartialEq, ::prost::Message)]
9541pub struct Dwc3GadgetEpCmdFtraceEvent {
9542    #[prost(string, optional, tag="1")]
9543    pub name: ::core::option::Option<::prost::alloc::string::String>,
9544    #[prost(uint32, optional, tag="2")]
9545    pub cmd: ::core::option::Option<u32>,
9546    #[prost(uint32, optional, tag="3")]
9547    pub param0: ::core::option::Option<u32>,
9548    #[prost(uint32, optional, tag="4")]
9549    pub param1: ::core::option::Option<u32>,
9550    #[prost(uint32, optional, tag="5")]
9551    pub param2: ::core::option::Option<u32>,
9552    #[prost(int32, optional, tag="6")]
9553    pub cmd_status: ::core::option::Option<i32>,
9554}
9555#[derive(Clone, PartialEq, ::prost::Message)]
9556pub struct Dwc3GadgetEpDisableFtraceEvent {
9557    #[prost(string, optional, tag="1")]
9558    pub name: ::core::option::Option<::prost::alloc::string::String>,
9559    #[prost(uint32, optional, tag="2")]
9560    pub maxpacket: ::core::option::Option<u32>,
9561    #[prost(uint32, optional, tag="3")]
9562    pub maxpacket_limit: ::core::option::Option<u32>,
9563    #[prost(uint32, optional, tag="4")]
9564    pub max_streams: ::core::option::Option<u32>,
9565    #[prost(uint32, optional, tag="5")]
9566    pub maxburst: ::core::option::Option<u32>,
9567    #[prost(uint32, optional, tag="6")]
9568    pub flags: ::core::option::Option<u32>,
9569    #[prost(uint32, optional, tag="7")]
9570    pub direction: ::core::option::Option<u32>,
9571    #[prost(uint32, optional, tag="8")]
9572    pub trb_enqueue: ::core::option::Option<u32>,
9573    #[prost(uint32, optional, tag="9")]
9574    pub trb_dequeue: ::core::option::Option<u32>,
9575}
9576#[derive(Clone, PartialEq, ::prost::Message)]
9577pub struct Dwc3GadgetEpEnableFtraceEvent {
9578    #[prost(string, optional, tag="1")]
9579    pub name: ::core::option::Option<::prost::alloc::string::String>,
9580    #[prost(uint32, optional, tag="2")]
9581    pub maxpacket: ::core::option::Option<u32>,
9582    #[prost(uint32, optional, tag="3")]
9583    pub maxpacket_limit: ::core::option::Option<u32>,
9584    #[prost(uint32, optional, tag="4")]
9585    pub max_streams: ::core::option::Option<u32>,
9586    #[prost(uint32, optional, tag="5")]
9587    pub maxburst: ::core::option::Option<u32>,
9588    #[prost(uint32, optional, tag="6")]
9589    pub flags: ::core::option::Option<u32>,
9590    #[prost(uint32, optional, tag="7")]
9591    pub direction: ::core::option::Option<u32>,
9592    #[prost(uint32, optional, tag="8")]
9593    pub trb_enqueue: ::core::option::Option<u32>,
9594    #[prost(uint32, optional, tag="9")]
9595    pub trb_dequeue: ::core::option::Option<u32>,
9596}
9597#[derive(Clone, PartialEq, ::prost::Message)]
9598pub struct Dwc3GadgetGenericCmdFtraceEvent {
9599    #[prost(uint32, optional, tag="1")]
9600    pub cmd: ::core::option::Option<u32>,
9601    #[prost(uint32, optional, tag="2")]
9602    pub param: ::core::option::Option<u32>,
9603    #[prost(int32, optional, tag="3")]
9604    pub status: ::core::option::Option<i32>,
9605}
9606#[derive(Clone, PartialEq, ::prost::Message)]
9607pub struct Dwc3GadgetGivebackFtraceEvent {
9608    #[prost(string, optional, tag="1")]
9609    pub name: ::core::option::Option<::prost::alloc::string::String>,
9610    #[prost(uint64, optional, tag="2")]
9611    pub req: ::core::option::Option<u64>,
9612    #[prost(uint32, optional, tag="3")]
9613    pub actual: ::core::option::Option<u32>,
9614    #[prost(uint32, optional, tag="4")]
9615    pub length: ::core::option::Option<u32>,
9616    #[prost(int32, optional, tag="5")]
9617    pub status: ::core::option::Option<i32>,
9618    #[prost(int32, optional, tag="6")]
9619    pub zero: ::core::option::Option<i32>,
9620    #[prost(int32, optional, tag="7")]
9621    pub short_not_ok: ::core::option::Option<i32>,
9622    #[prost(int32, optional, tag="8")]
9623    pub no_interrupt: ::core::option::Option<i32>,
9624}
9625#[derive(Clone, PartialEq, ::prost::Message)]
9626pub struct Dwc3PrepareTrbFtraceEvent {
9627    #[prost(string, optional, tag="1")]
9628    pub name: ::core::option::Option<::prost::alloc::string::String>,
9629    #[prost(uint64, optional, tag="2")]
9630    pub trb: ::core::option::Option<u64>,
9631    #[prost(uint32, optional, tag="3")]
9632    pub allocated: ::core::option::Option<u32>,
9633    #[prost(uint32, optional, tag="4")]
9634    pub queued: ::core::option::Option<u32>,
9635    #[prost(uint32, optional, tag="5")]
9636    pub bpl: ::core::option::Option<u32>,
9637    #[prost(uint32, optional, tag="6")]
9638    pub bph: ::core::option::Option<u32>,
9639    #[prost(uint32, optional, tag="7")]
9640    pub size: ::core::option::Option<u32>,
9641    #[prost(uint32, optional, tag="8")]
9642    pub ctrl: ::core::option::Option<u32>,
9643    #[prost(uint32, optional, tag="9")]
9644    pub r#type: ::core::option::Option<u32>,
9645    #[prost(uint32, optional, tag="10")]
9646    pub enqueue: ::core::option::Option<u32>,
9647    #[prost(uint32, optional, tag="11")]
9648    pub dequeue: ::core::option::Option<u32>,
9649}
9650#[derive(Clone, PartialEq, ::prost::Message)]
9651pub struct Dwc3ReadlFtraceEvent {
9652    #[prost(uint64, optional, tag="1")]
9653    pub base: ::core::option::Option<u64>,
9654    #[prost(uint32, optional, tag="2")]
9655    pub offset: ::core::option::Option<u32>,
9656    #[prost(uint32, optional, tag="3")]
9657    pub value: ::core::option::Option<u32>,
9658    #[prost(string, optional, tag="4")]
9659    pub msg: ::core::option::Option<::prost::alloc::string::String>,
9660}
9661#[derive(Clone, PartialEq, ::prost::Message)]
9662pub struct Dwc3WritelFtraceEvent {
9663    #[prost(uint64, optional, tag="1")]
9664    pub base: ::core::option::Option<u64>,
9665    #[prost(uint32, optional, tag="2")]
9666    pub offset: ::core::option::Option<u32>,
9667    #[prost(uint32, optional, tag="3")]
9668    pub value: ::core::option::Option<u32>,
9669    #[prost(string, optional, tag="4")]
9670    pub msg: ::core::option::Option<::prost::alloc::string::String>,
9671}
9672// End of protos/perfetto/trace/ftrace/dwc3.proto
9673
9674// Begin of protos/perfetto/trace/ftrace/ext4.proto
9675
9676#[derive(Clone, PartialEq, ::prost::Message)]
9677pub struct Ext4DaWriteBeginFtraceEvent {
9678    #[prost(uint64, optional, tag="1")]
9679    pub dev: ::core::option::Option<u64>,
9680    #[prost(uint64, optional, tag="2")]
9681    pub ino: ::core::option::Option<u64>,
9682    #[prost(int64, optional, tag="3")]
9683    pub pos: ::core::option::Option<i64>,
9684    #[prost(uint32, optional, tag="4")]
9685    pub len: ::core::option::Option<u32>,
9686    #[prost(uint32, optional, tag="5")]
9687    pub flags: ::core::option::Option<u32>,
9688}
9689#[derive(Clone, PartialEq, ::prost::Message)]
9690pub struct Ext4DaWriteEndFtraceEvent {
9691    #[prost(uint64, optional, tag="1")]
9692    pub dev: ::core::option::Option<u64>,
9693    #[prost(uint64, optional, tag="2")]
9694    pub ino: ::core::option::Option<u64>,
9695    #[prost(int64, optional, tag="3")]
9696    pub pos: ::core::option::Option<i64>,
9697    #[prost(uint32, optional, tag="4")]
9698    pub len: ::core::option::Option<u32>,
9699    #[prost(uint32, optional, tag="5")]
9700    pub copied: ::core::option::Option<u32>,
9701}
9702#[derive(Clone, PartialEq, ::prost::Message)]
9703pub struct Ext4SyncFileEnterFtraceEvent {
9704    #[prost(uint64, optional, tag="1")]
9705    pub dev: ::core::option::Option<u64>,
9706    #[prost(uint64, optional, tag="2")]
9707    pub ino: ::core::option::Option<u64>,
9708    #[prost(uint64, optional, tag="3")]
9709    pub parent: ::core::option::Option<u64>,
9710    #[prost(int32, optional, tag="4")]
9711    pub datasync: ::core::option::Option<i32>,
9712}
9713#[derive(Clone, PartialEq, ::prost::Message)]
9714pub struct Ext4SyncFileExitFtraceEvent {
9715    #[prost(uint64, optional, tag="1")]
9716    pub dev: ::core::option::Option<u64>,
9717    #[prost(uint64, optional, tag="2")]
9718    pub ino: ::core::option::Option<u64>,
9719    #[prost(int32, optional, tag="3")]
9720    pub ret: ::core::option::Option<i32>,
9721}
9722#[derive(Clone, PartialEq, ::prost::Message)]
9723pub struct Ext4AllocDaBlocksFtraceEvent {
9724    #[prost(uint64, optional, tag="1")]
9725    pub dev: ::core::option::Option<u64>,
9726    #[prost(uint64, optional, tag="2")]
9727    pub ino: ::core::option::Option<u64>,
9728    #[prost(uint32, optional, tag="3")]
9729    pub data_blocks: ::core::option::Option<u32>,
9730    #[prost(uint32, optional, tag="4")]
9731    pub meta_blocks: ::core::option::Option<u32>,
9732}
9733#[derive(Clone, PartialEq, ::prost::Message)]
9734pub struct Ext4AllocateBlocksFtraceEvent {
9735    #[prost(uint64, optional, tag="1")]
9736    pub dev: ::core::option::Option<u64>,
9737    #[prost(uint64, optional, tag="2")]
9738    pub ino: ::core::option::Option<u64>,
9739    #[prost(uint64, optional, tag="3")]
9740    pub block: ::core::option::Option<u64>,
9741    #[prost(uint32, optional, tag="4")]
9742    pub len: ::core::option::Option<u32>,
9743    #[prost(uint32, optional, tag="5")]
9744    pub logical: ::core::option::Option<u32>,
9745    #[prost(uint32, optional, tag="6")]
9746    pub lleft: ::core::option::Option<u32>,
9747    #[prost(uint32, optional, tag="7")]
9748    pub lright: ::core::option::Option<u32>,
9749    #[prost(uint64, optional, tag="8")]
9750    pub goal: ::core::option::Option<u64>,
9751    #[prost(uint64, optional, tag="9")]
9752    pub pleft: ::core::option::Option<u64>,
9753    #[prost(uint64, optional, tag="10")]
9754    pub pright: ::core::option::Option<u64>,
9755    #[prost(uint32, optional, tag="11")]
9756    pub flags: ::core::option::Option<u32>,
9757}
9758#[derive(Clone, PartialEq, ::prost::Message)]
9759pub struct Ext4AllocateInodeFtraceEvent {
9760    #[prost(uint64, optional, tag="1")]
9761    pub dev: ::core::option::Option<u64>,
9762    #[prost(uint64, optional, tag="2")]
9763    pub ino: ::core::option::Option<u64>,
9764    #[prost(uint64, optional, tag="3")]
9765    pub dir: ::core::option::Option<u64>,
9766    #[prost(uint32, optional, tag="4")]
9767    pub mode: ::core::option::Option<u32>,
9768}
9769#[derive(Clone, PartialEq, ::prost::Message)]
9770pub struct Ext4BeginOrderedTruncateFtraceEvent {
9771    #[prost(uint64, optional, tag="1")]
9772    pub dev: ::core::option::Option<u64>,
9773    #[prost(uint64, optional, tag="2")]
9774    pub ino: ::core::option::Option<u64>,
9775    #[prost(int64, optional, tag="3")]
9776    pub new_size: ::core::option::Option<i64>,
9777}
9778#[derive(Clone, PartialEq, ::prost::Message)]
9779pub struct Ext4CollapseRangeFtraceEvent {
9780    #[prost(uint64, optional, tag="1")]
9781    pub dev: ::core::option::Option<u64>,
9782    #[prost(uint64, optional, tag="2")]
9783    pub ino: ::core::option::Option<u64>,
9784    #[prost(int64, optional, tag="3")]
9785    pub offset: ::core::option::Option<i64>,
9786    #[prost(int64, optional, tag="4")]
9787    pub len: ::core::option::Option<i64>,
9788}
9789#[derive(Clone, PartialEq, ::prost::Message)]
9790pub struct Ext4DaReleaseSpaceFtraceEvent {
9791    #[prost(uint64, optional, tag="1")]
9792    pub dev: ::core::option::Option<u64>,
9793    #[prost(uint64, optional, tag="2")]
9794    pub ino: ::core::option::Option<u64>,
9795    #[prost(uint64, optional, tag="3")]
9796    pub i_blocks: ::core::option::Option<u64>,
9797    #[prost(int32, optional, tag="4")]
9798    pub freed_blocks: ::core::option::Option<i32>,
9799    #[prost(int32, optional, tag="5")]
9800    pub reserved_data_blocks: ::core::option::Option<i32>,
9801    #[prost(int32, optional, tag="6")]
9802    pub reserved_meta_blocks: ::core::option::Option<i32>,
9803    #[prost(int32, optional, tag="7")]
9804    pub allocated_meta_blocks: ::core::option::Option<i32>,
9805    #[prost(uint32, optional, tag="8")]
9806    pub mode: ::core::option::Option<u32>,
9807}
9808#[derive(Clone, PartialEq, ::prost::Message)]
9809pub struct Ext4DaReserveSpaceFtraceEvent {
9810    #[prost(uint64, optional, tag="1")]
9811    pub dev: ::core::option::Option<u64>,
9812    #[prost(uint64, optional, tag="2")]
9813    pub ino: ::core::option::Option<u64>,
9814    #[prost(uint64, optional, tag="3")]
9815    pub i_blocks: ::core::option::Option<u64>,
9816    #[prost(int32, optional, tag="4")]
9817    pub reserved_data_blocks: ::core::option::Option<i32>,
9818    #[prost(int32, optional, tag="5")]
9819    pub reserved_meta_blocks: ::core::option::Option<i32>,
9820    #[prost(uint32, optional, tag="6")]
9821    pub mode: ::core::option::Option<u32>,
9822    #[prost(int32, optional, tag="7")]
9823    pub md_needed: ::core::option::Option<i32>,
9824}
9825#[derive(Clone, PartialEq, ::prost::Message)]
9826pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
9827    #[prost(uint64, optional, tag="1")]
9828    pub dev: ::core::option::Option<u64>,
9829    #[prost(uint64, optional, tag="2")]
9830    pub ino: ::core::option::Option<u64>,
9831    #[prost(uint64, optional, tag="3")]
9832    pub i_blocks: ::core::option::Option<u64>,
9833    #[prost(int32, optional, tag="4")]
9834    pub used_blocks: ::core::option::Option<i32>,
9835    #[prost(int32, optional, tag="5")]
9836    pub reserved_data_blocks: ::core::option::Option<i32>,
9837    #[prost(int32, optional, tag="6")]
9838    pub reserved_meta_blocks: ::core::option::Option<i32>,
9839    #[prost(int32, optional, tag="7")]
9840    pub allocated_meta_blocks: ::core::option::Option<i32>,
9841    #[prost(int32, optional, tag="8")]
9842    pub quota_claim: ::core::option::Option<i32>,
9843    #[prost(uint32, optional, tag="9")]
9844    pub mode: ::core::option::Option<u32>,
9845}
9846#[derive(Clone, PartialEq, ::prost::Message)]
9847pub struct Ext4DaWritePagesFtraceEvent {
9848    #[prost(uint64, optional, tag="1")]
9849    pub dev: ::core::option::Option<u64>,
9850    #[prost(uint64, optional, tag="2")]
9851    pub ino: ::core::option::Option<u64>,
9852    #[prost(uint64, optional, tag="3")]
9853    pub first_page: ::core::option::Option<u64>,
9854    #[prost(int64, optional, tag="4")]
9855    pub nr_to_write: ::core::option::Option<i64>,
9856    #[prost(int32, optional, tag="5")]
9857    pub sync_mode: ::core::option::Option<i32>,
9858    #[prost(uint64, optional, tag="6")]
9859    pub b_blocknr: ::core::option::Option<u64>,
9860    #[prost(uint32, optional, tag="7")]
9861    pub b_size: ::core::option::Option<u32>,
9862    #[prost(uint32, optional, tag="8")]
9863    pub b_state: ::core::option::Option<u32>,
9864    #[prost(int32, optional, tag="9")]
9865    pub io_done: ::core::option::Option<i32>,
9866    #[prost(int32, optional, tag="10")]
9867    pub pages_written: ::core::option::Option<i32>,
9868}
9869#[derive(Clone, PartialEq, ::prost::Message)]
9870pub struct Ext4DaWritePagesExtentFtraceEvent {
9871    #[prost(uint64, optional, tag="1")]
9872    pub dev: ::core::option::Option<u64>,
9873    #[prost(uint64, optional, tag="2")]
9874    pub ino: ::core::option::Option<u64>,
9875    #[prost(uint64, optional, tag="3")]
9876    pub lblk: ::core::option::Option<u64>,
9877    #[prost(uint32, optional, tag="4")]
9878    pub len: ::core::option::Option<u32>,
9879    #[prost(uint32, optional, tag="5")]
9880    pub flags: ::core::option::Option<u32>,
9881}
9882#[derive(Clone, PartialEq, ::prost::Message)]
9883pub struct Ext4DirectIoEnterFtraceEvent {
9884    #[prost(uint64, optional, tag="1")]
9885    pub dev: ::core::option::Option<u64>,
9886    #[prost(uint64, optional, tag="2")]
9887    pub ino: ::core::option::Option<u64>,
9888    #[prost(int64, optional, tag="3")]
9889    pub pos: ::core::option::Option<i64>,
9890    #[prost(uint64, optional, tag="4")]
9891    pub len: ::core::option::Option<u64>,
9892    #[prost(int32, optional, tag="5")]
9893    pub rw: ::core::option::Option<i32>,
9894}
9895#[derive(Clone, PartialEq, ::prost::Message)]
9896pub struct Ext4DirectIoExitFtraceEvent {
9897    #[prost(uint64, optional, tag="1")]
9898    pub dev: ::core::option::Option<u64>,
9899    #[prost(uint64, optional, tag="2")]
9900    pub ino: ::core::option::Option<u64>,
9901    #[prost(int64, optional, tag="3")]
9902    pub pos: ::core::option::Option<i64>,
9903    #[prost(uint64, optional, tag="4")]
9904    pub len: ::core::option::Option<u64>,
9905    #[prost(int32, optional, tag="5")]
9906    pub rw: ::core::option::Option<i32>,
9907    #[prost(int32, optional, tag="6")]
9908    pub ret: ::core::option::Option<i32>,
9909}
9910#[derive(Clone, PartialEq, ::prost::Message)]
9911pub struct Ext4DiscardBlocksFtraceEvent {
9912    #[prost(uint64, optional, tag="1")]
9913    pub dev: ::core::option::Option<u64>,
9914    #[prost(uint64, optional, tag="2")]
9915    pub blk: ::core::option::Option<u64>,
9916    #[prost(uint64, optional, tag="3")]
9917    pub count: ::core::option::Option<u64>,
9918}
9919#[derive(Clone, PartialEq, ::prost::Message)]
9920pub struct Ext4DiscardPreallocationsFtraceEvent {
9921    #[prost(uint64, optional, tag="1")]
9922    pub dev: ::core::option::Option<u64>,
9923    #[prost(uint64, optional, tag="2")]
9924    pub ino: ::core::option::Option<u64>,
9925    #[prost(uint32, optional, tag="3")]
9926    pub len: ::core::option::Option<u32>,
9927    #[prost(uint32, optional, tag="4")]
9928    pub needed: ::core::option::Option<u32>,
9929}
9930#[derive(Clone, PartialEq, ::prost::Message)]
9931pub struct Ext4DropInodeFtraceEvent {
9932    #[prost(uint64, optional, tag="1")]
9933    pub dev: ::core::option::Option<u64>,
9934    #[prost(uint64, optional, tag="2")]
9935    pub ino: ::core::option::Option<u64>,
9936    #[prost(int32, optional, tag="3")]
9937    pub drop: ::core::option::Option<i32>,
9938}
9939#[derive(Clone, PartialEq, ::prost::Message)]
9940pub struct Ext4EsCacheExtentFtraceEvent {
9941    #[prost(uint64, optional, tag="1")]
9942    pub dev: ::core::option::Option<u64>,
9943    #[prost(uint64, optional, tag="2")]
9944    pub ino: ::core::option::Option<u64>,
9945    #[prost(uint32, optional, tag="3")]
9946    pub lblk: ::core::option::Option<u32>,
9947    #[prost(uint32, optional, tag="4")]
9948    pub len: ::core::option::Option<u32>,
9949    #[prost(uint64, optional, tag="5")]
9950    pub pblk: ::core::option::Option<u64>,
9951    #[prost(uint32, optional, tag="6")]
9952    pub status: ::core::option::Option<u32>,
9953}
9954#[derive(Clone, PartialEq, ::prost::Message)]
9955pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
9956    #[prost(uint64, optional, tag="1")]
9957    pub dev: ::core::option::Option<u64>,
9958    #[prost(uint64, optional, tag="2")]
9959    pub ino: ::core::option::Option<u64>,
9960    #[prost(uint32, optional, tag="3")]
9961    pub lblk: ::core::option::Option<u32>,
9962}
9963#[derive(Clone, PartialEq, ::prost::Message)]
9964pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
9965    #[prost(uint64, optional, tag="1")]
9966    pub dev: ::core::option::Option<u64>,
9967    #[prost(uint64, optional, tag="2")]
9968    pub ino: ::core::option::Option<u64>,
9969    #[prost(uint32, optional, tag="3")]
9970    pub lblk: ::core::option::Option<u32>,
9971    #[prost(uint32, optional, tag="4")]
9972    pub len: ::core::option::Option<u32>,
9973    #[prost(uint64, optional, tag="5")]
9974    pub pblk: ::core::option::Option<u64>,
9975    #[prost(uint64, optional, tag="6")]
9976    pub status: ::core::option::Option<u64>,
9977}
9978#[derive(Clone, PartialEq, ::prost::Message)]
9979pub struct Ext4EsInsertExtentFtraceEvent {
9980    #[prost(uint64, optional, tag="1")]
9981    pub dev: ::core::option::Option<u64>,
9982    #[prost(uint64, optional, tag="2")]
9983    pub ino: ::core::option::Option<u64>,
9984    #[prost(uint32, optional, tag="3")]
9985    pub lblk: ::core::option::Option<u32>,
9986    #[prost(uint32, optional, tag="4")]
9987    pub len: ::core::option::Option<u32>,
9988    #[prost(uint64, optional, tag="5")]
9989    pub pblk: ::core::option::Option<u64>,
9990    #[prost(uint64, optional, tag="6")]
9991    pub status: ::core::option::Option<u64>,
9992}
9993#[derive(Clone, PartialEq, ::prost::Message)]
9994pub struct Ext4EsLookupExtentEnterFtraceEvent {
9995    #[prost(uint64, optional, tag="1")]
9996    pub dev: ::core::option::Option<u64>,
9997    #[prost(uint64, optional, tag="2")]
9998    pub ino: ::core::option::Option<u64>,
9999    #[prost(uint32, optional, tag="3")]
10000    pub lblk: ::core::option::Option<u32>,
10001}
10002#[derive(Clone, PartialEq, ::prost::Message)]
10003pub struct Ext4EsLookupExtentExitFtraceEvent {
10004    #[prost(uint64, optional, tag="1")]
10005    pub dev: ::core::option::Option<u64>,
10006    #[prost(uint64, optional, tag="2")]
10007    pub ino: ::core::option::Option<u64>,
10008    #[prost(uint32, optional, tag="3")]
10009    pub lblk: ::core::option::Option<u32>,
10010    #[prost(uint32, optional, tag="4")]
10011    pub len: ::core::option::Option<u32>,
10012    #[prost(uint64, optional, tag="5")]
10013    pub pblk: ::core::option::Option<u64>,
10014    #[prost(uint64, optional, tag="6")]
10015    pub status: ::core::option::Option<u64>,
10016    #[prost(int32, optional, tag="7")]
10017    pub found: ::core::option::Option<i32>,
10018}
10019#[derive(Clone, PartialEq, ::prost::Message)]
10020pub struct Ext4EsRemoveExtentFtraceEvent {
10021    #[prost(uint64, optional, tag="1")]
10022    pub dev: ::core::option::Option<u64>,
10023    #[prost(uint64, optional, tag="2")]
10024    pub ino: ::core::option::Option<u64>,
10025    #[prost(int64, optional, tag="3")]
10026    pub lblk: ::core::option::Option<i64>,
10027    #[prost(int64, optional, tag="4")]
10028    pub len: ::core::option::Option<i64>,
10029}
10030#[derive(Clone, PartialEq, ::prost::Message)]
10031pub struct Ext4EsShrinkFtraceEvent {
10032    #[prost(uint64, optional, tag="1")]
10033    pub dev: ::core::option::Option<u64>,
10034    #[prost(int32, optional, tag="2")]
10035    pub nr_shrunk: ::core::option::Option<i32>,
10036    #[prost(uint64, optional, tag="3")]
10037    pub scan_time: ::core::option::Option<u64>,
10038    #[prost(int32, optional, tag="4")]
10039    pub nr_skipped: ::core::option::Option<i32>,
10040    #[prost(int32, optional, tag="5")]
10041    pub retried: ::core::option::Option<i32>,
10042}
10043#[derive(Clone, PartialEq, ::prost::Message)]
10044pub struct Ext4EsShrinkCountFtraceEvent {
10045    #[prost(uint64, optional, tag="1")]
10046    pub dev: ::core::option::Option<u64>,
10047    #[prost(int32, optional, tag="2")]
10048    pub nr_to_scan: ::core::option::Option<i32>,
10049    #[prost(int32, optional, tag="3")]
10050    pub cache_cnt: ::core::option::Option<i32>,
10051}
10052#[derive(Clone, PartialEq, ::prost::Message)]
10053pub struct Ext4EsShrinkScanEnterFtraceEvent {
10054    #[prost(uint64, optional, tag="1")]
10055    pub dev: ::core::option::Option<u64>,
10056    #[prost(int32, optional, tag="2")]
10057    pub nr_to_scan: ::core::option::Option<i32>,
10058    #[prost(int32, optional, tag="3")]
10059    pub cache_cnt: ::core::option::Option<i32>,
10060}
10061#[derive(Clone, PartialEq, ::prost::Message)]
10062pub struct Ext4EsShrinkScanExitFtraceEvent {
10063    #[prost(uint64, optional, tag="1")]
10064    pub dev: ::core::option::Option<u64>,
10065    #[prost(int32, optional, tag="2")]
10066    pub nr_shrunk: ::core::option::Option<i32>,
10067    #[prost(int32, optional, tag="3")]
10068    pub cache_cnt: ::core::option::Option<i32>,
10069}
10070#[derive(Clone, PartialEq, ::prost::Message)]
10071pub struct Ext4EvictInodeFtraceEvent {
10072    #[prost(uint64, optional, tag="1")]
10073    pub dev: ::core::option::Option<u64>,
10074    #[prost(uint64, optional, tag="2")]
10075    pub ino: ::core::option::Option<u64>,
10076    #[prost(int32, optional, tag="3")]
10077    pub nlink: ::core::option::Option<i32>,
10078}
10079#[derive(Clone, PartialEq, ::prost::Message)]
10080pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10081    #[prost(uint64, optional, tag="1")]
10082    pub dev: ::core::option::Option<u64>,
10083    #[prost(uint64, optional, tag="2")]
10084    pub ino: ::core::option::Option<u64>,
10085    #[prost(uint32, optional, tag="3")]
10086    pub m_lblk: ::core::option::Option<u32>,
10087    #[prost(uint32, optional, tag="4")]
10088    pub m_len: ::core::option::Option<u32>,
10089    #[prost(uint32, optional, tag="5")]
10090    pub u_lblk: ::core::option::Option<u32>,
10091    #[prost(uint32, optional, tag="6")]
10092    pub u_len: ::core::option::Option<u32>,
10093    #[prost(uint64, optional, tag="7")]
10094    pub u_pblk: ::core::option::Option<u64>,
10095}
10096#[derive(Clone, PartialEq, ::prost::Message)]
10097pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
10098    #[prost(uint64, optional, tag="1")]
10099    pub dev: ::core::option::Option<u64>,
10100    #[prost(uint64, optional, tag="2")]
10101    pub ino: ::core::option::Option<u64>,
10102    #[prost(uint32, optional, tag="3")]
10103    pub m_lblk: ::core::option::Option<u32>,
10104    #[prost(uint32, optional, tag="4")]
10105    pub m_len: ::core::option::Option<u32>,
10106    #[prost(uint32, optional, tag="5")]
10107    pub u_lblk: ::core::option::Option<u32>,
10108    #[prost(uint32, optional, tag="6")]
10109    pub u_len: ::core::option::Option<u32>,
10110    #[prost(uint64, optional, tag="7")]
10111    pub u_pblk: ::core::option::Option<u64>,
10112    #[prost(uint32, optional, tag="8")]
10113    pub i_lblk: ::core::option::Option<u32>,
10114    #[prost(uint32, optional, tag="9")]
10115    pub i_len: ::core::option::Option<u32>,
10116    #[prost(uint64, optional, tag="10")]
10117    pub i_pblk: ::core::option::Option<u64>,
10118}
10119#[derive(Clone, PartialEq, ::prost::Message)]
10120pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
10121    #[prost(uint64, optional, tag="1")]
10122    pub dev: ::core::option::Option<u64>,
10123    #[prost(uint64, optional, tag="2")]
10124    pub ino: ::core::option::Option<u64>,
10125    #[prost(int32, optional, tag="3")]
10126    pub flags: ::core::option::Option<i32>,
10127    #[prost(uint32, optional, tag="4")]
10128    pub lblk: ::core::option::Option<u32>,
10129    #[prost(uint64, optional, tag="5")]
10130    pub pblk: ::core::option::Option<u64>,
10131    #[prost(uint32, optional, tag="6")]
10132    pub len: ::core::option::Option<u32>,
10133    #[prost(uint32, optional, tag="7")]
10134    pub allocated: ::core::option::Option<u32>,
10135    #[prost(uint64, optional, tag="8")]
10136    pub newblk: ::core::option::Option<u64>,
10137}
10138#[derive(Clone, PartialEq, ::prost::Message)]
10139pub struct Ext4ExtInCacheFtraceEvent {
10140    #[prost(uint64, optional, tag="1")]
10141    pub dev: ::core::option::Option<u64>,
10142    #[prost(uint64, optional, tag="2")]
10143    pub ino: ::core::option::Option<u64>,
10144    #[prost(uint32, optional, tag="3")]
10145    pub lblk: ::core::option::Option<u32>,
10146    #[prost(int32, optional, tag="4")]
10147    pub ret: ::core::option::Option<i32>,
10148}
10149#[derive(Clone, PartialEq, ::prost::Message)]
10150pub struct Ext4ExtLoadExtentFtraceEvent {
10151    #[prost(uint64, optional, tag="1")]
10152    pub dev: ::core::option::Option<u64>,
10153    #[prost(uint64, optional, tag="2")]
10154    pub ino: ::core::option::Option<u64>,
10155    #[prost(uint64, optional, tag="3")]
10156    pub pblk: ::core::option::Option<u64>,
10157    #[prost(uint32, optional, tag="4")]
10158    pub lblk: ::core::option::Option<u32>,
10159}
10160#[derive(Clone, PartialEq, ::prost::Message)]
10161pub struct Ext4ExtMapBlocksEnterFtraceEvent {
10162    #[prost(uint64, optional, tag="1")]
10163    pub dev: ::core::option::Option<u64>,
10164    #[prost(uint64, optional, tag="2")]
10165    pub ino: ::core::option::Option<u64>,
10166    #[prost(uint32, optional, tag="3")]
10167    pub lblk: ::core::option::Option<u32>,
10168    #[prost(uint32, optional, tag="4")]
10169    pub len: ::core::option::Option<u32>,
10170    #[prost(uint32, optional, tag="5")]
10171    pub flags: ::core::option::Option<u32>,
10172}
10173#[derive(Clone, PartialEq, ::prost::Message)]
10174pub struct Ext4ExtMapBlocksExitFtraceEvent {
10175    #[prost(uint64, optional, tag="1")]
10176    pub dev: ::core::option::Option<u64>,
10177    #[prost(uint64, optional, tag="2")]
10178    pub ino: ::core::option::Option<u64>,
10179    #[prost(uint32, optional, tag="3")]
10180    pub flags: ::core::option::Option<u32>,
10181    #[prost(uint64, optional, tag="4")]
10182    pub pblk: ::core::option::Option<u64>,
10183    #[prost(uint32, optional, tag="5")]
10184    pub lblk: ::core::option::Option<u32>,
10185    #[prost(uint32, optional, tag="6")]
10186    pub len: ::core::option::Option<u32>,
10187    #[prost(uint32, optional, tag="7")]
10188    pub mflags: ::core::option::Option<u32>,
10189    #[prost(int32, optional, tag="8")]
10190    pub ret: ::core::option::Option<i32>,
10191}
10192#[derive(Clone, PartialEq, ::prost::Message)]
10193pub struct Ext4ExtPutInCacheFtraceEvent {
10194    #[prost(uint64, optional, tag="1")]
10195    pub dev: ::core::option::Option<u64>,
10196    #[prost(uint64, optional, tag="2")]
10197    pub ino: ::core::option::Option<u64>,
10198    #[prost(uint32, optional, tag="3")]
10199    pub lblk: ::core::option::Option<u32>,
10200    #[prost(uint32, optional, tag="4")]
10201    pub len: ::core::option::Option<u32>,
10202    #[prost(uint64, optional, tag="5")]
10203    pub start: ::core::option::Option<u64>,
10204}
10205#[derive(Clone, PartialEq, ::prost::Message)]
10206pub struct Ext4ExtRemoveSpaceFtraceEvent {
10207    #[prost(uint64, optional, tag="1")]
10208    pub dev: ::core::option::Option<u64>,
10209    #[prost(uint64, optional, tag="2")]
10210    pub ino: ::core::option::Option<u64>,
10211    #[prost(uint32, optional, tag="3")]
10212    pub start: ::core::option::Option<u32>,
10213    #[prost(uint32, optional, tag="4")]
10214    pub end: ::core::option::Option<u32>,
10215    #[prost(int32, optional, tag="5")]
10216    pub depth: ::core::option::Option<i32>,
10217}
10218#[derive(Clone, PartialEq, ::prost::Message)]
10219pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
10220    #[prost(uint64, optional, tag="1")]
10221    pub dev: ::core::option::Option<u64>,
10222    #[prost(uint64, optional, tag="2")]
10223    pub ino: ::core::option::Option<u64>,
10224    #[prost(uint32, optional, tag="3")]
10225    pub start: ::core::option::Option<u32>,
10226    #[prost(uint32, optional, tag="4")]
10227    pub end: ::core::option::Option<u32>,
10228    #[prost(int32, optional, tag="5")]
10229    pub depth: ::core::option::Option<i32>,
10230    #[prost(int64, optional, tag="6")]
10231    pub partial: ::core::option::Option<i64>,
10232    #[prost(uint32, optional, tag="7")]
10233    pub eh_entries: ::core::option::Option<u32>,
10234    #[prost(uint32, optional, tag="8")]
10235    pub pc_lblk: ::core::option::Option<u32>,
10236    #[prost(uint64, optional, tag="9")]
10237    pub pc_pclu: ::core::option::Option<u64>,
10238    #[prost(int32, optional, tag="10")]
10239    pub pc_state: ::core::option::Option<i32>,
10240}
10241#[derive(Clone, PartialEq, ::prost::Message)]
10242pub struct Ext4ExtRmIdxFtraceEvent {
10243    #[prost(uint64, optional, tag="1")]
10244    pub dev: ::core::option::Option<u64>,
10245    #[prost(uint64, optional, tag="2")]
10246    pub ino: ::core::option::Option<u64>,
10247    #[prost(uint64, optional, tag="3")]
10248    pub pblk: ::core::option::Option<u64>,
10249}
10250#[derive(Clone, PartialEq, ::prost::Message)]
10251pub struct Ext4ExtRmLeafFtraceEvent {
10252    #[prost(uint64, optional, tag="1")]
10253    pub dev: ::core::option::Option<u64>,
10254    #[prost(uint64, optional, tag="2")]
10255    pub ino: ::core::option::Option<u64>,
10256    #[prost(int64, optional, tag="3")]
10257    pub partial: ::core::option::Option<i64>,
10258    #[prost(uint32, optional, tag="4")]
10259    pub start: ::core::option::Option<u32>,
10260    #[prost(uint32, optional, tag="5")]
10261    pub ee_lblk: ::core::option::Option<u32>,
10262    #[prost(uint64, optional, tag="6")]
10263    pub ee_pblk: ::core::option::Option<u64>,
10264    #[prost(int32, optional, tag="7")]
10265    pub ee_len: ::core::option::Option<i32>,
10266    #[prost(uint32, optional, tag="8")]
10267    pub pc_lblk: ::core::option::Option<u32>,
10268    #[prost(uint64, optional, tag="9")]
10269    pub pc_pclu: ::core::option::Option<u64>,
10270    #[prost(int32, optional, tag="10")]
10271    pub pc_state: ::core::option::Option<i32>,
10272}
10273#[derive(Clone, PartialEq, ::prost::Message)]
10274pub struct Ext4ExtShowExtentFtraceEvent {
10275    #[prost(uint64, optional, tag="1")]
10276    pub dev: ::core::option::Option<u64>,
10277    #[prost(uint64, optional, tag="2")]
10278    pub ino: ::core::option::Option<u64>,
10279    #[prost(uint64, optional, tag="3")]
10280    pub pblk: ::core::option::Option<u64>,
10281    #[prost(uint32, optional, tag="4")]
10282    pub lblk: ::core::option::Option<u32>,
10283    #[prost(uint32, optional, tag="5")]
10284    pub len: ::core::option::Option<u32>,
10285}
10286#[derive(Clone, PartialEq, ::prost::Message)]
10287pub struct Ext4FallocateEnterFtraceEvent {
10288    #[prost(uint64, optional, tag="1")]
10289    pub dev: ::core::option::Option<u64>,
10290    #[prost(uint64, optional, tag="2")]
10291    pub ino: ::core::option::Option<u64>,
10292    #[prost(int64, optional, tag="3")]
10293    pub offset: ::core::option::Option<i64>,
10294    #[prost(int64, optional, tag="4")]
10295    pub len: ::core::option::Option<i64>,
10296    #[prost(int32, optional, tag="5")]
10297    pub mode: ::core::option::Option<i32>,
10298    #[prost(int64, optional, tag="6")]
10299    pub pos: ::core::option::Option<i64>,
10300}
10301#[derive(Clone, PartialEq, ::prost::Message)]
10302pub struct Ext4FallocateExitFtraceEvent {
10303    #[prost(uint64, optional, tag="1")]
10304    pub dev: ::core::option::Option<u64>,
10305    #[prost(uint64, optional, tag="2")]
10306    pub ino: ::core::option::Option<u64>,
10307    #[prost(int64, optional, tag="3")]
10308    pub pos: ::core::option::Option<i64>,
10309    #[prost(uint32, optional, tag="4")]
10310    pub blocks: ::core::option::Option<u32>,
10311    #[prost(int32, optional, tag="5")]
10312    pub ret: ::core::option::Option<i32>,
10313}
10314#[derive(Clone, PartialEq, ::prost::Message)]
10315pub struct Ext4FindDelallocRangeFtraceEvent {
10316    #[prost(uint64, optional, tag="1")]
10317    pub dev: ::core::option::Option<u64>,
10318    #[prost(uint64, optional, tag="2")]
10319    pub ino: ::core::option::Option<u64>,
10320    #[prost(uint32, optional, tag="3")]
10321    pub from: ::core::option::Option<u32>,
10322    #[prost(uint32, optional, tag="4")]
10323    pub to: ::core::option::Option<u32>,
10324    #[prost(int32, optional, tag="5")]
10325    pub reverse: ::core::option::Option<i32>,
10326    #[prost(int32, optional, tag="6")]
10327    pub found: ::core::option::Option<i32>,
10328    #[prost(uint32, optional, tag="7")]
10329    pub found_blk: ::core::option::Option<u32>,
10330}
10331#[derive(Clone, PartialEq, ::prost::Message)]
10332pub struct Ext4ForgetFtraceEvent {
10333    #[prost(uint64, optional, tag="1")]
10334    pub dev: ::core::option::Option<u64>,
10335    #[prost(uint64, optional, tag="2")]
10336    pub ino: ::core::option::Option<u64>,
10337    #[prost(uint64, optional, tag="3")]
10338    pub block: ::core::option::Option<u64>,
10339    #[prost(int32, optional, tag="4")]
10340    pub is_metadata: ::core::option::Option<i32>,
10341    #[prost(uint32, optional, tag="5")]
10342    pub mode: ::core::option::Option<u32>,
10343}
10344#[derive(Clone, PartialEq, ::prost::Message)]
10345pub struct Ext4FreeBlocksFtraceEvent {
10346    #[prost(uint64, optional, tag="1")]
10347    pub dev: ::core::option::Option<u64>,
10348    #[prost(uint64, optional, tag="2")]
10349    pub ino: ::core::option::Option<u64>,
10350    #[prost(uint64, optional, tag="3")]
10351    pub block: ::core::option::Option<u64>,
10352    #[prost(uint64, optional, tag="4")]
10353    pub count: ::core::option::Option<u64>,
10354    #[prost(int32, optional, tag="5")]
10355    pub flags: ::core::option::Option<i32>,
10356    #[prost(uint32, optional, tag="6")]
10357    pub mode: ::core::option::Option<u32>,
10358}
10359#[derive(Clone, PartialEq, ::prost::Message)]
10360pub struct Ext4FreeInodeFtraceEvent {
10361    #[prost(uint64, optional, tag="1")]
10362    pub dev: ::core::option::Option<u64>,
10363    #[prost(uint64, optional, tag="2")]
10364    pub ino: ::core::option::Option<u64>,
10365    #[prost(uint32, optional, tag="3")]
10366    pub uid: ::core::option::Option<u32>,
10367    #[prost(uint32, optional, tag="4")]
10368    pub gid: ::core::option::Option<u32>,
10369    #[prost(uint64, optional, tag="5")]
10370    pub blocks: ::core::option::Option<u64>,
10371    #[prost(uint32, optional, tag="6")]
10372    pub mode: ::core::option::Option<u32>,
10373}
10374#[derive(Clone, PartialEq, ::prost::Message)]
10375pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
10376    #[prost(uint64, optional, tag="1")]
10377    pub dev: ::core::option::Option<u64>,
10378    #[prost(uint32, optional, tag="2")]
10379    pub flags: ::core::option::Option<u32>,
10380    #[prost(uint32, optional, tag="3")]
10381    pub lblk: ::core::option::Option<u32>,
10382    #[prost(uint64, optional, tag="4")]
10383    pub pblk: ::core::option::Option<u64>,
10384    #[prost(uint32, optional, tag="5")]
10385    pub len: ::core::option::Option<u32>,
10386    #[prost(int32, optional, tag="6")]
10387    pub ret: ::core::option::Option<i32>,
10388}
10389#[derive(Clone, PartialEq, ::prost::Message)]
10390pub struct Ext4GetReservedClusterAllocFtraceEvent {
10391    #[prost(uint64, optional, tag="1")]
10392    pub dev: ::core::option::Option<u64>,
10393    #[prost(uint64, optional, tag="2")]
10394    pub ino: ::core::option::Option<u64>,
10395    #[prost(uint32, optional, tag="3")]
10396    pub lblk: ::core::option::Option<u32>,
10397    #[prost(uint32, optional, tag="4")]
10398    pub len: ::core::option::Option<u32>,
10399}
10400#[derive(Clone, PartialEq, ::prost::Message)]
10401pub struct Ext4IndMapBlocksEnterFtraceEvent {
10402    #[prost(uint64, optional, tag="1")]
10403    pub dev: ::core::option::Option<u64>,
10404    #[prost(uint64, optional, tag="2")]
10405    pub ino: ::core::option::Option<u64>,
10406    #[prost(uint32, optional, tag="3")]
10407    pub lblk: ::core::option::Option<u32>,
10408    #[prost(uint32, optional, tag="4")]
10409    pub len: ::core::option::Option<u32>,
10410    #[prost(uint32, optional, tag="5")]
10411    pub flags: ::core::option::Option<u32>,
10412}
10413#[derive(Clone, PartialEq, ::prost::Message)]
10414pub struct Ext4IndMapBlocksExitFtraceEvent {
10415    #[prost(uint64, optional, tag="1")]
10416    pub dev: ::core::option::Option<u64>,
10417    #[prost(uint64, optional, tag="2")]
10418    pub ino: ::core::option::Option<u64>,
10419    #[prost(uint32, optional, tag="3")]
10420    pub flags: ::core::option::Option<u32>,
10421    #[prost(uint64, optional, tag="4")]
10422    pub pblk: ::core::option::Option<u64>,
10423    #[prost(uint32, optional, tag="5")]
10424    pub lblk: ::core::option::Option<u32>,
10425    #[prost(uint32, optional, tag="6")]
10426    pub len: ::core::option::Option<u32>,
10427    #[prost(uint32, optional, tag="7")]
10428    pub mflags: ::core::option::Option<u32>,
10429    #[prost(int32, optional, tag="8")]
10430    pub ret: ::core::option::Option<i32>,
10431}
10432#[derive(Clone, PartialEq, ::prost::Message)]
10433pub struct Ext4InsertRangeFtraceEvent {
10434    #[prost(uint64, optional, tag="1")]
10435    pub dev: ::core::option::Option<u64>,
10436    #[prost(uint64, optional, tag="2")]
10437    pub ino: ::core::option::Option<u64>,
10438    #[prost(int64, optional, tag="3")]
10439    pub offset: ::core::option::Option<i64>,
10440    #[prost(int64, optional, tag="4")]
10441    pub len: ::core::option::Option<i64>,
10442}
10443#[derive(Clone, PartialEq, ::prost::Message)]
10444pub struct Ext4InvalidatepageFtraceEvent {
10445    #[prost(uint64, optional, tag="1")]
10446    pub dev: ::core::option::Option<u64>,
10447    #[prost(uint64, optional, tag="2")]
10448    pub ino: ::core::option::Option<u64>,
10449    #[prost(uint64, optional, tag="3")]
10450    pub index: ::core::option::Option<u64>,
10451    #[prost(uint64, optional, tag="4")]
10452    pub offset: ::core::option::Option<u64>,
10453    #[prost(uint32, optional, tag="5")]
10454    pub length: ::core::option::Option<u32>,
10455}
10456#[derive(Clone, PartialEq, ::prost::Message)]
10457pub struct Ext4JournalStartFtraceEvent {
10458    #[prost(uint64, optional, tag="1")]
10459    pub dev: ::core::option::Option<u64>,
10460    #[prost(uint64, optional, tag="2")]
10461    pub ip: ::core::option::Option<u64>,
10462    #[prost(int32, optional, tag="3")]
10463    pub blocks: ::core::option::Option<i32>,
10464    #[prost(int32, optional, tag="4")]
10465    pub rsv_blocks: ::core::option::Option<i32>,
10466    #[prost(int32, optional, tag="5")]
10467    pub nblocks: ::core::option::Option<i32>,
10468    #[prost(int32, optional, tag="6")]
10469    pub revoke_creds: ::core::option::Option<i32>,
10470}
10471#[derive(Clone, PartialEq, ::prost::Message)]
10472pub struct Ext4JournalStartReservedFtraceEvent {
10473    #[prost(uint64, optional, tag="1")]
10474    pub dev: ::core::option::Option<u64>,
10475    #[prost(uint64, optional, tag="2")]
10476    pub ip: ::core::option::Option<u64>,
10477    #[prost(int32, optional, tag="3")]
10478    pub blocks: ::core::option::Option<i32>,
10479}
10480#[derive(Clone, PartialEq, ::prost::Message)]
10481pub struct Ext4JournalledInvalidatepageFtraceEvent {
10482    #[prost(uint64, optional, tag="1")]
10483    pub dev: ::core::option::Option<u64>,
10484    #[prost(uint64, optional, tag="2")]
10485    pub ino: ::core::option::Option<u64>,
10486    #[prost(uint64, optional, tag="3")]
10487    pub index: ::core::option::Option<u64>,
10488    #[prost(uint64, optional, tag="4")]
10489    pub offset: ::core::option::Option<u64>,
10490    #[prost(uint32, optional, tag="5")]
10491    pub length: ::core::option::Option<u32>,
10492}
10493#[derive(Clone, PartialEq, ::prost::Message)]
10494pub struct Ext4JournalledWriteEndFtraceEvent {
10495    #[prost(uint64, optional, tag="1")]
10496    pub dev: ::core::option::Option<u64>,
10497    #[prost(uint64, optional, tag="2")]
10498    pub ino: ::core::option::Option<u64>,
10499    #[prost(int64, optional, tag="3")]
10500    pub pos: ::core::option::Option<i64>,
10501    #[prost(uint32, optional, tag="4")]
10502    pub len: ::core::option::Option<u32>,
10503    #[prost(uint32, optional, tag="5")]
10504    pub copied: ::core::option::Option<u32>,
10505}
10506#[derive(Clone, PartialEq, ::prost::Message)]
10507pub struct Ext4LoadInodeFtraceEvent {
10508    #[prost(uint64, optional, tag="1")]
10509    pub dev: ::core::option::Option<u64>,
10510    #[prost(uint64, optional, tag="2")]
10511    pub ino: ::core::option::Option<u64>,
10512}
10513#[derive(Clone, PartialEq, ::prost::Message)]
10514pub struct Ext4LoadInodeBitmapFtraceEvent {
10515    #[prost(uint64, optional, tag="1")]
10516    pub dev: ::core::option::Option<u64>,
10517    #[prost(uint32, optional, tag="2")]
10518    pub group: ::core::option::Option<u32>,
10519}
10520#[derive(Clone, PartialEq, ::prost::Message)]
10521pub struct Ext4MarkInodeDirtyFtraceEvent {
10522    #[prost(uint64, optional, tag="1")]
10523    pub dev: ::core::option::Option<u64>,
10524    #[prost(uint64, optional, tag="2")]
10525    pub ino: ::core::option::Option<u64>,
10526    #[prost(uint64, optional, tag="3")]
10527    pub ip: ::core::option::Option<u64>,
10528}
10529#[derive(Clone, PartialEq, ::prost::Message)]
10530pub struct Ext4MbBitmapLoadFtraceEvent {
10531    #[prost(uint64, optional, tag="1")]
10532    pub dev: ::core::option::Option<u64>,
10533    #[prost(uint32, optional, tag="2")]
10534    pub group: ::core::option::Option<u32>,
10535}
10536#[derive(Clone, PartialEq, ::prost::Message)]
10537pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
10538    #[prost(uint64, optional, tag="1")]
10539    pub dev: ::core::option::Option<u64>,
10540    #[prost(uint32, optional, tag="2")]
10541    pub group: ::core::option::Option<u32>,
10542}
10543#[derive(Clone, PartialEq, ::prost::Message)]
10544pub struct Ext4MbDiscardPreallocationsFtraceEvent {
10545    #[prost(uint64, optional, tag="1")]
10546    pub dev: ::core::option::Option<u64>,
10547    #[prost(int32, optional, tag="2")]
10548    pub needed: ::core::option::Option<i32>,
10549}
10550#[derive(Clone, PartialEq, ::prost::Message)]
10551pub struct Ext4MbNewGroupPaFtraceEvent {
10552    #[prost(uint64, optional, tag="1")]
10553    pub dev: ::core::option::Option<u64>,
10554    #[prost(uint64, optional, tag="2")]
10555    pub ino: ::core::option::Option<u64>,
10556    #[prost(uint64, optional, tag="3")]
10557    pub pa_pstart: ::core::option::Option<u64>,
10558    #[prost(uint64, optional, tag="4")]
10559    pub pa_lstart: ::core::option::Option<u64>,
10560    #[prost(uint32, optional, tag="5")]
10561    pub pa_len: ::core::option::Option<u32>,
10562}
10563#[derive(Clone, PartialEq, ::prost::Message)]
10564pub struct Ext4MbNewInodePaFtraceEvent {
10565    #[prost(uint64, optional, tag="1")]
10566    pub dev: ::core::option::Option<u64>,
10567    #[prost(uint64, optional, tag="2")]
10568    pub ino: ::core::option::Option<u64>,
10569    #[prost(uint64, optional, tag="3")]
10570    pub pa_pstart: ::core::option::Option<u64>,
10571    #[prost(uint64, optional, tag="4")]
10572    pub pa_lstart: ::core::option::Option<u64>,
10573    #[prost(uint32, optional, tag="5")]
10574    pub pa_len: ::core::option::Option<u32>,
10575}
10576#[derive(Clone, PartialEq, ::prost::Message)]
10577pub struct Ext4MbReleaseGroupPaFtraceEvent {
10578    #[prost(uint64, optional, tag="1")]
10579    pub dev: ::core::option::Option<u64>,
10580    #[prost(uint64, optional, tag="2")]
10581    pub pa_pstart: ::core::option::Option<u64>,
10582    #[prost(uint32, optional, tag="3")]
10583    pub pa_len: ::core::option::Option<u32>,
10584}
10585#[derive(Clone, PartialEq, ::prost::Message)]
10586pub struct Ext4MbReleaseInodePaFtraceEvent {
10587    #[prost(uint64, optional, tag="1")]
10588    pub dev: ::core::option::Option<u64>,
10589    #[prost(uint64, optional, tag="2")]
10590    pub ino: ::core::option::Option<u64>,
10591    #[prost(uint64, optional, tag="3")]
10592    pub block: ::core::option::Option<u64>,
10593    #[prost(uint32, optional, tag="4")]
10594    pub count: ::core::option::Option<u32>,
10595}
10596#[derive(Clone, PartialEq, ::prost::Message)]
10597pub struct Ext4MballocAllocFtraceEvent {
10598    #[prost(uint64, optional, tag="1")]
10599    pub dev: ::core::option::Option<u64>,
10600    #[prost(uint64, optional, tag="2")]
10601    pub ino: ::core::option::Option<u64>,
10602    #[prost(uint32, optional, tag="3")]
10603    pub orig_logical: ::core::option::Option<u32>,
10604    #[prost(int32, optional, tag="4")]
10605    pub orig_start: ::core::option::Option<i32>,
10606    #[prost(uint32, optional, tag="5")]
10607    pub orig_group: ::core::option::Option<u32>,
10608    #[prost(int32, optional, tag="6")]
10609    pub orig_len: ::core::option::Option<i32>,
10610    #[prost(uint32, optional, tag="7")]
10611    pub goal_logical: ::core::option::Option<u32>,
10612    #[prost(int32, optional, tag="8")]
10613    pub goal_start: ::core::option::Option<i32>,
10614    #[prost(uint32, optional, tag="9")]
10615    pub goal_group: ::core::option::Option<u32>,
10616    #[prost(int32, optional, tag="10")]
10617    pub goal_len: ::core::option::Option<i32>,
10618    #[prost(uint32, optional, tag="11")]
10619    pub result_logical: ::core::option::Option<u32>,
10620    #[prost(int32, optional, tag="12")]
10621    pub result_start: ::core::option::Option<i32>,
10622    #[prost(uint32, optional, tag="13")]
10623    pub result_group: ::core::option::Option<u32>,
10624    #[prost(int32, optional, tag="14")]
10625    pub result_len: ::core::option::Option<i32>,
10626    #[prost(uint32, optional, tag="15")]
10627    pub found: ::core::option::Option<u32>,
10628    #[prost(uint32, optional, tag="16")]
10629    pub groups: ::core::option::Option<u32>,
10630    #[prost(uint32, optional, tag="17")]
10631    pub buddy: ::core::option::Option<u32>,
10632    #[prost(uint32, optional, tag="18")]
10633    pub flags: ::core::option::Option<u32>,
10634    #[prost(uint32, optional, tag="19")]
10635    pub tail: ::core::option::Option<u32>,
10636    #[prost(uint32, optional, tag="20")]
10637    pub cr: ::core::option::Option<u32>,
10638}
10639#[derive(Clone, PartialEq, ::prost::Message)]
10640pub struct Ext4MballocDiscardFtraceEvent {
10641    #[prost(uint64, optional, tag="1")]
10642    pub dev: ::core::option::Option<u64>,
10643    #[prost(uint64, optional, tag="2")]
10644    pub ino: ::core::option::Option<u64>,
10645    #[prost(int32, optional, tag="3")]
10646    pub result_start: ::core::option::Option<i32>,
10647    #[prost(uint32, optional, tag="4")]
10648    pub result_group: ::core::option::Option<u32>,
10649    #[prost(int32, optional, tag="5")]
10650    pub result_len: ::core::option::Option<i32>,
10651}
10652#[derive(Clone, PartialEq, ::prost::Message)]
10653pub struct Ext4MballocFreeFtraceEvent {
10654    #[prost(uint64, optional, tag="1")]
10655    pub dev: ::core::option::Option<u64>,
10656    #[prost(uint64, optional, tag="2")]
10657    pub ino: ::core::option::Option<u64>,
10658    #[prost(int32, optional, tag="3")]
10659    pub result_start: ::core::option::Option<i32>,
10660    #[prost(uint32, optional, tag="4")]
10661    pub result_group: ::core::option::Option<u32>,
10662    #[prost(int32, optional, tag="5")]
10663    pub result_len: ::core::option::Option<i32>,
10664}
10665#[derive(Clone, PartialEq, ::prost::Message)]
10666pub struct Ext4MballocPreallocFtraceEvent {
10667    #[prost(uint64, optional, tag="1")]
10668    pub dev: ::core::option::Option<u64>,
10669    #[prost(uint64, optional, tag="2")]
10670    pub ino: ::core::option::Option<u64>,
10671    #[prost(uint32, optional, tag="3")]
10672    pub orig_logical: ::core::option::Option<u32>,
10673    #[prost(int32, optional, tag="4")]
10674    pub orig_start: ::core::option::Option<i32>,
10675    #[prost(uint32, optional, tag="5")]
10676    pub orig_group: ::core::option::Option<u32>,
10677    #[prost(int32, optional, tag="6")]
10678    pub orig_len: ::core::option::Option<i32>,
10679    #[prost(uint32, optional, tag="7")]
10680    pub result_logical: ::core::option::Option<u32>,
10681    #[prost(int32, optional, tag="8")]
10682    pub result_start: ::core::option::Option<i32>,
10683    #[prost(uint32, optional, tag="9")]
10684    pub result_group: ::core::option::Option<u32>,
10685    #[prost(int32, optional, tag="10")]
10686    pub result_len: ::core::option::Option<i32>,
10687}
10688#[derive(Clone, PartialEq, ::prost::Message)]
10689pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
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(uint64, optional, tag="3")]
10695    pub orig_ino: ::core::option::Option<u64>,
10696    #[prost(uint32, optional, tag="4")]
10697    pub uid: ::core::option::Option<u32>,
10698    #[prost(uint32, optional, tag="5")]
10699    pub gid: ::core::option::Option<u32>,
10700    #[prost(uint32, optional, tag="6")]
10701    pub mode: ::core::option::Option<u32>,
10702}
10703#[derive(Clone, PartialEq, ::prost::Message)]
10704pub struct Ext4PunchHoleFtraceEvent {
10705    #[prost(uint64, optional, tag="1")]
10706    pub dev: ::core::option::Option<u64>,
10707    #[prost(uint64, optional, tag="2")]
10708    pub ino: ::core::option::Option<u64>,
10709    #[prost(int64, optional, tag="3")]
10710    pub offset: ::core::option::Option<i64>,
10711    #[prost(int64, optional, tag="4")]
10712    pub len: ::core::option::Option<i64>,
10713    #[prost(int32, optional, tag="5")]
10714    pub mode: ::core::option::Option<i32>,
10715}
10716#[derive(Clone, PartialEq, ::prost::Message)]
10717pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
10718    #[prost(uint64, optional, tag="1")]
10719    pub dev: ::core::option::Option<u64>,
10720    #[prost(uint32, optional, tag="2")]
10721    pub group: ::core::option::Option<u32>,
10722    #[prost(uint32, optional, tag="3")]
10723    pub prefetch: ::core::option::Option<u32>,
10724}
10725#[derive(Clone, PartialEq, ::prost::Message)]
10726pub struct Ext4ReadpageFtraceEvent {
10727    #[prost(uint64, optional, tag="1")]
10728    pub dev: ::core::option::Option<u64>,
10729    #[prost(uint64, optional, tag="2")]
10730    pub ino: ::core::option::Option<u64>,
10731    #[prost(uint64, optional, tag="3")]
10732    pub index: ::core::option::Option<u64>,
10733}
10734#[derive(Clone, PartialEq, ::prost::Message)]
10735pub struct Ext4ReleasepageFtraceEvent {
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(uint64, optional, tag="3")]
10741    pub index: ::core::option::Option<u64>,
10742}
10743#[derive(Clone, PartialEq, ::prost::Message)]
10744pub struct Ext4RemoveBlocksFtraceEvent {
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(uint32, optional, tag="3")]
10750    pub from: ::core::option::Option<u32>,
10751    #[prost(uint32, optional, tag="4")]
10752    pub to: ::core::option::Option<u32>,
10753    #[prost(int64, optional, tag="5")]
10754    pub partial: ::core::option::Option<i64>,
10755    #[prost(uint64, optional, tag="6")]
10756    pub ee_pblk: ::core::option::Option<u64>,
10757    #[prost(uint32, optional, tag="7")]
10758    pub ee_lblk: ::core::option::Option<u32>,
10759    #[prost(uint32, optional, tag="8")]
10760    pub ee_len: ::core::option::Option<u32>,
10761    #[prost(uint32, optional, tag="9")]
10762    pub pc_lblk: ::core::option::Option<u32>,
10763    #[prost(uint64, optional, tag="10")]
10764    pub pc_pclu: ::core::option::Option<u64>,
10765    #[prost(int32, optional, tag="11")]
10766    pub pc_state: ::core::option::Option<i32>,
10767}
10768#[derive(Clone, PartialEq, ::prost::Message)]
10769pub struct Ext4RequestBlocksFtraceEvent {
10770    #[prost(uint64, optional, tag="1")]
10771    pub dev: ::core::option::Option<u64>,
10772    #[prost(uint64, optional, tag="2")]
10773    pub ino: ::core::option::Option<u64>,
10774    #[prost(uint32, optional, tag="3")]
10775    pub len: ::core::option::Option<u32>,
10776    #[prost(uint32, optional, tag="4")]
10777    pub logical: ::core::option::Option<u32>,
10778    #[prost(uint32, optional, tag="5")]
10779    pub lleft: ::core::option::Option<u32>,
10780    #[prost(uint32, optional, tag="6")]
10781    pub lright: ::core::option::Option<u32>,
10782    #[prost(uint64, optional, tag="7")]
10783    pub goal: ::core::option::Option<u64>,
10784    #[prost(uint64, optional, tag="8")]
10785    pub pleft: ::core::option::Option<u64>,
10786    #[prost(uint64, optional, tag="9")]
10787    pub pright: ::core::option::Option<u64>,
10788    #[prost(uint32, optional, tag="10")]
10789    pub flags: ::core::option::Option<u32>,
10790}
10791#[derive(Clone, PartialEq, ::prost::Message)]
10792pub struct Ext4RequestInodeFtraceEvent {
10793    #[prost(uint64, optional, tag="1")]
10794    pub dev: ::core::option::Option<u64>,
10795    #[prost(uint64, optional, tag="2")]
10796    pub dir: ::core::option::Option<u64>,
10797    #[prost(uint32, optional, tag="3")]
10798    pub mode: ::core::option::Option<u32>,
10799}
10800#[derive(Clone, PartialEq, ::prost::Message)]
10801pub struct Ext4SyncFsFtraceEvent {
10802    #[prost(uint64, optional, tag="1")]
10803    pub dev: ::core::option::Option<u64>,
10804    #[prost(int32, optional, tag="2")]
10805    pub wait: ::core::option::Option<i32>,
10806}
10807#[derive(Clone, PartialEq, ::prost::Message)]
10808pub struct Ext4TrimAllFreeFtraceEvent {
10809    #[prost(int32, optional, tag="1")]
10810    pub dev_major: ::core::option::Option<i32>,
10811    #[prost(int32, optional, tag="2")]
10812    pub dev_minor: ::core::option::Option<i32>,
10813    #[prost(uint32, optional, tag="3")]
10814    pub group: ::core::option::Option<u32>,
10815    #[prost(int32, optional, tag="4")]
10816    pub start: ::core::option::Option<i32>,
10817    #[prost(int32, optional, tag="5")]
10818    pub len: ::core::option::Option<i32>,
10819}
10820#[derive(Clone, PartialEq, ::prost::Message)]
10821pub struct Ext4TrimExtentFtraceEvent {
10822    #[prost(int32, optional, tag="1")]
10823    pub dev_major: ::core::option::Option<i32>,
10824    #[prost(int32, optional, tag="2")]
10825    pub dev_minor: ::core::option::Option<i32>,
10826    #[prost(uint32, optional, tag="3")]
10827    pub group: ::core::option::Option<u32>,
10828    #[prost(int32, optional, tag="4")]
10829    pub start: ::core::option::Option<i32>,
10830    #[prost(int32, optional, tag="5")]
10831    pub len: ::core::option::Option<i32>,
10832}
10833#[derive(Clone, PartialEq, ::prost::Message)]
10834pub struct Ext4TruncateEnterFtraceEvent {
10835    #[prost(uint64, optional, tag="1")]
10836    pub dev: ::core::option::Option<u64>,
10837    #[prost(uint64, optional, tag="2")]
10838    pub ino: ::core::option::Option<u64>,
10839    #[prost(uint64, optional, tag="3")]
10840    pub blocks: ::core::option::Option<u64>,
10841}
10842#[derive(Clone, PartialEq, ::prost::Message)]
10843pub struct Ext4TruncateExitFtraceEvent {
10844    #[prost(uint64, optional, tag="1")]
10845    pub dev: ::core::option::Option<u64>,
10846    #[prost(uint64, optional, tag="2")]
10847    pub ino: ::core::option::Option<u64>,
10848    #[prost(uint64, optional, tag="3")]
10849    pub blocks: ::core::option::Option<u64>,
10850}
10851#[derive(Clone, PartialEq, ::prost::Message)]
10852pub struct Ext4UnlinkEnterFtraceEvent {
10853    #[prost(uint64, optional, tag="1")]
10854    pub dev: ::core::option::Option<u64>,
10855    #[prost(uint64, optional, tag="2")]
10856    pub ino: ::core::option::Option<u64>,
10857    #[prost(uint64, optional, tag="3")]
10858    pub parent: ::core::option::Option<u64>,
10859    #[prost(int64, optional, tag="4")]
10860    pub size: ::core::option::Option<i64>,
10861}
10862#[derive(Clone, PartialEq, ::prost::Message)]
10863pub struct Ext4UnlinkExitFtraceEvent {
10864    #[prost(uint64, optional, tag="1")]
10865    pub dev: ::core::option::Option<u64>,
10866    #[prost(uint64, optional, tag="2")]
10867    pub ino: ::core::option::Option<u64>,
10868    #[prost(int32, optional, tag="3")]
10869    pub ret: ::core::option::Option<i32>,
10870}
10871#[derive(Clone, PartialEq, ::prost::Message)]
10872pub struct Ext4WriteBeginFtraceEvent {
10873    #[prost(uint64, optional, tag="1")]
10874    pub dev: ::core::option::Option<u64>,
10875    #[prost(uint64, optional, tag="2")]
10876    pub ino: ::core::option::Option<u64>,
10877    #[prost(int64, optional, tag="3")]
10878    pub pos: ::core::option::Option<i64>,
10879    #[prost(uint32, optional, tag="4")]
10880    pub len: ::core::option::Option<u32>,
10881    #[prost(uint32, optional, tag="5")]
10882    pub flags: ::core::option::Option<u32>,
10883}
10884#[derive(Clone, PartialEq, ::prost::Message)]
10885pub struct Ext4WriteEndFtraceEvent {
10886    #[prost(uint64, optional, tag="1")]
10887    pub dev: ::core::option::Option<u64>,
10888    #[prost(uint64, optional, tag="2")]
10889    pub ino: ::core::option::Option<u64>,
10890    #[prost(int64, optional, tag="3")]
10891    pub pos: ::core::option::Option<i64>,
10892    #[prost(uint32, optional, tag="4")]
10893    pub len: ::core::option::Option<u32>,
10894    #[prost(uint32, optional, tag="5")]
10895    pub copied: ::core::option::Option<u32>,
10896}
10897#[derive(Clone, PartialEq, ::prost::Message)]
10898pub struct Ext4WritepageFtraceEvent {
10899    #[prost(uint64, optional, tag="1")]
10900    pub dev: ::core::option::Option<u64>,
10901    #[prost(uint64, optional, tag="2")]
10902    pub ino: ::core::option::Option<u64>,
10903    #[prost(uint64, optional, tag="3")]
10904    pub index: ::core::option::Option<u64>,
10905}
10906#[derive(Clone, PartialEq, ::prost::Message)]
10907pub struct Ext4WritepagesFtraceEvent {
10908    #[prost(uint64, optional, tag="1")]
10909    pub dev: ::core::option::Option<u64>,
10910    #[prost(uint64, optional, tag="2")]
10911    pub ino: ::core::option::Option<u64>,
10912    #[prost(int64, optional, tag="3")]
10913    pub nr_to_write: ::core::option::Option<i64>,
10914    #[prost(int64, optional, tag="4")]
10915    pub pages_skipped: ::core::option::Option<i64>,
10916    #[prost(int64, optional, tag="5")]
10917    pub range_start: ::core::option::Option<i64>,
10918    #[prost(int64, optional, tag="6")]
10919    pub range_end: ::core::option::Option<i64>,
10920    #[prost(uint64, optional, tag="7")]
10921    pub writeback_index: ::core::option::Option<u64>,
10922    #[prost(int32, optional, tag="8")]
10923    pub sync_mode: ::core::option::Option<i32>,
10924    #[prost(uint32, optional, tag="9")]
10925    pub for_kupdate: ::core::option::Option<u32>,
10926    #[prost(uint32, optional, tag="10")]
10927    pub range_cyclic: ::core::option::Option<u32>,
10928}
10929#[derive(Clone, PartialEq, ::prost::Message)]
10930pub struct Ext4WritepagesResultFtraceEvent {
10931    #[prost(uint64, optional, tag="1")]
10932    pub dev: ::core::option::Option<u64>,
10933    #[prost(uint64, optional, tag="2")]
10934    pub ino: ::core::option::Option<u64>,
10935    #[prost(int32, optional, tag="3")]
10936    pub ret: ::core::option::Option<i32>,
10937    #[prost(int32, optional, tag="4")]
10938    pub pages_written: ::core::option::Option<i32>,
10939    #[prost(int64, optional, tag="5")]
10940    pub pages_skipped: ::core::option::Option<i64>,
10941    #[prost(uint64, optional, tag="6")]
10942    pub writeback_index: ::core::option::Option<u64>,
10943    #[prost(int32, optional, tag="7")]
10944    pub sync_mode: ::core::option::Option<i32>,
10945}
10946#[derive(Clone, PartialEq, ::prost::Message)]
10947pub struct Ext4ZeroRangeFtraceEvent {
10948    #[prost(uint64, optional, tag="1")]
10949    pub dev: ::core::option::Option<u64>,
10950    #[prost(uint64, optional, tag="2")]
10951    pub ino: ::core::option::Option<u64>,
10952    #[prost(int64, optional, tag="3")]
10953    pub offset: ::core::option::Option<i64>,
10954    #[prost(int64, optional, tag="4")]
10955    pub len: ::core::option::Option<i64>,
10956    #[prost(int32, optional, tag="5")]
10957    pub mode: ::core::option::Option<i32>,
10958}
10959// End of protos/perfetto/trace/ftrace/ext4.proto
10960
10961// Begin of protos/perfetto/trace/ftrace/f2fs.proto
10962
10963#[derive(Clone, PartialEq, ::prost::Message)]
10964pub struct F2fsDoSubmitBioFtraceEvent {
10965    #[prost(uint64, optional, tag="1")]
10966    pub dev: ::core::option::Option<u64>,
10967    #[prost(int32, optional, tag="2")]
10968    pub btype: ::core::option::Option<i32>,
10969    #[prost(uint32, optional, tag="3")]
10970    pub sync: ::core::option::Option<u32>,
10971    #[prost(uint64, optional, tag="4")]
10972    pub sector: ::core::option::Option<u64>,
10973    #[prost(uint32, optional, tag="5")]
10974    pub size: ::core::option::Option<u32>,
10975}
10976#[derive(Clone, PartialEq, ::prost::Message)]
10977pub struct F2fsEvictInodeFtraceEvent {
10978    #[prost(uint64, optional, tag="1")]
10979    pub dev: ::core::option::Option<u64>,
10980    #[prost(uint64, optional, tag="2")]
10981    pub ino: ::core::option::Option<u64>,
10982    #[prost(uint64, optional, tag="3")]
10983    pub pino: ::core::option::Option<u64>,
10984    #[prost(uint32, optional, tag="4")]
10985    pub mode: ::core::option::Option<u32>,
10986    #[prost(int64, optional, tag="5")]
10987    pub size: ::core::option::Option<i64>,
10988    #[prost(uint32, optional, tag="6")]
10989    pub nlink: ::core::option::Option<u32>,
10990    #[prost(uint64, optional, tag="7")]
10991    pub blocks: ::core::option::Option<u64>,
10992    #[prost(uint32, optional, tag="8")]
10993    pub advise: ::core::option::Option<u32>,
10994}
10995#[derive(Clone, PartialEq, ::prost::Message)]
10996pub struct F2fsFallocateFtraceEvent {
10997    #[prost(uint64, optional, tag="1")]
10998    pub dev: ::core::option::Option<u64>,
10999    #[prost(uint64, optional, tag="2")]
11000    pub ino: ::core::option::Option<u64>,
11001    #[prost(int32, optional, tag="3")]
11002    pub mode: ::core::option::Option<i32>,
11003    #[prost(int64, optional, tag="4")]
11004    pub offset: ::core::option::Option<i64>,
11005    #[prost(int64, optional, tag="5")]
11006    pub len: ::core::option::Option<i64>,
11007    #[prost(int64, optional, tag="6")]
11008    pub size: ::core::option::Option<i64>,
11009    #[prost(uint64, optional, tag="7")]
11010    pub blocks: ::core::option::Option<u64>,
11011    #[prost(int32, optional, tag="8")]
11012    pub ret: ::core::option::Option<i32>,
11013}
11014#[derive(Clone, PartialEq, ::prost::Message)]
11015pub struct F2fsGetDataBlockFtraceEvent {
11016    #[prost(uint64, optional, tag="1")]
11017    pub dev: ::core::option::Option<u64>,
11018    #[prost(uint64, optional, tag="2")]
11019    pub ino: ::core::option::Option<u64>,
11020    #[prost(uint64, optional, tag="3")]
11021    pub iblock: ::core::option::Option<u64>,
11022    #[prost(uint64, optional, tag="4")]
11023    pub bh_start: ::core::option::Option<u64>,
11024    #[prost(uint64, optional, tag="5")]
11025    pub bh_size: ::core::option::Option<u64>,
11026    #[prost(int32, optional, tag="6")]
11027    pub ret: ::core::option::Option<i32>,
11028}
11029#[derive(Clone, PartialEq, ::prost::Message)]
11030pub struct F2fsGetVictimFtraceEvent {
11031    #[prost(uint64, optional, tag="1")]
11032    pub dev: ::core::option::Option<u64>,
11033    #[prost(int32, optional, tag="2")]
11034    pub r#type: ::core::option::Option<i32>,
11035    #[prost(int32, optional, tag="3")]
11036    pub gc_type: ::core::option::Option<i32>,
11037    #[prost(int32, optional, tag="4")]
11038    pub alloc_mode: ::core::option::Option<i32>,
11039    #[prost(int32, optional, tag="5")]
11040    pub gc_mode: ::core::option::Option<i32>,
11041    #[prost(uint32, optional, tag="6")]
11042    pub victim: ::core::option::Option<u32>,
11043    #[prost(uint32, optional, tag="7")]
11044    pub ofs_unit: ::core::option::Option<u32>,
11045    #[prost(uint32, optional, tag="8")]
11046    pub pre_victim: ::core::option::Option<u32>,
11047    #[prost(uint32, optional, tag="9")]
11048    pub prefree: ::core::option::Option<u32>,
11049    #[prost(uint32, optional, tag="10")]
11050    pub free: ::core::option::Option<u32>,
11051    #[prost(uint32, optional, tag="11")]
11052    pub cost: ::core::option::Option<u32>,
11053}
11054#[derive(Clone, PartialEq, ::prost::Message)]
11055pub struct F2fsIgetFtraceEvent {
11056    #[prost(uint64, optional, tag="1")]
11057    pub dev: ::core::option::Option<u64>,
11058    #[prost(uint64, optional, tag="2")]
11059    pub ino: ::core::option::Option<u64>,
11060    #[prost(uint64, optional, tag="3")]
11061    pub pino: ::core::option::Option<u64>,
11062    #[prost(uint32, optional, tag="4")]
11063    pub mode: ::core::option::Option<u32>,
11064    #[prost(int64, optional, tag="5")]
11065    pub size: ::core::option::Option<i64>,
11066    #[prost(uint32, optional, tag="6")]
11067    pub nlink: ::core::option::Option<u32>,
11068    #[prost(uint64, optional, tag="7")]
11069    pub blocks: ::core::option::Option<u64>,
11070    #[prost(uint32, optional, tag="8")]
11071    pub advise: ::core::option::Option<u32>,
11072}
11073#[derive(Clone, PartialEq, ::prost::Message)]
11074pub struct F2fsIgetExitFtraceEvent {
11075    #[prost(uint64, optional, tag="1")]
11076    pub dev: ::core::option::Option<u64>,
11077    #[prost(uint64, optional, tag="2")]
11078    pub ino: ::core::option::Option<u64>,
11079    #[prost(int32, optional, tag="3")]
11080    pub ret: ::core::option::Option<i32>,
11081}
11082#[derive(Clone, PartialEq, ::prost::Message)]
11083pub struct F2fsNewInodeFtraceEvent {
11084    #[prost(uint64, optional, tag="1")]
11085    pub dev: ::core::option::Option<u64>,
11086    #[prost(uint64, optional, tag="2")]
11087    pub ino: ::core::option::Option<u64>,
11088    #[prost(int32, optional, tag="3")]
11089    pub ret: ::core::option::Option<i32>,
11090}
11091#[derive(Clone, PartialEq, ::prost::Message)]
11092pub struct F2fsReadpageFtraceEvent {
11093    #[prost(uint64, optional, tag="1")]
11094    pub dev: ::core::option::Option<u64>,
11095    #[prost(uint64, optional, tag="2")]
11096    pub ino: ::core::option::Option<u64>,
11097    #[prost(uint64, optional, tag="3")]
11098    pub index: ::core::option::Option<u64>,
11099    #[prost(uint64, optional, tag="4")]
11100    pub blkaddr: ::core::option::Option<u64>,
11101    #[prost(int32, optional, tag="5")]
11102    pub r#type: ::core::option::Option<i32>,
11103    #[prost(int32, optional, tag="6")]
11104    pub dir: ::core::option::Option<i32>,
11105    #[prost(int32, optional, tag="7")]
11106    pub dirty: ::core::option::Option<i32>,
11107    #[prost(int32, optional, tag="8")]
11108    pub uptodate: ::core::option::Option<i32>,
11109}
11110#[derive(Clone, PartialEq, ::prost::Message)]
11111pub struct F2fsReserveNewBlockFtraceEvent {
11112    #[prost(uint64, optional, tag="1")]
11113    pub dev: ::core::option::Option<u64>,
11114    #[prost(uint32, optional, tag="2")]
11115    pub nid: ::core::option::Option<u32>,
11116    #[prost(uint32, optional, tag="3")]
11117    pub ofs_in_node: ::core::option::Option<u32>,
11118}
11119#[derive(Clone, PartialEq, ::prost::Message)]
11120pub struct F2fsSetPageDirtyFtraceEvent {
11121    #[prost(uint64, optional, tag="1")]
11122    pub dev: ::core::option::Option<u64>,
11123    #[prost(uint64, optional, tag="2")]
11124    pub ino: ::core::option::Option<u64>,
11125    #[prost(int32, optional, tag="3")]
11126    pub r#type: ::core::option::Option<i32>,
11127    #[prost(int32, optional, tag="4")]
11128    pub dir: ::core::option::Option<i32>,
11129    #[prost(uint64, optional, tag="5")]
11130    pub index: ::core::option::Option<u64>,
11131    #[prost(int32, optional, tag="6")]
11132    pub dirty: ::core::option::Option<i32>,
11133    #[prost(int32, optional, tag="7")]
11134    pub uptodate: ::core::option::Option<i32>,
11135}
11136#[derive(Clone, PartialEq, ::prost::Message)]
11137pub struct F2fsSubmitWritePageFtraceEvent {
11138    #[prost(uint64, optional, tag="1")]
11139    pub dev: ::core::option::Option<u64>,
11140    #[prost(uint64, optional, tag="2")]
11141    pub ino: ::core::option::Option<u64>,
11142    #[prost(int32, optional, tag="3")]
11143    pub r#type: ::core::option::Option<i32>,
11144    #[prost(uint64, optional, tag="4")]
11145    pub index: ::core::option::Option<u64>,
11146    #[prost(uint32, optional, tag="5")]
11147    pub block: ::core::option::Option<u32>,
11148}
11149#[derive(Clone, PartialEq, ::prost::Message)]
11150pub struct F2fsSyncFileEnterFtraceEvent {
11151    #[prost(uint64, optional, tag="1")]
11152    pub dev: ::core::option::Option<u64>,
11153    #[prost(uint64, optional, tag="2")]
11154    pub ino: ::core::option::Option<u64>,
11155    #[prost(uint64, optional, tag="3")]
11156    pub pino: ::core::option::Option<u64>,
11157    #[prost(uint32, optional, tag="4")]
11158    pub mode: ::core::option::Option<u32>,
11159    #[prost(int64, optional, tag="5")]
11160    pub size: ::core::option::Option<i64>,
11161    #[prost(uint32, optional, tag="6")]
11162    pub nlink: ::core::option::Option<u32>,
11163    #[prost(uint64, optional, tag="7")]
11164    pub blocks: ::core::option::Option<u64>,
11165    #[prost(uint32, optional, tag="8")]
11166    pub advise: ::core::option::Option<u32>,
11167}
11168#[derive(Clone, PartialEq, ::prost::Message)]
11169pub struct F2fsSyncFileExitFtraceEvent {
11170    #[prost(uint64, optional, tag="1")]
11171    pub dev: ::core::option::Option<u64>,
11172    #[prost(uint64, optional, tag="2")]
11173    pub ino: ::core::option::Option<u64>,
11174    #[prost(uint32, optional, tag="3")]
11175    pub need_cp: ::core::option::Option<u32>,
11176    #[prost(int32, optional, tag="4")]
11177    pub datasync: ::core::option::Option<i32>,
11178    #[prost(int32, optional, tag="5")]
11179    pub ret: ::core::option::Option<i32>,
11180    #[prost(int32, optional, tag="6")]
11181    pub cp_reason: ::core::option::Option<i32>,
11182}
11183#[derive(Clone, PartialEq, ::prost::Message)]
11184pub struct F2fsSyncFsFtraceEvent {
11185    #[prost(uint64, optional, tag="1")]
11186    pub dev: ::core::option::Option<u64>,
11187    #[prost(int32, optional, tag="2")]
11188    pub dirty: ::core::option::Option<i32>,
11189    #[prost(int32, optional, tag="3")]
11190    pub wait: ::core::option::Option<i32>,
11191}
11192#[derive(Clone, PartialEq, ::prost::Message)]
11193pub struct F2fsTruncateFtraceEvent {
11194    #[prost(uint64, optional, tag="1")]
11195    pub dev: ::core::option::Option<u64>,
11196    #[prost(uint64, optional, tag="2")]
11197    pub ino: ::core::option::Option<u64>,
11198    #[prost(uint64, optional, tag="3")]
11199    pub pino: ::core::option::Option<u64>,
11200    #[prost(uint32, optional, tag="4")]
11201    pub mode: ::core::option::Option<u32>,
11202    #[prost(int64, optional, tag="5")]
11203    pub size: ::core::option::Option<i64>,
11204    #[prost(uint32, optional, tag="6")]
11205    pub nlink: ::core::option::Option<u32>,
11206    #[prost(uint64, optional, tag="7")]
11207    pub blocks: ::core::option::Option<u64>,
11208    #[prost(uint32, optional, tag="8")]
11209    pub advise: ::core::option::Option<u32>,
11210}
11211#[derive(Clone, PartialEq, ::prost::Message)]
11212pub struct F2fsTruncateBlocksEnterFtraceEvent {
11213    #[prost(uint64, optional, tag="1")]
11214    pub dev: ::core::option::Option<u64>,
11215    #[prost(uint64, optional, tag="2")]
11216    pub ino: ::core::option::Option<u64>,
11217    #[prost(int64, optional, tag="3")]
11218    pub size: ::core::option::Option<i64>,
11219    #[prost(uint64, optional, tag="4")]
11220    pub blocks: ::core::option::Option<u64>,
11221    #[prost(uint64, optional, tag="5")]
11222    pub from: ::core::option::Option<u64>,
11223}
11224#[derive(Clone, PartialEq, ::prost::Message)]
11225pub struct F2fsTruncateBlocksExitFtraceEvent {
11226    #[prost(uint64, optional, tag="1")]
11227    pub dev: ::core::option::Option<u64>,
11228    #[prost(uint64, optional, tag="2")]
11229    pub ino: ::core::option::Option<u64>,
11230    #[prost(int32, optional, tag="3")]
11231    pub ret: ::core::option::Option<i32>,
11232}
11233#[derive(Clone, PartialEq, ::prost::Message)]
11234pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
11235    #[prost(uint64, optional, tag="1")]
11236    pub dev: ::core::option::Option<u64>,
11237    #[prost(uint64, optional, tag="2")]
11238    pub ino: ::core::option::Option<u64>,
11239    #[prost(uint32, optional, tag="3")]
11240    pub nid: ::core::option::Option<u32>,
11241    #[prost(uint32, optional, tag="4")]
11242    pub ofs: ::core::option::Option<u32>,
11243    #[prost(int32, optional, tag="5")]
11244    pub free: ::core::option::Option<i32>,
11245}
11246#[derive(Clone, PartialEq, ::prost::Message)]
11247pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
11248    #[prost(uint64, optional, tag="1")]
11249    pub dev: ::core::option::Option<u64>,
11250    #[prost(uint64, optional, tag="2")]
11251    pub ino: ::core::option::Option<u64>,
11252    #[prost(int64, optional, tag="3")]
11253    pub size: ::core::option::Option<i64>,
11254    #[prost(uint64, optional, tag="4")]
11255    pub blocks: ::core::option::Option<u64>,
11256    #[prost(uint64, optional, tag="5")]
11257    pub from: ::core::option::Option<u64>,
11258}
11259#[derive(Clone, PartialEq, ::prost::Message)]
11260pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
11261    #[prost(uint64, optional, tag="1")]
11262    pub dev: ::core::option::Option<u64>,
11263    #[prost(uint64, optional, tag="2")]
11264    pub ino: ::core::option::Option<u64>,
11265    #[prost(int32, optional, tag="3")]
11266    pub ret: ::core::option::Option<i32>,
11267}
11268#[derive(Clone, PartialEq, ::prost::Message)]
11269pub struct F2fsTruncateNodeFtraceEvent {
11270    #[prost(uint64, optional, tag="1")]
11271    pub dev: ::core::option::Option<u64>,
11272    #[prost(uint64, optional, tag="2")]
11273    pub ino: ::core::option::Option<u64>,
11274    #[prost(uint32, optional, tag="3")]
11275    pub nid: ::core::option::Option<u32>,
11276    #[prost(uint32, optional, tag="4")]
11277    pub blk_addr: ::core::option::Option<u32>,
11278}
11279#[derive(Clone, PartialEq, ::prost::Message)]
11280pub struct F2fsTruncateNodesEnterFtraceEvent {
11281    #[prost(uint64, optional, tag="1")]
11282    pub dev: ::core::option::Option<u64>,
11283    #[prost(uint64, optional, tag="2")]
11284    pub ino: ::core::option::Option<u64>,
11285    #[prost(uint32, optional, tag="3")]
11286    pub nid: ::core::option::Option<u32>,
11287    #[prost(uint32, optional, tag="4")]
11288    pub blk_addr: ::core::option::Option<u32>,
11289}
11290#[derive(Clone, PartialEq, ::prost::Message)]
11291pub struct F2fsTruncateNodesExitFtraceEvent {
11292    #[prost(uint64, optional, tag="1")]
11293    pub dev: ::core::option::Option<u64>,
11294    #[prost(uint64, optional, tag="2")]
11295    pub ino: ::core::option::Option<u64>,
11296    #[prost(int32, optional, tag="3")]
11297    pub ret: ::core::option::Option<i32>,
11298}
11299#[derive(Clone, PartialEq, ::prost::Message)]
11300pub struct F2fsTruncatePartialNodesFtraceEvent {
11301    #[prost(uint64, optional, tag="1")]
11302    pub dev: ::core::option::Option<u64>,
11303    #[prost(uint64, optional, tag="2")]
11304    pub ino: ::core::option::Option<u64>,
11305    #[prost(uint32, optional, tag="3")]
11306    pub nid: ::core::option::Option<u32>,
11307    #[prost(int32, optional, tag="4")]
11308    pub depth: ::core::option::Option<i32>,
11309    #[prost(int32, optional, tag="5")]
11310    pub err: ::core::option::Option<i32>,
11311}
11312#[derive(Clone, PartialEq, ::prost::Message)]
11313pub struct F2fsUnlinkEnterFtraceEvent {
11314    #[prost(uint64, optional, tag="1")]
11315    pub dev: ::core::option::Option<u64>,
11316    #[prost(uint64, optional, tag="2")]
11317    pub ino: ::core::option::Option<u64>,
11318    #[prost(int64, optional, tag="3")]
11319    pub size: ::core::option::Option<i64>,
11320    #[prost(uint64, optional, tag="4")]
11321    pub blocks: ::core::option::Option<u64>,
11322    #[prost(string, optional, tag="5")]
11323    pub name: ::core::option::Option<::prost::alloc::string::String>,
11324}
11325#[derive(Clone, PartialEq, ::prost::Message)]
11326pub struct F2fsUnlinkExitFtraceEvent {
11327    #[prost(uint64, optional, tag="1")]
11328    pub dev: ::core::option::Option<u64>,
11329    #[prost(uint64, optional, tag="2")]
11330    pub ino: ::core::option::Option<u64>,
11331    #[prost(int32, optional, tag="3")]
11332    pub ret: ::core::option::Option<i32>,
11333}
11334#[derive(Clone, PartialEq, ::prost::Message)]
11335pub struct F2fsVmPageMkwriteFtraceEvent {
11336    #[prost(uint64, optional, tag="1")]
11337    pub dev: ::core::option::Option<u64>,
11338    #[prost(uint64, optional, tag="2")]
11339    pub ino: ::core::option::Option<u64>,
11340    #[prost(int32, optional, tag="3")]
11341    pub r#type: ::core::option::Option<i32>,
11342    #[prost(int32, optional, tag="4")]
11343    pub dir: ::core::option::Option<i32>,
11344    #[prost(uint64, optional, tag="5")]
11345    pub index: ::core::option::Option<u64>,
11346    #[prost(int32, optional, tag="6")]
11347    pub dirty: ::core::option::Option<i32>,
11348    #[prost(int32, optional, tag="7")]
11349    pub uptodate: ::core::option::Option<i32>,
11350}
11351#[derive(Clone, PartialEq, ::prost::Message)]
11352pub struct F2fsWriteBeginFtraceEvent {
11353    #[prost(uint64, optional, tag="1")]
11354    pub dev: ::core::option::Option<u64>,
11355    #[prost(uint64, optional, tag="2")]
11356    pub ino: ::core::option::Option<u64>,
11357    #[prost(int64, optional, tag="3")]
11358    pub pos: ::core::option::Option<i64>,
11359    #[prost(uint32, optional, tag="4")]
11360    pub len: ::core::option::Option<u32>,
11361    #[prost(uint32, optional, tag="5")]
11362    pub flags: ::core::option::Option<u32>,
11363}
11364#[derive(Clone, PartialEq, ::prost::Message)]
11365pub struct F2fsWriteCheckpointFtraceEvent {
11366    #[prost(uint64, optional, tag="1")]
11367    pub dev: ::core::option::Option<u64>,
11368    #[prost(uint32, optional, tag="2")]
11369    pub is_umount: ::core::option::Option<u32>,
11370    #[prost(string, optional, tag="3")]
11371    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11372    #[prost(int32, optional, tag="4")]
11373    pub reason: ::core::option::Option<i32>,
11374}
11375#[derive(Clone, PartialEq, ::prost::Message)]
11376pub struct F2fsWriteEndFtraceEvent {
11377    #[prost(uint64, optional, tag="1")]
11378    pub dev: ::core::option::Option<u64>,
11379    #[prost(uint64, optional, tag="2")]
11380    pub ino: ::core::option::Option<u64>,
11381    #[prost(int64, optional, tag="3")]
11382    pub pos: ::core::option::Option<i64>,
11383    #[prost(uint32, optional, tag="4")]
11384    pub len: ::core::option::Option<u32>,
11385    #[prost(uint32, optional, tag="5")]
11386    pub copied: ::core::option::Option<u32>,
11387}
11388#[derive(Clone, PartialEq, ::prost::Message)]
11389pub struct F2fsIostatFtraceEvent {
11390    #[prost(uint64, optional, tag="1")]
11391    pub app_bio: ::core::option::Option<u64>,
11392    #[prost(uint64, optional, tag="2")]
11393    pub app_brio: ::core::option::Option<u64>,
11394    #[prost(uint64, optional, tag="3")]
11395    pub app_dio: ::core::option::Option<u64>,
11396    #[prost(uint64, optional, tag="4")]
11397    pub app_drio: ::core::option::Option<u64>,
11398    #[prost(uint64, optional, tag="5")]
11399    pub app_mio: ::core::option::Option<u64>,
11400    #[prost(uint64, optional, tag="6")]
11401    pub app_mrio: ::core::option::Option<u64>,
11402    #[prost(uint64, optional, tag="7")]
11403    pub app_rio: ::core::option::Option<u64>,
11404    #[prost(uint64, optional, tag="8")]
11405    pub app_wio: ::core::option::Option<u64>,
11406    #[prost(uint64, optional, tag="9")]
11407    pub dev: ::core::option::Option<u64>,
11408    #[prost(uint64, optional, tag="10")]
11409    pub fs_cdrio: ::core::option::Option<u64>,
11410    #[prost(uint64, optional, tag="11")]
11411    pub fs_cp_dio: ::core::option::Option<u64>,
11412    #[prost(uint64, optional, tag="12")]
11413    pub fs_cp_mio: ::core::option::Option<u64>,
11414    #[prost(uint64, optional, tag="13")]
11415    pub fs_cp_nio: ::core::option::Option<u64>,
11416    #[prost(uint64, optional, tag="14")]
11417    pub fs_dio: ::core::option::Option<u64>,
11418    #[prost(uint64, optional, tag="15")]
11419    pub fs_discard: ::core::option::Option<u64>,
11420    #[prost(uint64, optional, tag="16")]
11421    pub fs_drio: ::core::option::Option<u64>,
11422    #[prost(uint64, optional, tag="17")]
11423    pub fs_gc_dio: ::core::option::Option<u64>,
11424    #[prost(uint64, optional, tag="18")]
11425    pub fs_gc_nio: ::core::option::Option<u64>,
11426    #[prost(uint64, optional, tag="19")]
11427    pub fs_gdrio: ::core::option::Option<u64>,
11428    #[prost(uint64, optional, tag="20")]
11429    pub fs_mio: ::core::option::Option<u64>,
11430    #[prost(uint64, optional, tag="21")]
11431    pub fs_mrio: ::core::option::Option<u64>,
11432    #[prost(uint64, optional, tag="22")]
11433    pub fs_nio: ::core::option::Option<u64>,
11434    #[prost(uint64, optional, tag="23")]
11435    pub fs_nrio: ::core::option::Option<u64>,
11436}
11437#[derive(Clone, PartialEq, ::prost::Message)]
11438pub struct F2fsIostatLatencyFtraceEvent {
11439    #[prost(uint32, optional, tag="1")]
11440    pub d_rd_avg: ::core::option::Option<u32>,
11441    #[prost(uint32, optional, tag="2")]
11442    pub d_rd_cnt: ::core::option::Option<u32>,
11443    #[prost(uint32, optional, tag="3")]
11444    pub d_rd_peak: ::core::option::Option<u32>,
11445    #[prost(uint32, optional, tag="4")]
11446    pub d_wr_as_avg: ::core::option::Option<u32>,
11447    #[prost(uint32, optional, tag="5")]
11448    pub d_wr_as_cnt: ::core::option::Option<u32>,
11449    #[prost(uint32, optional, tag="6")]
11450    pub d_wr_as_peak: ::core::option::Option<u32>,
11451    #[prost(uint32, optional, tag="7")]
11452    pub d_wr_s_avg: ::core::option::Option<u32>,
11453    #[prost(uint32, optional, tag="8")]
11454    pub d_wr_s_cnt: ::core::option::Option<u32>,
11455    #[prost(uint32, optional, tag="9")]
11456    pub d_wr_s_peak: ::core::option::Option<u32>,
11457    #[prost(uint64, optional, tag="10")]
11458    pub dev: ::core::option::Option<u64>,
11459    #[prost(uint32, optional, tag="11")]
11460    pub m_rd_avg: ::core::option::Option<u32>,
11461    #[prost(uint32, optional, tag="12")]
11462    pub m_rd_cnt: ::core::option::Option<u32>,
11463    #[prost(uint32, optional, tag="13")]
11464    pub m_rd_peak: ::core::option::Option<u32>,
11465    #[prost(uint32, optional, tag="14")]
11466    pub m_wr_as_avg: ::core::option::Option<u32>,
11467    #[prost(uint32, optional, tag="15")]
11468    pub m_wr_as_cnt: ::core::option::Option<u32>,
11469    #[prost(uint32, optional, tag="16")]
11470    pub m_wr_as_peak: ::core::option::Option<u32>,
11471    #[prost(uint32, optional, tag="17")]
11472    pub m_wr_s_avg: ::core::option::Option<u32>,
11473    #[prost(uint32, optional, tag="18")]
11474    pub m_wr_s_cnt: ::core::option::Option<u32>,
11475    #[prost(uint32, optional, tag="19")]
11476    pub m_wr_s_peak: ::core::option::Option<u32>,
11477    #[prost(uint32, optional, tag="20")]
11478    pub n_rd_avg: ::core::option::Option<u32>,
11479    #[prost(uint32, optional, tag="21")]
11480    pub n_rd_cnt: ::core::option::Option<u32>,
11481    #[prost(uint32, optional, tag="22")]
11482    pub n_rd_peak: ::core::option::Option<u32>,
11483    #[prost(uint32, optional, tag="23")]
11484    pub n_wr_as_avg: ::core::option::Option<u32>,
11485    #[prost(uint32, optional, tag="24")]
11486    pub n_wr_as_cnt: ::core::option::Option<u32>,
11487    #[prost(uint32, optional, tag="25")]
11488    pub n_wr_as_peak: ::core::option::Option<u32>,
11489    #[prost(uint32, optional, tag="26")]
11490    pub n_wr_s_avg: ::core::option::Option<u32>,
11491    #[prost(uint32, optional, tag="27")]
11492    pub n_wr_s_cnt: ::core::option::Option<u32>,
11493    #[prost(uint32, optional, tag="28")]
11494    pub n_wr_s_peak: ::core::option::Option<u32>,
11495}
11496#[derive(Clone, PartialEq, ::prost::Message)]
11497pub struct F2fsBackgroundGcFtraceEvent {
11498    #[prost(uint64, optional, tag="1")]
11499    pub dev: ::core::option::Option<u64>,
11500    #[prost(uint32, optional, tag="2")]
11501    pub wait_ms: ::core::option::Option<u32>,
11502    #[prost(uint32, optional, tag="3")]
11503    pub prefree: ::core::option::Option<u32>,
11504    #[prost(uint32, optional, tag="4")]
11505    pub free: ::core::option::Option<u32>,
11506}
11507#[derive(Clone, PartialEq, ::prost::Message)]
11508pub struct F2fsGcBeginFtraceEvent {
11509    #[prost(uint64, optional, tag="1")]
11510    pub dev: ::core::option::Option<u64>,
11511    #[prost(uint32, optional, tag="2")]
11512    pub sync: ::core::option::Option<u32>,
11513    #[prost(uint32, optional, tag="3")]
11514    pub background: ::core::option::Option<u32>,
11515    #[prost(int64, optional, tag="4")]
11516    pub dirty_nodes: ::core::option::Option<i64>,
11517    #[prost(int64, optional, tag="5")]
11518    pub dirty_dents: ::core::option::Option<i64>,
11519    #[prost(int64, optional, tag="6")]
11520    pub dirty_imeta: ::core::option::Option<i64>,
11521    #[prost(uint32, optional, tag="7")]
11522    pub free_sec: ::core::option::Option<u32>,
11523    #[prost(uint32, optional, tag="8")]
11524    pub free_seg: ::core::option::Option<u32>,
11525    #[prost(int32, optional, tag="9")]
11526    pub reserved_seg: ::core::option::Option<i32>,
11527    #[prost(uint32, optional, tag="10")]
11528    pub prefree_seg: ::core::option::Option<u32>,
11529    #[prost(int32, optional, tag="11")]
11530    pub gc_type: ::core::option::Option<i32>,
11531    #[prost(uint32, optional, tag="12")]
11532    pub no_bg_gc: ::core::option::Option<u32>,
11533    #[prost(uint32, optional, tag="13")]
11534    pub nr_free_secs: ::core::option::Option<u32>,
11535}
11536#[derive(Clone, PartialEq, ::prost::Message)]
11537pub struct F2fsGcEndFtraceEvent {
11538    #[prost(uint64, optional, tag="1")]
11539    pub dev: ::core::option::Option<u64>,
11540    #[prost(int32, optional, tag="2")]
11541    pub ret: ::core::option::Option<i32>,
11542    #[prost(int32, optional, tag="3")]
11543    pub seg_freed: ::core::option::Option<i32>,
11544    #[prost(int32, optional, tag="4")]
11545    pub sec_freed: ::core::option::Option<i32>,
11546    #[prost(int64, optional, tag="5")]
11547    pub dirty_nodes: ::core::option::Option<i64>,
11548    #[prost(int64, optional, tag="6")]
11549    pub dirty_dents: ::core::option::Option<i64>,
11550    #[prost(int64, optional, tag="7")]
11551    pub dirty_imeta: ::core::option::Option<i64>,
11552    #[prost(uint32, optional, tag="8")]
11553    pub free_sec: ::core::option::Option<u32>,
11554    #[prost(uint32, optional, tag="9")]
11555    pub free_seg: ::core::option::Option<u32>,
11556    #[prost(int32, optional, tag="10")]
11557    pub reserved_seg: ::core::option::Option<i32>,
11558    #[prost(uint32, optional, tag="11")]
11559    pub prefree_seg: ::core::option::Option<u32>,
11560}
11561// End of protos/perfetto/trace/ftrace/f2fs.proto
11562
11563// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
11564
11565#[derive(Clone, PartialEq, ::prost::Message)]
11566pub struct FastrpcDmaStatFtraceEvent {
11567    #[prost(int32, optional, tag="1")]
11568    pub cid: ::core::option::Option<i32>,
11569    #[prost(int64, optional, tag="2")]
11570    pub len: ::core::option::Option<i64>,
11571    #[prost(uint64, optional, tag="3")]
11572    pub total_allocated: ::core::option::Option<u64>,
11573}
11574#[derive(Clone, PartialEq, ::prost::Message)]
11575pub struct FastrpcDmaFreeFtraceEvent {
11576    #[prost(int32, optional, tag="1")]
11577    pub cid: ::core::option::Option<i32>,
11578    #[prost(uint64, optional, tag="2")]
11579    pub phys: ::core::option::Option<u64>,
11580    #[prost(uint64, optional, tag="3")]
11581    pub size: ::core::option::Option<u64>,
11582}
11583#[derive(Clone, PartialEq, ::prost::Message)]
11584pub struct FastrpcDmaAllocFtraceEvent {
11585    #[prost(int32, optional, tag="1")]
11586    pub cid: ::core::option::Option<i32>,
11587    #[prost(uint64, optional, tag="2")]
11588    pub phys: ::core::option::Option<u64>,
11589    #[prost(uint64, optional, tag="3")]
11590    pub size: ::core::option::Option<u64>,
11591    #[prost(uint64, optional, tag="4")]
11592    pub attr: ::core::option::Option<u64>,
11593    #[prost(int32, optional, tag="5")]
11594    pub mflags: ::core::option::Option<i32>,
11595}
11596#[derive(Clone, PartialEq, ::prost::Message)]
11597pub struct FastrpcDmaUnmapFtraceEvent {
11598    #[prost(int32, optional, tag="1")]
11599    pub cid: ::core::option::Option<i32>,
11600    #[prost(uint64, optional, tag="2")]
11601    pub phys: ::core::option::Option<u64>,
11602    #[prost(uint64, optional, tag="3")]
11603    pub size: ::core::option::Option<u64>,
11604}
11605#[derive(Clone, PartialEq, ::prost::Message)]
11606pub struct FastrpcDmaMapFtraceEvent {
11607    #[prost(int32, optional, tag="1")]
11608    pub cid: ::core::option::Option<i32>,
11609    #[prost(int32, optional, tag="2")]
11610    pub fd: ::core::option::Option<i32>,
11611    #[prost(uint64, optional, tag="3")]
11612    pub phys: ::core::option::Option<u64>,
11613    #[prost(uint64, optional, tag="4")]
11614    pub size: ::core::option::Option<u64>,
11615    #[prost(uint64, optional, tag="5")]
11616    pub len: ::core::option::Option<u64>,
11617    #[prost(uint32, optional, tag="6")]
11618    pub attr: ::core::option::Option<u32>,
11619    #[prost(int32, optional, tag="7")]
11620    pub mflags: ::core::option::Option<i32>,
11621}
11622// End of protos/perfetto/trace/ftrace/fastrpc.proto
11623
11624// Begin of protos/perfetto/trace/ftrace/fence.proto
11625
11626#[derive(Clone, PartialEq, ::prost::Message)]
11627pub struct FenceInitFtraceEvent {
11628    #[prost(uint32, optional, tag="1")]
11629    pub context: ::core::option::Option<u32>,
11630    #[prost(string, optional, tag="2")]
11631    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11632    #[prost(uint32, optional, tag="3")]
11633    pub seqno: ::core::option::Option<u32>,
11634    #[prost(string, optional, tag="4")]
11635    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11636}
11637#[derive(Clone, PartialEq, ::prost::Message)]
11638pub struct FenceDestroyFtraceEvent {
11639    #[prost(uint32, optional, tag="1")]
11640    pub context: ::core::option::Option<u32>,
11641    #[prost(string, optional, tag="2")]
11642    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11643    #[prost(uint32, optional, tag="3")]
11644    pub seqno: ::core::option::Option<u32>,
11645    #[prost(string, optional, tag="4")]
11646    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11647}
11648#[derive(Clone, PartialEq, ::prost::Message)]
11649pub struct FenceEnableSignalFtraceEvent {
11650    #[prost(uint32, optional, tag="1")]
11651    pub context: ::core::option::Option<u32>,
11652    #[prost(string, optional, tag="2")]
11653    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11654    #[prost(uint32, optional, tag="3")]
11655    pub seqno: ::core::option::Option<u32>,
11656    #[prost(string, optional, tag="4")]
11657    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11658}
11659#[derive(Clone, PartialEq, ::prost::Message)]
11660pub struct FenceSignaledFtraceEvent {
11661    #[prost(uint32, optional, tag="1")]
11662    pub context: ::core::option::Option<u32>,
11663    #[prost(string, optional, tag="2")]
11664    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11665    #[prost(uint32, optional, tag="3")]
11666    pub seqno: ::core::option::Option<u32>,
11667    #[prost(string, optional, tag="4")]
11668    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11669}
11670// End of protos/perfetto/trace/ftrace/fence.proto
11671
11672// Begin of protos/perfetto/trace/ftrace/filemap.proto
11673
11674#[derive(Clone, PartialEq, ::prost::Message)]
11675pub struct MmFilemapAddToPageCacheFtraceEvent {
11676    #[prost(uint64, optional, tag="1")]
11677    pub pfn: ::core::option::Option<u64>,
11678    #[prost(uint64, optional, tag="2")]
11679    pub i_ino: ::core::option::Option<u64>,
11680    #[prost(uint64, optional, tag="3")]
11681    pub index: ::core::option::Option<u64>,
11682    #[prost(uint64, optional, tag="4")]
11683    pub s_dev: ::core::option::Option<u64>,
11684    #[prost(uint64, optional, tag="5")]
11685    pub page: ::core::option::Option<u64>,
11686}
11687#[derive(Clone, PartialEq, ::prost::Message)]
11688pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
11689    #[prost(uint64, optional, tag="1")]
11690    pub pfn: ::core::option::Option<u64>,
11691    #[prost(uint64, optional, tag="2")]
11692    pub i_ino: ::core::option::Option<u64>,
11693    #[prost(uint64, optional, tag="3")]
11694    pub index: ::core::option::Option<u64>,
11695    #[prost(uint64, optional, tag="4")]
11696    pub s_dev: ::core::option::Option<u64>,
11697    #[prost(uint64, optional, tag="5")]
11698    pub page: ::core::option::Option<u64>,
11699}
11700// End of protos/perfetto/trace/ftrace/filemap.proto
11701
11702// Begin of protos/perfetto/trace/ftrace/fs.proto
11703
11704#[derive(Clone, PartialEq, ::prost::Message)]
11705pub struct DoSysOpenFtraceEvent {
11706    #[prost(string, optional, tag="1")]
11707    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11708    #[prost(int32, optional, tag="2")]
11709    pub flags: ::core::option::Option<i32>,
11710    #[prost(int32, optional, tag="3")]
11711    pub mode: ::core::option::Option<i32>,
11712}
11713#[derive(Clone, PartialEq, ::prost::Message)]
11714pub struct OpenExecFtraceEvent {
11715    #[prost(string, optional, tag="1")]
11716    pub filename: ::core::option::Option<::prost::alloc::string::String>,
11717}
11718// End of protos/perfetto/trace/ftrace/fs.proto
11719
11720// Begin of protos/perfetto/trace/ftrace/ftrace.proto
11721
11722#[derive(Clone, PartialEq, ::prost::Message)]
11723pub struct PrintFtraceEvent {
11724    #[prost(uint64, optional, tag="1")]
11725    pub ip: ::core::option::Option<u64>,
11726    #[prost(string, optional, tag="2")]
11727    pub buf: ::core::option::Option<::prost::alloc::string::String>,
11728}
11729#[derive(Clone, PartialEq, ::prost::Message)]
11730pub struct FuncgraphEntryFtraceEvent {
11731    #[prost(int32, optional, tag="1")]
11732    pub depth: ::core::option::Option<i32>,
11733    #[prost(uint64, optional, tag="2")]
11734    pub func: ::core::option::Option<u64>,
11735}
11736#[derive(Clone, PartialEq, ::prost::Message)]
11737pub struct FuncgraphExitFtraceEvent {
11738    #[prost(uint64, optional, tag="1")]
11739    pub calltime: ::core::option::Option<u64>,
11740    #[prost(int32, optional, tag="2")]
11741    pub depth: ::core::option::Option<i32>,
11742    #[prost(uint64, optional, tag="3")]
11743    pub func: ::core::option::Option<u64>,
11744    #[prost(uint64, optional, tag="4")]
11745    pub overrun: ::core::option::Option<u64>,
11746    #[prost(uint64, optional, tag="5")]
11747    pub rettime: ::core::option::Option<u64>,
11748}
11749// End of protos/perfetto/trace/ftrace/ftrace.proto
11750
11751// Begin of protos/perfetto/trace/ftrace/g2d.proto
11752
11753#[derive(Clone, PartialEq, ::prost::Message)]
11754pub struct G2dTracingMarkWriteFtraceEvent {
11755    #[prost(int32, optional, tag="1")]
11756    pub pid: ::core::option::Option<i32>,
11757    #[prost(string, optional, tag="4")]
11758    pub name: ::core::option::Option<::prost::alloc::string::String>,
11759    #[prost(uint32, optional, tag="5")]
11760    pub r#type: ::core::option::Option<u32>,
11761    #[prost(int32, optional, tag="6")]
11762    pub value: ::core::option::Option<i32>,
11763}
11764// End of protos/perfetto/trace/ftrace/g2d.proto
11765
11766// Begin of protos/perfetto/trace/ftrace/generic.proto
11767
11768/// This generic proto is used to output events in the trace
11769/// when a specific proto for that event does not exist.
11770#[derive(Clone, PartialEq, ::prost::Message)]
11771pub struct GenericFtraceEvent {
11772    #[prost(string, optional, tag="1")]
11773    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
11774    #[prost(message, repeated, tag="2")]
11775    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
11776}
11777/// Nested message and enum types in `GenericFtraceEvent`.
11778pub mod generic_ftrace_event {
11779    #[derive(Clone, PartialEq, ::prost::Message)]
11780    pub struct Field {
11781        #[prost(string, optional, tag="1")]
11782        pub name: ::core::option::Option<::prost::alloc::string::String>,
11783        #[prost(oneof="field::Value", tags="3, 4, 5")]
11784        pub value: ::core::option::Option<field::Value>,
11785    }
11786    /// Nested message and enum types in `Field`.
11787    pub mod field {
11788        #[derive(Clone, PartialEq, ::prost::Oneof)]
11789        pub enum Value {
11790            #[prost(string, tag="3")]
11791            StrValue(::prost::alloc::string::String),
11792            #[prost(int64, tag="4")]
11793            IntValue(i64),
11794            #[prost(uint64, tag="5")]
11795            UintValue(u64),
11796        }
11797    }
11798}
11799#[derive(Clone, PartialEq, ::prost::Message)]
11800pub struct KprobeEvent {
11801    #[prost(string, optional, tag="1")]
11802    pub name: ::core::option::Option<::prost::alloc::string::String>,
11803    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
11804    pub r#type: ::core::option::Option<i32>,
11805}
11806/// Nested message and enum types in `KprobeEvent`.
11807pub mod kprobe_event {
11808    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11809    #[repr(i32)]
11810    pub enum KprobeType {
11811        Unknown = 0,
11812        Begin = 1,
11813        End = 2,
11814        Instant = 3,
11815    }
11816    impl KprobeType {
11817        /// String value of the enum field names used in the ProtoBuf definition.
11818        ///
11819        /// The values are not transformed in any way and thus are considered stable
11820        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11821        pub fn as_str_name(&self) -> &'static str {
11822            match self {
11823                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
11824                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
11825                KprobeType::End => "KPROBE_TYPE_END",
11826                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
11827            }
11828        }
11829    }
11830}
11831// End of protos/perfetto/trace/ftrace/generic.proto
11832
11833// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
11834
11835#[derive(Clone, PartialEq, ::prost::Message)]
11836pub struct GoogleIccEventFtraceEvent {
11837    #[prost(string, optional, tag="1")]
11838    pub event: ::core::option::Option<::prost::alloc::string::String>,
11839    #[prost(uint64, optional, tag="2")]
11840    pub timestamp: ::core::option::Option<u64>,
11841}
11842// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
11843
11844// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
11845
11846#[derive(Clone, PartialEq, ::prost::Message)]
11847pub struct GoogleIrmEventFtraceEvent {
11848    #[prost(string, optional, tag="1")]
11849    pub event: ::core::option::Option<::prost::alloc::string::String>,
11850    #[prost(uint64, optional, tag="2")]
11851    pub timestamp: ::core::option::Option<u64>,
11852}
11853// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
11854
11855// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
11856
11857#[derive(Clone, PartialEq, ::prost::Message)]
11858pub struct GpuMemTotalFtraceEvent {
11859    #[prost(uint32, optional, tag="1")]
11860    pub gpu_id: ::core::option::Option<u32>,
11861    #[prost(uint32, optional, tag="2")]
11862    pub pid: ::core::option::Option<u32>,
11863    #[prost(uint64, optional, tag="3")]
11864    pub size: ::core::option::Option<u64>,
11865}
11866// End of protos/perfetto/trace/ftrace/gpu_mem.proto
11867
11868// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
11869
11870#[derive(Clone, PartialEq, ::prost::Message)]
11871pub struct DrmSchedJobFtraceEvent {
11872    #[prost(uint64, optional, tag="1")]
11873    pub entity: ::core::option::Option<u64>,
11874    #[prost(uint64, optional, tag="2")]
11875    pub fence: ::core::option::Option<u64>,
11876    #[prost(int32, optional, tag="3")]
11877    pub hw_job_count: ::core::option::Option<i32>,
11878    #[prost(uint64, optional, tag="4")]
11879    pub id: ::core::option::Option<u64>,
11880    #[prost(uint32, optional, tag="5")]
11881    pub job_count: ::core::option::Option<u32>,
11882    #[prost(string, optional, tag="6")]
11883    pub name: ::core::option::Option<::prost::alloc::string::String>,
11884}
11885#[derive(Clone, PartialEq, ::prost::Message)]
11886pub struct DrmRunJobFtraceEvent {
11887    #[prost(uint64, optional, tag="1")]
11888    pub entity: ::core::option::Option<u64>,
11889    #[prost(uint64, optional, tag="2")]
11890    pub fence: ::core::option::Option<u64>,
11891    #[prost(int32, optional, tag="3")]
11892    pub hw_job_count: ::core::option::Option<i32>,
11893    #[prost(uint64, optional, tag="4")]
11894    pub id: ::core::option::Option<u64>,
11895    #[prost(uint32, optional, tag="5")]
11896    pub job_count: ::core::option::Option<u32>,
11897    #[prost(string, optional, tag="6")]
11898    pub name: ::core::option::Option<::prost::alloc::string::String>,
11899}
11900#[derive(Clone, PartialEq, ::prost::Message)]
11901pub struct DrmSchedProcessJobFtraceEvent {
11902    #[prost(uint64, optional, tag="1")]
11903    pub fence: ::core::option::Option<u64>,
11904}
11905// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
11906
11907// Begin of protos/perfetto/trace/ftrace/hyp.proto
11908
11909#[derive(Clone, PartialEq, ::prost::Message)]
11910pub struct HypEnterFtraceEvent {
11911}
11912#[derive(Clone, PartialEq, ::prost::Message)]
11913pub struct HypExitFtraceEvent {
11914}
11915#[derive(Clone, PartialEq, ::prost::Message)]
11916pub struct HostHcallFtraceEvent {
11917    #[prost(uint32, optional, tag="1")]
11918    pub id: ::core::option::Option<u32>,
11919    #[prost(uint32, optional, tag="2")]
11920    pub invalid: ::core::option::Option<u32>,
11921}
11922#[derive(Clone, PartialEq, ::prost::Message)]
11923pub struct HostSmcFtraceEvent {
11924    #[prost(uint64, optional, tag="1")]
11925    pub id: ::core::option::Option<u64>,
11926    #[prost(uint32, optional, tag="2")]
11927    pub forwarded: ::core::option::Option<u32>,
11928}
11929#[derive(Clone, PartialEq, ::prost::Message)]
11930pub struct HostMemAbortFtraceEvent {
11931    #[prost(uint64, optional, tag="1")]
11932    pub esr: ::core::option::Option<u64>,
11933    #[prost(uint64, optional, tag="2")]
11934    pub addr: ::core::option::Option<u64>,
11935}
11936// End of protos/perfetto/trace/ftrace/hyp.proto
11937
11938// Begin of protos/perfetto/trace/ftrace/i2c.proto
11939
11940#[derive(Clone, PartialEq, ::prost::Message)]
11941pub struct I2cReadFtraceEvent {
11942    #[prost(int32, optional, tag="1")]
11943    pub adapter_nr: ::core::option::Option<i32>,
11944    #[prost(uint32, optional, tag="2")]
11945    pub msg_nr: ::core::option::Option<u32>,
11946    #[prost(uint32, optional, tag="3")]
11947    pub addr: ::core::option::Option<u32>,
11948    #[prost(uint32, optional, tag="4")]
11949    pub flags: ::core::option::Option<u32>,
11950    #[prost(uint32, optional, tag="5")]
11951    pub len: ::core::option::Option<u32>,
11952}
11953#[derive(Clone, PartialEq, ::prost::Message)]
11954pub struct I2cWriteFtraceEvent {
11955    #[prost(int32, optional, tag="1")]
11956    pub adapter_nr: ::core::option::Option<i32>,
11957    #[prost(uint32, optional, tag="2")]
11958    pub msg_nr: ::core::option::Option<u32>,
11959    #[prost(uint32, optional, tag="3")]
11960    pub addr: ::core::option::Option<u32>,
11961    #[prost(uint32, optional, tag="4")]
11962    pub flags: ::core::option::Option<u32>,
11963    #[prost(uint32, optional, tag="5")]
11964    pub len: ::core::option::Option<u32>,
11965    #[prost(uint32, optional, tag="6")]
11966    pub buf: ::core::option::Option<u32>,
11967}
11968#[derive(Clone, PartialEq, ::prost::Message)]
11969pub struct I2cResultFtraceEvent {
11970    #[prost(int32, optional, tag="1")]
11971    pub adapter_nr: ::core::option::Option<i32>,
11972    #[prost(uint32, optional, tag="2")]
11973    pub nr_msgs: ::core::option::Option<u32>,
11974    #[prost(int32, optional, tag="3")]
11975    pub ret: ::core::option::Option<i32>,
11976}
11977#[derive(Clone, PartialEq, ::prost::Message)]
11978pub struct I2cReplyFtraceEvent {
11979    #[prost(int32, optional, tag="1")]
11980    pub adapter_nr: ::core::option::Option<i32>,
11981    #[prost(uint32, optional, tag="2")]
11982    pub msg_nr: ::core::option::Option<u32>,
11983    #[prost(uint32, optional, tag="3")]
11984    pub addr: ::core::option::Option<u32>,
11985    #[prost(uint32, optional, tag="4")]
11986    pub flags: ::core::option::Option<u32>,
11987    #[prost(uint32, optional, tag="5")]
11988    pub len: ::core::option::Option<u32>,
11989    #[prost(uint32, optional, tag="6")]
11990    pub buf: ::core::option::Option<u32>,
11991}
11992#[derive(Clone, PartialEq, ::prost::Message)]
11993pub struct SmbusReadFtraceEvent {
11994    #[prost(int32, optional, tag="1")]
11995    pub adapter_nr: ::core::option::Option<i32>,
11996    #[prost(uint32, optional, tag="2")]
11997    pub flags: ::core::option::Option<u32>,
11998    #[prost(uint32, optional, tag="3")]
11999    pub addr: ::core::option::Option<u32>,
12000    #[prost(uint32, optional, tag="4")]
12001    pub command: ::core::option::Option<u32>,
12002    #[prost(uint32, optional, tag="5")]
12003    pub protocol: ::core::option::Option<u32>,
12004}
12005#[derive(Clone, PartialEq, ::prost::Message)]
12006pub struct SmbusWriteFtraceEvent {
12007    #[prost(int32, optional, tag="1")]
12008    pub adapter_nr: ::core::option::Option<i32>,
12009    #[prost(uint32, optional, tag="2")]
12010    pub addr: ::core::option::Option<u32>,
12011    #[prost(uint32, optional, tag="3")]
12012    pub flags: ::core::option::Option<u32>,
12013    #[prost(uint32, optional, tag="4")]
12014    pub command: ::core::option::Option<u32>,
12015    #[prost(uint32, optional, tag="5")]
12016    pub len: ::core::option::Option<u32>,
12017    #[prost(uint32, optional, tag="6")]
12018    pub protocol: ::core::option::Option<u32>,
12019}
12020#[derive(Clone, PartialEq, ::prost::Message)]
12021pub struct SmbusResultFtraceEvent {
12022    #[prost(int32, optional, tag="1")]
12023    pub adapter_nr: ::core::option::Option<i32>,
12024    #[prost(uint32, optional, tag="2")]
12025    pub addr: ::core::option::Option<u32>,
12026    #[prost(uint32, optional, tag="3")]
12027    pub flags: ::core::option::Option<u32>,
12028    #[prost(uint32, optional, tag="4")]
12029    pub read_write: ::core::option::Option<u32>,
12030    #[prost(uint32, optional, tag="5")]
12031    pub command: ::core::option::Option<u32>,
12032    #[prost(int32, optional, tag="6")]
12033    pub res: ::core::option::Option<i32>,
12034    #[prost(uint32, optional, tag="7")]
12035    pub protocol: ::core::option::Option<u32>,
12036}
12037#[derive(Clone, PartialEq, ::prost::Message)]
12038pub struct SmbusReplyFtraceEvent {
12039    #[prost(int32, optional, tag="1")]
12040    pub adapter_nr: ::core::option::Option<i32>,
12041    #[prost(uint32, optional, tag="2")]
12042    pub addr: ::core::option::Option<u32>,
12043    #[prost(uint32, optional, tag="3")]
12044    pub flags: ::core::option::Option<u32>,
12045    #[prost(uint32, optional, tag="4")]
12046    pub command: ::core::option::Option<u32>,
12047    #[prost(uint32, optional, tag="5")]
12048    pub len: ::core::option::Option<u32>,
12049    #[prost(uint32, optional, tag="6")]
12050    pub protocol: ::core::option::Option<u32>,
12051}
12052// End of protos/perfetto/trace/ftrace/i2c.proto
12053
12054// Begin of protos/perfetto/trace/ftrace/ion.proto
12055
12056#[derive(Clone, PartialEq, ::prost::Message)]
12057pub struct IonStatFtraceEvent {
12058    #[prost(uint32, optional, tag="1")]
12059    pub buffer_id: ::core::option::Option<u32>,
12060    #[prost(int64, optional, tag="2")]
12061    pub len: ::core::option::Option<i64>,
12062    #[prost(uint64, optional, tag="3")]
12063    pub total_allocated: ::core::option::Option<u64>,
12064}
12065// End of protos/perfetto/trace/ftrace/ion.proto
12066
12067// Begin of protos/perfetto/trace/ftrace/ipi.proto
12068
12069#[derive(Clone, PartialEq, ::prost::Message)]
12070pub struct IpiEntryFtraceEvent {
12071    #[prost(string, optional, tag="1")]
12072    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12073}
12074#[derive(Clone, PartialEq, ::prost::Message)]
12075pub struct IpiExitFtraceEvent {
12076    #[prost(string, optional, tag="1")]
12077    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12078}
12079#[derive(Clone, PartialEq, ::prost::Message)]
12080pub struct IpiRaiseFtraceEvent {
12081    #[prost(uint32, optional, tag="1")]
12082    pub target_cpus: ::core::option::Option<u32>,
12083    #[prost(string, optional, tag="2")]
12084    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12085}
12086// End of protos/perfetto/trace/ftrace/ipi.proto
12087
12088// Begin of protos/perfetto/trace/ftrace/irq.proto
12089
12090#[derive(Clone, PartialEq, ::prost::Message)]
12091pub struct SoftirqEntryFtraceEvent {
12092    #[prost(uint32, optional, tag="1")]
12093    pub vec: ::core::option::Option<u32>,
12094}
12095#[derive(Clone, PartialEq, ::prost::Message)]
12096pub struct SoftirqExitFtraceEvent {
12097    #[prost(uint32, optional, tag="1")]
12098    pub vec: ::core::option::Option<u32>,
12099}
12100#[derive(Clone, PartialEq, ::prost::Message)]
12101pub struct SoftirqRaiseFtraceEvent {
12102    #[prost(uint32, optional, tag="1")]
12103    pub vec: ::core::option::Option<u32>,
12104}
12105#[derive(Clone, PartialEq, ::prost::Message)]
12106pub struct IrqHandlerEntryFtraceEvent {
12107    #[prost(int32, optional, tag="1")]
12108    pub irq: ::core::option::Option<i32>,
12109    #[prost(string, optional, tag="2")]
12110    pub name: ::core::option::Option<::prost::alloc::string::String>,
12111    #[prost(uint32, optional, tag="3")]
12112    pub handler: ::core::option::Option<u32>,
12113}
12114#[derive(Clone, PartialEq, ::prost::Message)]
12115pub struct IrqHandlerExitFtraceEvent {
12116    #[prost(int32, optional, tag="1")]
12117    pub irq: ::core::option::Option<i32>,
12118    #[prost(int32, optional, tag="2")]
12119    pub ret: ::core::option::Option<i32>,
12120}
12121// End of protos/perfetto/trace/ftrace/irq.proto
12122
12123// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
12124
12125#[derive(Clone, PartialEq, ::prost::Message)]
12126pub struct LocalTimerEntryFtraceEvent {
12127    #[prost(int32, optional, tag="1")]
12128    pub vector: ::core::option::Option<i32>,
12129}
12130#[derive(Clone, PartialEq, ::prost::Message)]
12131pub struct LocalTimerExitFtraceEvent {
12132    #[prost(int32, optional, tag="1")]
12133    pub vector: ::core::option::Option<i32>,
12134}
12135// End of protos/perfetto/trace/ftrace/irq_vectors.proto
12136
12137// Begin of protos/perfetto/trace/ftrace/kgsl.proto
12138
12139#[derive(Clone, PartialEq, ::prost::Message)]
12140pub struct KgslGpuFrequencyFtraceEvent {
12141    #[prost(uint32, optional, tag="1")]
12142    pub gpu_freq: ::core::option::Option<u32>,
12143    #[prost(uint32, optional, tag="2")]
12144    pub gpu_id: ::core::option::Option<u32>,
12145}
12146#[derive(Clone, PartialEq, ::prost::Message)]
12147pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
12148    #[prost(uint32, optional, tag="1")]
12149    pub id: ::core::option::Option<u32>,
12150    #[prost(uint32, optional, tag="2")]
12151    pub timestamp: ::core::option::Option<u32>,
12152    #[prost(uint32, optional, tag="3")]
12153    pub queued: ::core::option::Option<u32>,
12154    #[prost(uint32, optional, tag="4")]
12155    pub flags: ::core::option::Option<u32>,
12156    #[prost(uint32, optional, tag="5")]
12157    pub prio: ::core::option::Option<u32>,
12158}
12159#[derive(Clone, PartialEq, ::prost::Message)]
12160pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
12161    #[prost(uint32, optional, tag="1")]
12162    pub id: ::core::option::Option<u32>,
12163    #[prost(uint32, optional, tag="2")]
12164    pub timestamp: ::core::option::Option<u32>,
12165    #[prost(int64, optional, tag="3")]
12166    pub inflight: ::core::option::Option<i64>,
12167    #[prost(uint32, optional, tag="4")]
12168    pub flags: ::core::option::Option<u32>,
12169    #[prost(uint64, optional, tag="5")]
12170    pub ticks: ::core::option::Option<u64>,
12171    #[prost(uint64, optional, tag="6")]
12172    pub secs: ::core::option::Option<u64>,
12173    #[prost(uint64, optional, tag="7")]
12174    pub usecs: ::core::option::Option<u64>,
12175    #[prost(int32, optional, tag="8")]
12176    pub prio: ::core::option::Option<i32>,
12177    #[prost(int32, optional, tag="9")]
12178    pub rb_id: ::core::option::Option<i32>,
12179    #[prost(uint32, optional, tag="10")]
12180    pub rptr: ::core::option::Option<u32>,
12181    #[prost(uint32, optional, tag="11")]
12182    pub wptr: ::core::option::Option<u32>,
12183    #[prost(int32, optional, tag="12")]
12184    pub q_inflight: ::core::option::Option<i32>,
12185    #[prost(int32, optional, tag="13")]
12186    pub dispatch_queue: ::core::option::Option<i32>,
12187}
12188#[derive(Clone, PartialEq, ::prost::Message)]
12189pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
12190    #[prost(uint32, optional, tag="1")]
12191    pub id: ::core::option::Option<u32>,
12192    #[prost(uint32, optional, tag="2")]
12193    pub timestamp: ::core::option::Option<u32>,
12194    #[prost(uint64, optional, tag="3")]
12195    pub ticks: ::core::option::Option<u64>,
12196    #[prost(int32, optional, tag="4")]
12197    pub prio: ::core::option::Option<i32>,
12198}
12199#[derive(Clone, PartialEq, ::prost::Message)]
12200pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
12201    #[prost(uint32, optional, tag="1")]
12202    pub id: ::core::option::Option<u32>,
12203    #[prost(uint32, optional, tag="2")]
12204    pub timestamp: ::core::option::Option<u32>,
12205    #[prost(int64, optional, tag="3")]
12206    pub inflight: ::core::option::Option<i64>,
12207    #[prost(uint32, optional, tag="4")]
12208    pub recovery: ::core::option::Option<u32>,
12209    #[prost(uint32, optional, tag="5")]
12210    pub flags: ::core::option::Option<u32>,
12211    #[prost(uint64, optional, tag="6")]
12212    pub start: ::core::option::Option<u64>,
12213    #[prost(uint64, optional, tag="7")]
12214    pub retire: ::core::option::Option<u64>,
12215    #[prost(int32, optional, tag="8")]
12216    pub prio: ::core::option::Option<i32>,
12217    #[prost(int32, optional, tag="9")]
12218    pub rb_id: ::core::option::Option<i32>,
12219    #[prost(uint32, optional, tag="10")]
12220    pub rptr: ::core::option::Option<u32>,
12221    #[prost(uint32, optional, tag="11")]
12222    pub wptr: ::core::option::Option<u32>,
12223    #[prost(int32, optional, tag="12")]
12224    pub q_inflight: ::core::option::Option<i32>,
12225    #[prost(uint64, optional, tag="13")]
12226    pub fault_recovery: ::core::option::Option<u64>,
12227    #[prost(uint32, optional, tag="14")]
12228    pub dispatch_queue: ::core::option::Option<u32>,
12229    #[prost(uint64, optional, tag="15")]
12230    pub submitted_to_rb: ::core::option::Option<u64>,
12231    #[prost(uint64, optional, tag="16")]
12232    pub retired_on_gmu: ::core::option::Option<u64>,
12233    #[prost(uint64, optional, tag="17")]
12234    pub active: ::core::option::Option<u64>,
12235}
12236// End of protos/perfetto/trace/ftrace/kgsl.proto
12237
12238// Begin of protos/perfetto/trace/ftrace/kmem.proto
12239
12240#[derive(Clone, PartialEq, ::prost::Message)]
12241pub struct AllocPagesIommuEndFtraceEvent {
12242    #[prost(uint32, optional, tag="1")]
12243    pub gfp_flags: ::core::option::Option<u32>,
12244    #[prost(uint32, optional, tag="2")]
12245    pub order: ::core::option::Option<u32>,
12246}
12247#[derive(Clone, PartialEq, ::prost::Message)]
12248pub struct AllocPagesIommuFailFtraceEvent {
12249    #[prost(uint32, optional, tag="1")]
12250    pub gfp_flags: ::core::option::Option<u32>,
12251    #[prost(uint32, optional, tag="2")]
12252    pub order: ::core::option::Option<u32>,
12253}
12254#[derive(Clone, PartialEq, ::prost::Message)]
12255pub struct AllocPagesIommuStartFtraceEvent {
12256    #[prost(uint32, optional, tag="1")]
12257    pub gfp_flags: ::core::option::Option<u32>,
12258    #[prost(uint32, optional, tag="2")]
12259    pub order: ::core::option::Option<u32>,
12260}
12261#[derive(Clone, PartialEq, ::prost::Message)]
12262pub struct AllocPagesSysEndFtraceEvent {
12263    #[prost(uint32, optional, tag="1")]
12264    pub gfp_flags: ::core::option::Option<u32>,
12265    #[prost(uint32, optional, tag="2")]
12266    pub order: ::core::option::Option<u32>,
12267}
12268#[derive(Clone, PartialEq, ::prost::Message)]
12269pub struct AllocPagesSysFailFtraceEvent {
12270    #[prost(uint32, optional, tag="1")]
12271    pub gfp_flags: ::core::option::Option<u32>,
12272    #[prost(uint32, optional, tag="2")]
12273    pub order: ::core::option::Option<u32>,
12274}
12275#[derive(Clone, PartialEq, ::prost::Message)]
12276pub struct AllocPagesSysStartFtraceEvent {
12277    #[prost(uint32, optional, tag="1")]
12278    pub gfp_flags: ::core::option::Option<u32>,
12279    #[prost(uint32, optional, tag="2")]
12280    pub order: ::core::option::Option<u32>,
12281}
12282#[derive(Clone, PartialEq, ::prost::Message)]
12283pub struct DmaAllocContiguousRetryFtraceEvent {
12284    #[prost(int32, optional, tag="1")]
12285    pub tries: ::core::option::Option<i32>,
12286}
12287#[derive(Clone, PartialEq, ::prost::Message)]
12288pub struct IommuMapRangeFtraceEvent {
12289    #[prost(uint64, optional, tag="1")]
12290    pub chunk_size: ::core::option::Option<u64>,
12291    #[prost(uint64, optional, tag="2")]
12292    pub len: ::core::option::Option<u64>,
12293    #[prost(uint64, optional, tag="3")]
12294    pub pa: ::core::option::Option<u64>,
12295    #[prost(uint64, optional, tag="4")]
12296    pub va: ::core::option::Option<u64>,
12297}
12298#[derive(Clone, PartialEq, ::prost::Message)]
12299pub struct IommuSecPtblMapRangeEndFtraceEvent {
12300    #[prost(uint64, optional, tag="1")]
12301    pub len: ::core::option::Option<u64>,
12302    #[prost(int32, optional, tag="2")]
12303    pub num: ::core::option::Option<i32>,
12304    #[prost(uint32, optional, tag="3")]
12305    pub pa: ::core::option::Option<u32>,
12306    #[prost(int32, optional, tag="4")]
12307    pub sec_id: ::core::option::Option<i32>,
12308    #[prost(uint64, optional, tag="5")]
12309    pub va: ::core::option::Option<u64>,
12310}
12311#[derive(Clone, PartialEq, ::prost::Message)]
12312pub struct IommuSecPtblMapRangeStartFtraceEvent {
12313    #[prost(uint64, optional, tag="1")]
12314    pub len: ::core::option::Option<u64>,
12315    #[prost(int32, optional, tag="2")]
12316    pub num: ::core::option::Option<i32>,
12317    #[prost(uint32, optional, tag="3")]
12318    pub pa: ::core::option::Option<u32>,
12319    #[prost(int32, optional, tag="4")]
12320    pub sec_id: ::core::option::Option<i32>,
12321    #[prost(uint64, optional, tag="5")]
12322    pub va: ::core::option::Option<u64>,
12323}
12324#[derive(Clone, PartialEq, ::prost::Message)]
12325pub struct IonAllocBufferEndFtraceEvent {
12326    #[prost(string, optional, tag="1")]
12327    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12328    #[prost(uint32, optional, tag="2")]
12329    pub flags: ::core::option::Option<u32>,
12330    #[prost(string, optional, tag="3")]
12331    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12332    #[prost(uint64, optional, tag="4")]
12333    pub len: ::core::option::Option<u64>,
12334    #[prost(uint32, optional, tag="5")]
12335    pub mask: ::core::option::Option<u32>,
12336}
12337#[derive(Clone, PartialEq, ::prost::Message)]
12338pub struct IonAllocBufferFailFtraceEvent {
12339    #[prost(string, optional, tag="1")]
12340    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12341    #[prost(int64, optional, tag="2")]
12342    pub error: ::core::option::Option<i64>,
12343    #[prost(uint32, optional, tag="3")]
12344    pub flags: ::core::option::Option<u32>,
12345    #[prost(string, optional, tag="4")]
12346    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12347    #[prost(uint64, optional, tag="5")]
12348    pub len: ::core::option::Option<u64>,
12349    #[prost(uint32, optional, tag="6")]
12350    pub mask: ::core::option::Option<u32>,
12351}
12352#[derive(Clone, PartialEq, ::prost::Message)]
12353pub struct IonAllocBufferFallbackFtraceEvent {
12354    #[prost(string, optional, tag="1")]
12355    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12356    #[prost(int64, optional, tag="2")]
12357    pub error: ::core::option::Option<i64>,
12358    #[prost(uint32, optional, tag="3")]
12359    pub flags: ::core::option::Option<u32>,
12360    #[prost(string, optional, tag="4")]
12361    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12362    #[prost(uint64, optional, tag="5")]
12363    pub len: ::core::option::Option<u64>,
12364    #[prost(uint32, optional, tag="6")]
12365    pub mask: ::core::option::Option<u32>,
12366}
12367#[derive(Clone, PartialEq, ::prost::Message)]
12368pub struct IonAllocBufferStartFtraceEvent {
12369    #[prost(string, optional, tag="1")]
12370    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
12371    #[prost(uint32, optional, tag="2")]
12372    pub flags: ::core::option::Option<u32>,
12373    #[prost(string, optional, tag="3")]
12374    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12375    #[prost(uint64, optional, tag="4")]
12376    pub len: ::core::option::Option<u64>,
12377    #[prost(uint32, optional, tag="5")]
12378    pub mask: ::core::option::Option<u32>,
12379}
12380#[derive(Clone, PartialEq, ::prost::Message)]
12381pub struct IonCpAllocRetryFtraceEvent {
12382    #[prost(int32, optional, tag="1")]
12383    pub tries: ::core::option::Option<i32>,
12384}
12385#[derive(Clone, PartialEq, ::prost::Message)]
12386pub struct IonCpSecureBufferEndFtraceEvent {
12387    #[prost(uint64, optional, tag="1")]
12388    pub align: ::core::option::Option<u64>,
12389    #[prost(uint64, optional, tag="2")]
12390    pub flags: ::core::option::Option<u64>,
12391    #[prost(string, optional, tag="3")]
12392    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12393    #[prost(uint64, optional, tag="4")]
12394    pub len: ::core::option::Option<u64>,
12395}
12396#[derive(Clone, PartialEq, ::prost::Message)]
12397pub struct IonCpSecureBufferStartFtraceEvent {
12398    #[prost(uint64, optional, tag="1")]
12399    pub align: ::core::option::Option<u64>,
12400    #[prost(uint64, optional, tag="2")]
12401    pub flags: ::core::option::Option<u64>,
12402    #[prost(string, optional, tag="3")]
12403    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12404    #[prost(uint64, optional, tag="4")]
12405    pub len: ::core::option::Option<u64>,
12406}
12407#[derive(Clone, PartialEq, ::prost::Message)]
12408pub struct IonPrefetchingFtraceEvent {
12409    #[prost(uint64, optional, tag="1")]
12410    pub len: ::core::option::Option<u64>,
12411}
12412#[derive(Clone, PartialEq, ::prost::Message)]
12413pub struct IonSecureCmaAddToPoolEndFtraceEvent {
12414    #[prost(uint32, optional, tag="1")]
12415    pub is_prefetch: ::core::option::Option<u32>,
12416    #[prost(uint64, optional, tag="2")]
12417    pub len: ::core::option::Option<u64>,
12418    #[prost(int32, optional, tag="3")]
12419    pub pool_total: ::core::option::Option<i32>,
12420}
12421#[derive(Clone, PartialEq, ::prost::Message)]
12422pub struct IonSecureCmaAddToPoolStartFtraceEvent {
12423    #[prost(uint32, optional, tag="1")]
12424    pub is_prefetch: ::core::option::Option<u32>,
12425    #[prost(uint64, optional, tag="2")]
12426    pub len: ::core::option::Option<u64>,
12427    #[prost(int32, optional, tag="3")]
12428    pub pool_total: ::core::option::Option<i32>,
12429}
12430#[derive(Clone, PartialEq, ::prost::Message)]
12431pub struct IonSecureCmaAllocateEndFtraceEvent {
12432    #[prost(uint64, optional, tag="1")]
12433    pub align: ::core::option::Option<u64>,
12434    #[prost(uint64, optional, tag="2")]
12435    pub flags: ::core::option::Option<u64>,
12436    #[prost(string, optional, tag="3")]
12437    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12438    #[prost(uint64, optional, tag="4")]
12439    pub len: ::core::option::Option<u64>,
12440}
12441#[derive(Clone, PartialEq, ::prost::Message)]
12442pub struct IonSecureCmaAllocateStartFtraceEvent {
12443    #[prost(uint64, optional, tag="1")]
12444    pub align: ::core::option::Option<u64>,
12445    #[prost(uint64, optional, tag="2")]
12446    pub flags: ::core::option::Option<u64>,
12447    #[prost(string, optional, tag="3")]
12448    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12449    #[prost(uint64, optional, tag="4")]
12450    pub len: ::core::option::Option<u64>,
12451}
12452#[derive(Clone, PartialEq, ::prost::Message)]
12453pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
12454    #[prost(uint64, optional, tag="1")]
12455    pub drained_size: ::core::option::Option<u64>,
12456    #[prost(uint64, optional, tag="2")]
12457    pub skipped_size: ::core::option::Option<u64>,
12458}
12459#[derive(Clone, PartialEq, ::prost::Message)]
12460pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
12461    #[prost(uint64, optional, tag="1")]
12462    pub drained_size: ::core::option::Option<u64>,
12463    #[prost(uint64, optional, tag="2")]
12464    pub skipped_size: ::core::option::Option<u64>,
12465}
12466#[derive(Clone, PartialEq, ::prost::Message)]
12467pub struct KfreeFtraceEvent {
12468    #[prost(uint64, optional, tag="1")]
12469    pub call_site: ::core::option::Option<u64>,
12470    #[prost(uint64, optional, tag="2")]
12471    pub ptr: ::core::option::Option<u64>,
12472}
12473#[derive(Clone, PartialEq, ::prost::Message)]
12474pub struct KmallocFtraceEvent {
12475    #[prost(uint64, optional, tag="1")]
12476    pub bytes_alloc: ::core::option::Option<u64>,
12477    #[prost(uint64, optional, tag="2")]
12478    pub bytes_req: ::core::option::Option<u64>,
12479    #[prost(uint64, optional, tag="3")]
12480    pub call_site: ::core::option::Option<u64>,
12481    #[prost(uint32, optional, tag="4")]
12482    pub gfp_flags: ::core::option::Option<u32>,
12483    #[prost(uint64, optional, tag="5")]
12484    pub ptr: ::core::option::Option<u64>,
12485}
12486#[derive(Clone, PartialEq, ::prost::Message)]
12487pub struct KmallocNodeFtraceEvent {
12488    #[prost(uint64, optional, tag="1")]
12489    pub bytes_alloc: ::core::option::Option<u64>,
12490    #[prost(uint64, optional, tag="2")]
12491    pub bytes_req: ::core::option::Option<u64>,
12492    #[prost(uint64, optional, tag="3")]
12493    pub call_site: ::core::option::Option<u64>,
12494    #[prost(uint32, optional, tag="4")]
12495    pub gfp_flags: ::core::option::Option<u32>,
12496    #[prost(int32, optional, tag="5")]
12497    pub node: ::core::option::Option<i32>,
12498    #[prost(uint64, optional, tag="6")]
12499    pub ptr: ::core::option::Option<u64>,
12500}
12501#[derive(Clone, PartialEq, ::prost::Message)]
12502pub struct KmemCacheAllocFtraceEvent {
12503    #[prost(uint64, optional, tag="1")]
12504    pub bytes_alloc: ::core::option::Option<u64>,
12505    #[prost(uint64, optional, tag="2")]
12506    pub bytes_req: ::core::option::Option<u64>,
12507    #[prost(uint64, optional, tag="3")]
12508    pub call_site: ::core::option::Option<u64>,
12509    #[prost(uint32, optional, tag="4")]
12510    pub gfp_flags: ::core::option::Option<u32>,
12511    #[prost(uint64, optional, tag="5")]
12512    pub ptr: ::core::option::Option<u64>,
12513}
12514#[derive(Clone, PartialEq, ::prost::Message)]
12515pub struct KmemCacheAllocNodeFtraceEvent {
12516    #[prost(uint64, optional, tag="1")]
12517    pub bytes_alloc: ::core::option::Option<u64>,
12518    #[prost(uint64, optional, tag="2")]
12519    pub bytes_req: ::core::option::Option<u64>,
12520    #[prost(uint64, optional, tag="3")]
12521    pub call_site: ::core::option::Option<u64>,
12522    #[prost(uint32, optional, tag="4")]
12523    pub gfp_flags: ::core::option::Option<u32>,
12524    #[prost(int32, optional, tag="5")]
12525    pub node: ::core::option::Option<i32>,
12526    #[prost(uint64, optional, tag="6")]
12527    pub ptr: ::core::option::Option<u64>,
12528}
12529#[derive(Clone, PartialEq, ::prost::Message)]
12530pub struct KmemCacheFreeFtraceEvent {
12531    #[prost(uint64, optional, tag="1")]
12532    pub call_site: ::core::option::Option<u64>,
12533    #[prost(uint64, optional, tag="2")]
12534    pub ptr: ::core::option::Option<u64>,
12535}
12536#[derive(Clone, PartialEq, ::prost::Message)]
12537pub struct MigratePagesEndFtraceEvent {
12538    #[prost(int32, optional, tag="1")]
12539    pub mode: ::core::option::Option<i32>,
12540}
12541#[derive(Clone, PartialEq, ::prost::Message)]
12542pub struct MigratePagesStartFtraceEvent {
12543    #[prost(int32, optional, tag="1")]
12544    pub mode: ::core::option::Option<i32>,
12545}
12546#[derive(Clone, PartialEq, ::prost::Message)]
12547pub struct MigrateRetryFtraceEvent {
12548    #[prost(int32, optional, tag="1")]
12549    pub tries: ::core::option::Option<i32>,
12550}
12551#[derive(Clone, PartialEq, ::prost::Message)]
12552pub struct MmPageAllocFtraceEvent {
12553    #[prost(uint32, optional, tag="1")]
12554    pub gfp_flags: ::core::option::Option<u32>,
12555    #[prost(int32, optional, tag="2")]
12556    pub migratetype: ::core::option::Option<i32>,
12557    #[prost(uint32, optional, tag="3")]
12558    pub order: ::core::option::Option<u32>,
12559    #[prost(uint64, optional, tag="4")]
12560    pub page: ::core::option::Option<u64>,
12561    #[prost(uint64, optional, tag="5")]
12562    pub pfn: ::core::option::Option<u64>,
12563}
12564#[derive(Clone, PartialEq, ::prost::Message)]
12565pub struct MmPageAllocExtfragFtraceEvent {
12566    #[prost(int32, optional, tag="1")]
12567    pub alloc_migratetype: ::core::option::Option<i32>,
12568    #[prost(int32, optional, tag="2")]
12569    pub alloc_order: ::core::option::Option<i32>,
12570    #[prost(int32, optional, tag="3")]
12571    pub fallback_migratetype: ::core::option::Option<i32>,
12572    #[prost(int32, optional, tag="4")]
12573    pub fallback_order: ::core::option::Option<i32>,
12574    #[prost(uint64, optional, tag="5")]
12575    pub page: ::core::option::Option<u64>,
12576    #[prost(int32, optional, tag="6")]
12577    pub change_ownership: ::core::option::Option<i32>,
12578    #[prost(uint64, optional, tag="7")]
12579    pub pfn: ::core::option::Option<u64>,
12580}
12581#[derive(Clone, PartialEq, ::prost::Message)]
12582pub struct MmPageAllocZoneLockedFtraceEvent {
12583    #[prost(int32, optional, tag="1")]
12584    pub migratetype: ::core::option::Option<i32>,
12585    #[prost(uint32, optional, tag="2")]
12586    pub order: ::core::option::Option<u32>,
12587    #[prost(uint64, optional, tag="3")]
12588    pub page: ::core::option::Option<u64>,
12589    #[prost(uint64, optional, tag="4")]
12590    pub pfn: ::core::option::Option<u64>,
12591}
12592#[derive(Clone, PartialEq, ::prost::Message)]
12593pub struct MmPageFreeFtraceEvent {
12594    #[prost(uint32, optional, tag="1")]
12595    pub order: ::core::option::Option<u32>,
12596    #[prost(uint64, optional, tag="2")]
12597    pub page: ::core::option::Option<u64>,
12598    #[prost(uint64, optional, tag="3")]
12599    pub pfn: ::core::option::Option<u64>,
12600}
12601#[derive(Clone, PartialEq, ::prost::Message)]
12602pub struct MmPageFreeBatchedFtraceEvent {
12603    #[prost(int32, optional, tag="1")]
12604    pub cold: ::core::option::Option<i32>,
12605    #[prost(uint64, optional, tag="2")]
12606    pub page: ::core::option::Option<u64>,
12607    #[prost(uint64, optional, tag="3")]
12608    pub pfn: ::core::option::Option<u64>,
12609}
12610#[derive(Clone, PartialEq, ::prost::Message)]
12611pub struct MmPagePcpuDrainFtraceEvent {
12612    #[prost(int32, optional, tag="1")]
12613    pub migratetype: ::core::option::Option<i32>,
12614    #[prost(uint32, optional, tag="2")]
12615    pub order: ::core::option::Option<u32>,
12616    #[prost(uint64, optional, tag="3")]
12617    pub page: ::core::option::Option<u64>,
12618    #[prost(uint64, optional, tag="4")]
12619    pub pfn: ::core::option::Option<u64>,
12620}
12621#[derive(Clone, PartialEq, ::prost::Message)]
12622pub struct RssStatFtraceEvent {
12623    #[prost(int32, optional, tag="1")]
12624    pub member: ::core::option::Option<i32>,
12625    #[prost(int64, optional, tag="2")]
12626    pub size: ::core::option::Option<i64>,
12627    #[prost(uint32, optional, tag="3")]
12628    pub curr: ::core::option::Option<u32>,
12629    #[prost(uint32, optional, tag="4")]
12630    pub mm_id: ::core::option::Option<u32>,
12631}
12632#[derive(Clone, PartialEq, ::prost::Message)]
12633pub struct IonHeapShrinkFtraceEvent {
12634    #[prost(string, optional, tag="1")]
12635    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12636    #[prost(uint64, optional, tag="2")]
12637    pub len: ::core::option::Option<u64>,
12638    #[prost(int64, optional, tag="3")]
12639    pub total_allocated: ::core::option::Option<i64>,
12640}
12641#[derive(Clone, PartialEq, ::prost::Message)]
12642pub struct IonHeapGrowFtraceEvent {
12643    #[prost(string, optional, tag="1")]
12644    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
12645    #[prost(uint64, optional, tag="2")]
12646    pub len: ::core::option::Option<u64>,
12647    #[prost(int64, optional, tag="3")]
12648    pub total_allocated: ::core::option::Option<i64>,
12649}
12650#[derive(Clone, PartialEq, ::prost::Message)]
12651pub struct IonBufferCreateFtraceEvent {
12652    #[prost(uint64, optional, tag="1")]
12653    pub addr: ::core::option::Option<u64>,
12654    #[prost(uint64, optional, tag="2")]
12655    pub len: ::core::option::Option<u64>,
12656}
12657#[derive(Clone, PartialEq, ::prost::Message)]
12658pub struct IonBufferDestroyFtraceEvent {
12659    #[prost(uint64, optional, tag="1")]
12660    pub addr: ::core::option::Option<u64>,
12661    #[prost(uint64, optional, tag="2")]
12662    pub len: ::core::option::Option<u64>,
12663}
12664// End of protos/perfetto/trace/ftrace/kmem.proto
12665
12666// Begin of protos/perfetto/trace/ftrace/kvm.proto
12667
12668#[derive(Clone, PartialEq, ::prost::Message)]
12669pub struct KvmAccessFaultFtraceEvent {
12670    #[prost(uint64, optional, tag="1")]
12671    pub ipa: ::core::option::Option<u64>,
12672}
12673#[derive(Clone, PartialEq, ::prost::Message)]
12674pub struct KvmAckIrqFtraceEvent {
12675    #[prost(uint32, optional, tag="1")]
12676    pub irqchip: ::core::option::Option<u32>,
12677    #[prost(uint32, optional, tag="2")]
12678    pub pin: ::core::option::Option<u32>,
12679}
12680#[derive(Clone, PartialEq, ::prost::Message)]
12681pub struct KvmAgeHvaFtraceEvent {
12682    #[prost(uint64, optional, tag="1")]
12683    pub end: ::core::option::Option<u64>,
12684    #[prost(uint64, optional, tag="2")]
12685    pub start: ::core::option::Option<u64>,
12686}
12687#[derive(Clone, PartialEq, ::prost::Message)]
12688pub struct KvmAgePageFtraceEvent {
12689    #[prost(uint64, optional, tag="1")]
12690    pub gfn: ::core::option::Option<u64>,
12691    #[prost(uint64, optional, tag="2")]
12692    pub hva: ::core::option::Option<u64>,
12693    #[prost(uint32, optional, tag="3")]
12694    pub level: ::core::option::Option<u32>,
12695    #[prost(uint32, optional, tag="4")]
12696    pub referenced: ::core::option::Option<u32>,
12697}
12698#[derive(Clone, PartialEq, ::prost::Message)]
12699pub struct KvmArmClearDebugFtraceEvent {
12700    #[prost(uint32, optional, tag="1")]
12701    pub guest_debug: ::core::option::Option<u32>,
12702}
12703#[derive(Clone, PartialEq, ::prost::Message)]
12704pub struct KvmArmSetDreg32FtraceEvent {
12705    #[prost(string, optional, tag="1")]
12706    pub name: ::core::option::Option<::prost::alloc::string::String>,
12707    #[prost(uint32, optional, tag="2")]
12708    pub value: ::core::option::Option<u32>,
12709}
12710#[derive(Clone, PartialEq, ::prost::Message)]
12711pub struct KvmArmSetRegsetFtraceEvent {
12712    #[prost(int32, optional, tag="1")]
12713    pub len: ::core::option::Option<i32>,
12714    #[prost(string, optional, tag="2")]
12715    pub name: ::core::option::Option<::prost::alloc::string::String>,
12716}
12717#[derive(Clone, PartialEq, ::prost::Message)]
12718pub struct KvmArmSetupDebugFtraceEvent {
12719    #[prost(uint32, optional, tag="1")]
12720    pub guest_debug: ::core::option::Option<u32>,
12721    #[prost(uint64, optional, tag="2")]
12722    pub vcpu: ::core::option::Option<u64>,
12723}
12724#[derive(Clone, PartialEq, ::prost::Message)]
12725pub struct KvmEntryFtraceEvent {
12726    #[prost(uint64, optional, tag="1")]
12727    pub vcpu_pc: ::core::option::Option<u64>,
12728}
12729#[derive(Clone, PartialEq, ::prost::Message)]
12730pub struct KvmExitFtraceEvent {
12731    #[prost(uint32, optional, tag="1")]
12732    pub esr_ec: ::core::option::Option<u32>,
12733    #[prost(int32, optional, tag="2")]
12734    pub ret: ::core::option::Option<i32>,
12735    #[prost(uint64, optional, tag="3")]
12736    pub vcpu_pc: ::core::option::Option<u64>,
12737}
12738#[derive(Clone, PartialEq, ::prost::Message)]
12739pub struct KvmFpuFtraceEvent {
12740    #[prost(uint32, optional, tag="1")]
12741    pub load: ::core::option::Option<u32>,
12742}
12743#[derive(Clone, PartialEq, ::prost::Message)]
12744pub struct KvmGetTimerMapFtraceEvent {
12745    #[prost(int32, optional, tag="1")]
12746    pub direct_ptimer: ::core::option::Option<i32>,
12747    #[prost(int32, optional, tag="2")]
12748    pub direct_vtimer: ::core::option::Option<i32>,
12749    #[prost(int32, optional, tag="3")]
12750    pub emul_ptimer: ::core::option::Option<i32>,
12751    #[prost(uint64, optional, tag="4")]
12752    pub vcpu_id: ::core::option::Option<u64>,
12753}
12754#[derive(Clone, PartialEq, ::prost::Message)]
12755pub struct KvmGuestFaultFtraceEvent {
12756    #[prost(uint64, optional, tag="1")]
12757    pub hsr: ::core::option::Option<u64>,
12758    #[prost(uint64, optional, tag="2")]
12759    pub hxfar: ::core::option::Option<u64>,
12760    #[prost(uint64, optional, tag="3")]
12761    pub ipa: ::core::option::Option<u64>,
12762    #[prost(uint64, optional, tag="4")]
12763    pub vcpu_pc: ::core::option::Option<u64>,
12764}
12765#[derive(Clone, PartialEq, ::prost::Message)]
12766pub struct KvmHandleSysRegFtraceEvent {
12767    #[prost(uint64, optional, tag="1")]
12768    pub hsr: ::core::option::Option<u64>,
12769}
12770#[derive(Clone, PartialEq, ::prost::Message)]
12771pub struct KvmHvcArm64FtraceEvent {
12772    #[prost(uint64, optional, tag="1")]
12773    pub imm: ::core::option::Option<u64>,
12774    #[prost(uint64, optional, tag="2")]
12775    pub r0: ::core::option::Option<u64>,
12776    #[prost(uint64, optional, tag="3")]
12777    pub vcpu_pc: ::core::option::Option<u64>,
12778}
12779#[derive(Clone, PartialEq, ::prost::Message)]
12780pub struct KvmIrqLineFtraceEvent {
12781    #[prost(int32, optional, tag="1")]
12782    pub irq_num: ::core::option::Option<i32>,
12783    #[prost(int32, optional, tag="2")]
12784    pub level: ::core::option::Option<i32>,
12785    #[prost(uint32, optional, tag="3")]
12786    pub r#type: ::core::option::Option<u32>,
12787    #[prost(int32, optional, tag="4")]
12788    pub vcpu_idx: ::core::option::Option<i32>,
12789}
12790#[derive(Clone, PartialEq, ::prost::Message)]
12791pub struct KvmMmioFtraceEvent {
12792    #[prost(uint64, optional, tag="1")]
12793    pub gpa: ::core::option::Option<u64>,
12794    #[prost(uint32, optional, tag="2")]
12795    pub len: ::core::option::Option<u32>,
12796    #[prost(uint32, optional, tag="3")]
12797    pub r#type: ::core::option::Option<u32>,
12798    #[prost(uint64, optional, tag="4")]
12799    pub val: ::core::option::Option<u64>,
12800}
12801#[derive(Clone, PartialEq, ::prost::Message)]
12802pub struct KvmMmioEmulateFtraceEvent {
12803    #[prost(uint64, optional, tag="1")]
12804    pub cpsr: ::core::option::Option<u64>,
12805    #[prost(uint64, optional, tag="2")]
12806    pub instr: ::core::option::Option<u64>,
12807    #[prost(uint64, optional, tag="3")]
12808    pub vcpu_pc: ::core::option::Option<u64>,
12809}
12810#[derive(Clone, PartialEq, ::prost::Message)]
12811pub struct KvmSetGuestDebugFtraceEvent {
12812    #[prost(uint32, optional, tag="1")]
12813    pub guest_debug: ::core::option::Option<u32>,
12814    #[prost(uint64, optional, tag="2")]
12815    pub vcpu: ::core::option::Option<u64>,
12816}
12817#[derive(Clone, PartialEq, ::prost::Message)]
12818pub struct KvmSetIrqFtraceEvent {
12819    #[prost(uint32, optional, tag="1")]
12820    pub gsi: ::core::option::Option<u32>,
12821    #[prost(int32, optional, tag="2")]
12822    pub irq_source_id: ::core::option::Option<i32>,
12823    #[prost(int32, optional, tag="3")]
12824    pub level: ::core::option::Option<i32>,
12825}
12826#[derive(Clone, PartialEq, ::prost::Message)]
12827pub struct KvmSetSpteHvaFtraceEvent {
12828    #[prost(uint64, optional, tag="1")]
12829    pub hva: ::core::option::Option<u64>,
12830}
12831#[derive(Clone, PartialEq, ::prost::Message)]
12832pub struct KvmSetWayFlushFtraceEvent {
12833    #[prost(uint32, optional, tag="1")]
12834    pub cache: ::core::option::Option<u32>,
12835    #[prost(uint64, optional, tag="2")]
12836    pub vcpu_pc: ::core::option::Option<u64>,
12837}
12838#[derive(Clone, PartialEq, ::prost::Message)]
12839pub struct KvmSysAccessFtraceEvent {
12840    #[prost(uint32, optional, tag="1")]
12841    pub c_rm: ::core::option::Option<u32>,
12842    #[prost(uint32, optional, tag="2")]
12843    pub c_rn: ::core::option::Option<u32>,
12844    #[prost(uint32, optional, tag="3")]
12845    pub op0: ::core::option::Option<u32>,
12846    #[prost(uint32, optional, tag="4")]
12847    pub op1: ::core::option::Option<u32>,
12848    #[prost(uint32, optional, tag="5")]
12849    pub op2: ::core::option::Option<u32>,
12850    #[prost(uint32, optional, tag="6")]
12851    pub is_write: ::core::option::Option<u32>,
12852    #[prost(string, optional, tag="7")]
12853    pub name: ::core::option::Option<::prost::alloc::string::String>,
12854    #[prost(uint64, optional, tag="8")]
12855    pub vcpu_pc: ::core::option::Option<u64>,
12856}
12857#[derive(Clone, PartialEq, ::prost::Message)]
12858pub struct KvmTestAgeHvaFtraceEvent {
12859    #[prost(uint64, optional, tag="1")]
12860    pub hva: ::core::option::Option<u64>,
12861}
12862#[derive(Clone, PartialEq, ::prost::Message)]
12863pub struct KvmTimerEmulateFtraceEvent {
12864    #[prost(uint32, optional, tag="1")]
12865    pub should_fire: ::core::option::Option<u32>,
12866    #[prost(int32, optional, tag="2")]
12867    pub timer_idx: ::core::option::Option<i32>,
12868}
12869#[derive(Clone, PartialEq, ::prost::Message)]
12870pub struct KvmTimerHrtimerExpireFtraceEvent {
12871    #[prost(int32, optional, tag="1")]
12872    pub timer_idx: ::core::option::Option<i32>,
12873}
12874#[derive(Clone, PartialEq, ::prost::Message)]
12875pub struct KvmTimerRestoreStateFtraceEvent {
12876    #[prost(uint64, optional, tag="1")]
12877    pub ctl: ::core::option::Option<u64>,
12878    #[prost(uint64, optional, tag="2")]
12879    pub cval: ::core::option::Option<u64>,
12880    #[prost(int32, optional, tag="3")]
12881    pub timer_idx: ::core::option::Option<i32>,
12882}
12883#[derive(Clone, PartialEq, ::prost::Message)]
12884pub struct KvmTimerSaveStateFtraceEvent {
12885    #[prost(uint64, optional, tag="1")]
12886    pub ctl: ::core::option::Option<u64>,
12887    #[prost(uint64, optional, tag="2")]
12888    pub cval: ::core::option::Option<u64>,
12889    #[prost(int32, optional, tag="3")]
12890    pub timer_idx: ::core::option::Option<i32>,
12891}
12892#[derive(Clone, PartialEq, ::prost::Message)]
12893pub struct KvmTimerUpdateIrqFtraceEvent {
12894    #[prost(uint32, optional, tag="1")]
12895    pub irq: ::core::option::Option<u32>,
12896    #[prost(int32, optional, tag="2")]
12897    pub level: ::core::option::Option<i32>,
12898    #[prost(uint64, optional, tag="3")]
12899    pub vcpu_id: ::core::option::Option<u64>,
12900}
12901#[derive(Clone, PartialEq, ::prost::Message)]
12902pub struct KvmToggleCacheFtraceEvent {
12903    #[prost(uint32, optional, tag="1")]
12904    pub now: ::core::option::Option<u32>,
12905    #[prost(uint64, optional, tag="2")]
12906    pub vcpu_pc: ::core::option::Option<u64>,
12907    #[prost(uint32, optional, tag="3")]
12908    pub was: ::core::option::Option<u32>,
12909}
12910#[derive(Clone, PartialEq, ::prost::Message)]
12911pub struct KvmUnmapHvaRangeFtraceEvent {
12912    #[prost(uint64, optional, tag="1")]
12913    pub end: ::core::option::Option<u64>,
12914    #[prost(uint64, optional, tag="2")]
12915    pub start: ::core::option::Option<u64>,
12916}
12917#[derive(Clone, PartialEq, ::prost::Message)]
12918pub struct KvmUserspaceExitFtraceEvent {
12919    #[prost(uint32, optional, tag="1")]
12920    pub reason: ::core::option::Option<u32>,
12921}
12922#[derive(Clone, PartialEq, ::prost::Message)]
12923pub struct KvmVcpuWakeupFtraceEvent {
12924    #[prost(uint64, optional, tag="1")]
12925    pub ns: ::core::option::Option<u64>,
12926    #[prost(uint32, optional, tag="2")]
12927    pub valid: ::core::option::Option<u32>,
12928    #[prost(uint32, optional, tag="3")]
12929    pub waited: ::core::option::Option<u32>,
12930}
12931#[derive(Clone, PartialEq, ::prost::Message)]
12932pub struct KvmWfxArm64FtraceEvent {
12933    #[prost(uint32, optional, tag="1")]
12934    pub is_wfe: ::core::option::Option<u32>,
12935    #[prost(uint64, optional, tag="2")]
12936    pub vcpu_pc: ::core::option::Option<u64>,
12937}
12938#[derive(Clone, PartialEq, ::prost::Message)]
12939pub struct TrapRegFtraceEvent {
12940    #[prost(string, optional, tag="1")]
12941    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
12942    #[prost(uint32, optional, tag="2")]
12943    pub is_write: ::core::option::Option<u32>,
12944    #[prost(int32, optional, tag="3")]
12945    pub reg: ::core::option::Option<i32>,
12946    #[prost(uint64, optional, tag="4")]
12947    pub write_value: ::core::option::Option<u64>,
12948}
12949#[derive(Clone, PartialEq, ::prost::Message)]
12950pub struct VgicUpdateIrqPendingFtraceEvent {
12951    #[prost(uint32, optional, tag="1")]
12952    pub irq: ::core::option::Option<u32>,
12953    #[prost(uint32, optional, tag="2")]
12954    pub level: ::core::option::Option<u32>,
12955    #[prost(uint64, optional, tag="3")]
12956    pub vcpu_id: ::core::option::Option<u64>,
12957}
12958// End of protos/perfetto/trace/ftrace/kvm.proto
12959
12960// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
12961
12962#[derive(Clone, PartialEq, ::prost::Message)]
12963pub struct LowmemoryKillFtraceEvent {
12964    #[prost(string, optional, tag="1")]
12965    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12966    #[prost(int32, optional, tag="2")]
12967    pub pid: ::core::option::Option<i32>,
12968    #[prost(int64, optional, tag="3")]
12969    pub pagecache_size: ::core::option::Option<i64>,
12970    #[prost(int64, optional, tag="4")]
12971    pub pagecache_limit: ::core::option::Option<i64>,
12972    #[prost(int64, optional, tag="5")]
12973    pub free: ::core::option::Option<i64>,
12974}
12975// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
12976
12977// Begin of protos/perfetto/trace/ftrace/lwis.proto
12978
12979#[derive(Clone, PartialEq, ::prost::Message)]
12980pub struct LwisTracingMarkWriteFtraceEvent {
12981    #[prost(string, optional, tag="1")]
12982    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
12983    #[prost(uint32, optional, tag="2")]
12984    pub r#type: ::core::option::Option<u32>,
12985    #[prost(int32, optional, tag="3")]
12986    pub pid: ::core::option::Option<i32>,
12987    #[prost(string, optional, tag="4")]
12988    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
12989    #[prost(int64, optional, tag="5")]
12990    pub value: ::core::option::Option<i64>,
12991}
12992// End of protos/perfetto/trace/ftrace/lwis.proto
12993
12994// Begin of protos/perfetto/trace/ftrace/mali.proto
12995
12996#[derive(Clone, PartialEq, ::prost::Message)]
12997pub struct MaliTracingMarkWriteFtraceEvent {
12998    #[prost(string, optional, tag="1")]
12999    pub name: ::core::option::Option<::prost::alloc::string::String>,
13000    #[prost(int32, optional, tag="2")]
13001    pub pid: ::core::option::Option<i32>,
13002    #[prost(uint32, optional, tag="3")]
13003    pub r#type: ::core::option::Option<u32>,
13004    #[prost(int32, optional, tag="4")]
13005    pub value: ::core::option::Option<i32>,
13006}
13007#[derive(Clone, PartialEq, ::prost::Message)]
13008pub struct MaliMaliKcpucqssetFtraceEvent {
13009    #[prost(uint32, optional, tag="1")]
13010    pub id: ::core::option::Option<u32>,
13011    #[prost(uint64, optional, tag="2")]
13012    pub info_val1: ::core::option::Option<u64>,
13013    #[prost(uint64, optional, tag="3")]
13014    pub info_val2: ::core::option::Option<u64>,
13015    #[prost(uint32, optional, tag="4")]
13016    pub kctx_id: ::core::option::Option<u32>,
13017    #[prost(int32, optional, tag="5")]
13018    pub kctx_tgid: ::core::option::Option<i32>,
13019}
13020#[derive(Clone, PartialEq, ::prost::Message)]
13021pub struct MaliMaliKcpucqswaitstartFtraceEvent {
13022    #[prost(uint32, optional, tag="1")]
13023    pub id: ::core::option::Option<u32>,
13024    #[prost(uint64, optional, tag="2")]
13025    pub info_val1: ::core::option::Option<u64>,
13026    #[prost(uint64, optional, tag="3")]
13027    pub info_val2: ::core::option::Option<u64>,
13028    #[prost(uint32, optional, tag="4")]
13029    pub kctx_id: ::core::option::Option<u32>,
13030    #[prost(int32, optional, tag="5")]
13031    pub kctx_tgid: ::core::option::Option<i32>,
13032}
13033#[derive(Clone, PartialEq, ::prost::Message)]
13034pub struct MaliMaliKcpucqswaitendFtraceEvent {
13035    #[prost(uint32, optional, tag="1")]
13036    pub id: ::core::option::Option<u32>,
13037    #[prost(uint64, optional, tag="2")]
13038    pub info_val1: ::core::option::Option<u64>,
13039    #[prost(uint64, optional, tag="3")]
13040    pub info_val2: ::core::option::Option<u64>,
13041    #[prost(uint32, optional, tag="4")]
13042    pub kctx_id: ::core::option::Option<u32>,
13043    #[prost(int32, optional, tag="5")]
13044    pub kctx_tgid: ::core::option::Option<i32>,
13045}
13046#[derive(Clone, PartialEq, ::prost::Message)]
13047pub struct MaliMaliKcpufencesignalFtraceEvent {
13048    #[prost(uint64, optional, tag="1")]
13049    pub info_val1: ::core::option::Option<u64>,
13050    #[prost(uint64, optional, tag="2")]
13051    pub info_val2: ::core::option::Option<u64>,
13052    #[prost(int32, optional, tag="3")]
13053    pub kctx_tgid: ::core::option::Option<i32>,
13054    #[prost(uint32, optional, tag="4")]
13055    pub kctx_id: ::core::option::Option<u32>,
13056    #[prost(uint32, optional, tag="5")]
13057    pub id: ::core::option::Option<u32>,
13058}
13059#[derive(Clone, PartialEq, ::prost::Message)]
13060pub struct MaliMaliKcpufencewaitstartFtraceEvent {
13061    #[prost(uint64, optional, tag="1")]
13062    pub info_val1: ::core::option::Option<u64>,
13063    #[prost(uint64, optional, tag="2")]
13064    pub info_val2: ::core::option::Option<u64>,
13065    #[prost(int32, optional, tag="3")]
13066    pub kctx_tgid: ::core::option::Option<i32>,
13067    #[prost(uint32, optional, tag="4")]
13068    pub kctx_id: ::core::option::Option<u32>,
13069    #[prost(uint32, optional, tag="5")]
13070    pub id: ::core::option::Option<u32>,
13071}
13072#[derive(Clone, PartialEq, ::prost::Message)]
13073pub struct MaliMaliKcpufencewaitendFtraceEvent {
13074    #[prost(uint64, optional, tag="1")]
13075    pub info_val1: ::core::option::Option<u64>,
13076    #[prost(uint64, optional, tag="2")]
13077    pub info_val2: ::core::option::Option<u64>,
13078    #[prost(int32, optional, tag="3")]
13079    pub kctx_tgid: ::core::option::Option<i32>,
13080    #[prost(uint32, optional, tag="4")]
13081    pub kctx_id: ::core::option::Option<u32>,
13082    #[prost(uint32, optional, tag="5")]
13083    pub id: ::core::option::Option<u32>,
13084}
13085#[derive(Clone, PartialEq, ::prost::Message)]
13086pub struct MaliMaliCsfinterruptstartFtraceEvent {
13087    #[prost(int32, optional, tag="1")]
13088    pub kctx_tgid: ::core::option::Option<i32>,
13089    #[prost(uint32, optional, tag="2")]
13090    pub kctx_id: ::core::option::Option<u32>,
13091    #[prost(uint64, optional, tag="3")]
13092    pub info_val: ::core::option::Option<u64>,
13093}
13094#[derive(Clone, PartialEq, ::prost::Message)]
13095pub struct MaliMaliCsfinterruptendFtraceEvent {
13096    #[prost(int32, optional, tag="1")]
13097    pub kctx_tgid: ::core::option::Option<i32>,
13098    #[prost(uint32, optional, tag="2")]
13099    pub kctx_id: ::core::option::Option<u32>,
13100    #[prost(uint64, optional, tag="3")]
13101    pub info_val: ::core::option::Option<u64>,
13102}
13103#[derive(Clone, PartialEq, ::prost::Message)]
13104pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
13105    #[prost(int32, optional, tag="1")]
13106    pub kctx_tgid: ::core::option::Option<i32>,
13107    #[prost(uint32, optional, tag="2")]
13108    pub kctx_id: ::core::option::Option<u32>,
13109    #[prost(uint64, optional, tag="3")]
13110    pub info_val: ::core::option::Option<u64>,
13111}
13112#[derive(Clone, PartialEq, ::prost::Message)]
13113pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
13114    #[prost(int32, optional, tag="1")]
13115    pub kctx_tgid: ::core::option::Option<i32>,
13116    #[prost(uint32, optional, tag="2")]
13117    pub kctx_id: ::core::option::Option<u32>,
13118    #[prost(uint64, optional, tag="3")]
13119    pub info_val: ::core::option::Option<u64>,
13120}
13121#[derive(Clone, PartialEq, ::prost::Message)]
13122pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
13123    #[prost(int32, optional, tag="1")]
13124    pub kctx_tgid: ::core::option::Option<i32>,
13125    #[prost(uint32, optional, tag="2")]
13126    pub kctx_id: ::core::option::Option<u32>,
13127    #[prost(uint64, optional, tag="3")]
13128    pub info_val: ::core::option::Option<u64>,
13129}
13130#[derive(Clone, PartialEq, ::prost::Message)]
13131pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
13132    #[prost(int32, optional, tag="1")]
13133    pub kctx_tgid: ::core::option::Option<i32>,
13134    #[prost(uint32, optional, tag="2")]
13135    pub kctx_id: ::core::option::Option<u32>,
13136    #[prost(uint64, optional, tag="3")]
13137    pub info_val: ::core::option::Option<u64>,
13138}
13139#[derive(Clone, PartialEq, ::prost::Message)]
13140pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
13141    #[prost(int32, optional, tag="1")]
13142    pub kctx_tgid: ::core::option::Option<i32>,
13143    #[prost(uint32, optional, tag="2")]
13144    pub kctx_id: ::core::option::Option<u32>,
13145    #[prost(uint64, optional, tag="3")]
13146    pub info_val: ::core::option::Option<u64>,
13147}
13148#[derive(Clone, PartialEq, ::prost::Message)]
13149pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
13150    #[prost(int32, optional, tag="1")]
13151    pub kctx_tgid: ::core::option::Option<i32>,
13152    #[prost(uint32, optional, tag="2")]
13153    pub kctx_id: ::core::option::Option<u32>,
13154    #[prost(uint64, optional, tag="3")]
13155    pub info_val: ::core::option::Option<u64>,
13156}
13157#[derive(Clone, PartialEq, ::prost::Message)]
13158pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
13159    #[prost(int32, optional, tag="1")]
13160    pub kctx_tgid: ::core::option::Option<i32>,
13161    #[prost(uint32, optional, tag="2")]
13162    pub kctx_id: ::core::option::Option<u32>,
13163    #[prost(uint64, optional, tag="3")]
13164    pub info_val: ::core::option::Option<u64>,
13165}
13166#[derive(Clone, PartialEq, ::prost::Message)]
13167pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
13168    #[prost(int32, optional, tag="1")]
13169    pub kctx_tgid: ::core::option::Option<i32>,
13170    #[prost(uint32, optional, tag="2")]
13171    pub kctx_id: ::core::option::Option<u32>,
13172    #[prost(uint64, optional, tag="3")]
13173    pub info_val: ::core::option::Option<u64>,
13174}
13175#[derive(Clone, PartialEq, ::prost::Message)]
13176pub struct MaliMaliPmmcuinsleepFtraceEvent {
13177    #[prost(int32, optional, tag="1")]
13178    pub kctx_tgid: ::core::option::Option<i32>,
13179    #[prost(uint32, optional, tag="2")]
13180    pub kctx_id: ::core::option::Option<u32>,
13181    #[prost(uint64, optional, tag="3")]
13182    pub info_val: ::core::option::Option<u64>,
13183}
13184#[derive(Clone, PartialEq, ::prost::Message)]
13185pub struct MaliMaliPmmcuoffFtraceEvent {
13186    #[prost(int32, optional, tag="1")]
13187    pub kctx_tgid: ::core::option::Option<i32>,
13188    #[prost(uint32, optional, tag="2")]
13189    pub kctx_id: ::core::option::Option<u32>,
13190    #[prost(uint64, optional, tag="3")]
13191    pub info_val: ::core::option::Option<u64>,
13192}
13193#[derive(Clone, PartialEq, ::prost::Message)]
13194pub struct MaliMaliPmmcuonFtraceEvent {
13195    #[prost(int32, optional, tag="1")]
13196    pub kctx_tgid: ::core::option::Option<i32>,
13197    #[prost(uint32, optional, tag="2")]
13198    pub kctx_id: ::core::option::Option<u32>,
13199    #[prost(uint64, optional, tag="3")]
13200    pub info_val: ::core::option::Option<u64>,
13201}
13202#[derive(Clone, PartialEq, ::prost::Message)]
13203pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
13204    #[prost(int32, optional, tag="1")]
13205    pub kctx_tgid: ::core::option::Option<i32>,
13206    #[prost(uint32, optional, tag="2")]
13207    pub kctx_id: ::core::option::Option<u32>,
13208    #[prost(uint64, optional, tag="3")]
13209    pub info_val: ::core::option::Option<u64>,
13210}
13211#[derive(Clone, PartialEq, ::prost::Message)]
13212pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
13213    #[prost(int32, optional, tag="1")]
13214    pub kctx_tgid: ::core::option::Option<i32>,
13215    #[prost(uint32, optional, tag="2")]
13216    pub kctx_id: ::core::option::Option<u32>,
13217    #[prost(uint64, optional, tag="3")]
13218    pub info_val: ::core::option::Option<u64>,
13219}
13220#[derive(Clone, PartialEq, ::prost::Message)]
13221pub struct MaliMaliPmmcuonhaltFtraceEvent {
13222    #[prost(int32, optional, tag="1")]
13223    pub kctx_tgid: ::core::option::Option<i32>,
13224    #[prost(uint32, optional, tag="2")]
13225    pub kctx_id: ::core::option::Option<u32>,
13226    #[prost(uint64, optional, tag="3")]
13227    pub info_val: ::core::option::Option<u64>,
13228}
13229#[derive(Clone, PartialEq, ::prost::Message)]
13230pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
13231    #[prost(int32, optional, tag="1")]
13232    pub kctx_tgid: ::core::option::Option<i32>,
13233    #[prost(uint32, optional, tag="2")]
13234    pub kctx_id: ::core::option::Option<u32>,
13235    #[prost(uint64, optional, tag="3")]
13236    pub info_val: ::core::option::Option<u64>,
13237}
13238#[derive(Clone, PartialEq, ::prost::Message)]
13239pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
13240    #[prost(int32, optional, tag="1")]
13241    pub kctx_tgid: ::core::option::Option<i32>,
13242    #[prost(uint32, optional, tag="2")]
13243    pub kctx_id: ::core::option::Option<u32>,
13244    #[prost(uint64, optional, tag="3")]
13245    pub info_val: ::core::option::Option<u64>,
13246}
13247#[derive(Clone, PartialEq, ::prost::Message)]
13248pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
13249    #[prost(int32, optional, tag="1")]
13250    pub kctx_tgid: ::core::option::Option<i32>,
13251    #[prost(uint32, optional, tag="2")]
13252    pub kctx_id: ::core::option::Option<u32>,
13253    #[prost(uint64, optional, tag="3")]
13254    pub info_val: ::core::option::Option<u64>,
13255}
13256#[derive(Clone, PartialEq, ::prost::Message)]
13257pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
13258    #[prost(int32, optional, tag="1")]
13259    pub kctx_tgid: ::core::option::Option<i32>,
13260    #[prost(uint32, optional, tag="2")]
13261    pub kctx_id: ::core::option::Option<u32>,
13262    #[prost(uint64, optional, tag="3")]
13263    pub info_val: ::core::option::Option<u64>,
13264}
13265#[derive(Clone, PartialEq, ::prost::Message)]
13266pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
13267    #[prost(int32, optional, tag="1")]
13268    pub kctx_tgid: ::core::option::Option<i32>,
13269    #[prost(uint32, optional, tag="2")]
13270    pub kctx_id: ::core::option::Option<u32>,
13271    #[prost(uint64, optional, tag="3")]
13272    pub info_val: ::core::option::Option<u64>,
13273}
13274#[derive(Clone, PartialEq, ::prost::Message)]
13275pub struct MaliMaliPmmcupendoffFtraceEvent {
13276    #[prost(int32, optional, tag="1")]
13277    pub kctx_tgid: ::core::option::Option<i32>,
13278    #[prost(uint32, optional, tag="2")]
13279    pub kctx_id: ::core::option::Option<u32>,
13280    #[prost(uint64, optional, tag="3")]
13281    pub info_val: ::core::option::Option<u64>,
13282}
13283#[derive(Clone, PartialEq, ::prost::Message)]
13284pub struct MaliMaliPmmcupendonreloadFtraceEvent {
13285    #[prost(int32, optional, tag="1")]
13286    pub kctx_tgid: ::core::option::Option<i32>,
13287    #[prost(uint32, optional, tag="2")]
13288    pub kctx_id: ::core::option::Option<u32>,
13289    #[prost(uint64, optional, tag="3")]
13290    pub info_val: ::core::option::Option<u64>,
13291}
13292#[derive(Clone, PartialEq, ::prost::Message)]
13293pub struct MaliMaliPmmcupowerdownFtraceEvent {
13294    #[prost(int32, optional, tag="1")]
13295    pub kctx_tgid: ::core::option::Option<i32>,
13296    #[prost(uint32, optional, tag="2")]
13297    pub kctx_id: ::core::option::Option<u32>,
13298    #[prost(uint64, optional, tag="3")]
13299    pub info_val: ::core::option::Option<u64>,
13300}
13301#[derive(Clone, PartialEq, ::prost::Message)]
13302pub struct MaliMaliPmmcuresetwaitFtraceEvent {
13303    #[prost(int32, optional, tag="1")]
13304    pub kctx_tgid: ::core::option::Option<i32>,
13305    #[prost(uint32, optional, tag="2")]
13306    pub kctx_id: ::core::option::Option<u32>,
13307    #[prost(uint64, optional, tag="3")]
13308    pub info_val: ::core::option::Option<u64>,
13309}
13310#[derive(Clone, PartialEq, ::prost::Message)]
13311pub struct MaliGpuPowerStateFtraceEvent {
13312    #[prost(uint64, optional, tag="1")]
13313    pub change_ns: ::core::option::Option<u64>,
13314    #[prost(int32, optional, tag="2")]
13315    pub from_state: ::core::option::Option<i32>,
13316    #[prost(int32, optional, tag="3")]
13317    pub to_state: ::core::option::Option<i32>,
13318}
13319// End of protos/perfetto/trace/ftrace/mali.proto
13320
13321// Begin of protos/perfetto/trace/ftrace/mdss.proto
13322
13323#[derive(Clone, PartialEq, ::prost::Message)]
13324pub struct MdpCmdKickoffFtraceEvent {
13325    #[prost(uint32, optional, tag="1")]
13326    pub ctl_num: ::core::option::Option<u32>,
13327    #[prost(int32, optional, tag="2")]
13328    pub kickoff_cnt: ::core::option::Option<i32>,
13329}
13330#[derive(Clone, PartialEq, ::prost::Message)]
13331pub struct MdpCommitFtraceEvent {
13332    #[prost(uint32, optional, tag="1")]
13333    pub num: ::core::option::Option<u32>,
13334    #[prost(uint32, optional, tag="2")]
13335    pub play_cnt: ::core::option::Option<u32>,
13336    #[prost(uint32, optional, tag="3")]
13337    pub clk_rate: ::core::option::Option<u32>,
13338    #[prost(uint64, optional, tag="4")]
13339    pub bandwidth: ::core::option::Option<u64>,
13340}
13341#[derive(Clone, PartialEq, ::prost::Message)]
13342pub struct MdpPerfSetOtFtraceEvent {
13343    #[prost(uint32, optional, tag="1")]
13344    pub pnum: ::core::option::Option<u32>,
13345    #[prost(uint32, optional, tag="2")]
13346    pub xin_id: ::core::option::Option<u32>,
13347    #[prost(uint32, optional, tag="3")]
13348    pub rd_lim: ::core::option::Option<u32>,
13349    #[prost(uint32, optional, tag="4")]
13350    pub is_vbif_rt: ::core::option::Option<u32>,
13351}
13352#[derive(Clone, PartialEq, ::prost::Message)]
13353pub struct MdpSsppChangeFtraceEvent {
13354    #[prost(uint32, optional, tag="1")]
13355    pub num: ::core::option::Option<u32>,
13356    #[prost(uint32, optional, tag="2")]
13357    pub play_cnt: ::core::option::Option<u32>,
13358    #[prost(uint32, optional, tag="3")]
13359    pub mixer: ::core::option::Option<u32>,
13360    #[prost(uint32, optional, tag="4")]
13361    pub stage: ::core::option::Option<u32>,
13362    #[prost(uint32, optional, tag="5")]
13363    pub flags: ::core::option::Option<u32>,
13364    #[prost(uint32, optional, tag="6")]
13365    pub format: ::core::option::Option<u32>,
13366    #[prost(uint32, optional, tag="7")]
13367    pub img_w: ::core::option::Option<u32>,
13368    #[prost(uint32, optional, tag="8")]
13369    pub img_h: ::core::option::Option<u32>,
13370    #[prost(uint32, optional, tag="9")]
13371    pub src_x: ::core::option::Option<u32>,
13372    #[prost(uint32, optional, tag="10")]
13373    pub src_y: ::core::option::Option<u32>,
13374    #[prost(uint32, optional, tag="11")]
13375    pub src_w: ::core::option::Option<u32>,
13376    #[prost(uint32, optional, tag="12")]
13377    pub src_h: ::core::option::Option<u32>,
13378    #[prost(uint32, optional, tag="13")]
13379    pub dst_x: ::core::option::Option<u32>,
13380    #[prost(uint32, optional, tag="14")]
13381    pub dst_y: ::core::option::Option<u32>,
13382    #[prost(uint32, optional, tag="15")]
13383    pub dst_w: ::core::option::Option<u32>,
13384    #[prost(uint32, optional, tag="16")]
13385    pub dst_h: ::core::option::Option<u32>,
13386}
13387#[derive(Clone, PartialEq, ::prost::Message)]
13388pub struct TracingMarkWriteFtraceEvent {
13389    #[prost(int32, optional, tag="1")]
13390    pub pid: ::core::option::Option<i32>,
13391    #[prost(string, optional, tag="2")]
13392    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13393    #[prost(uint32, optional, tag="3")]
13394    pub trace_begin: ::core::option::Option<u32>,
13395}
13396#[derive(Clone, PartialEq, ::prost::Message)]
13397pub struct MdpCmdPingpongDoneFtraceEvent {
13398    #[prost(uint32, optional, tag="1")]
13399    pub ctl_num: ::core::option::Option<u32>,
13400    #[prost(uint32, optional, tag="2")]
13401    pub intf_num: ::core::option::Option<u32>,
13402    #[prost(uint32, optional, tag="3")]
13403    pub pp_num: ::core::option::Option<u32>,
13404    #[prost(int32, optional, tag="4")]
13405    pub koff_cnt: ::core::option::Option<i32>,
13406}
13407#[derive(Clone, PartialEq, ::prost::Message)]
13408pub struct MdpCompareBwFtraceEvent {
13409    #[prost(uint64, optional, tag="1")]
13410    pub new_ab: ::core::option::Option<u64>,
13411    #[prost(uint64, optional, tag="2")]
13412    pub new_ib: ::core::option::Option<u64>,
13413    #[prost(uint64, optional, tag="3")]
13414    pub new_wb: ::core::option::Option<u64>,
13415    #[prost(uint64, optional, tag="4")]
13416    pub old_ab: ::core::option::Option<u64>,
13417    #[prost(uint64, optional, tag="5")]
13418    pub old_ib: ::core::option::Option<u64>,
13419    #[prost(uint64, optional, tag="6")]
13420    pub old_wb: ::core::option::Option<u64>,
13421    #[prost(uint32, optional, tag="7")]
13422    pub params_changed: ::core::option::Option<u32>,
13423    #[prost(uint32, optional, tag="8")]
13424    pub update_bw: ::core::option::Option<u32>,
13425}
13426#[derive(Clone, PartialEq, ::prost::Message)]
13427pub struct MdpPerfSetPanicLutsFtraceEvent {
13428    #[prost(uint32, optional, tag="1")]
13429    pub pnum: ::core::option::Option<u32>,
13430    #[prost(uint32, optional, tag="2")]
13431    pub fmt: ::core::option::Option<u32>,
13432    #[prost(uint32, optional, tag="3")]
13433    pub mode: ::core::option::Option<u32>,
13434    #[prost(uint32, optional, tag="4")]
13435    pub panic_lut: ::core::option::Option<u32>,
13436    #[prost(uint32, optional, tag="5")]
13437    pub robust_lut: ::core::option::Option<u32>,
13438}
13439#[derive(Clone, PartialEq, ::prost::Message)]
13440pub struct MdpSsppSetFtraceEvent {
13441    #[prost(uint32, optional, tag="1")]
13442    pub num: ::core::option::Option<u32>,
13443    #[prost(uint32, optional, tag="2")]
13444    pub play_cnt: ::core::option::Option<u32>,
13445    #[prost(uint32, optional, tag="3")]
13446    pub mixer: ::core::option::Option<u32>,
13447    #[prost(uint32, optional, tag="4")]
13448    pub stage: ::core::option::Option<u32>,
13449    #[prost(uint32, optional, tag="5")]
13450    pub flags: ::core::option::Option<u32>,
13451    #[prost(uint32, optional, tag="6")]
13452    pub format: ::core::option::Option<u32>,
13453    #[prost(uint32, optional, tag="7")]
13454    pub img_w: ::core::option::Option<u32>,
13455    #[prost(uint32, optional, tag="8")]
13456    pub img_h: ::core::option::Option<u32>,
13457    #[prost(uint32, optional, tag="9")]
13458    pub src_x: ::core::option::Option<u32>,
13459    #[prost(uint32, optional, tag="10")]
13460    pub src_y: ::core::option::Option<u32>,
13461    #[prost(uint32, optional, tag="11")]
13462    pub src_w: ::core::option::Option<u32>,
13463    #[prost(uint32, optional, tag="12")]
13464    pub src_h: ::core::option::Option<u32>,
13465    #[prost(uint32, optional, tag="13")]
13466    pub dst_x: ::core::option::Option<u32>,
13467    #[prost(uint32, optional, tag="14")]
13468    pub dst_y: ::core::option::Option<u32>,
13469    #[prost(uint32, optional, tag="15")]
13470    pub dst_w: ::core::option::Option<u32>,
13471    #[prost(uint32, optional, tag="16")]
13472    pub dst_h: ::core::option::Option<u32>,
13473}
13474#[derive(Clone, PartialEq, ::prost::Message)]
13475pub struct MdpCmdReadptrDoneFtraceEvent {
13476    #[prost(uint32, optional, tag="1")]
13477    pub ctl_num: ::core::option::Option<u32>,
13478    #[prost(int32, optional, tag="2")]
13479    pub koff_cnt: ::core::option::Option<i32>,
13480}
13481#[derive(Clone, PartialEq, ::prost::Message)]
13482pub struct MdpMisrCrcFtraceEvent {
13483    #[prost(uint32, optional, tag="1")]
13484    pub block_id: ::core::option::Option<u32>,
13485    #[prost(uint32, optional, tag="2")]
13486    pub vsync_cnt: ::core::option::Option<u32>,
13487    #[prost(uint32, optional, tag="3")]
13488    pub crc: ::core::option::Option<u32>,
13489}
13490#[derive(Clone, PartialEq, ::prost::Message)]
13491pub struct MdpPerfSetQosLutsFtraceEvent {
13492    #[prost(uint32, optional, tag="1")]
13493    pub pnum: ::core::option::Option<u32>,
13494    #[prost(uint32, optional, tag="2")]
13495    pub fmt: ::core::option::Option<u32>,
13496    #[prost(uint32, optional, tag="3")]
13497    pub intf: ::core::option::Option<u32>,
13498    #[prost(uint32, optional, tag="4")]
13499    pub rot: ::core::option::Option<u32>,
13500    #[prost(uint32, optional, tag="5")]
13501    pub fl: ::core::option::Option<u32>,
13502    #[prost(uint32, optional, tag="6")]
13503    pub lut: ::core::option::Option<u32>,
13504    #[prost(uint32, optional, tag="7")]
13505    pub linear: ::core::option::Option<u32>,
13506}
13507#[derive(Clone, PartialEq, ::prost::Message)]
13508pub struct MdpTraceCounterFtraceEvent {
13509    #[prost(int32, optional, tag="1")]
13510    pub pid: ::core::option::Option<i32>,
13511    #[prost(string, optional, tag="2")]
13512    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
13513    #[prost(int32, optional, tag="3")]
13514    pub value: ::core::option::Option<i32>,
13515}
13516#[derive(Clone, PartialEq, ::prost::Message)]
13517pub struct MdpCmdReleaseBwFtraceEvent {
13518    #[prost(uint32, optional, tag="1")]
13519    pub ctl_num: ::core::option::Option<u32>,
13520}
13521#[derive(Clone, PartialEq, ::prost::Message)]
13522pub struct MdpMixerUpdateFtraceEvent {
13523    #[prost(uint32, optional, tag="1")]
13524    pub mixer_num: ::core::option::Option<u32>,
13525}
13526#[derive(Clone, PartialEq, ::prost::Message)]
13527pub struct MdpPerfSetWmLevelsFtraceEvent {
13528    #[prost(uint32, optional, tag="1")]
13529    pub pnum: ::core::option::Option<u32>,
13530    #[prost(uint32, optional, tag="2")]
13531    pub use_space: ::core::option::Option<u32>,
13532    #[prost(uint32, optional, tag="3")]
13533    pub priority_bytes: ::core::option::Option<u32>,
13534    #[prost(uint32, optional, tag="4")]
13535    pub wm0: ::core::option::Option<u32>,
13536    #[prost(uint32, optional, tag="5")]
13537    pub wm1: ::core::option::Option<u32>,
13538    #[prost(uint32, optional, tag="6")]
13539    pub wm2: ::core::option::Option<u32>,
13540    #[prost(uint32, optional, tag="7")]
13541    pub mb_cnt: ::core::option::Option<u32>,
13542    #[prost(uint32, optional, tag="8")]
13543    pub mb_size: ::core::option::Option<u32>,
13544}
13545#[derive(Clone, PartialEq, ::prost::Message)]
13546pub struct MdpVideoUnderrunDoneFtraceEvent {
13547    #[prost(uint32, optional, tag="1")]
13548    pub ctl_num: ::core::option::Option<u32>,
13549    #[prost(uint32, optional, tag="2")]
13550    pub underrun_cnt: ::core::option::Option<u32>,
13551}
13552#[derive(Clone, PartialEq, ::prost::Message)]
13553pub struct MdpCmdWaitPingpongFtraceEvent {
13554    #[prost(uint32, optional, tag="1")]
13555    pub ctl_num: ::core::option::Option<u32>,
13556    #[prost(int32, optional, tag="2")]
13557    pub kickoff_cnt: ::core::option::Option<i32>,
13558}
13559#[derive(Clone, PartialEq, ::prost::Message)]
13560pub struct MdpPerfPrefillCalcFtraceEvent {
13561    #[prost(uint32, optional, tag="1")]
13562    pub pnum: ::core::option::Option<u32>,
13563    #[prost(uint32, optional, tag="2")]
13564    pub latency_buf: ::core::option::Option<u32>,
13565    #[prost(uint32, optional, tag="3")]
13566    pub ot: ::core::option::Option<u32>,
13567    #[prost(uint32, optional, tag="4")]
13568    pub y_buf: ::core::option::Option<u32>,
13569    #[prost(uint32, optional, tag="5")]
13570    pub y_scaler: ::core::option::Option<u32>,
13571    #[prost(uint32, optional, tag="6")]
13572    pub pp_lines: ::core::option::Option<u32>,
13573    #[prost(uint32, optional, tag="7")]
13574    pub pp_bytes: ::core::option::Option<u32>,
13575    #[prost(uint32, optional, tag="8")]
13576    pub post_sc: ::core::option::Option<u32>,
13577    #[prost(uint32, optional, tag="9")]
13578    pub fbc_bytes: ::core::option::Option<u32>,
13579    #[prost(uint32, optional, tag="10")]
13580    pub prefill_bytes: ::core::option::Option<u32>,
13581}
13582#[derive(Clone, PartialEq, ::prost::Message)]
13583pub struct MdpPerfUpdateBusFtraceEvent {
13584    #[prost(int32, optional, tag="1")]
13585    pub client: ::core::option::Option<i32>,
13586    #[prost(uint64, optional, tag="2")]
13587    pub ab_quota: ::core::option::Option<u64>,
13588    #[prost(uint64, optional, tag="3")]
13589    pub ib_quota: ::core::option::Option<u64>,
13590}
13591#[derive(Clone, PartialEq, ::prost::Message)]
13592pub struct RotatorBwAoAsContextFtraceEvent {
13593    #[prost(uint32, optional, tag="1")]
13594    pub state: ::core::option::Option<u32>,
13595}
13596// End of protos/perfetto/trace/ftrace/mdss.proto
13597
13598// Begin of protos/perfetto/trace/ftrace/mm_event.proto
13599
13600#[derive(Clone, PartialEq, ::prost::Message)]
13601pub struct MmEventRecordFtraceEvent {
13602    #[prost(uint32, optional, tag="1")]
13603    pub avg_lat: ::core::option::Option<u32>,
13604    #[prost(uint32, optional, tag="2")]
13605    pub count: ::core::option::Option<u32>,
13606    #[prost(uint32, optional, tag="3")]
13607    pub max_lat: ::core::option::Option<u32>,
13608    #[prost(uint32, optional, tag="4")]
13609    pub r#type: ::core::option::Option<u32>,
13610}
13611// End of protos/perfetto/trace/ftrace/mm_event.proto
13612
13613// Begin of protos/perfetto/trace/ftrace/net.proto
13614
13615#[derive(Clone, PartialEq, ::prost::Message)]
13616pub struct NetifReceiveSkbFtraceEvent {
13617    #[prost(uint32, optional, tag="1")]
13618    pub len: ::core::option::Option<u32>,
13619    #[prost(string, optional, tag="2")]
13620    pub name: ::core::option::Option<::prost::alloc::string::String>,
13621    #[prost(uint64, optional, tag="3")]
13622    pub skbaddr: ::core::option::Option<u64>,
13623}
13624#[derive(Clone, PartialEq, ::prost::Message)]
13625pub struct NetDevXmitFtraceEvent {
13626    #[prost(uint32, optional, tag="1")]
13627    pub len: ::core::option::Option<u32>,
13628    #[prost(string, optional, tag="2")]
13629    pub name: ::core::option::Option<::prost::alloc::string::String>,
13630    #[prost(int32, optional, tag="3")]
13631    pub rc: ::core::option::Option<i32>,
13632    #[prost(uint64, optional, tag="4")]
13633    pub skbaddr: ::core::option::Option<u64>,
13634}
13635#[derive(Clone, PartialEq, ::prost::Message)]
13636pub struct NapiGroReceiveEntryFtraceEvent {
13637    #[prost(uint32, optional, tag="1")]
13638    pub data_len: ::core::option::Option<u32>,
13639    #[prost(uint32, optional, tag="2")]
13640    pub gso_size: ::core::option::Option<u32>,
13641    #[prost(uint32, optional, tag="3")]
13642    pub gso_type: ::core::option::Option<u32>,
13643    #[prost(uint32, optional, tag="4")]
13644    pub hash: ::core::option::Option<u32>,
13645    #[prost(uint32, optional, tag="5")]
13646    pub ip_summed: ::core::option::Option<u32>,
13647    #[prost(uint32, optional, tag="6")]
13648    pub l4_hash: ::core::option::Option<u32>,
13649    #[prost(uint32, optional, tag="7")]
13650    pub len: ::core::option::Option<u32>,
13651    #[prost(int32, optional, tag="8")]
13652    pub mac_header: ::core::option::Option<i32>,
13653    #[prost(uint32, optional, tag="9")]
13654    pub mac_header_valid: ::core::option::Option<u32>,
13655    #[prost(string, optional, tag="10")]
13656    pub name: ::core::option::Option<::prost::alloc::string::String>,
13657    #[prost(uint32, optional, tag="11")]
13658    pub napi_id: ::core::option::Option<u32>,
13659    #[prost(uint32, optional, tag="12")]
13660    pub nr_frags: ::core::option::Option<u32>,
13661    #[prost(uint32, optional, tag="13")]
13662    pub protocol: ::core::option::Option<u32>,
13663    #[prost(uint32, optional, tag="14")]
13664    pub queue_mapping: ::core::option::Option<u32>,
13665    #[prost(uint64, optional, tag="15")]
13666    pub skbaddr: ::core::option::Option<u64>,
13667    #[prost(uint32, optional, tag="16")]
13668    pub truesize: ::core::option::Option<u32>,
13669    #[prost(uint32, optional, tag="17")]
13670    pub vlan_proto: ::core::option::Option<u32>,
13671    #[prost(uint32, optional, tag="18")]
13672    pub vlan_tagged: ::core::option::Option<u32>,
13673    #[prost(uint32, optional, tag="19")]
13674    pub vlan_tci: ::core::option::Option<u32>,
13675}
13676#[derive(Clone, PartialEq, ::prost::Message)]
13677pub struct NapiGroReceiveExitFtraceEvent {
13678    #[prost(int32, optional, tag="1")]
13679    pub ret: ::core::option::Option<i32>,
13680}
13681// End of protos/perfetto/trace/ftrace/net.proto
13682
13683// Begin of protos/perfetto/trace/ftrace/oom.proto
13684
13685#[derive(Clone, PartialEq, ::prost::Message)]
13686pub struct OomScoreAdjUpdateFtraceEvent {
13687    #[prost(string, optional, tag="1")]
13688    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13689    #[prost(int32, optional, tag="2")]
13690    pub oom_score_adj: ::core::option::Option<i32>,
13691    #[prost(int32, optional, tag="3")]
13692    pub pid: ::core::option::Option<i32>,
13693}
13694#[derive(Clone, PartialEq, ::prost::Message)]
13695pub struct MarkVictimFtraceEvent {
13696    #[prost(int32, optional, tag="1")]
13697    pub pid: ::core::option::Option<i32>,
13698}
13699// End of protos/perfetto/trace/ftrace/oom.proto
13700
13701// Begin of protos/perfetto/trace/ftrace/panel.proto
13702
13703#[derive(Clone, PartialEq, ::prost::Message)]
13704pub struct DsiCmdFifoStatusFtraceEvent {
13705    #[prost(uint32, optional, tag="1")]
13706    pub header: ::core::option::Option<u32>,
13707    #[prost(uint32, optional, tag="2")]
13708    pub payload: ::core::option::Option<u32>,
13709}
13710#[derive(Clone, PartialEq, ::prost::Message)]
13711pub struct DsiRxFtraceEvent {
13712    #[prost(uint32, optional, tag="1")]
13713    pub cmd: ::core::option::Option<u32>,
13714    #[prost(uint32, optional, tag="2")]
13715    pub rx_buf: ::core::option::Option<u32>,
13716}
13717#[derive(Clone, PartialEq, ::prost::Message)]
13718pub struct DsiTxFtraceEvent {
13719    #[prost(uint32, optional, tag="1")]
13720    pub last: ::core::option::Option<u32>,
13721    #[prost(uint32, optional, tag="2")]
13722    pub tx_buf: ::core::option::Option<u32>,
13723    #[prost(uint32, optional, tag="3")]
13724    pub r#type: ::core::option::Option<u32>,
13725}
13726#[derive(Clone, PartialEq, ::prost::Message)]
13727pub struct PanelWriteGenericFtraceEvent {
13728    #[prost(int32, optional, tag="1")]
13729    pub pid: ::core::option::Option<i32>,
13730    #[prost(string, optional, tag="2")]
13731    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13732    #[prost(uint32, optional, tag="3")]
13733    pub trace_begin: ::core::option::Option<u32>,
13734    #[prost(string, optional, tag="4")]
13735    pub name: ::core::option::Option<::prost::alloc::string::String>,
13736    #[prost(uint32, optional, tag="5")]
13737    pub r#type: ::core::option::Option<u32>,
13738    #[prost(int32, optional, tag="6")]
13739    pub value: ::core::option::Option<i32>,
13740}
13741// End of protos/perfetto/trace/ftrace/panel.proto
13742
13743// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
13744
13745#[derive(Clone, PartialEq, ::prost::Message)]
13746pub struct SchedSwitchWithCtrsFtraceEvent {
13747    #[prost(int32, optional, tag="1")]
13748    pub old_pid: ::core::option::Option<i32>,
13749    #[prost(int32, optional, tag="2")]
13750    pub new_pid: ::core::option::Option<i32>,
13751    #[prost(uint64, optional, tag="3")]
13752    pub cctr: ::core::option::Option<u64>,
13753    #[prost(uint64, optional, tag="4")]
13754    pub ctr0: ::core::option::Option<u64>,
13755    #[prost(uint64, optional, tag="5")]
13756    pub ctr1: ::core::option::Option<u64>,
13757    #[prost(uint64, optional, tag="6")]
13758    pub ctr2: ::core::option::Option<u64>,
13759    #[prost(uint64, optional, tag="7")]
13760    pub ctr3: ::core::option::Option<u64>,
13761    #[prost(uint32, optional, tag="8")]
13762    pub lctr0: ::core::option::Option<u32>,
13763    #[prost(uint32, optional, tag="9")]
13764    pub lctr1: ::core::option::Option<u32>,
13765    #[prost(uint64, optional, tag="10")]
13766    pub ctr4: ::core::option::Option<u64>,
13767    #[prost(uint64, optional, tag="11")]
13768    pub ctr5: ::core::option::Option<u64>,
13769    #[prost(string, optional, tag="12")]
13770    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
13771    #[prost(int32, optional, tag="13")]
13772    pub prev_pid: ::core::option::Option<i32>,
13773    #[prost(uint32, optional, tag="14")]
13774    pub cyc: ::core::option::Option<u32>,
13775    #[prost(uint32, optional, tag="15")]
13776    pub inst: ::core::option::Option<u32>,
13777    #[prost(uint32, optional, tag="16")]
13778    pub stallbm: ::core::option::Option<u32>,
13779    #[prost(uint32, optional, tag="17")]
13780    pub l3dm: ::core::option::Option<u32>,
13781    #[prost(int32, optional, tag="18")]
13782    pub next_pid: ::core::option::Option<i32>,
13783    #[prost(string, optional, tag="19")]
13784    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
13785    #[prost(int64, optional, tag="20")]
13786    pub prev_state: ::core::option::Option<i64>,
13787    #[prost(uint64, optional, tag="21")]
13788    pub amu0: ::core::option::Option<u64>,
13789    #[prost(uint64, optional, tag="22")]
13790    pub amu1: ::core::option::Option<u64>,
13791    #[prost(uint64, optional, tag="23")]
13792    pub amu2: ::core::option::Option<u64>,
13793}
13794// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
13795
13796// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
13797
13798#[derive(Clone, PartialEq, ::prost::Message)]
13799pub struct PixelMmKswapdWakeFtraceEvent {
13800    #[prost(int32, optional, tag="1")]
13801    pub whatever: ::core::option::Option<i32>,
13802}
13803#[derive(Clone, PartialEq, ::prost::Message)]
13804pub struct PixelMmKswapdDoneFtraceEvent {
13805    #[prost(uint64, optional, tag="1")]
13806    pub delta_nr_scanned: ::core::option::Option<u64>,
13807    #[prost(uint64, optional, tag="2")]
13808    pub delta_nr_reclaimed: ::core::option::Option<u64>,
13809}
13810// End of protos/perfetto/trace/ftrace/pixel_mm.proto
13811
13812// Begin of protos/perfetto/trace/ftrace/power.proto
13813
13814#[derive(Clone, PartialEq, ::prost::Message)]
13815pub struct CpuFrequencyFtraceEvent {
13816    #[prost(uint32, optional, tag="1")]
13817    pub state: ::core::option::Option<u32>,
13818    #[prost(uint32, optional, tag="2")]
13819    pub cpu_id: ::core::option::Option<u32>,
13820}
13821#[derive(Clone, PartialEq, ::prost::Message)]
13822pub struct CpuFrequencyLimitsFtraceEvent {
13823    #[prost(uint32, optional, tag="1")]
13824    pub min_freq: ::core::option::Option<u32>,
13825    #[prost(uint32, optional, tag="2")]
13826    pub max_freq: ::core::option::Option<u32>,
13827    #[prost(uint32, optional, tag="3")]
13828    pub cpu_id: ::core::option::Option<u32>,
13829}
13830#[derive(Clone, PartialEq, ::prost::Message)]
13831pub struct CpuIdleFtraceEvent {
13832    #[prost(uint32, optional, tag="1")]
13833    pub state: ::core::option::Option<u32>,
13834    #[prost(uint32, optional, tag="2")]
13835    pub cpu_id: ::core::option::Option<u32>,
13836}
13837#[derive(Clone, PartialEq, ::prost::Message)]
13838pub struct ClockEnableFtraceEvent {
13839    #[prost(string, optional, tag="1")]
13840    pub name: ::core::option::Option<::prost::alloc::string::String>,
13841    #[prost(uint64, optional, tag="2")]
13842    pub state: ::core::option::Option<u64>,
13843    #[prost(uint64, optional, tag="3")]
13844    pub cpu_id: ::core::option::Option<u64>,
13845}
13846#[derive(Clone, PartialEq, ::prost::Message)]
13847pub struct ClockDisableFtraceEvent {
13848    #[prost(string, optional, tag="1")]
13849    pub name: ::core::option::Option<::prost::alloc::string::String>,
13850    #[prost(uint64, optional, tag="2")]
13851    pub state: ::core::option::Option<u64>,
13852    #[prost(uint64, optional, tag="3")]
13853    pub cpu_id: ::core::option::Option<u64>,
13854}
13855#[derive(Clone, PartialEq, ::prost::Message)]
13856pub struct ClockSetRateFtraceEvent {
13857    #[prost(string, optional, tag="1")]
13858    pub name: ::core::option::Option<::prost::alloc::string::String>,
13859    #[prost(uint64, optional, tag="2")]
13860    pub state: ::core::option::Option<u64>,
13861    #[prost(uint64, optional, tag="3")]
13862    pub cpu_id: ::core::option::Option<u64>,
13863}
13864#[derive(Clone, PartialEq, ::prost::Message)]
13865pub struct SuspendResumeFtraceEvent {
13866    #[prost(string, optional, tag="1")]
13867    pub action: ::core::option::Option<::prost::alloc::string::String>,
13868    #[prost(int32, optional, tag="2")]
13869    pub val: ::core::option::Option<i32>,
13870    #[prost(uint32, optional, tag="3")]
13871    pub start: ::core::option::Option<u32>,
13872}
13873#[derive(Clone, PartialEq, ::prost::Message)]
13874pub struct GpuFrequencyFtraceEvent {
13875    #[prost(uint32, optional, tag="1")]
13876    pub gpu_id: ::core::option::Option<u32>,
13877    #[prost(uint32, optional, tag="2")]
13878    pub state: ::core::option::Option<u32>,
13879}
13880#[derive(Clone, PartialEq, ::prost::Message)]
13881pub struct WakeupSourceActivateFtraceEvent {
13882    #[prost(string, optional, tag="1")]
13883    pub name: ::core::option::Option<::prost::alloc::string::String>,
13884    #[prost(uint64, optional, tag="2")]
13885    pub state: ::core::option::Option<u64>,
13886}
13887#[derive(Clone, PartialEq, ::prost::Message)]
13888pub struct WakeupSourceDeactivateFtraceEvent {
13889    #[prost(string, optional, tag="1")]
13890    pub name: ::core::option::Option<::prost::alloc::string::String>,
13891    #[prost(uint64, optional, tag="2")]
13892    pub state: ::core::option::Option<u64>,
13893}
13894#[derive(Clone, PartialEq, ::prost::Message)]
13895pub struct GpuWorkPeriodFtraceEvent {
13896    #[prost(uint32, optional, tag="1")]
13897    pub gpu_id: ::core::option::Option<u32>,
13898    #[prost(uint32, optional, tag="2")]
13899    pub uid: ::core::option::Option<u32>,
13900    #[prost(uint64, optional, tag="3")]
13901    pub start_time_ns: ::core::option::Option<u64>,
13902    #[prost(uint64, optional, tag="4")]
13903    pub end_time_ns: ::core::option::Option<u64>,
13904    #[prost(uint64, optional, tag="5")]
13905    pub total_active_duration_ns: ::core::option::Option<u64>,
13906}
13907#[derive(Clone, PartialEq, ::prost::Message)]
13908pub struct DevicePmCallbackStartFtraceEvent {
13909    #[prost(string, optional, tag="1")]
13910    pub device: ::core::option::Option<::prost::alloc::string::String>,
13911    #[prost(string, optional, tag="2")]
13912    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13913    #[prost(string, optional, tag="3")]
13914    pub parent: ::core::option::Option<::prost::alloc::string::String>,
13915    #[prost(string, optional, tag="4")]
13916    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
13917    #[prost(int32, optional, tag="5")]
13918    pub event: ::core::option::Option<i32>,
13919}
13920#[derive(Clone, PartialEq, ::prost::Message)]
13921pub struct DevicePmCallbackEndFtraceEvent {
13922    #[prost(string, optional, tag="1")]
13923    pub device: ::core::option::Option<::prost::alloc::string::String>,
13924    #[prost(string, optional, tag="2")]
13925    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13926    #[prost(int32, optional, tag="3")]
13927    pub error: ::core::option::Option<i32>,
13928}
13929// End of protos/perfetto/trace/ftrace/power.proto
13930
13931// Begin of protos/perfetto/trace/ftrace/printk.proto
13932
13933#[derive(Clone, PartialEq, ::prost::Message)]
13934pub struct ConsoleFtraceEvent {
13935    #[prost(string, optional, tag="1")]
13936    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13937}
13938// End of protos/perfetto/trace/ftrace/printk.proto
13939
13940// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
13941
13942#[derive(Clone, PartialEq, ::prost::Message)]
13943pub struct SysEnterFtraceEvent {
13944    #[prost(int64, optional, tag="1")]
13945    pub id: ::core::option::Option<i64>,
13946    #[prost(uint64, repeated, packed="false", tag="2")]
13947    pub args: ::prost::alloc::vec::Vec<u64>,
13948}
13949#[derive(Clone, PartialEq, ::prost::Message)]
13950pub struct SysExitFtraceEvent {
13951    #[prost(int64, optional, tag="1")]
13952    pub id: ::core::option::Option<i64>,
13953    #[prost(int64, optional, tag="2")]
13954    pub ret: ::core::option::Option<i64>,
13955}
13956// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
13957
13958// Begin of protos/perfetto/trace/ftrace/regulator.proto
13959
13960#[derive(Clone, PartialEq, ::prost::Message)]
13961pub struct RegulatorDisableFtraceEvent {
13962    #[prost(string, optional, tag="1")]
13963    pub name: ::core::option::Option<::prost::alloc::string::String>,
13964}
13965#[derive(Clone, PartialEq, ::prost::Message)]
13966pub struct RegulatorDisableCompleteFtraceEvent {
13967    #[prost(string, optional, tag="1")]
13968    pub name: ::core::option::Option<::prost::alloc::string::String>,
13969}
13970#[derive(Clone, PartialEq, ::prost::Message)]
13971pub struct RegulatorEnableFtraceEvent {
13972    #[prost(string, optional, tag="1")]
13973    pub name: ::core::option::Option<::prost::alloc::string::String>,
13974}
13975#[derive(Clone, PartialEq, ::prost::Message)]
13976pub struct RegulatorEnableCompleteFtraceEvent {
13977    #[prost(string, optional, tag="1")]
13978    pub name: ::core::option::Option<::prost::alloc::string::String>,
13979}
13980#[derive(Clone, PartialEq, ::prost::Message)]
13981pub struct RegulatorEnableDelayFtraceEvent {
13982    #[prost(string, optional, tag="1")]
13983    pub name: ::core::option::Option<::prost::alloc::string::String>,
13984}
13985#[derive(Clone, PartialEq, ::prost::Message)]
13986pub struct RegulatorSetVoltageFtraceEvent {
13987    #[prost(string, optional, tag="1")]
13988    pub name: ::core::option::Option<::prost::alloc::string::String>,
13989    #[prost(int32, optional, tag="2")]
13990    pub min: ::core::option::Option<i32>,
13991    #[prost(int32, optional, tag="3")]
13992    pub max: ::core::option::Option<i32>,
13993}
13994#[derive(Clone, PartialEq, ::prost::Message)]
13995pub struct RegulatorSetVoltageCompleteFtraceEvent {
13996    #[prost(string, optional, tag="1")]
13997    pub name: ::core::option::Option<::prost::alloc::string::String>,
13998    #[prost(uint32, optional, tag="2")]
13999    pub val: ::core::option::Option<u32>,
14000}
14001// End of protos/perfetto/trace/ftrace/regulator.proto
14002
14003// Begin of protos/perfetto/trace/ftrace/rpm.proto
14004
14005#[derive(Clone, PartialEq, ::prost::Message)]
14006pub struct RpmStatusFtraceEvent {
14007    #[prost(string, optional, tag="1")]
14008    pub name: ::core::option::Option<::prost::alloc::string::String>,
14009    #[prost(int32, optional, tag="2")]
14010    pub status: ::core::option::Option<i32>,
14011}
14012// End of protos/perfetto/trace/ftrace/rpm.proto
14013
14014// Begin of protos/perfetto/trace/ftrace/samsung.proto
14015
14016#[derive(Clone, PartialEq, ::prost::Message)]
14017pub struct SamsungTracingMarkWriteFtraceEvent {
14018    #[prost(int32, optional, tag="1")]
14019    pub pid: ::core::option::Option<i32>,
14020    #[prost(string, optional, tag="2")]
14021    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14022    #[prost(uint32, optional, tag="3")]
14023    pub trace_begin: ::core::option::Option<u32>,
14024    #[prost(uint32, optional, tag="4")]
14025    pub trace_type: ::core::option::Option<u32>,
14026    #[prost(int32, optional, tag="5")]
14027    pub value: ::core::option::Option<i32>,
14028}
14029// End of protos/perfetto/trace/ftrace/samsung.proto
14030
14031// Begin of protos/perfetto/trace/ftrace/sched.proto
14032
14033#[derive(Clone, PartialEq, ::prost::Message)]
14034pub struct SchedSwitchFtraceEvent {
14035    #[prost(string, optional, tag="1")]
14036    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14037    #[prost(int32, optional, tag="2")]
14038    pub prev_pid: ::core::option::Option<i32>,
14039    #[prost(int32, optional, tag="3")]
14040    pub prev_prio: ::core::option::Option<i32>,
14041    #[prost(int64, optional, tag="4")]
14042    pub prev_state: ::core::option::Option<i64>,
14043    #[prost(string, optional, tag="5")]
14044    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14045    #[prost(int32, optional, tag="6")]
14046    pub next_pid: ::core::option::Option<i32>,
14047    #[prost(int32, optional, tag="7")]
14048    pub next_prio: ::core::option::Option<i32>,
14049}
14050#[derive(Clone, PartialEq, ::prost::Message)]
14051pub struct SchedWakeupFtraceEvent {
14052    #[prost(string, optional, tag="1")]
14053    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14054    #[prost(int32, optional, tag="2")]
14055    pub pid: ::core::option::Option<i32>,
14056    #[prost(int32, optional, tag="3")]
14057    pub prio: ::core::option::Option<i32>,
14058    #[prost(int32, optional, tag="4")]
14059    pub success: ::core::option::Option<i32>,
14060    #[prost(int32, optional, tag="5")]
14061    pub target_cpu: ::core::option::Option<i32>,
14062}
14063#[derive(Clone, PartialEq, ::prost::Message)]
14064pub struct SchedBlockedReasonFtraceEvent {
14065    #[prost(int32, optional, tag="1")]
14066    pub pid: ::core::option::Option<i32>,
14067    #[prost(uint64, optional, tag="2")]
14068    pub caller: ::core::option::Option<u64>,
14069    #[prost(uint32, optional, tag="3")]
14070    pub io_wait: ::core::option::Option<u32>,
14071}
14072#[derive(Clone, PartialEq, ::prost::Message)]
14073pub struct SchedCpuHotplugFtraceEvent {
14074    #[prost(int32, optional, tag="1")]
14075    pub affected_cpu: ::core::option::Option<i32>,
14076    #[prost(int32, optional, tag="2")]
14077    pub error: ::core::option::Option<i32>,
14078    #[prost(int32, optional, tag="3")]
14079    pub status: ::core::option::Option<i32>,
14080}
14081#[derive(Clone, PartialEq, ::prost::Message)]
14082pub struct SchedWakingFtraceEvent {
14083    #[prost(string, optional, tag="1")]
14084    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14085    #[prost(int32, optional, tag="2")]
14086    pub pid: ::core::option::Option<i32>,
14087    #[prost(int32, optional, tag="3")]
14088    pub prio: ::core::option::Option<i32>,
14089    #[prost(int32, optional, tag="4")]
14090    pub success: ::core::option::Option<i32>,
14091    #[prost(int32, optional, tag="5")]
14092    pub target_cpu: ::core::option::Option<i32>,
14093}
14094#[derive(Clone, PartialEq, ::prost::Message)]
14095pub struct SchedWakeupNewFtraceEvent {
14096    #[prost(string, optional, tag="1")]
14097    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14098    #[prost(int32, optional, tag="2")]
14099    pub pid: ::core::option::Option<i32>,
14100    #[prost(int32, optional, tag="3")]
14101    pub prio: ::core::option::Option<i32>,
14102    #[prost(int32, optional, tag="4")]
14103    pub success: ::core::option::Option<i32>,
14104    #[prost(int32, optional, tag="5")]
14105    pub target_cpu: ::core::option::Option<i32>,
14106}
14107#[derive(Clone, PartialEq, ::prost::Message)]
14108pub struct SchedProcessExecFtraceEvent {
14109    #[prost(string, optional, tag="1")]
14110    pub filename: ::core::option::Option<::prost::alloc::string::String>,
14111    #[prost(int32, optional, tag="2")]
14112    pub pid: ::core::option::Option<i32>,
14113    #[prost(int32, optional, tag="3")]
14114    pub old_pid: ::core::option::Option<i32>,
14115}
14116#[derive(Clone, PartialEq, ::prost::Message)]
14117pub struct SchedProcessExitFtraceEvent {
14118    #[prost(string, optional, tag="1")]
14119    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14120    #[prost(int32, optional, tag="2")]
14121    pub pid: ::core::option::Option<i32>,
14122    #[prost(int32, optional, tag="3")]
14123    pub tgid: ::core::option::Option<i32>,
14124    #[prost(int32, optional, tag="4")]
14125    pub prio: ::core::option::Option<i32>,
14126}
14127#[derive(Clone, PartialEq, ::prost::Message)]
14128pub struct SchedProcessForkFtraceEvent {
14129    #[prost(string, optional, tag="1")]
14130    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
14131    #[prost(int32, optional, tag="2")]
14132    pub parent_pid: ::core::option::Option<i32>,
14133    #[prost(string, optional, tag="3")]
14134    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
14135    #[prost(int32, optional, tag="4")]
14136    pub child_pid: ::core::option::Option<i32>,
14137}
14138#[derive(Clone, PartialEq, ::prost::Message)]
14139pub struct SchedProcessFreeFtraceEvent {
14140    #[prost(string, optional, tag="1")]
14141    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14142    #[prost(int32, optional, tag="2")]
14143    pub pid: ::core::option::Option<i32>,
14144    #[prost(int32, optional, tag="3")]
14145    pub prio: ::core::option::Option<i32>,
14146}
14147#[derive(Clone, PartialEq, ::prost::Message)]
14148pub struct SchedProcessHangFtraceEvent {
14149    #[prost(string, optional, tag="1")]
14150    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14151    #[prost(int32, optional, tag="2")]
14152    pub pid: ::core::option::Option<i32>,
14153}
14154#[derive(Clone, PartialEq, ::prost::Message)]
14155pub struct SchedProcessWaitFtraceEvent {
14156    #[prost(string, optional, tag="1")]
14157    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14158    #[prost(int32, optional, tag="2")]
14159    pub pid: ::core::option::Option<i32>,
14160    #[prost(int32, optional, tag="3")]
14161    pub prio: ::core::option::Option<i32>,
14162}
14163#[derive(Clone, PartialEq, ::prost::Message)]
14164pub struct SchedPiSetprioFtraceEvent {
14165    #[prost(string, optional, tag="1")]
14166    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14167    #[prost(int32, optional, tag="2")]
14168    pub newprio: ::core::option::Option<i32>,
14169    #[prost(int32, optional, tag="3")]
14170    pub oldprio: ::core::option::Option<i32>,
14171    #[prost(int32, optional, tag="4")]
14172    pub pid: ::core::option::Option<i32>,
14173}
14174#[derive(Clone, PartialEq, ::prost::Message)]
14175pub struct SchedCpuUtilCfsFtraceEvent {
14176    #[prost(int32, optional, tag="1")]
14177    pub active: ::core::option::Option<i32>,
14178    #[prost(uint64, optional, tag="2")]
14179    pub capacity: ::core::option::Option<u64>,
14180    #[prost(uint64, optional, tag="3")]
14181    pub capacity_orig: ::core::option::Option<u64>,
14182    #[prost(uint32, optional, tag="4")]
14183    pub cpu: ::core::option::Option<u32>,
14184    #[prost(uint64, optional, tag="5")]
14185    pub cpu_importance: ::core::option::Option<u64>,
14186    #[prost(uint64, optional, tag="6")]
14187    pub cpu_util: ::core::option::Option<u64>,
14188    #[prost(uint32, optional, tag="7")]
14189    pub exit_lat: ::core::option::Option<u32>,
14190    #[prost(uint64, optional, tag="8")]
14191    pub group_capacity: ::core::option::Option<u64>,
14192    #[prost(uint32, optional, tag="9")]
14193    pub grp_overutilized: ::core::option::Option<u32>,
14194    #[prost(uint32, optional, tag="10")]
14195    pub idle_cpu: ::core::option::Option<u32>,
14196    #[prost(uint32, optional, tag="11")]
14197    pub nr_running: ::core::option::Option<u32>,
14198    #[prost(int64, optional, tag="12")]
14199    pub spare_cap: ::core::option::Option<i64>,
14200    #[prost(uint32, optional, tag="13")]
14201    pub task_fits: ::core::option::Option<u32>,
14202    #[prost(uint64, optional, tag="14")]
14203    pub wake_group_util: ::core::option::Option<u64>,
14204    #[prost(uint64, optional, tag="15")]
14205    pub wake_util: ::core::option::Option<u64>,
14206}
14207#[derive(Clone, PartialEq, ::prost::Message)]
14208pub struct SchedMigrateTaskFtraceEvent {
14209    #[prost(string, optional, tag="1")]
14210    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14211    #[prost(int32, optional, tag="2")]
14212    pub pid: ::core::option::Option<i32>,
14213    #[prost(int32, optional, tag="3")]
14214    pub prio: ::core::option::Option<i32>,
14215    #[prost(int32, optional, tag="4")]
14216    pub orig_cpu: ::core::option::Option<i32>,
14217    #[prost(int32, optional, tag="5")]
14218    pub dest_cpu: ::core::option::Option<i32>,
14219    #[prost(int32, optional, tag="6")]
14220    pub running: ::core::option::Option<i32>,
14221    #[prost(uint32, optional, tag="7")]
14222    pub load: ::core::option::Option<u32>,
14223}
14224#[derive(Clone, PartialEq, ::prost::Message)]
14225pub struct SchedWakeupTaskAttrFtraceEvent {
14226    #[prost(int32, optional, tag="1")]
14227    pub pid: ::core::option::Option<i32>,
14228    #[prost(uint64, optional, tag="2")]
14229    pub cpu_affinity: ::core::option::Option<u64>,
14230    #[prost(uint64, optional, tag="3")]
14231    pub task_util: ::core::option::Option<u64>,
14232    #[prost(uint64, optional, tag="4")]
14233    pub uclamp_min: ::core::option::Option<u64>,
14234    #[prost(uint64, optional, tag="5")]
14235    pub vruntime: ::core::option::Option<u64>,
14236}
14237// End of protos/perfetto/trace/ftrace/sched.proto
14238
14239// Begin of protos/perfetto/trace/ftrace/scm.proto
14240
14241#[derive(Clone, PartialEq, ::prost::Message)]
14242pub struct ScmCallStartFtraceEvent {
14243    #[prost(uint32, optional, tag="1")]
14244    pub arginfo: ::core::option::Option<u32>,
14245    #[prost(uint64, optional, tag="2")]
14246    pub x0: ::core::option::Option<u64>,
14247    #[prost(uint64, optional, tag="3")]
14248    pub x5: ::core::option::Option<u64>,
14249}
14250#[derive(Clone, PartialEq, ::prost::Message)]
14251pub struct ScmCallEndFtraceEvent {
14252}
14253// End of protos/perfetto/trace/ftrace/scm.proto
14254
14255// Begin of protos/perfetto/trace/ftrace/sde.proto
14256
14257#[derive(Clone, PartialEq, ::prost::Message)]
14258pub struct SdeTracingMarkWriteFtraceEvent {
14259    #[prost(int32, optional, tag="1")]
14260    pub pid: ::core::option::Option<i32>,
14261    #[prost(string, optional, tag="2")]
14262    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14263    #[prost(uint32, optional, tag="3")]
14264    pub trace_type: ::core::option::Option<u32>,
14265    #[prost(int32, optional, tag="4")]
14266    pub value: ::core::option::Option<i32>,
14267    #[prost(uint32, optional, tag="5")]
14268    pub trace_begin: ::core::option::Option<u32>,
14269}
14270#[derive(Clone, PartialEq, ::prost::Message)]
14271pub struct SdeSdeEvtlogFtraceEvent {
14272    #[prost(string, optional, tag="1")]
14273    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
14274    #[prost(int32, optional, tag="2")]
14275    pub pid: ::core::option::Option<i32>,
14276    #[prost(uint32, optional, tag="3")]
14277    pub tag_id: ::core::option::Option<u32>,
14278}
14279#[derive(Clone, PartialEq, ::prost::Message)]
14280pub struct SdeSdePerfCalcCrtcFtraceEvent {
14281    #[prost(uint64, optional, tag="1")]
14282    pub bw_ctl_ebi: ::core::option::Option<u64>,
14283    #[prost(uint64, optional, tag="2")]
14284    pub bw_ctl_llcc: ::core::option::Option<u64>,
14285    #[prost(uint64, optional, tag="3")]
14286    pub bw_ctl_mnoc: ::core::option::Option<u64>,
14287    #[prost(uint32, optional, tag="4")]
14288    pub core_clk_rate: ::core::option::Option<u32>,
14289    #[prost(uint32, optional, tag="5")]
14290    pub crtc: ::core::option::Option<u32>,
14291    #[prost(uint64, optional, tag="6")]
14292    pub ib_ebi: ::core::option::Option<u64>,
14293    #[prost(uint64, optional, tag="7")]
14294    pub ib_llcc: ::core::option::Option<u64>,
14295    #[prost(uint64, optional, tag="8")]
14296    pub ib_mnoc: ::core::option::Option<u64>,
14297}
14298#[derive(Clone, PartialEq, ::prost::Message)]
14299pub struct SdeSdePerfCrtcUpdateFtraceEvent {
14300    #[prost(uint64, optional, tag="1")]
14301    pub bw_ctl_ebi: ::core::option::Option<u64>,
14302    #[prost(uint64, optional, tag="2")]
14303    pub bw_ctl_llcc: ::core::option::Option<u64>,
14304    #[prost(uint64, optional, tag="3")]
14305    pub bw_ctl_mnoc: ::core::option::Option<u64>,
14306    #[prost(uint32, optional, tag="4")]
14307    pub core_clk_rate: ::core::option::Option<u32>,
14308    #[prost(uint32, optional, tag="5")]
14309    pub crtc: ::core::option::Option<u32>,
14310    #[prost(int32, optional, tag="6")]
14311    pub params: ::core::option::Option<i32>,
14312    #[prost(uint64, optional, tag="7")]
14313    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
14314    #[prost(uint64, optional, tag="8")]
14315    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
14316    #[prost(uint64, optional, tag="9")]
14317    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
14318    #[prost(uint32, optional, tag="10")]
14319    pub stop_req: ::core::option::Option<u32>,
14320    #[prost(uint32, optional, tag="11")]
14321    pub update_bus: ::core::option::Option<u32>,
14322    #[prost(uint32, optional, tag="12")]
14323    pub update_clk: ::core::option::Option<u32>,
14324}
14325#[derive(Clone, PartialEq, ::prost::Message)]
14326pub struct SdeSdePerfSetQosLutsFtraceEvent {
14327    #[prost(uint32, optional, tag="1")]
14328    pub fl: ::core::option::Option<u32>,
14329    #[prost(uint32, optional, tag="2")]
14330    pub fmt: ::core::option::Option<u32>,
14331    #[prost(uint64, optional, tag="3")]
14332    pub lut: ::core::option::Option<u64>,
14333    #[prost(uint32, optional, tag="4")]
14334    pub lut_usage: ::core::option::Option<u32>,
14335    #[prost(uint32, optional, tag="5")]
14336    pub pnum: ::core::option::Option<u32>,
14337    #[prost(uint32, optional, tag="6")]
14338    pub rt: ::core::option::Option<u32>,
14339}
14340#[derive(Clone, PartialEq, ::prost::Message)]
14341pub struct SdeSdePerfUpdateBusFtraceEvent {
14342    #[prost(uint64, optional, tag="1")]
14343    pub ab_quota: ::core::option::Option<u64>,
14344    #[prost(uint32, optional, tag="2")]
14345    pub bus_id: ::core::option::Option<u32>,
14346    #[prost(int32, optional, tag="3")]
14347    pub client: ::core::option::Option<i32>,
14348    #[prost(uint64, optional, tag="4")]
14349    pub ib_quota: ::core::option::Option<u64>,
14350}
14351// End of protos/perfetto/trace/ftrace/sde.proto
14352
14353// Begin of protos/perfetto/trace/ftrace/signal.proto
14354
14355#[derive(Clone, PartialEq, ::prost::Message)]
14356pub struct SignalDeliverFtraceEvent {
14357    #[prost(int32, optional, tag="1")]
14358    pub code: ::core::option::Option<i32>,
14359    #[prost(uint64, optional, tag="2")]
14360    pub sa_flags: ::core::option::Option<u64>,
14361    #[prost(int32, optional, tag="3")]
14362    pub sig: ::core::option::Option<i32>,
14363}
14364#[derive(Clone, PartialEq, ::prost::Message)]
14365pub struct SignalGenerateFtraceEvent {
14366    #[prost(int32, optional, tag="1")]
14367    pub code: ::core::option::Option<i32>,
14368    #[prost(string, optional, tag="2")]
14369    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14370    #[prost(int32, optional, tag="3")]
14371    pub group: ::core::option::Option<i32>,
14372    #[prost(int32, optional, tag="4")]
14373    pub pid: ::core::option::Option<i32>,
14374    #[prost(int32, optional, tag="5")]
14375    pub result: ::core::option::Option<i32>,
14376    #[prost(int32, optional, tag="6")]
14377    pub sig: ::core::option::Option<i32>,
14378}
14379// End of protos/perfetto/trace/ftrace/signal.proto
14380
14381// Begin of protos/perfetto/trace/ftrace/skb.proto
14382
14383#[derive(Clone, PartialEq, ::prost::Message)]
14384pub struct KfreeSkbFtraceEvent {
14385    #[prost(uint64, optional, tag="1")]
14386    pub location: ::core::option::Option<u64>,
14387    #[prost(uint32, optional, tag="2")]
14388    pub protocol: ::core::option::Option<u32>,
14389    #[prost(uint64, optional, tag="3")]
14390    pub skbaddr: ::core::option::Option<u64>,
14391}
14392// End of protos/perfetto/trace/ftrace/skb.proto
14393
14394// Begin of protos/perfetto/trace/ftrace/sock.proto
14395
14396#[derive(Clone, PartialEq, ::prost::Message)]
14397pub struct InetSockSetStateFtraceEvent {
14398    #[prost(uint32, optional, tag="1")]
14399    pub daddr: ::core::option::Option<u32>,
14400    #[prost(uint32, optional, tag="2")]
14401    pub dport: ::core::option::Option<u32>,
14402    #[prost(uint32, optional, tag="3")]
14403    pub family: ::core::option::Option<u32>,
14404    #[prost(int32, optional, tag="4")]
14405    pub newstate: ::core::option::Option<i32>,
14406    #[prost(int32, optional, tag="5")]
14407    pub oldstate: ::core::option::Option<i32>,
14408    #[prost(uint32, optional, tag="6")]
14409    pub protocol: ::core::option::Option<u32>,
14410    #[prost(uint32, optional, tag="7")]
14411    pub saddr: ::core::option::Option<u32>,
14412    #[prost(uint64, optional, tag="8")]
14413    pub skaddr: ::core::option::Option<u64>,
14414    #[prost(uint32, optional, tag="9")]
14415    pub sport: ::core::option::Option<u32>,
14416}
14417// End of protos/perfetto/trace/ftrace/sock.proto
14418
14419// Begin of protos/perfetto/trace/ftrace/sync.proto
14420
14421#[derive(Clone, PartialEq, ::prost::Message)]
14422pub struct SyncPtFtraceEvent {
14423    #[prost(string, optional, tag="1")]
14424    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
14425    #[prost(string, optional, tag="2")]
14426    pub value: ::core::option::Option<::prost::alloc::string::String>,
14427}
14428#[derive(Clone, PartialEq, ::prost::Message)]
14429pub struct SyncTimelineFtraceEvent {
14430    #[prost(string, optional, tag="1")]
14431    pub name: ::core::option::Option<::prost::alloc::string::String>,
14432    #[prost(string, optional, tag="2")]
14433    pub value: ::core::option::Option<::prost::alloc::string::String>,
14434}
14435#[derive(Clone, PartialEq, ::prost::Message)]
14436pub struct SyncWaitFtraceEvent {
14437    #[prost(string, optional, tag="1")]
14438    pub name: ::core::option::Option<::prost::alloc::string::String>,
14439    #[prost(int32, optional, tag="2")]
14440    pub status: ::core::option::Option<i32>,
14441    #[prost(uint32, optional, tag="3")]
14442    pub begin: ::core::option::Option<u32>,
14443}
14444// End of protos/perfetto/trace/ftrace/sync.proto
14445
14446// Begin of protos/perfetto/trace/ftrace/synthetic.proto
14447
14448#[derive(Clone, PartialEq, ::prost::Message)]
14449pub struct RssStatThrottledFtraceEvent {
14450    #[prost(uint32, optional, tag="1")]
14451    pub curr: ::core::option::Option<u32>,
14452    #[prost(int32, optional, tag="2")]
14453    pub member: ::core::option::Option<i32>,
14454    #[prost(uint32, optional, tag="3")]
14455    pub mm_id: ::core::option::Option<u32>,
14456    #[prost(int64, optional, tag="4")]
14457    pub size: ::core::option::Option<i64>,
14458}
14459#[derive(Clone, PartialEq, ::prost::Message)]
14460pub struct SuspendResumeMinimalFtraceEvent {
14461    #[prost(uint32, optional, tag="1")]
14462    pub start: ::core::option::Option<u32>,
14463}
14464// End of protos/perfetto/trace/ftrace/synthetic.proto
14465
14466// Begin of protos/perfetto/trace/ftrace/systrace.proto
14467
14468#[derive(Clone, PartialEq, ::prost::Message)]
14469pub struct ZeroFtraceEvent {
14470    #[prost(int32, optional, tag="1")]
14471    pub flag: ::core::option::Option<i32>,
14472    #[prost(string, optional, tag="2")]
14473    pub name: ::core::option::Option<::prost::alloc::string::String>,
14474    #[prost(int32, optional, tag="3")]
14475    pub pid: ::core::option::Option<i32>,
14476    #[prost(int64, optional, tag="4")]
14477    pub value: ::core::option::Option<i64>,
14478}
14479// End of protos/perfetto/trace/ftrace/systrace.proto
14480
14481// Begin of protos/perfetto/trace/ftrace/task.proto
14482
14483#[derive(Clone, PartialEq, ::prost::Message)]
14484pub struct TaskNewtaskFtraceEvent {
14485    #[prost(int32, optional, tag="1")]
14486    pub pid: ::core::option::Option<i32>,
14487    #[prost(string, optional, tag="2")]
14488    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14489    #[prost(uint64, optional, tag="3")]
14490    pub clone_flags: ::core::option::Option<u64>,
14491    #[prost(int32, optional, tag="4")]
14492    pub oom_score_adj: ::core::option::Option<i32>,
14493}
14494#[derive(Clone, PartialEq, ::prost::Message)]
14495pub struct TaskRenameFtraceEvent {
14496    #[prost(int32, optional, tag="1")]
14497    pub pid: ::core::option::Option<i32>,
14498    #[prost(string, optional, tag="2")]
14499    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
14500    #[prost(string, optional, tag="3")]
14501    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
14502    #[prost(int32, optional, tag="4")]
14503    pub oom_score_adj: ::core::option::Option<i32>,
14504}
14505// End of protos/perfetto/trace/ftrace/task.proto
14506
14507// Begin of protos/perfetto/trace/ftrace/tcp.proto
14508
14509#[derive(Clone, PartialEq, ::prost::Message)]
14510pub struct TcpRetransmitSkbFtraceEvent {
14511    #[prost(uint32, optional, tag="1")]
14512    pub daddr: ::core::option::Option<u32>,
14513    #[prost(uint32, optional, tag="2")]
14514    pub dport: ::core::option::Option<u32>,
14515    #[prost(uint32, optional, tag="3")]
14516    pub saddr: ::core::option::Option<u32>,
14517    #[prost(uint64, optional, tag="4")]
14518    pub skaddr: ::core::option::Option<u64>,
14519    #[prost(uint64, optional, tag="5")]
14520    pub skbaddr: ::core::option::Option<u64>,
14521    #[prost(uint32, optional, tag="6")]
14522    pub sport: ::core::option::Option<u32>,
14523    #[prost(int32, optional, tag="7")]
14524    pub state: ::core::option::Option<i32>,
14525}
14526// End of protos/perfetto/trace/ftrace/tcp.proto
14527
14528// Begin of protos/perfetto/trace/ftrace/thermal.proto
14529
14530#[derive(Clone, PartialEq, ::prost::Message)]
14531pub struct ThermalTemperatureFtraceEvent {
14532    #[prost(int32, optional, tag="1")]
14533    pub id: ::core::option::Option<i32>,
14534    #[prost(int32, optional, tag="2")]
14535    pub temp: ::core::option::Option<i32>,
14536    #[prost(int32, optional, tag="3")]
14537    pub temp_prev: ::core::option::Option<i32>,
14538    #[prost(string, optional, tag="4")]
14539    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
14540}
14541#[derive(Clone, PartialEq, ::prost::Message)]
14542pub struct CdevUpdateFtraceEvent {
14543    #[prost(uint64, optional, tag="1")]
14544    pub target: ::core::option::Option<u64>,
14545    #[prost(string, optional, tag="2")]
14546    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
14547}
14548// End of protos/perfetto/trace/ftrace/thermal.proto
14549
14550// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
14551
14552#[derive(Clone, PartialEq, ::prost::Message)]
14553pub struct ThermalExynosAcpmBulkFtraceEvent {
14554    #[prost(uint32, optional, tag="1")]
14555    pub tz_id: ::core::option::Option<u32>,
14556    #[prost(uint32, optional, tag="2")]
14557    pub current_temp: ::core::option::Option<u32>,
14558    #[prost(uint32, optional, tag="3")]
14559    pub ctrl_temp: ::core::option::Option<u32>,
14560    #[prost(uint32, optional, tag="4")]
14561    pub cdev_state: ::core::option::Option<u32>,
14562    #[prost(int32, optional, tag="5")]
14563    pub pid_et_p: ::core::option::Option<i32>,
14564    #[prost(int32, optional, tag="6")]
14565    pub pid_power_range: ::core::option::Option<i32>,
14566    #[prost(int32, optional, tag="7")]
14567    pub pid_p: ::core::option::Option<i32>,
14568    #[prost(int32, optional, tag="8")]
14569    pub pid_i: ::core::option::Option<i32>,
14570    #[prost(int32, optional, tag="9")]
14571    pub k_p: ::core::option::Option<i32>,
14572    #[prost(int32, optional, tag="10")]
14573    pub k_i: ::core::option::Option<i32>,
14574    #[prost(uint64, optional, tag="11")]
14575    pub timestamp: ::core::option::Option<u64>,
14576}
14577#[derive(Clone, PartialEq, ::prost::Message)]
14578pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
14579    #[prost(int32, optional, tag="1")]
14580    pub tz_id: ::core::option::Option<i32>,
14581    #[prost(uint32, optional, tag="2")]
14582    pub current_temp: ::core::option::Option<u32>,
14583    #[prost(uint32, optional, tag="3")]
14584    pub ctrl_temp: ::core::option::Option<u32>,
14585    #[prost(uint32, optional, tag="4")]
14586    pub cdev_state: ::core::option::Option<u32>,
14587    #[prost(int32, optional, tag="5")]
14588    pub pid_et_p: ::core::option::Option<i32>,
14589    #[prost(int32, optional, tag="6")]
14590    pub k_p: ::core::option::Option<i32>,
14591    #[prost(int32, optional, tag="7")]
14592    pub k_i: ::core::option::Option<i32>,
14593}
14594// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
14595
14596// Begin of protos/perfetto/trace/ftrace/timer.proto
14597
14598#[derive(Clone, PartialEq, ::prost::Message)]
14599pub struct HrtimerStartFtraceEvent {
14600    #[prost(uint64, optional, tag="1")]
14601    pub hrtimer: ::core::option::Option<u64>,
14602    #[prost(uint64, optional, tag="2")]
14603    pub function: ::core::option::Option<u64>,
14604    #[prost(int64, optional, tag="3")]
14605    pub expires: ::core::option::Option<i64>,
14606    #[prost(int64, optional, tag="4")]
14607    pub softexpires: ::core::option::Option<i64>,
14608    #[prost(uint32, optional, tag="5")]
14609    pub mode: ::core::option::Option<u32>,
14610}
14611#[derive(Clone, PartialEq, ::prost::Message)]
14612pub struct HrtimerCancelFtraceEvent {
14613    #[prost(uint64, optional, tag="1")]
14614    pub hrtimer: ::core::option::Option<u64>,
14615}
14616#[derive(Clone, PartialEq, ::prost::Message)]
14617pub struct HrtimerExpireEntryFtraceEvent {
14618    #[prost(uint64, optional, tag="1")]
14619    pub hrtimer: ::core::option::Option<u64>,
14620    #[prost(int64, optional, tag="2")]
14621    pub now: ::core::option::Option<i64>,
14622    #[prost(uint64, optional, tag="3")]
14623    pub function: ::core::option::Option<u64>,
14624}
14625#[derive(Clone, PartialEq, ::prost::Message)]
14626pub struct HrtimerExpireExitFtraceEvent {
14627    #[prost(uint64, optional, tag="1")]
14628    pub hrtimer: ::core::option::Option<u64>,
14629}
14630#[derive(Clone, PartialEq, ::prost::Message)]
14631pub struct TimerStartFtraceEvent {
14632    #[prost(uint64, optional, tag="1")]
14633    pub timer: ::core::option::Option<u64>,
14634    #[prost(uint64, optional, tag="2")]
14635    pub function: ::core::option::Option<u64>,
14636    #[prost(uint64, optional, tag="3")]
14637    pub expires: ::core::option::Option<u64>,
14638    #[prost(uint64, optional, tag="4")]
14639    pub now: ::core::option::Option<u64>,
14640    #[prost(uint32, optional, tag="5")]
14641    pub deferrable: ::core::option::Option<u32>,
14642    #[prost(uint32, optional, tag="6")]
14643    pub flags: ::core::option::Option<u32>,
14644    #[prost(uint64, optional, tag="7")]
14645    pub bucket_expiry: ::core::option::Option<u64>,
14646}
14647#[derive(Clone, PartialEq, ::prost::Message)]
14648pub struct TimerCancelFtraceEvent {
14649    #[prost(uint64, optional, tag="1")]
14650    pub timer: ::core::option::Option<u64>,
14651}
14652#[derive(Clone, PartialEq, ::prost::Message)]
14653pub struct TimerExpireEntryFtraceEvent {
14654    #[prost(uint64, optional, tag="1")]
14655    pub timer: ::core::option::Option<u64>,
14656    #[prost(uint64, optional, tag="2")]
14657    pub now: ::core::option::Option<u64>,
14658    #[prost(uint64, optional, tag="3")]
14659    pub function: ::core::option::Option<u64>,
14660    #[prost(uint64, optional, tag="4")]
14661    pub baseclk: ::core::option::Option<u64>,
14662}
14663#[derive(Clone, PartialEq, ::prost::Message)]
14664pub struct TimerExpireExitFtraceEvent {
14665    #[prost(uint64, optional, tag="1")]
14666    pub timer: ::core::option::Option<u64>,
14667}
14668// End of protos/perfetto/trace/ftrace/timer.proto
14669
14670// Begin of protos/perfetto/trace/ftrace/trusty.proto
14671
14672#[derive(Clone, PartialEq, ::prost::Message)]
14673pub struct TrustySmcFtraceEvent {
14674    #[prost(uint64, optional, tag="1")]
14675    pub r0: ::core::option::Option<u64>,
14676    #[prost(uint64, optional, tag="2")]
14677    pub r1: ::core::option::Option<u64>,
14678    #[prost(uint64, optional, tag="3")]
14679    pub r2: ::core::option::Option<u64>,
14680    #[prost(uint64, optional, tag="4")]
14681    pub r3: ::core::option::Option<u64>,
14682}
14683#[derive(Clone, PartialEq, ::prost::Message)]
14684pub struct TrustySmcDoneFtraceEvent {
14685    #[prost(uint64, optional, tag="1")]
14686    pub ret: ::core::option::Option<u64>,
14687}
14688#[derive(Clone, PartialEq, ::prost::Message)]
14689pub struct TrustyStdCall32FtraceEvent {
14690    #[prost(uint64, optional, tag="1")]
14691    pub r0: ::core::option::Option<u64>,
14692    #[prost(uint64, optional, tag="2")]
14693    pub r1: ::core::option::Option<u64>,
14694    #[prost(uint64, optional, tag="3")]
14695    pub r2: ::core::option::Option<u64>,
14696    #[prost(uint64, optional, tag="4")]
14697    pub r3: ::core::option::Option<u64>,
14698}
14699#[derive(Clone, PartialEq, ::prost::Message)]
14700pub struct TrustyStdCall32DoneFtraceEvent {
14701    #[prost(int64, optional, tag="1")]
14702    pub ret: ::core::option::Option<i64>,
14703}
14704#[derive(Clone, PartialEq, ::prost::Message)]
14705pub struct TrustyShareMemoryFtraceEvent {
14706    #[prost(uint64, optional, tag="1")]
14707    pub len: ::core::option::Option<u64>,
14708    #[prost(uint32, optional, tag="2")]
14709    pub lend: ::core::option::Option<u32>,
14710    #[prost(uint32, optional, tag="3")]
14711    pub nents: ::core::option::Option<u32>,
14712}
14713#[derive(Clone, PartialEq, ::prost::Message)]
14714pub struct TrustyShareMemoryDoneFtraceEvent {
14715    #[prost(uint64, optional, tag="1")]
14716    pub handle: ::core::option::Option<u64>,
14717    #[prost(uint64, optional, tag="2")]
14718    pub len: ::core::option::Option<u64>,
14719    #[prost(uint32, optional, tag="3")]
14720    pub lend: ::core::option::Option<u32>,
14721    #[prost(uint32, optional, tag="4")]
14722    pub nents: ::core::option::Option<u32>,
14723    #[prost(int32, optional, tag="5")]
14724    pub ret: ::core::option::Option<i32>,
14725}
14726#[derive(Clone, PartialEq, ::prost::Message)]
14727pub struct TrustyReclaimMemoryFtraceEvent {
14728    #[prost(uint64, optional, tag="1")]
14729    pub id: ::core::option::Option<u64>,
14730}
14731#[derive(Clone, PartialEq, ::prost::Message)]
14732pub struct TrustyReclaimMemoryDoneFtraceEvent {
14733    #[prost(uint64, optional, tag="1")]
14734    pub id: ::core::option::Option<u64>,
14735    #[prost(int32, optional, tag="2")]
14736    pub ret: ::core::option::Option<i32>,
14737}
14738#[derive(Clone, PartialEq, ::prost::Message)]
14739pub struct TrustyIrqFtraceEvent {
14740    #[prost(int32, optional, tag="1")]
14741    pub irq: ::core::option::Option<i32>,
14742}
14743#[derive(Clone, PartialEq, ::prost::Message)]
14744pub struct TrustyIpcHandleEventFtraceEvent {
14745    #[prost(uint32, optional, tag="1")]
14746    pub chan: ::core::option::Option<u32>,
14747    #[prost(uint32, optional, tag="2")]
14748    pub event_id: ::core::option::Option<u32>,
14749    #[prost(string, optional, tag="3")]
14750    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14751}
14752#[derive(Clone, PartialEq, ::prost::Message)]
14753pub struct TrustyIpcConnectFtraceEvent {
14754    #[prost(uint32, optional, tag="1")]
14755    pub chan: ::core::option::Option<u32>,
14756    #[prost(string, optional, tag="2")]
14757    pub port: ::core::option::Option<::prost::alloc::string::String>,
14758    #[prost(int32, optional, tag="3")]
14759    pub state: ::core::option::Option<i32>,
14760}
14761#[derive(Clone, PartialEq, ::prost::Message)]
14762pub struct TrustyIpcConnectEndFtraceEvent {
14763    #[prost(uint32, optional, tag="1")]
14764    pub chan: ::core::option::Option<u32>,
14765    #[prost(int32, optional, tag="2")]
14766    pub err: ::core::option::Option<i32>,
14767    #[prost(int32, optional, tag="3")]
14768    pub state: ::core::option::Option<i32>,
14769}
14770#[derive(Clone, PartialEq, ::prost::Message)]
14771pub struct TrustyIpcWriteFtraceEvent {
14772    #[prost(uint64, optional, tag="1")]
14773    pub buf_id: ::core::option::Option<u64>,
14774    #[prost(uint32, optional, tag="2")]
14775    pub chan: ::core::option::Option<u32>,
14776    #[prost(int32, optional, tag="3")]
14777    pub kind_shm: ::core::option::Option<i32>,
14778    #[prost(int32, optional, tag="4")]
14779    pub len_or_err: ::core::option::Option<i32>,
14780    #[prost(uint64, optional, tag="5")]
14781    pub shm_cnt: ::core::option::Option<u64>,
14782    #[prost(string, optional, tag="6")]
14783    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14784}
14785#[derive(Clone, PartialEq, ::prost::Message)]
14786pub struct TrustyIpcPollFtraceEvent {
14787    #[prost(uint32, optional, tag="1")]
14788    pub chan: ::core::option::Option<u32>,
14789    #[prost(uint32, optional, tag="2")]
14790    pub poll_mask: ::core::option::Option<u32>,
14791    #[prost(string, optional, tag="3")]
14792    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14793}
14794#[derive(Clone, PartialEq, ::prost::Message)]
14795pub struct TrustyIpcReadFtraceEvent {
14796    #[prost(uint32, optional, tag="1")]
14797    pub chan: ::core::option::Option<u32>,
14798    #[prost(string, optional, tag="2")]
14799    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14800}
14801#[derive(Clone, PartialEq, ::prost::Message)]
14802pub struct TrustyIpcReadEndFtraceEvent {
14803    #[prost(uint64, optional, tag="1")]
14804    pub buf_id: ::core::option::Option<u64>,
14805    #[prost(uint32, optional, tag="2")]
14806    pub chan: ::core::option::Option<u32>,
14807    #[prost(int32, optional, tag="3")]
14808    pub len_or_err: ::core::option::Option<i32>,
14809    #[prost(uint64, optional, tag="4")]
14810    pub shm_cnt: ::core::option::Option<u64>,
14811    #[prost(string, optional, tag="5")]
14812    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14813}
14814#[derive(Clone, PartialEq, ::prost::Message)]
14815pub struct TrustyIpcRxFtraceEvent {
14816    #[prost(uint64, optional, tag="1")]
14817    pub buf_id: ::core::option::Option<u64>,
14818    #[prost(uint32, optional, tag="2")]
14819    pub chan: ::core::option::Option<u32>,
14820    #[prost(string, optional, tag="3")]
14821    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
14822}
14823#[derive(Clone, PartialEq, ::prost::Message)]
14824pub struct TrustyEnqueueNopFtraceEvent {
14825    #[prost(uint32, optional, tag="1")]
14826    pub arg1: ::core::option::Option<u32>,
14827    #[prost(uint32, optional, tag="2")]
14828    pub arg2: ::core::option::Option<u32>,
14829    #[prost(uint32, optional, tag="3")]
14830    pub arg3: ::core::option::Option<u32>,
14831}
14832// End of protos/perfetto/trace/ftrace/trusty.proto
14833
14834// Begin of protos/perfetto/trace/ftrace/ufs.proto
14835
14836#[derive(Clone, PartialEq, ::prost::Message)]
14837pub struct UfshcdCommandFtraceEvent {
14838    #[prost(string, optional, tag="1")]
14839    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
14840    #[prost(uint32, optional, tag="2")]
14841    pub doorbell: ::core::option::Option<u32>,
14842    #[prost(uint32, optional, tag="3")]
14843    pub intr: ::core::option::Option<u32>,
14844    #[prost(uint64, optional, tag="4")]
14845    pub lba: ::core::option::Option<u64>,
14846    #[prost(uint32, optional, tag="5")]
14847    pub opcode: ::core::option::Option<u32>,
14848    #[prost(string, optional, tag="6")]
14849    pub str: ::core::option::Option<::prost::alloc::string::String>,
14850    #[prost(uint32, optional, tag="7")]
14851    pub tag: ::core::option::Option<u32>,
14852    #[prost(int32, optional, tag="8")]
14853    pub transfer_len: ::core::option::Option<i32>,
14854    #[prost(uint32, optional, tag="9")]
14855    pub group_id: ::core::option::Option<u32>,
14856    #[prost(uint32, optional, tag="10")]
14857    pub str_t: ::core::option::Option<u32>,
14858}
14859#[derive(Clone, PartialEq, ::prost::Message)]
14860pub struct UfshcdClkGatingFtraceEvent {
14861    #[prost(string, optional, tag="1")]
14862    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
14863    #[prost(int32, optional, tag="2")]
14864    pub state: ::core::option::Option<i32>,
14865}
14866// End of protos/perfetto/trace/ftrace/ufs.proto
14867
14868// Begin of protos/perfetto/trace/ftrace/v4l2.proto
14869
14870#[derive(Clone, PartialEq, ::prost::Message)]
14871pub struct V4l2QbufFtraceEvent {
14872    #[prost(uint32, optional, tag="1")]
14873    pub bytesused: ::core::option::Option<u32>,
14874    #[prost(uint32, optional, tag="2")]
14875    pub field: ::core::option::Option<u32>,
14876    #[prost(uint32, optional, tag="3")]
14877    pub flags: ::core::option::Option<u32>,
14878    #[prost(uint32, optional, tag="4")]
14879    pub index: ::core::option::Option<u32>,
14880    #[prost(int32, optional, tag="5")]
14881    pub minor: ::core::option::Option<i32>,
14882    #[prost(uint32, optional, tag="6")]
14883    pub sequence: ::core::option::Option<u32>,
14884    #[prost(uint32, optional, tag="7")]
14885    pub timecode_flags: ::core::option::Option<u32>,
14886    #[prost(uint32, optional, tag="8")]
14887    pub timecode_frames: ::core::option::Option<u32>,
14888    #[prost(uint32, optional, tag="9")]
14889    pub timecode_hours: ::core::option::Option<u32>,
14890    #[prost(uint32, optional, tag="10")]
14891    pub timecode_minutes: ::core::option::Option<u32>,
14892    #[prost(uint32, optional, tag="11")]
14893    pub timecode_seconds: ::core::option::Option<u32>,
14894    #[prost(uint32, optional, tag="12")]
14895    pub timecode_type: ::core::option::Option<u32>,
14896    #[prost(uint32, optional, tag="13")]
14897    pub timecode_userbits0: ::core::option::Option<u32>,
14898    #[prost(uint32, optional, tag="14")]
14899    pub timecode_userbits1: ::core::option::Option<u32>,
14900    #[prost(uint32, optional, tag="15")]
14901    pub timecode_userbits2: ::core::option::Option<u32>,
14902    #[prost(uint32, optional, tag="16")]
14903    pub timecode_userbits3: ::core::option::Option<u32>,
14904    #[prost(int64, optional, tag="17")]
14905    pub timestamp: ::core::option::Option<i64>,
14906    #[prost(uint32, optional, tag="18")]
14907    pub r#type: ::core::option::Option<u32>,
14908}
14909#[derive(Clone, PartialEq, ::prost::Message)]
14910pub struct V4l2DqbufFtraceEvent {
14911    #[prost(uint32, optional, tag="1")]
14912    pub bytesused: ::core::option::Option<u32>,
14913    #[prost(uint32, optional, tag="2")]
14914    pub field: ::core::option::Option<u32>,
14915    #[prost(uint32, optional, tag="3")]
14916    pub flags: ::core::option::Option<u32>,
14917    #[prost(uint32, optional, tag="4")]
14918    pub index: ::core::option::Option<u32>,
14919    #[prost(int32, optional, tag="5")]
14920    pub minor: ::core::option::Option<i32>,
14921    #[prost(uint32, optional, tag="6")]
14922    pub sequence: ::core::option::Option<u32>,
14923    #[prost(uint32, optional, tag="7")]
14924    pub timecode_flags: ::core::option::Option<u32>,
14925    #[prost(uint32, optional, tag="8")]
14926    pub timecode_frames: ::core::option::Option<u32>,
14927    #[prost(uint32, optional, tag="9")]
14928    pub timecode_hours: ::core::option::Option<u32>,
14929    #[prost(uint32, optional, tag="10")]
14930    pub timecode_minutes: ::core::option::Option<u32>,
14931    #[prost(uint32, optional, tag="11")]
14932    pub timecode_seconds: ::core::option::Option<u32>,
14933    #[prost(uint32, optional, tag="12")]
14934    pub timecode_type: ::core::option::Option<u32>,
14935    #[prost(uint32, optional, tag="13")]
14936    pub timecode_userbits0: ::core::option::Option<u32>,
14937    #[prost(uint32, optional, tag="14")]
14938    pub timecode_userbits1: ::core::option::Option<u32>,
14939    #[prost(uint32, optional, tag="15")]
14940    pub timecode_userbits2: ::core::option::Option<u32>,
14941    #[prost(uint32, optional, tag="16")]
14942    pub timecode_userbits3: ::core::option::Option<u32>,
14943    #[prost(int64, optional, tag="17")]
14944    pub timestamp: ::core::option::Option<i64>,
14945    #[prost(uint32, optional, tag="18")]
14946    pub r#type: ::core::option::Option<u32>,
14947}
14948#[derive(Clone, PartialEq, ::prost::Message)]
14949pub struct Vb2V4l2BufQueueFtraceEvent {
14950    #[prost(uint32, optional, tag="1")]
14951    pub field: ::core::option::Option<u32>,
14952    #[prost(uint32, optional, tag="2")]
14953    pub flags: ::core::option::Option<u32>,
14954    #[prost(int32, optional, tag="3")]
14955    pub minor: ::core::option::Option<i32>,
14956    #[prost(uint32, optional, tag="4")]
14957    pub sequence: ::core::option::Option<u32>,
14958    #[prost(uint32, optional, tag="5")]
14959    pub timecode_flags: ::core::option::Option<u32>,
14960    #[prost(uint32, optional, tag="6")]
14961    pub timecode_frames: ::core::option::Option<u32>,
14962    #[prost(uint32, optional, tag="7")]
14963    pub timecode_hours: ::core::option::Option<u32>,
14964    #[prost(uint32, optional, tag="8")]
14965    pub timecode_minutes: ::core::option::Option<u32>,
14966    #[prost(uint32, optional, tag="9")]
14967    pub timecode_seconds: ::core::option::Option<u32>,
14968    #[prost(uint32, optional, tag="10")]
14969    pub timecode_type: ::core::option::Option<u32>,
14970    #[prost(uint32, optional, tag="11")]
14971    pub timecode_userbits0: ::core::option::Option<u32>,
14972    #[prost(uint32, optional, tag="12")]
14973    pub timecode_userbits1: ::core::option::Option<u32>,
14974    #[prost(uint32, optional, tag="13")]
14975    pub timecode_userbits2: ::core::option::Option<u32>,
14976    #[prost(uint32, optional, tag="14")]
14977    pub timecode_userbits3: ::core::option::Option<u32>,
14978    #[prost(int64, optional, tag="15")]
14979    pub timestamp: ::core::option::Option<i64>,
14980}
14981#[derive(Clone, PartialEq, ::prost::Message)]
14982pub struct Vb2V4l2BufDoneFtraceEvent {
14983    #[prost(uint32, optional, tag="1")]
14984    pub field: ::core::option::Option<u32>,
14985    #[prost(uint32, optional, tag="2")]
14986    pub flags: ::core::option::Option<u32>,
14987    #[prost(int32, optional, tag="3")]
14988    pub minor: ::core::option::Option<i32>,
14989    #[prost(uint32, optional, tag="4")]
14990    pub sequence: ::core::option::Option<u32>,
14991    #[prost(uint32, optional, tag="5")]
14992    pub timecode_flags: ::core::option::Option<u32>,
14993    #[prost(uint32, optional, tag="6")]
14994    pub timecode_frames: ::core::option::Option<u32>,
14995    #[prost(uint32, optional, tag="7")]
14996    pub timecode_hours: ::core::option::Option<u32>,
14997    #[prost(uint32, optional, tag="8")]
14998    pub timecode_minutes: ::core::option::Option<u32>,
14999    #[prost(uint32, optional, tag="9")]
15000    pub timecode_seconds: ::core::option::Option<u32>,
15001    #[prost(uint32, optional, tag="10")]
15002    pub timecode_type: ::core::option::Option<u32>,
15003    #[prost(uint32, optional, tag="11")]
15004    pub timecode_userbits0: ::core::option::Option<u32>,
15005    #[prost(uint32, optional, tag="12")]
15006    pub timecode_userbits1: ::core::option::Option<u32>,
15007    #[prost(uint32, optional, tag="13")]
15008    pub timecode_userbits2: ::core::option::Option<u32>,
15009    #[prost(uint32, optional, tag="14")]
15010    pub timecode_userbits3: ::core::option::Option<u32>,
15011    #[prost(int64, optional, tag="15")]
15012    pub timestamp: ::core::option::Option<i64>,
15013}
15014#[derive(Clone, PartialEq, ::prost::Message)]
15015pub struct Vb2V4l2QbufFtraceEvent {
15016    #[prost(uint32, optional, tag="1")]
15017    pub field: ::core::option::Option<u32>,
15018    #[prost(uint32, optional, tag="2")]
15019    pub flags: ::core::option::Option<u32>,
15020    #[prost(int32, optional, tag="3")]
15021    pub minor: ::core::option::Option<i32>,
15022    #[prost(uint32, optional, tag="4")]
15023    pub sequence: ::core::option::Option<u32>,
15024    #[prost(uint32, optional, tag="5")]
15025    pub timecode_flags: ::core::option::Option<u32>,
15026    #[prost(uint32, optional, tag="6")]
15027    pub timecode_frames: ::core::option::Option<u32>,
15028    #[prost(uint32, optional, tag="7")]
15029    pub timecode_hours: ::core::option::Option<u32>,
15030    #[prost(uint32, optional, tag="8")]
15031    pub timecode_minutes: ::core::option::Option<u32>,
15032    #[prost(uint32, optional, tag="9")]
15033    pub timecode_seconds: ::core::option::Option<u32>,
15034    #[prost(uint32, optional, tag="10")]
15035    pub timecode_type: ::core::option::Option<u32>,
15036    #[prost(uint32, optional, tag="11")]
15037    pub timecode_userbits0: ::core::option::Option<u32>,
15038    #[prost(uint32, optional, tag="12")]
15039    pub timecode_userbits1: ::core::option::Option<u32>,
15040    #[prost(uint32, optional, tag="13")]
15041    pub timecode_userbits2: ::core::option::Option<u32>,
15042    #[prost(uint32, optional, tag="14")]
15043    pub timecode_userbits3: ::core::option::Option<u32>,
15044    #[prost(int64, optional, tag="15")]
15045    pub timestamp: ::core::option::Option<i64>,
15046}
15047#[derive(Clone, PartialEq, ::prost::Message)]
15048pub struct Vb2V4l2DqbufFtraceEvent {
15049    #[prost(uint32, optional, tag="1")]
15050    pub field: ::core::option::Option<u32>,
15051    #[prost(uint32, optional, tag="2")]
15052    pub flags: ::core::option::Option<u32>,
15053    #[prost(int32, optional, tag="3")]
15054    pub minor: ::core::option::Option<i32>,
15055    #[prost(uint32, optional, tag="4")]
15056    pub sequence: ::core::option::Option<u32>,
15057    #[prost(uint32, optional, tag="5")]
15058    pub timecode_flags: ::core::option::Option<u32>,
15059    #[prost(uint32, optional, tag="6")]
15060    pub timecode_frames: ::core::option::Option<u32>,
15061    #[prost(uint32, optional, tag="7")]
15062    pub timecode_hours: ::core::option::Option<u32>,
15063    #[prost(uint32, optional, tag="8")]
15064    pub timecode_minutes: ::core::option::Option<u32>,
15065    #[prost(uint32, optional, tag="9")]
15066    pub timecode_seconds: ::core::option::Option<u32>,
15067    #[prost(uint32, optional, tag="10")]
15068    pub timecode_type: ::core::option::Option<u32>,
15069    #[prost(uint32, optional, tag="11")]
15070    pub timecode_userbits0: ::core::option::Option<u32>,
15071    #[prost(uint32, optional, tag="12")]
15072    pub timecode_userbits1: ::core::option::Option<u32>,
15073    #[prost(uint32, optional, tag="13")]
15074    pub timecode_userbits2: ::core::option::Option<u32>,
15075    #[prost(uint32, optional, tag="14")]
15076    pub timecode_userbits3: ::core::option::Option<u32>,
15077    #[prost(int64, optional, tag="15")]
15078    pub timestamp: ::core::option::Option<i64>,
15079}
15080// End of protos/perfetto/trace/ftrace/v4l2.proto
15081
15082// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
15083
15084#[derive(Clone, PartialEq, ::prost::Message)]
15085pub struct VirtioGpuCmdQueueFtraceEvent {
15086    #[prost(uint32, optional, tag="1")]
15087    pub ctx_id: ::core::option::Option<u32>,
15088    #[prost(int32, optional, tag="2")]
15089    pub dev: ::core::option::Option<i32>,
15090    #[prost(uint64, optional, tag="3")]
15091    pub fence_id: ::core::option::Option<u64>,
15092    #[prost(uint32, optional, tag="4")]
15093    pub flags: ::core::option::Option<u32>,
15094    #[prost(string, optional, tag="5")]
15095    pub name: ::core::option::Option<::prost::alloc::string::String>,
15096    #[prost(uint32, optional, tag="6")]
15097    pub num_free: ::core::option::Option<u32>,
15098    #[prost(uint32, optional, tag="7")]
15099    pub seqno: ::core::option::Option<u32>,
15100    #[prost(uint32, optional, tag="8")]
15101    pub r#type: ::core::option::Option<u32>,
15102    #[prost(uint32, optional, tag="9")]
15103    pub vq: ::core::option::Option<u32>,
15104}
15105#[derive(Clone, PartialEq, ::prost::Message)]
15106pub struct VirtioGpuCmdResponseFtraceEvent {
15107    #[prost(uint32, optional, tag="1")]
15108    pub ctx_id: ::core::option::Option<u32>,
15109    #[prost(int32, optional, tag="2")]
15110    pub dev: ::core::option::Option<i32>,
15111    #[prost(uint64, optional, tag="3")]
15112    pub fence_id: ::core::option::Option<u64>,
15113    #[prost(uint32, optional, tag="4")]
15114    pub flags: ::core::option::Option<u32>,
15115    #[prost(string, optional, tag="5")]
15116    pub name: ::core::option::Option<::prost::alloc::string::String>,
15117    #[prost(uint32, optional, tag="6")]
15118    pub num_free: ::core::option::Option<u32>,
15119    #[prost(uint32, optional, tag="7")]
15120    pub seqno: ::core::option::Option<u32>,
15121    #[prost(uint32, optional, tag="8")]
15122    pub r#type: ::core::option::Option<u32>,
15123    #[prost(uint32, optional, tag="9")]
15124    pub vq: ::core::option::Option<u32>,
15125}
15126// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
15127
15128// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
15129
15130#[derive(Clone, PartialEq, ::prost::Message)]
15131pub struct VirtioVideoCmdFtraceEvent {
15132    #[prost(uint32, optional, tag="1")]
15133    pub stream_id: ::core::option::Option<u32>,
15134    #[prost(uint32, optional, tag="2")]
15135    pub r#type: ::core::option::Option<u32>,
15136}
15137#[derive(Clone, PartialEq, ::prost::Message)]
15138pub struct VirtioVideoCmdDoneFtraceEvent {
15139    #[prost(uint32, optional, tag="1")]
15140    pub stream_id: ::core::option::Option<u32>,
15141    #[prost(uint32, optional, tag="2")]
15142    pub r#type: ::core::option::Option<u32>,
15143}
15144#[derive(Clone, PartialEq, ::prost::Message)]
15145pub struct VirtioVideoResourceQueueFtraceEvent {
15146    #[prost(uint32, optional, tag="1")]
15147    pub data_size0: ::core::option::Option<u32>,
15148    #[prost(uint32, optional, tag="2")]
15149    pub data_size1: ::core::option::Option<u32>,
15150    #[prost(uint32, optional, tag="3")]
15151    pub data_size2: ::core::option::Option<u32>,
15152    #[prost(uint32, optional, tag="4")]
15153    pub data_size3: ::core::option::Option<u32>,
15154    #[prost(uint32, optional, tag="5")]
15155    pub queue_type: ::core::option::Option<u32>,
15156    #[prost(int32, optional, tag="6")]
15157    pub resource_id: ::core::option::Option<i32>,
15158    #[prost(int32, optional, tag="7")]
15159    pub stream_id: ::core::option::Option<i32>,
15160    #[prost(uint64, optional, tag="8")]
15161    pub timestamp: ::core::option::Option<u64>,
15162}
15163#[derive(Clone, PartialEq, ::prost::Message)]
15164pub struct VirtioVideoResourceQueueDoneFtraceEvent {
15165    #[prost(uint32, optional, tag="1")]
15166    pub data_size0: ::core::option::Option<u32>,
15167    #[prost(uint32, optional, tag="2")]
15168    pub data_size1: ::core::option::Option<u32>,
15169    #[prost(uint32, optional, tag="3")]
15170    pub data_size2: ::core::option::Option<u32>,
15171    #[prost(uint32, optional, tag="4")]
15172    pub data_size3: ::core::option::Option<u32>,
15173    #[prost(uint32, optional, tag="5")]
15174    pub queue_type: ::core::option::Option<u32>,
15175    #[prost(int32, optional, tag="6")]
15176    pub resource_id: ::core::option::Option<i32>,
15177    #[prost(int32, optional, tag="7")]
15178    pub stream_id: ::core::option::Option<i32>,
15179    #[prost(uint64, optional, tag="8")]
15180    pub timestamp: ::core::option::Option<u64>,
15181}
15182// End of protos/perfetto/trace/ftrace/virtio_video.proto
15183
15184// Begin of protos/perfetto/trace/ftrace/vmscan.proto
15185
15186#[derive(Clone, PartialEq, ::prost::Message)]
15187pub struct MmVmscanDirectReclaimBeginFtraceEvent {
15188    #[prost(int32, optional, tag="1")]
15189    pub order: ::core::option::Option<i32>,
15190    #[prost(int32, optional, tag="2")]
15191    pub may_writepage: ::core::option::Option<i32>,
15192    #[prost(uint32, optional, tag="3")]
15193    pub gfp_flags: ::core::option::Option<u32>,
15194}
15195#[derive(Clone, PartialEq, ::prost::Message)]
15196pub struct MmVmscanDirectReclaimEndFtraceEvent {
15197    #[prost(uint64, optional, tag="1")]
15198    pub nr_reclaimed: ::core::option::Option<u64>,
15199}
15200#[derive(Clone, PartialEq, ::prost::Message)]
15201pub struct MmVmscanKswapdWakeFtraceEvent {
15202    #[prost(int32, optional, tag="1")]
15203    pub nid: ::core::option::Option<i32>,
15204    #[prost(int32, optional, tag="2")]
15205    pub order: ::core::option::Option<i32>,
15206    #[prost(int32, optional, tag="3")]
15207    pub zid: ::core::option::Option<i32>,
15208}
15209#[derive(Clone, PartialEq, ::prost::Message)]
15210pub struct MmVmscanKswapdSleepFtraceEvent {
15211    #[prost(int32, optional, tag="1")]
15212    pub nid: ::core::option::Option<i32>,
15213}
15214#[derive(Clone, PartialEq, ::prost::Message)]
15215pub struct MmShrinkSlabStartFtraceEvent {
15216    #[prost(uint64, optional, tag="1")]
15217    pub cache_items: ::core::option::Option<u64>,
15218    #[prost(uint64, optional, tag="2")]
15219    pub delta: ::core::option::Option<u64>,
15220    #[prost(uint32, optional, tag="3")]
15221    pub gfp_flags: ::core::option::Option<u32>,
15222    #[prost(uint64, optional, tag="4")]
15223    pub lru_pgs: ::core::option::Option<u64>,
15224    #[prost(int64, optional, tag="5")]
15225    pub nr_objects_to_shrink: ::core::option::Option<i64>,
15226    #[prost(uint64, optional, tag="6")]
15227    pub pgs_scanned: ::core::option::Option<u64>,
15228    #[prost(uint64, optional, tag="7")]
15229    pub shr: ::core::option::Option<u64>,
15230    #[prost(uint64, optional, tag="8")]
15231    pub shrink: ::core::option::Option<u64>,
15232    #[prost(uint64, optional, tag="9")]
15233    pub total_scan: ::core::option::Option<u64>,
15234    #[prost(int32, optional, tag="10")]
15235    pub nid: ::core::option::Option<i32>,
15236    #[prost(int32, optional, tag="11")]
15237    pub priority: ::core::option::Option<i32>,
15238}
15239#[derive(Clone, PartialEq, ::prost::Message)]
15240pub struct MmShrinkSlabEndFtraceEvent {
15241    #[prost(int64, optional, tag="1")]
15242    pub new_scan: ::core::option::Option<i64>,
15243    #[prost(int32, optional, tag="2")]
15244    pub retval: ::core::option::Option<i32>,
15245    #[prost(uint64, optional, tag="3")]
15246    pub shr: ::core::option::Option<u64>,
15247    #[prost(uint64, optional, tag="4")]
15248    pub shrink: ::core::option::Option<u64>,
15249    #[prost(int64, optional, tag="5")]
15250    pub total_scan: ::core::option::Option<i64>,
15251    #[prost(int64, optional, tag="6")]
15252    pub unused_scan: ::core::option::Option<i64>,
15253    #[prost(int32, optional, tag="7")]
15254    pub nid: ::core::option::Option<i32>,
15255}
15256// End of protos/perfetto/trace/ftrace/vmscan.proto
15257
15258// Begin of protos/perfetto/trace/ftrace/workqueue.proto
15259
15260#[derive(Clone, PartialEq, ::prost::Message)]
15261pub struct WorkqueueActivateWorkFtraceEvent {
15262    #[prost(uint64, optional, tag="1")]
15263    pub work: ::core::option::Option<u64>,
15264}
15265#[derive(Clone, PartialEq, ::prost::Message)]
15266pub struct WorkqueueExecuteEndFtraceEvent {
15267    #[prost(uint64, optional, tag="1")]
15268    pub work: ::core::option::Option<u64>,
15269    #[prost(uint64, optional, tag="2")]
15270    pub function: ::core::option::Option<u64>,
15271}
15272#[derive(Clone, PartialEq, ::prost::Message)]
15273pub struct WorkqueueExecuteStartFtraceEvent {
15274    #[prost(uint64, optional, tag="1")]
15275    pub work: ::core::option::Option<u64>,
15276    #[prost(uint64, optional, tag="2")]
15277    pub function: ::core::option::Option<u64>,
15278}
15279#[derive(Clone, PartialEq, ::prost::Message)]
15280pub struct WorkqueueQueueWorkFtraceEvent {
15281    #[prost(uint64, optional, tag="1")]
15282    pub work: ::core::option::Option<u64>,
15283    #[prost(uint64, optional, tag="2")]
15284    pub function: ::core::option::Option<u64>,
15285    #[prost(uint64, optional, tag="3")]
15286    pub workqueue: ::core::option::Option<u64>,
15287    #[prost(uint32, optional, tag="4")]
15288    pub req_cpu: ::core::option::Option<u32>,
15289    #[prost(uint32, optional, tag="5")]
15290    pub cpu: ::core::option::Option<u32>,
15291}
15292// End of protos/perfetto/trace/ftrace/workqueue.proto
15293
15294// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
15295
15296#[derive(Clone, PartialEq, ::prost::Message)]
15297pub struct FtraceEvent {
15298    /// Timestamp in nanoseconds using .../tracing/trace_clock.
15299    #[prost(uint64, optional, tag="1")]
15300    pub timestamp: ::core::option::Option<u64>,
15301    /// Kernel pid (do not confuse with userspace pid aka tgid).
15302    #[prost(uint32, optional, tag="2")]
15303    pub pid: ::core::option::Option<u32>,
15304    /// Not populated in actual traces. Wire format might change.
15305    /// Placeholder declaration so that the ftrace parsing code accepts the
15306    /// existence of this common field. If this becomes needed for all events:
15307    /// consider merging with common_preempt_count to avoid extra proto tags.
15308    #[prost(uint32, optional, tag="5")]
15309    pub common_flags: ::core::option::Option<u32>,
15310    #[prost(oneof="ftrace_event::Event", tags="3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575")]
15311    pub event: ::core::option::Option<ftrace_event::Event>,
15312}
15313/// Nested message and enum types in `FtraceEvent`.
15314pub mod ftrace_event {
15315    #[derive(Clone, PartialEq, ::prost::Oneof)]
15316    pub enum Event {
15317        #[prost(message, tag="3")]
15318        Print(super::PrintFtraceEvent),
15319        #[prost(message, tag="4")]
15320        SchedSwitch(super::SchedSwitchFtraceEvent),
15321        /// removed field with id 5;
15322        /// removed field with id 6;
15323        /// removed field with id 7;
15324        /// removed field with id 8;
15325        /// removed field with id 9;
15326        /// removed field with id 10;
15327        #[prost(message, tag="11")]
15328        CpuFrequency(super::CpuFrequencyFtraceEvent),
15329        #[prost(message, tag="12")]
15330        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
15331        #[prost(message, tag="13")]
15332        CpuIdle(super::CpuIdleFtraceEvent),
15333        #[prost(message, tag="14")]
15334        ClockEnable(super::ClockEnableFtraceEvent),
15335        #[prost(message, tag="15")]
15336        ClockDisable(super::ClockDisableFtraceEvent),
15337        #[prost(message, tag="16")]
15338        ClockSetRate(super::ClockSetRateFtraceEvent),
15339        #[prost(message, tag="17")]
15340        SchedWakeup(super::SchedWakeupFtraceEvent),
15341        #[prost(message, tag="18")]
15342        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
15343        #[prost(message, tag="19")]
15344        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
15345        #[prost(message, tag="20")]
15346        SchedWaking(super::SchedWakingFtraceEvent),
15347        #[prost(message, tag="21")]
15348        IpiEntry(super::IpiEntryFtraceEvent),
15349        #[prost(message, tag="22")]
15350        IpiExit(super::IpiExitFtraceEvent),
15351        #[prost(message, tag="23")]
15352        IpiRaise(super::IpiRaiseFtraceEvent),
15353        #[prost(message, tag="24")]
15354        SoftirqEntry(super::SoftirqEntryFtraceEvent),
15355        #[prost(message, tag="25")]
15356        SoftirqExit(super::SoftirqExitFtraceEvent),
15357        #[prost(message, tag="26")]
15358        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
15359        #[prost(message, tag="27")]
15360        I2cRead(super::I2cReadFtraceEvent),
15361        #[prost(message, tag="28")]
15362        I2cWrite(super::I2cWriteFtraceEvent),
15363        #[prost(message, tag="29")]
15364        I2cResult(super::I2cResultFtraceEvent),
15365        #[prost(message, tag="30")]
15366        I2cReply(super::I2cReplyFtraceEvent),
15367        #[prost(message, tag="31")]
15368        SmbusRead(super::SmbusReadFtraceEvent),
15369        #[prost(message, tag="32")]
15370        SmbusWrite(super::SmbusWriteFtraceEvent),
15371        #[prost(message, tag="33")]
15372        SmbusResult(super::SmbusResultFtraceEvent),
15373        #[prost(message, tag="34")]
15374        SmbusReply(super::SmbusReplyFtraceEvent),
15375        #[prost(message, tag="35")]
15376        LowmemoryKill(super::LowmemoryKillFtraceEvent),
15377        #[prost(message, tag="36")]
15378        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
15379        #[prost(message, tag="37")]
15380        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
15381        #[prost(message, tag="38")]
15382        SyncPt(super::SyncPtFtraceEvent),
15383        #[prost(message, tag="39")]
15384        SyncTimeline(super::SyncTimelineFtraceEvent),
15385        #[prost(message, tag="40")]
15386        SyncWait(super::SyncWaitFtraceEvent),
15387        #[prost(message, tag="41")]
15388        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
15389        #[prost(message, tag="42")]
15390        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
15391        #[prost(message, tag="43")]
15392        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
15393        #[prost(message, tag="44")]
15394        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
15395        #[prost(message, tag="45")]
15396        BlockRqIssue(super::BlockRqIssueFtraceEvent),
15397        #[prost(message, tag="46")]
15398        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
15399        #[prost(message, tag="47")]
15400        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
15401        #[prost(message, tag="48")]
15402        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
15403        #[prost(message, tag="49")]
15404        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
15405        #[prost(message, tag="50")]
15406        BinderTransaction(super::BinderTransactionFtraceEvent),
15407        #[prost(message, tag="51")]
15408        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
15409        #[prost(message, tag="52")]
15410        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
15411        #[prost(message, tag="53")]
15412        BinderLock(super::BinderLockFtraceEvent),
15413        #[prost(message, tag="54")]
15414        BinderLocked(super::BinderLockedFtraceEvent),
15415        #[prost(message, tag="55")]
15416        BinderUnlock(super::BinderUnlockFtraceEvent),
15417        #[prost(message, tag="56")]
15418        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
15419        #[prost(message, tag="57")]
15420        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
15421        #[prost(message, tag="58")]
15422        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
15423        #[prost(message, tag="59")]
15424        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
15425        #[prost(message, tag="60")]
15426        RegulatorDisable(super::RegulatorDisableFtraceEvent),
15427        #[prost(message, tag="61")]
15428        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
15429        #[prost(message, tag="62")]
15430        RegulatorEnable(super::RegulatorEnableFtraceEvent),
15431        #[prost(message, tag="63")]
15432        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
15433        #[prost(message, tag="64")]
15434        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
15435        #[prost(message, tag="65")]
15436        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
15437        #[prost(message, tag="66")]
15438        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
15439        #[prost(message, tag="67")]
15440        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
15441        #[prost(message, tag="68")]
15442        CgroupMkdir(super::CgroupMkdirFtraceEvent),
15443        #[prost(message, tag="69")]
15444        CgroupRemount(super::CgroupRemountFtraceEvent),
15445        #[prost(message, tag="70")]
15446        CgroupRmdir(super::CgroupRmdirFtraceEvent),
15447        #[prost(message, tag="71")]
15448        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
15449        #[prost(message, tag="72")]
15450        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
15451        #[prost(message, tag="73")]
15452        CgroupRelease(super::CgroupReleaseFtraceEvent),
15453        #[prost(message, tag="74")]
15454        CgroupRename(super::CgroupRenameFtraceEvent),
15455        #[prost(message, tag="75")]
15456        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
15457        #[prost(message, tag="76")]
15458        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
15459        #[prost(message, tag="77")]
15460        MdpCommit(super::MdpCommitFtraceEvent),
15461        #[prost(message, tag="78")]
15462        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
15463        #[prost(message, tag="79")]
15464        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
15465        #[prost(message, tag="80")]
15466        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
15467        #[prost(message, tag="81")]
15468        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
15469        #[prost(message, tag="82")]
15470        MdpCompareBw(super::MdpCompareBwFtraceEvent),
15471        #[prost(message, tag="83")]
15472        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
15473        #[prost(message, tag="84")]
15474        MdpSsppSet(super::MdpSsppSetFtraceEvent),
15475        #[prost(message, tag="85")]
15476        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
15477        #[prost(message, tag="86")]
15478        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
15479        #[prost(message, tag="87")]
15480        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
15481        #[prost(message, tag="88")]
15482        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
15483        #[prost(message, tag="89")]
15484        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
15485        #[prost(message, tag="90")]
15486        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
15487        #[prost(message, tag="91")]
15488        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
15489        #[prost(message, tag="92")]
15490        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
15491        #[prost(message, tag="93")]
15492        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
15493        #[prost(message, tag="94")]
15494        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
15495        #[prost(message, tag="95")]
15496        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
15497        #[prost(message, tag="96")]
15498        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
15499        #[prost(message, tag="97")]
15500        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
15501        #[prost(message, tag="98")]
15502        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
15503        #[prost(message, tag="99")]
15504        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
15505        #[prost(message, tag="100")]
15506        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
15507        #[prost(message, tag="101")]
15508        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
15509        #[prost(message, tag="102")]
15510        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
15511        #[prost(message, tag="103")]
15512        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
15513        #[prost(message, tag="104")]
15514        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
15515        #[prost(message, tag="105")]
15516        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
15517        #[prost(message, tag="106")]
15518        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
15519        #[prost(message, tag="107")]
15520        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
15521        #[prost(message, tag="108")]
15522        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
15523        #[prost(message, tag="109")]
15524        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
15525        #[prost(message, tag="110")]
15526        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
15527        #[prost(message, tag="111")]
15528        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
15529        #[prost(message, tag="112")]
15530        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
15531        #[prost(message, tag="113")]
15532        SuspendResume(super::SuspendResumeFtraceEvent),
15533        #[prost(message, tag="114")]
15534        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
15535        #[prost(message, tag="115")]
15536        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
15537        #[prost(message, tag="116")]
15538        BlockBioBounce(super::BlockBioBounceFtraceEvent),
15539        #[prost(message, tag="117")]
15540        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
15541        #[prost(message, tag="118")]
15542        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
15543        #[prost(message, tag="119")]
15544        BlockBioQueue(super::BlockBioQueueFtraceEvent),
15545        #[prost(message, tag="120")]
15546        BlockBioRemap(super::BlockBioRemapFtraceEvent),
15547        #[prost(message, tag="121")]
15548        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
15549        #[prost(message, tag="122")]
15550        BlockGetrq(super::BlockGetrqFtraceEvent),
15551        #[prost(message, tag="123")]
15552        BlockPlug(super::BlockPlugFtraceEvent),
15553        #[prost(message, tag="124")]
15554        BlockRqAbort(super::BlockRqAbortFtraceEvent),
15555        #[prost(message, tag="125")]
15556        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
15557        #[prost(message, tag="126")]
15558        BlockRqInsert(super::BlockRqInsertFtraceEvent),
15559        /// removed field with id 127;
15560        #[prost(message, tag="128")]
15561        BlockRqRemap(super::BlockRqRemapFtraceEvent),
15562        #[prost(message, tag="129")]
15563        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
15564        #[prost(message, tag="130")]
15565        BlockSleeprq(super::BlockSleeprqFtraceEvent),
15566        #[prost(message, tag="131")]
15567        BlockSplit(super::BlockSplitFtraceEvent),
15568        #[prost(message, tag="132")]
15569        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
15570        #[prost(message, tag="133")]
15571        BlockUnplug(super::BlockUnplugFtraceEvent),
15572        #[prost(message, tag="134")]
15573        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
15574        #[prost(message, tag="135")]
15575        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
15576        #[prost(message, tag="136")]
15577        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
15578        #[prost(message, tag="137")]
15579        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
15580        #[prost(message, tag="138")]
15581        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
15582        #[prost(message, tag="139")]
15583        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
15584        #[prost(message, tag="140")]
15585        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
15586        #[prost(message, tag="141")]
15587        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
15588        #[prost(message, tag="142")]
15589        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
15590        #[prost(message, tag="143")]
15591        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
15592        #[prost(message, tag="144")]
15593        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
15594        #[prost(message, tag="145")]
15595        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
15596        #[prost(message, tag="146")]
15597        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
15598        #[prost(message, tag="147")]
15599        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
15600        #[prost(message, tag="148")]
15601        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
15602        #[prost(message, tag="149")]
15603        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
15604        #[prost(message, tag="150")]
15605        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
15606        #[prost(message, tag="151")]
15607        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
15608        #[prost(message, tag="152")]
15609        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
15610        #[prost(message, tag="153")]
15611        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
15612        #[prost(message, tag="154")]
15613        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
15614        #[prost(message, tag="155")]
15615        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
15616        #[prost(message, tag="156")]
15617        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
15618        #[prost(message, tag="157")]
15619        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
15620        #[prost(message, tag="158")]
15621        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
15622        #[prost(message, tag="159")]
15623        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
15624        #[prost(message, tag="160")]
15625        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
15626        #[prost(message, tag="161")]
15627        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
15628        #[prost(message, tag="162")]
15629        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
15630        #[prost(message, tag="163")]
15631        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
15632        #[prost(message, tag="164")]
15633        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
15634        #[prost(message, tag="165")]
15635        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
15636        #[prost(message, tag="166")]
15637        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
15638        #[prost(message, tag="167")]
15639        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
15640        #[prost(message, tag="168")]
15641        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
15642        #[prost(message, tag="169")]
15643        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
15644        #[prost(message, tag="170")]
15645        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
15646        #[prost(message, tag="171")]
15647        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
15648        #[prost(message, tag="172")]
15649        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
15650        #[prost(message, tag="173")]
15651        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
15652        #[prost(message, tag="174")]
15653        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
15654        #[prost(message, tag="175")]
15655        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
15656        #[prost(message, tag="176")]
15657        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
15658        #[prost(message, tag="177")]
15659        Ext4Forget(super::Ext4ForgetFtraceEvent),
15660        #[prost(message, tag="178")]
15661        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
15662        #[prost(message, tag="179")]
15663        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
15664        #[prost(message, tag="180")]
15665        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
15666        #[prost(message, tag="181")]
15667        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
15668        #[prost(message, tag="182")]
15669        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
15670        #[prost(message, tag="183")]
15671        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
15672        #[prost(message, tag="184")]
15673        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
15674        #[prost(message, tag="185")]
15675        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
15676        #[prost(message, tag="186")]
15677        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
15678        #[prost(message, tag="187")]
15679        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
15680        #[prost(message, tag="188")]
15681        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
15682        #[prost(message, tag="189")]
15683        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
15684        #[prost(message, tag="190")]
15685        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
15686        #[prost(message, tag="191")]
15687        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
15688        #[prost(message, tag="192")]
15689        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
15690        #[prost(message, tag="193")]
15691        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
15692        #[prost(message, tag="194")]
15693        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
15694        #[prost(message, tag="195")]
15695        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
15696        #[prost(message, tag="196")]
15697        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
15698        #[prost(message, tag="197")]
15699        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
15700        #[prost(message, tag="198")]
15701        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
15702        #[prost(message, tag="199")]
15703        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
15704        #[prost(message, tag="200")]
15705        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
15706        #[prost(message, tag="201")]
15707        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
15708        #[prost(message, tag="202")]
15709        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
15710        #[prost(message, tag="203")]
15711        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
15712        #[prost(message, tag="204")]
15713        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
15714        #[prost(message, tag="205")]
15715        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
15716        #[prost(message, tag="206")]
15717        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
15718        #[prost(message, tag="207")]
15719        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
15720        #[prost(message, tag="208")]
15721        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
15722        #[prost(message, tag="209")]
15723        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
15724        #[prost(message, tag="210")]
15725        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
15726        #[prost(message, tag="211")]
15727        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
15728        #[prost(message, tag="212")]
15729        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
15730        #[prost(message, tag="213")]
15731        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
15732        #[prost(message, tag="214")]
15733        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
15734        #[prost(message, tag="215")]
15735        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
15736        #[prost(message, tag="216")]
15737        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
15738        #[prost(message, tag="217")]
15739        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
15740        #[prost(message, tag="218")]
15741        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
15742        #[prost(message, tag="219")]
15743        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
15744        /// removed field with id 220;
15745        /// removed field with id 221;
15746        /// removed field with id 222;
15747        /// removed field with id 223;
15748        /// removed field with id 224;
15749        /// removed field with id 225;
15750        /// removed field with id 226;
15751        /// removed field with id 227;
15752        /// removed field with id 228;
15753        /// removed field with id 229;
15754        #[prost(message, tag="230")]
15755        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
15756        #[prost(message, tag="231")]
15757        Ext4Writepage(super::Ext4WritepageFtraceEvent),
15758        #[prost(message, tag="232")]
15759        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
15760        #[prost(message, tag="233")]
15761        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
15762        #[prost(message, tag="234")]
15763        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
15764        #[prost(message, tag="235")]
15765        TaskNewtask(super::TaskNewtaskFtraceEvent),
15766        #[prost(message, tag="236")]
15767        TaskRename(super::TaskRenameFtraceEvent),
15768        #[prost(message, tag="237")]
15769        SchedProcessExec(super::SchedProcessExecFtraceEvent),
15770        #[prost(message, tag="238")]
15771        SchedProcessExit(super::SchedProcessExitFtraceEvent),
15772        #[prost(message, tag="239")]
15773        SchedProcessFork(super::SchedProcessForkFtraceEvent),
15774        #[prost(message, tag="240")]
15775        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
15776        #[prost(message, tag="241")]
15777        SchedProcessHang(super::SchedProcessHangFtraceEvent),
15778        #[prost(message, tag="242")]
15779        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
15780        #[prost(message, tag="243")]
15781        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
15782        #[prost(message, tag="244")]
15783        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
15784        #[prost(message, tag="245")]
15785        F2fsFallocate(super::F2fsFallocateFtraceEvent),
15786        #[prost(message, tag="246")]
15787        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
15788        #[prost(message, tag="247")]
15789        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
15790        #[prost(message, tag="248")]
15791        F2fsIget(super::F2fsIgetFtraceEvent),
15792        #[prost(message, tag="249")]
15793        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
15794        #[prost(message, tag="250")]
15795        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
15796        #[prost(message, tag="251")]
15797        F2fsReadpage(super::F2fsReadpageFtraceEvent),
15798        #[prost(message, tag="252")]
15799        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
15800        #[prost(message, tag="253")]
15801        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
15802        #[prost(message, tag="254")]
15803        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
15804        #[prost(message, tag="255")]
15805        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
15806        #[prost(message, tag="256")]
15807        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
15808        #[prost(message, tag="257")]
15809        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
15810        #[prost(message, tag="258")]
15811        F2fsTruncate(super::F2fsTruncateFtraceEvent),
15812        #[prost(message, tag="259")]
15813        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
15814        #[prost(message, tag="260")]
15815        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
15816        #[prost(message, tag="261")]
15817        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
15818        #[prost(message, tag="262")]
15819        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
15820        #[prost(message, tag="263")]
15821        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
15822        #[prost(message, tag="264")]
15823        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
15824        #[prost(message, tag="265")]
15825        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
15826        #[prost(message, tag="266")]
15827        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
15828        #[prost(message, tag="267")]
15829        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
15830        #[prost(message, tag="268")]
15831        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
15832        #[prost(message, tag="269")]
15833        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
15834        #[prost(message, tag="270")]
15835        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
15836        #[prost(message, tag="271")]
15837        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
15838        #[prost(message, tag="272")]
15839        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
15840        #[prost(message, tag="273")]
15841        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
15842        #[prost(message, tag="274")]
15843        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
15844        #[prost(message, tag="275")]
15845        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
15846        #[prost(message, tag="276")]
15847        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
15848        #[prost(message, tag="277")]
15849        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
15850        #[prost(message, tag="278")]
15851        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
15852        #[prost(message, tag="279")]
15853        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
15854        #[prost(message, tag="280")]
15855        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
15856        #[prost(message, tag="281")]
15857        IommuMapRange(super::IommuMapRangeFtraceEvent),
15858        #[prost(message, tag="282")]
15859        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
15860        #[prost(message, tag="283")]
15861        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
15862        #[prost(message, tag="284")]
15863        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
15864        #[prost(message, tag="285")]
15865        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
15866        #[prost(message, tag="286")]
15867        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
15868        #[prost(message, tag="287")]
15869        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
15870        #[prost(message, tag="288")]
15871        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
15872        #[prost(message, tag="289")]
15873        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
15874        #[prost(message, tag="290")]
15875        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
15876        #[prost(message, tag="291")]
15877        IonPrefetching(super::IonPrefetchingFtraceEvent),
15878        #[prost(message, tag="292")]
15879        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
15880        #[prost(message, tag="293")]
15881        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
15882        #[prost(message, tag="294")]
15883        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
15884        #[prost(message, tag="295")]
15885        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
15886        #[prost(message, tag="296")]
15887        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
15888        #[prost(message, tag="297")]
15889        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
15890        #[prost(message, tag="298")]
15891        Kfree(super::KfreeFtraceEvent),
15892        #[prost(message, tag="299")]
15893        Kmalloc(super::KmallocFtraceEvent),
15894        #[prost(message, tag="300")]
15895        KmallocNode(super::KmallocNodeFtraceEvent),
15896        #[prost(message, tag="301")]
15897        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
15898        #[prost(message, tag="302")]
15899        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
15900        #[prost(message, tag="303")]
15901        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
15902        #[prost(message, tag="304")]
15903        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
15904        #[prost(message, tag="305")]
15905        MigratePagesStart(super::MigratePagesStartFtraceEvent),
15906        #[prost(message, tag="306")]
15907        MigrateRetry(super::MigrateRetryFtraceEvent),
15908        #[prost(message, tag="307")]
15909        MmPageAlloc(super::MmPageAllocFtraceEvent),
15910        #[prost(message, tag="308")]
15911        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
15912        #[prost(message, tag="309")]
15913        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
15914        #[prost(message, tag="310")]
15915        MmPageFree(super::MmPageFreeFtraceEvent),
15916        #[prost(message, tag="311")]
15917        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
15918        #[prost(message, tag="312")]
15919        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
15920        #[prost(message, tag="313")]
15921        RssStat(super::RssStatFtraceEvent),
15922        #[prost(message, tag="314")]
15923        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
15924        #[prost(message, tag="315")]
15925        IonHeapGrow(super::IonHeapGrowFtraceEvent),
15926        #[prost(message, tag="316")]
15927        FenceInit(super::FenceInitFtraceEvent),
15928        #[prost(message, tag="317")]
15929        FenceDestroy(super::FenceDestroyFtraceEvent),
15930        #[prost(message, tag="318")]
15931        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
15932        #[prost(message, tag="319")]
15933        FenceSignaled(super::FenceSignaledFtraceEvent),
15934        #[prost(message, tag="320")]
15935        ClkEnable(super::ClkEnableFtraceEvent),
15936        #[prost(message, tag="321")]
15937        ClkDisable(super::ClkDisableFtraceEvent),
15938        #[prost(message, tag="322")]
15939        ClkSetRate(super::ClkSetRateFtraceEvent),
15940        #[prost(message, tag="323")]
15941        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
15942        #[prost(message, tag="324")]
15943        SignalDeliver(super::SignalDeliverFtraceEvent),
15944        #[prost(message, tag="325")]
15945        SignalGenerate(super::SignalGenerateFtraceEvent),
15946        #[prost(message, tag="326")]
15947        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
15948        #[prost(message, tag="327")]
15949        Generic(super::GenericFtraceEvent),
15950        #[prost(message, tag="328")]
15951        MmEventRecord(super::MmEventRecordFtraceEvent),
15952        #[prost(message, tag="329")]
15953        SysEnter(super::SysEnterFtraceEvent),
15954        #[prost(message, tag="330")]
15955        SysExit(super::SysExitFtraceEvent),
15956        #[prost(message, tag="331")]
15957        Zero(super::ZeroFtraceEvent),
15958        #[prost(message, tag="332")]
15959        GpuFrequency(super::GpuFrequencyFtraceEvent),
15960        #[prost(message, tag="333")]
15961        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
15962        #[prost(message, tag="334")]
15963        MarkVictim(super::MarkVictimFtraceEvent),
15964        #[prost(message, tag="335")]
15965        IonStat(super::IonStatFtraceEvent),
15966        #[prost(message, tag="336")]
15967        IonBufferCreate(super::IonBufferCreateFtraceEvent),
15968        #[prost(message, tag="337")]
15969        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
15970        #[prost(message, tag="338")]
15971        ScmCallStart(super::ScmCallStartFtraceEvent),
15972        #[prost(message, tag="339")]
15973        ScmCallEnd(super::ScmCallEndFtraceEvent),
15974        #[prost(message, tag="340")]
15975        GpuMemTotal(super::GpuMemTotalFtraceEvent),
15976        #[prost(message, tag="341")]
15977        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
15978        #[prost(message, tag="342")]
15979        CdevUpdate(super::CdevUpdateFtraceEvent),
15980        #[prost(message, tag="343")]
15981        CpuhpExit(super::CpuhpExitFtraceEvent),
15982        #[prost(message, tag="344")]
15983        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
15984        #[prost(message, tag="345")]
15985        CpuhpEnter(super::CpuhpEnterFtraceEvent),
15986        #[prost(message, tag="346")]
15987        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
15988        #[prost(message, tag="347")]
15989        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
15990        #[prost(message, tag="348")]
15991        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
15992        #[prost(message, tag="349")]
15993        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
15994        #[prost(message, tag="350")]
15995        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
15996        #[prost(message, tag="351")]
15997        DmaHeapStat(super::DmaHeapStatFtraceEvent),
15998        #[prost(message, tag="352")]
15999        CpuhpPause(super::CpuhpPauseFtraceEvent),
16000        #[prost(message, tag="353")]
16001        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
16002        #[prost(message, tag="354")]
16003        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
16004        #[prost(message, tag="355")]
16005        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
16006        #[prost(message, tag="356")]
16007        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
16008        #[prost(message, tag="357")]
16009        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
16010        #[prost(message, tag="358")]
16011        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
16012        #[prost(message, tag="359")]
16013        RssStatThrottled(super::RssStatThrottledFtraceEvent),
16014        #[prost(message, tag="360")]
16015        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
16016        #[prost(message, tag="361")]
16017        NetDevXmit(super::NetDevXmitFtraceEvent),
16018        #[prost(message, tag="362")]
16019        InetSockSetState(super::InetSockSetStateFtraceEvent),
16020        #[prost(message, tag="363")]
16021        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
16022        #[prost(message, tag="364")]
16023        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
16024        #[prost(message, tag="365")]
16025        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
16026        #[prost(message, tag="366")]
16027        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
16028        #[prost(message, tag="367")]
16029        KfreeSkb(super::KfreeSkbFtraceEvent),
16030        #[prost(message, tag="368")]
16031        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
16032        #[prost(message, tag="369")]
16033        KvmAckIrq(super::KvmAckIrqFtraceEvent),
16034        #[prost(message, tag="370")]
16035        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
16036        #[prost(message, tag="371")]
16037        KvmAgePage(super::KvmAgePageFtraceEvent),
16038        #[prost(message, tag="372")]
16039        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
16040        #[prost(message, tag="373")]
16041        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
16042        #[prost(message, tag="374")]
16043        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
16044        #[prost(message, tag="375")]
16045        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
16046        #[prost(message, tag="376")]
16047        KvmEntry(super::KvmEntryFtraceEvent),
16048        #[prost(message, tag="377")]
16049        KvmExit(super::KvmExitFtraceEvent),
16050        #[prost(message, tag="378")]
16051        KvmFpu(super::KvmFpuFtraceEvent),
16052        #[prost(message, tag="379")]
16053        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
16054        #[prost(message, tag="380")]
16055        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
16056        #[prost(message, tag="381")]
16057        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
16058        #[prost(message, tag="382")]
16059        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
16060        #[prost(message, tag="383")]
16061        KvmIrqLine(super::KvmIrqLineFtraceEvent),
16062        #[prost(message, tag="384")]
16063        KvmMmio(super::KvmMmioFtraceEvent),
16064        #[prost(message, tag="385")]
16065        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
16066        #[prost(message, tag="386")]
16067        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
16068        #[prost(message, tag="387")]
16069        KvmSetIrq(super::KvmSetIrqFtraceEvent),
16070        #[prost(message, tag="388")]
16071        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
16072        #[prost(message, tag="389")]
16073        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
16074        #[prost(message, tag="390")]
16075        KvmSysAccess(super::KvmSysAccessFtraceEvent),
16076        #[prost(message, tag="391")]
16077        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
16078        #[prost(message, tag="392")]
16079        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
16080        #[prost(message, tag="393")]
16081        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
16082        #[prost(message, tag="394")]
16083        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
16084        #[prost(message, tag="395")]
16085        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
16086        #[prost(message, tag="396")]
16087        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
16088        #[prost(message, tag="397")]
16089        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
16090        #[prost(message, tag="398")]
16091        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
16092        #[prost(message, tag="399")]
16093        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
16094        #[prost(message, tag="400")]
16095        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
16096        #[prost(message, tag="401")]
16097        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
16098        #[prost(message, tag="402")]
16099        TrapReg(super::TrapRegFtraceEvent),
16100        #[prost(message, tag="403")]
16101        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
16102        #[prost(message, tag="404")]
16103        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
16104        #[prost(message, tag="405")]
16105        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
16106        #[prost(message, tag="406")]
16107        UfshcdCommand(super::UfshcdCommandFtraceEvent),
16108        #[prost(message, tag="407")]
16109        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
16110        #[prost(message, tag="408")]
16111        Console(super::ConsoleFtraceEvent),
16112        #[prost(message, tag="409")]
16113        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
16114        #[prost(message, tag="410")]
16115        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
16116        #[prost(message, tag="411")]
16117        DrmSchedJob(super::DrmSchedJobFtraceEvent),
16118        #[prost(message, tag="412")]
16119        DrmRunJob(super::DrmRunJobFtraceEvent),
16120        #[prost(message, tag="413")]
16121        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
16122        #[prost(message, tag="414")]
16123        DmaFenceInit(super::DmaFenceInitFtraceEvent),
16124        #[prost(message, tag="415")]
16125        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
16126        #[prost(message, tag="416")]
16127        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
16128        #[prost(message, tag="417")]
16129        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
16130        #[prost(message, tag="418")]
16131        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
16132        #[prost(message, tag="419")]
16133        F2fsIostat(super::F2fsIostatFtraceEvent),
16134        #[prost(message, tag="420")]
16135        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
16136        #[prost(message, tag="421")]
16137        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
16138        #[prost(message, tag="422")]
16139        V4l2Qbuf(super::V4l2QbufFtraceEvent),
16140        #[prost(message, tag="423")]
16141        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
16142        #[prost(message, tag="424")]
16143        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
16144        #[prost(message, tag="425")]
16145        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
16146        #[prost(message, tag="426")]
16147        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
16148        #[prost(message, tag="427")]
16149        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
16150        #[prost(message, tag="428")]
16151        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
16152        #[prost(message, tag="429")]
16153        DsiRx(super::DsiRxFtraceEvent),
16154        #[prost(message, tag="430")]
16155        DsiTx(super::DsiTxFtraceEvent),
16156        #[prost(message, tag="431")]
16157        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
16158        #[prost(message, tag="432")]
16159        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
16160        #[prost(message, tag="433")]
16161        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
16162        #[prost(message, tag="434")]
16163        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
16164        #[prost(message, tag="435")]
16165        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
16166        #[prost(message, tag="436")]
16167        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
16168        #[prost(message, tag="437")]
16169        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
16170        #[prost(message, tag="438")]
16171        FuncgraphExit(super::FuncgraphExitFtraceEvent),
16172        #[prost(message, tag="439")]
16173        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
16174        #[prost(message, tag="440")]
16175        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
16176        #[prost(message, tag="441")]
16177        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
16178        #[prost(message, tag="442")]
16179        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
16180        #[prost(message, tag="443")]
16181        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
16182        #[prost(message, tag="444")]
16183        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
16184        #[prost(message, tag="445")]
16185        TrustySmc(super::TrustySmcFtraceEvent),
16186        #[prost(message, tag="446")]
16187        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
16188        #[prost(message, tag="447")]
16189        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
16190        #[prost(message, tag="448")]
16191        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
16192        #[prost(message, tag="449")]
16193        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
16194        #[prost(message, tag="450")]
16195        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
16196        #[prost(message, tag="451")]
16197        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
16198        #[prost(message, tag="452")]
16199        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
16200        #[prost(message, tag="453")]
16201        TrustyIrq(super::TrustyIrqFtraceEvent),
16202        #[prost(message, tag="454")]
16203        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
16204        #[prost(message, tag="455")]
16205        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
16206        #[prost(message, tag="456")]
16207        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
16208        #[prost(message, tag="457")]
16209        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
16210        #[prost(message, tag="458")]
16211        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
16212        /// removed field with id 459;
16213        #[prost(message, tag="460")]
16214        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
16215        #[prost(message, tag="461")]
16216        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
16217        #[prost(message, tag="462")]
16218        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
16219        /// removed field with id 463;
16220        #[prost(message, tag="464")]
16221        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
16222        #[prost(message, tag="465")]
16223        CmaAllocStart(super::CmaAllocStartFtraceEvent),
16224        #[prost(message, tag="466")]
16225        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
16226        #[prost(message, tag="467")]
16227        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
16228        #[prost(message, tag="468")]
16229        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
16230        #[prost(message, tag="469")]
16231        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
16232        #[prost(message, tag="470")]
16233        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
16234        #[prost(message, tag="471")]
16235        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
16236        #[prost(message, tag="472")]
16237        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
16238        #[prost(message, tag="473")]
16239        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
16240        #[prost(message, tag="474")]
16241        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
16242        #[prost(message, tag="475")]
16243        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
16244        #[prost(message, tag="476")]
16245        HypEnter(super::HypEnterFtraceEvent),
16246        #[prost(message, tag="477")]
16247        HypExit(super::HypExitFtraceEvent),
16248        #[prost(message, tag="478")]
16249        HostHcall(super::HostHcallFtraceEvent),
16250        #[prost(message, tag="479")]
16251        HostSmc(super::HostSmcFtraceEvent),
16252        #[prost(message, tag="480")]
16253        HostMemAbort(super::HostMemAbortFtraceEvent),
16254        #[prost(message, tag="481")]
16255        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
16256        #[prost(message, tag="482")]
16257        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
16258        #[prost(message, tag="483")]
16259        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
16260        #[prost(message, tag="484")]
16261        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
16262        #[prost(message, tag="485")]
16263        BinderCommand(super::BinderCommandFtraceEvent),
16264        #[prost(message, tag="486")]
16265        BinderReturn(super::BinderReturnFtraceEvent),
16266        #[prost(message, tag="487")]
16267        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
16268        #[prost(message, tag="488")]
16269        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
16270        #[prost(message, tag="489")]
16271        RpmStatus(super::RpmStatusFtraceEvent),
16272        #[prost(message, tag="490")]
16273        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
16274        #[prost(message, tag="491")]
16275        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
16276        #[prost(message, tag="492")]
16277        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
16278        #[prost(message, tag="493")]
16279        DpuDsiRx(super::DpuDsiRxFtraceEvent),
16280        #[prost(message, tag="494")]
16281        DpuDsiTx(super::DpuDsiTxFtraceEvent),
16282        #[prost(message, tag="495")]
16283        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
16284        #[prost(message, tag="496")]
16285        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
16286        #[prost(message, tag="497")]
16287        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
16288        #[prost(message, tag="498")]
16289        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
16290        #[prost(message, tag="499")]
16291        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
16292        #[prost(message, tag="500")]
16293        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
16294        #[prost(message, tag="501")]
16295        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
16296        #[prost(message, tag="502")]
16297        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
16298        #[prost(message, tag="503")]
16299        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
16300        #[prost(message, tag="504")]
16301        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
16302        #[prost(message, tag="505")]
16303        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
16304        #[prost(message, tag="506")]
16305        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
16306        #[prost(message, tag="507")]
16307        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
16308        #[prost(message, tag="508")]
16309        DcvshFreq(super::DcvshFreqFtraceEvent),
16310        #[prost(message, tag="509")]
16311        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
16312        #[prost(message, tag="510")]
16313        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
16314        #[prost(message, tag="511")]
16315        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
16316        #[prost(message, tag="512")]
16317        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
16318        #[prost(message, tag="513")]
16319        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
16320        #[prost(message, tag="514")]
16321        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
16322        #[prost(message, tag="515")]
16323        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
16324        #[prost(message, tag="516")]
16325        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
16326        #[prost(message, tag="517")]
16327        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
16328        #[prost(message, tag="518")]
16329        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
16330        #[prost(message, tag="519")]
16331        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
16332        #[prost(message, tag="520")]
16333        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
16334        #[prost(message, tag="521")]
16335        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
16336        #[prost(message, tag="522")]
16337        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
16338        #[prost(message, tag="523")]
16339        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
16340        #[prost(message, tag="524")]
16341        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
16342        #[prost(message, tag="525")]
16343        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
16344        #[prost(message, tag="526")]
16345        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
16346        #[prost(message, tag="527")]
16347        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
16348        #[prost(message, tag="528")]
16349        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
16350        #[prost(message, tag="529")]
16351        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
16352        #[prost(message, tag="530")]
16353        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
16354        #[prost(message, tag="531")]
16355        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
16356        #[prost(message, tag="532")]
16357        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
16358        #[prost(message, tag="533")]
16359        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
16360        #[prost(message, tag="534")]
16361        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
16362        #[prost(message, tag="535")]
16363        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
16364        #[prost(message, tag="536")]
16365        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
16366        #[prost(message, tag="537")]
16367        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
16368        #[prost(message, tag="538")]
16369        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
16370        #[prost(message, tag="539")]
16371        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
16372        #[prost(message, tag="540")]
16373        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
16374        #[prost(message, tag="541")]
16375        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
16376        #[prost(message, tag="542")]
16377        KprobeEvent(super::KprobeEvent),
16378        #[prost(message, tag="543")]
16379        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
16380        #[prost(message, tag="544")]
16381        DoSysOpen(super::DoSysOpenFtraceEvent),
16382        #[prost(message, tag="545")]
16383        OpenExec(super::OpenExecFtraceEvent),
16384        #[prost(message, tag="546")]
16385        BlockIoStart(super::BlockIoStartFtraceEvent),
16386        #[prost(message, tag="547")]
16387        BlockIoDone(super::BlockIoDoneFtraceEvent),
16388        #[prost(message, tag="548")]
16389        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
16390        #[prost(message, tag="549")]
16391        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
16392        #[prost(message, tag="550")]
16393        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
16394        #[prost(message, tag="551")]
16395        HrtimerStart(super::HrtimerStartFtraceEvent),
16396        #[prost(message, tag="552")]
16397        HrtimerCancel(super::HrtimerCancelFtraceEvent),
16398        #[prost(message, tag="553")]
16399        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
16400        #[prost(message, tag="554")]
16401        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
16402        #[prost(message, tag="555")]
16403        TimerStart(super::TimerStartFtraceEvent),
16404        #[prost(message, tag="556")]
16405        TimerCancel(super::TimerCancelFtraceEvent),
16406        #[prost(message, tag="557")]
16407        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
16408        #[prost(message, tag="558")]
16409        TimerExpireExit(super::TimerExpireExitFtraceEvent),
16410        #[prost(message, tag="559")]
16411        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
16412        #[prost(message, tag="560")]
16413        LocalTimerExit(super::LocalTimerExitFtraceEvent),
16414        #[prost(message, tag="561")]
16415        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
16416        #[prost(message, tag="562")]
16417        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
16418        #[prost(message, tag="563")]
16419        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
16420        #[prost(message, tag="564")]
16421        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
16422        #[prost(message, tag="565")]
16423        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
16424        #[prost(message, tag="566")]
16425        Dwc3Event(super::Dwc3EventFtraceEvent),
16426        #[prost(message, tag="567")]
16427        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
16428        #[prost(message, tag="568")]
16429        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
16430        #[prost(message, tag="569")]
16431        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
16432        #[prost(message, tag="570")]
16433        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
16434        #[prost(message, tag="571")]
16435        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
16436        #[prost(message, tag="572")]
16437        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
16438        #[prost(message, tag="573")]
16439        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
16440        #[prost(message, tag="574")]
16441        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
16442        #[prost(message, tag="575")]
16443        Dwc3Writel(super::Dwc3WritelFtraceEvent),
16444    }
16445}
16446// End of protos/perfetto/trace/ftrace/ftrace_event.proto
16447
16448// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
16449
16450/// Per-CPU kernel buffer stats for the ftrace data source gathered from
16451/// /sys/kernel/tracing/per_cpu/cpuX/stats.
16452#[derive(Clone, PartialEq, ::prost::Message)]
16453pub struct FtraceCpuStats {
16454    /// CPU index.
16455    #[prost(uint64, optional, tag="1")]
16456    pub cpu: ::core::option::Option<u64>,
16457    /// Number of entries currently in the kernel buffer.
16458    #[prost(uint64, optional, tag="2")]
16459    pub entries: ::core::option::Option<u64>,
16460    /// Number of events lost in kernel buffers due to overwriting of old events
16461    /// before userspace had a chance to drain them. Valid if the buffer is in
16462    /// "overwrite" mode, otherwise see |dropped_events|.
16463    #[prost(uint64, optional, tag="3")]
16464    pub overrun: ::core::option::Option<u64>,
16465    /// This should always be zero. If not the buffer size is way too small or
16466    /// something went wrong with the tracer. Quoting the kernel: "number of
16467    /// commits failing due to the buffer wrapping around while there are
16468    /// uncommitted events, such as during an interrupt storm".
16469    #[prost(uint64, optional, tag="4")]
16470    pub commit_overrun: ::core::option::Option<u64>,
16471    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
16472    /// The field should be named "bytes", but is misnamed for historical reasons.
16473    /// This value has known inaccuracies before Linux v6.6:
16474    /// <https://github.com/torvalds/linux/commit/45d99ea>
16475    #[prost(uint64, optional, tag="5")]
16476    pub bytes_read: ::core::option::Option<u64>,
16477    /// The timestamp for the oldest event still in the ring buffer.
16478    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
16479    #[prost(double, optional, tag="6")]
16480    pub oldest_event_ts: ::core::option::Option<f64>,
16481    /// The current timestamp.
16482    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
16483    #[prost(double, optional, tag="7")]
16484    pub now_ts: ::core::option::Option<f64>,
16485    /// If the kernel buffer has overwrite mode disabled, this will show the number
16486    /// of new events that were lost because the buffer was full. This is similar
16487    /// to |overrun| but only for the overwrite=false case.
16488    #[prost(uint64, optional, tag="8")]
16489    pub dropped_events: ::core::option::Option<u64>,
16490    /// The number of events read (consumed) from the buffer by userspace.
16491    #[prost(uint64, optional, tag="9")]
16492    pub read_events: ::core::option::Option<u64>,
16493}
16494/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
16495#[derive(Clone, PartialEq, ::prost::Message)]
16496pub struct FtraceKprobeStats {
16497    /// Cumulative number of kprobe events generated for this function
16498    #[prost(int64, optional, tag="1")]
16499    pub hits: ::core::option::Option<i64>,
16500    /// Cumulative number of kprobe events that could not be generated for this
16501    /// function and were missed.  This happens when too much nesting
16502    /// happens between a kprobe and its kretprobe, overflowing the
16503    /// maxactives buffer.
16504    #[prost(int64, optional, tag="2")]
16505    pub misses: ::core::option::Option<i64>,
16506}
16507/// Errors and kernel buffer stats for the ftrace data source.
16508#[derive(Clone, PartialEq, ::prost::Message)]
16509pub struct FtraceStats {
16510    /// A pair of FtraceStats is written on every trace flush:
16511    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
16512    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
16513    ///                   before this packet was written. For simple traces this
16514    ///                   will be once at the end of the trace.
16515    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
16516    pub phase: ::core::option::Option<i32>,
16517    /// Per-CPU stats (one entry for each CPU).
16518    #[prost(message, repeated, tag="2")]
16519    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
16520    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
16521    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
16522    /// trace or not. It can be used to debug kptr_restrict or security-related
16523    /// errors.
16524    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
16525    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
16526    #[prost(uint32, optional, tag="3")]
16527    pub kernel_symbols_parsed: ::core::option::Option<u32>,
16528    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
16529    #[prost(uint32, optional, tag="4")]
16530    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
16531    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
16532    /// one or more atrace categories not available on the device.
16533    #[prost(string, optional, tag="5")]
16534    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
16535    /// Ftrace events requested by the config but not present on device.
16536    #[prost(string, repeated, tag="6")]
16537    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16538    /// Ftrace events requested by the config and present on device, but which we
16539    /// failed to enable due to permissions, or due to a conflicting option
16540    /// (currently FtraceConfig.disable_generic_events).
16541    #[prost(string, repeated, tag="7")]
16542    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16543    /// The data source was configured to preserve existing events in the ftrace
16544    /// buffer before the start of the trace.
16545    #[prost(bool, optional, tag="8")]
16546    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
16547    /// Unique errors encountered during reading and parsing of the raw ftrace
16548    /// data. Ring buffer ABI related errors will also be recorded in the
16549    /// affected FtraceEventBundles with a timestamp.
16550    /// Any traces with entries in this field should be investigated, as they
16551    /// indicate a bug in perfetto or the kernel.
16552    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
16553    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
16554    /// Kprobe profile stats for functions hits and misses
16555    #[prost(message, optional, tag="10")]
16556    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
16557}
16558/// Nested message and enum types in `FtraceStats`.
16559pub mod ftrace_stats {
16560    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16561    #[repr(i32)]
16562    pub enum Phase {
16563        Unspecified = 0,
16564        StartOfTrace = 1,
16565        EndOfTrace = 2,
16566    }
16567    impl Phase {
16568        /// String value of the enum field names used in the ProtoBuf definition.
16569        ///
16570        /// The values are not transformed in any way and thus are considered stable
16571        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16572        pub fn as_str_name(&self) -> &'static str {
16573            match self {
16574                Phase::Unspecified => "UNSPECIFIED",
16575                Phase::StartOfTrace => "START_OF_TRACE",
16576                Phase::EndOfTrace => "END_OF_TRACE",
16577            }
16578        }
16579    }
16580}
16581// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
16582
16583// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
16584
16585/// The result of tracing one or more ftrace data pages from a single per-cpu
16586/// kernel ring buffer. If collating multiple pages' worth of events, all of
16587/// them come from contiguous pages, with no kernel data loss in between.
16588#[derive(Clone, PartialEq, ::prost::Message)]
16589pub struct FtraceEventBundle {
16590    #[prost(uint32, optional, tag="1")]
16591    pub cpu: ::core::option::Option<u32>,
16592    #[prost(message, repeated, tag="2")]
16593    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
16594    /// Set to true if there was data loss between the last time we've read from
16595    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
16596    /// in this bundle.
16597    #[prost(bool, optional, tag="3")]
16598    pub lost_events: ::core::option::Option<bool>,
16599    #[prost(message, optional, tag="4")]
16600    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
16601    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
16602    /// timestamps as that counts during suspend, is available to userspace, and
16603    /// is coherent across cpus.
16604    ///
16605    /// If this field is set, it means that a different clock was used during
16606    /// recording. Either because the boot clock is unavailable (e.g. old kernels
16607    /// before 3.x), or the trace config has set an incompatible option
16608    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
16609    /// trace_processor will do best-effort clock alignment using timestamp pairs
16610    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
16611    /// when the ftrace clock is "boot", as that is the default assumption.
16612    ///
16613    /// Some clocks (local/global) are technically per-cpu, but we make a
16614    /// simplifying assumption that they are global, as their inter-cpu skew
16615    /// should be reasonably bounded on modern systems.
16616    ///
16617    /// Added in: perfetto v19. Android T (13).
16618    #[prost(enumeration="FtraceClock", optional, tag="5")]
16619    pub ftrace_clock: ::core::option::Option<i32>,
16620    /// The timestamp according to the ftrace clock, taken at the same instant as
16621    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
16622    /// will be in the future relative to the data covered by this bundle.
16623    /// Implementation note: Populated by reading the 'now ts:' field in
16624    /// tracefs/per_cpu/cpu0/stat.
16625    ///
16626    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
16627    #[prost(int64, optional, tag="6")]
16628    pub ftrace_timestamp: ::core::option::Option<i64>,
16629    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
16630    /// |ftrace_timestamp|.
16631    ///
16632    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
16633    #[prost(int64, optional, tag="7")]
16634    pub boot_timestamp: ::core::option::Option<i64>,
16635    #[prost(message, repeated, tag="8")]
16636    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
16637    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
16638    /// primary difference is that this field tracked the last timestamp read from
16639    /// the per-cpu buffer, while the newer field tracks events that get
16640    /// serialised into the trace.
16641    /// Added in: perfetto v44.
16642    #[prost(uint64, optional, tag="9")]
16643    pub last_read_event_timestamp: ::core::option::Option<u64>,
16644    /// The timestamp (using ftrace clock) of the last event written into this
16645    /// data source on this cpu. In other words: the last event in the previous
16646    /// bundle.
16647    /// Lets the trace processing find an initial timestamp after which ftrace
16648    /// data is known to be valid across all cpus. Of particular importance when
16649    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
16650    /// oldest bundles can skew the first valid timestamp per cpu significantly.
16651    /// Added in: perfetto v47.
16652    #[prost(uint64, optional, tag="10")]
16653    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
16654    #[prost(message, repeated, tag="11")]
16655    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
16656    /// Written only on android builds if the config sets |debug_ftrace_abi|.
16657    /// Contains the raw ring buffer tracing page that the implementation could
16658    /// not parse.
16659    /// Addded in: perfetto v50.
16660    #[prost(bytes="vec", optional, tag="512")]
16661    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16662}
16663/// Nested message and enum types in `FtraceEventBundle`.
16664pub mod ftrace_event_bundle {
16665    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
16666    /// a subset of events & their fields is recorded.
16667    /// All fields (except comms) are stored in a structure-of-arrays form, one
16668    /// entry in each repeated field per event.
16669    #[derive(Clone, PartialEq, ::prost::Message)]
16670    pub struct CompactSched {
16671        /// Interned table of unique strings for this bundle.
16672        #[prost(string, repeated, tag="5")]
16673        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
16674        /// Delta-encoded timestamps across all sched_switch events within this
16675        /// bundle. The first is absolute, each next one is relative to its
16676        /// predecessor.
16677        #[prost(uint64, repeated, tag="1")]
16678        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
16679        #[prost(int64, repeated, tag="2")]
16680        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
16681        #[prost(int32, repeated, tag="3")]
16682        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
16683        #[prost(int32, repeated, tag="4")]
16684        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
16685        /// One per event, index into |intern_table| corresponding to the
16686        /// next_comm field of the event.
16687        #[prost(uint32, repeated, tag="6")]
16688        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
16689        /// Delta-encoded timestamps across all sched_waking events within this
16690        /// bundle. The first is absolute, each next one is relative to its
16691        /// predecessor.
16692        #[prost(uint64, repeated, tag="7")]
16693        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
16694        #[prost(int32, repeated, tag="8")]
16695        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
16696        #[prost(int32, repeated, tag="9")]
16697        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
16698        #[prost(int32, repeated, tag="10")]
16699        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
16700        /// One per event, index into |intern_table| corresponding to the
16701        /// comm field of the event.
16702        #[prost(uint32, repeated, tag="11")]
16703        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
16704        #[prost(uint32, repeated, tag="12")]
16705        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
16706    }
16707    /// Errors encountered during parsing of the raw ftrace data. In case of ring
16708    /// buffer layout errors, the parser skips the rest of the offending kernel
16709    /// buffer page and continues from the next page.
16710    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
16711    /// seen within the duration of the trace (even if the affected bundles get
16712    /// overwritten in ring buffer mode).
16713    #[derive(Clone, PartialEq, ::prost::Message)]
16714    pub struct FtraceError {
16715        /// Timestamp of the data that we're unable to parse, in the ftrace clock
16716        /// domain. Currently, we use the base timestamp of the tracing page
16717        /// containing the bad record rather than the time of the record itself.
16718        #[prost(uint64, optional, tag="1")]
16719        pub timestamp: ::core::option::Option<u64>,
16720        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
16721        pub status: ::core::option::Option<i32>,
16722    }
16723    /// Describes the serialised |FtraceEvent| protos for events not known at
16724    /// compile time, when using the |denser_generic_event_encoding| option.
16725    /// Addded in: perfetto v50.
16726    #[derive(Clone, PartialEq, ::prost::Message)]
16727    pub struct GenericEventDescriptor {
16728        /// submessage id within FtraceEvent described by |event_descriptor|.
16729        #[prost(int32, optional, tag="1")]
16730        pub field_id: ::core::option::Option<i32>,
16731        /// serialised DescriptorProto
16732        #[prost(bytes="vec", optional, tag="2")]
16733        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16734    }
16735}
16736// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
16737
16738// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
16739
16740/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
16741/// frequency change events in a generic kernel implementation.
16742#[derive(Clone, PartialEq, ::prost::Message)]
16743pub struct GenericKernelCpuFrequencyEvent {
16744    /// CPU in which the event occurred.
16745    #[prost(int32, optional, tag="1")]
16746    pub cpu: ::core::option::Option<i32>,
16747    /// Frequency (Hz) of the CPU.
16748    #[prost(int64, optional, tag="2")]
16749    pub freq_hz: ::core::option::Option<i64>,
16750}
16751// End of protos/perfetto/trace/generic_kernel/generic_power.proto
16752
16753// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
16754
16755/// GenericKernelTaskStateEvent is the standard proto to capture thread state
16756/// change events in a generic kernel implementation. This is mainly for the
16757/// case where scheduler events are not directly supported in the kernel's
16758/// tracing mechanism.
16759///
16760/// By capturing these task state events Perfetto is able to infer higher-level
16761/// events such as context switches and task waking events, providing as much
16762/// parity as possible with established tracing frameworks such as
16763/// Linux's ftrace.
16764#[derive(Clone, PartialEq, ::prost::Message)]
16765pub struct GenericKernelTaskStateEvent {
16766    /// CPU in which the event occurred.
16767    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
16768    /// no specific meaning to the cpu field in a non-running state event.
16769    #[prost(int32, optional, tag="1")]
16770    pub cpu: ::core::option::Option<i32>,
16771    /// Command name for the thread.
16772    #[prost(string, optional, tag="2")]
16773    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16774    /// Thread id.
16775    #[prost(int64, optional, tag="3")]
16776    pub tid: ::core::option::Option<i64>,
16777    /// New state of the thread.
16778    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
16779    pub state: ::core::option::Option<i32>,
16780    /// Priority of the thread.
16781    /// This value is OS agnostic and should only be interpreted based on the
16782    /// kernel who emitted the message.
16783    #[prost(int32, optional, tag="5")]
16784    pub prio: ::core::option::Option<i32>,
16785}
16786/// Nested message and enum types in `GenericKernelTaskStateEvent`.
16787pub mod generic_kernel_task_state_event {
16788    /// TaskStateEnum represents the valid states of a thread.
16789    /// These states are a generic representation of the actual thread state and
16790    /// don't necessarily map one-to-one to the states the actual OS kernel
16791    /// tracks internally.
16792    ///
16793    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
16794    /// an error resulting in potential data loss.
16795    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16796    #[repr(i32)]
16797    pub enum TaskStateEnum {
16798        TaskStateUnknown = 0,
16799        TaskStateCreated = 1,
16800        TaskStateRunnable = 2,
16801        TaskStateRunning = 3,
16802        TaskStateInterruptibleSleep = 4,
16803        TaskStateUninterruptibleSleep = 5,
16804        TaskStateStopped = 6,
16805        TaskStateDead = 7,
16806        TaskStateDestroyed = 8,
16807    }
16808    impl TaskStateEnum {
16809        /// String value of the enum field names used in the ProtoBuf definition.
16810        ///
16811        /// The values are not transformed in any way and thus are considered stable
16812        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16813        pub fn as_str_name(&self) -> &'static str {
16814            match self {
16815                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
16816                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
16817                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
16818                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
16819                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
16820                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
16821                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
16822                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
16823                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
16824            }
16825        }
16826    }
16827}
16828/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
16829/// of a thread.
16830#[derive(Clone, PartialEq, ::prost::Message)]
16831pub struct GenericKernelTaskRenameEvent {
16832    /// Thread id.
16833    #[prost(int64, optional, tag="1")]
16834    pub tid: ::core::option::Option<i64>,
16835    /// New command name for the thread.
16836    #[prost(string, optional, tag="2")]
16837    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16838}
16839// End of protos/perfetto/trace/generic_kernel/generic_task.proto
16840
16841// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
16842
16843#[derive(Clone, PartialEq, ::prost::Message)]
16844pub struct GpuCounterEvent {
16845    /// The first trace packet of each session should include counter_spec.
16846    #[prost(message, optional, tag="1")]
16847    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
16848    #[prost(message, repeated, tag="2")]
16849    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
16850    /// optional. Identifier for GPU in a multi-gpu device.
16851    #[prost(int32, optional, tag="3")]
16852    pub gpu_id: ::core::option::Option<i32>,
16853}
16854/// Nested message and enum types in `GpuCounterEvent`.
16855pub mod gpu_counter_event {
16856    #[derive(Clone, PartialEq, ::prost::Message)]
16857    pub struct GpuCounter {
16858        /// required. Identifier for counter.
16859        #[prost(uint32, optional, tag="1")]
16860        pub counter_id: ::core::option::Option<u32>,
16861        /// required. Value of the counter.
16862        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
16863        pub value: ::core::option::Option<gpu_counter::Value>,
16864    }
16865    /// Nested message and enum types in `GpuCounter`.
16866    pub mod gpu_counter {
16867        /// required. Value of the counter.
16868        #[derive(Clone, PartialEq, ::prost::Oneof)]
16869        pub enum Value {
16870            #[prost(int64, tag="2")]
16871            IntValue(i64),
16872            #[prost(double, tag="3")]
16873            DoubleValue(f64),
16874        }
16875    }
16876}
16877// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
16878
16879// Begin of protos/perfetto/trace/gpu/gpu_log.proto
16880
16881/// Message for logging events GPU data producer.
16882#[derive(Clone, PartialEq, ::prost::Message)]
16883pub struct GpuLog {
16884    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
16885    pub severity: ::core::option::Option<i32>,
16886    #[prost(string, optional, tag="2")]
16887    pub tag: ::core::option::Option<::prost::alloc::string::String>,
16888    #[prost(string, optional, tag="3")]
16889    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
16890}
16891/// Nested message and enum types in `GpuLog`.
16892pub mod gpu_log {
16893    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16894    #[repr(i32)]
16895    pub enum Severity {
16896        LogSeverityUnspecified = 0,
16897        LogSeverityVerbose = 1,
16898        LogSeverityDebug = 2,
16899        LogSeverityInfo = 3,
16900        LogSeverityWarning = 4,
16901        LogSeverityError = 5,
16902    }
16903    impl Severity {
16904        /// String value of the enum field names used in the ProtoBuf definition.
16905        ///
16906        /// The values are not transformed in any way and thus are considered stable
16907        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16908        pub fn as_str_name(&self) -> &'static str {
16909            match self {
16910                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
16911                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
16912                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
16913                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
16914                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
16915                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
16916            }
16917        }
16918    }
16919}
16920// End of protos/perfetto/trace/gpu/gpu_log.proto
16921
16922// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
16923
16924/// next id: 15
16925#[derive(Clone, PartialEq, ::prost::Message)]
16926pub struct GpuRenderStageEvent {
16927    /// required. Unique ID for the event.
16928    #[prost(uint64, optional, tag="1")]
16929    pub event_id: ::core::option::Option<u64>,
16930    /// optional. Duration of the event in nanoseconds. If unset, this is a
16931    /// single time point event.
16932    #[prost(uint64, optional, tag="2")]
16933    pub duration: ::core::option::Option<u64>,
16934    /// required. ID to a hardware queue description in the specifications.
16935    /// InternedGpuRenderStageSpecification
16936    #[prost(uint64, optional, tag="13")]
16937    pub hw_queue_iid: ::core::option::Option<u64>,
16938    /// required. ID to a render stage description in the specifications.
16939    /// InternedGpuRenderStageSpecification
16940    #[prost(uint64, optional, tag="14")]
16941    pub stage_iid: ::core::option::Option<u64>,
16942    /// optional. Identifier for GPU in a multi-gpu device.
16943    #[prost(int32, optional, tag="11")]
16944    pub gpu_id: ::core::option::Option<i32>,
16945    /// required. Graphics context for the event.
16946    /// For OpenGL, this is the GL context.
16947    /// For Vulkan, this is the VkDevice.
16948    #[prost(uint64, optional, tag="5")]
16949    pub context: ::core::option::Option<u64>,
16950    /// optional. The render target for this event.
16951    /// For OpenGL, this is the GL frame buffer handle.
16952    /// For Vulkan, this is the VkFrameBuffer handle.
16953    #[prost(uint64, optional, tag="8")]
16954    pub render_target_handle: ::core::option::Option<u64>,
16955    /// optional. Submission ID generated by the UMD.
16956    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
16957    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
16958    /// to a single API submission should share the same ID.
16959    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
16960    #[prost(uint32, optional, tag="10")]
16961    pub submission_id: ::core::option::Option<u32>,
16962    #[prost(message, repeated, tag="6")]
16963    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
16964    // VULKAN SPECIFICS
16965
16966    /// optional. The Vulkan render pass handle.
16967    #[prost(uint64, optional, tag="9")]
16968    pub render_pass_handle: ::core::option::Option<u64>,
16969    /// optional. A bit mask representing which render subpasses contributed to
16970    /// this render stage event.  Subpass index 0 is represented by setting the
16971    /// LSB of the mask.  Additional mask can be added for subpass index greater
16972    /// than 63.
16973    #[prost(uint64, repeated, packed="false", tag="15")]
16974    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
16975    /// optional. The Vulkan command buffer handle.
16976    #[prost(uint64, optional, tag="12")]
16977    pub command_buffer_handle: ::core::option::Option<u64>,
16978    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
16979    /// InternedGpuRenderStageSpecification instead.
16980    #[deprecated]
16981    #[prost(message, optional, tag="7")]
16982    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
16983    /// Deprecated. Use hw_queue_iid instead;
16984    #[deprecated]
16985    #[prost(int32, optional, tag="3")]
16986    pub hw_queue_id: ::core::option::Option<i32>,
16987    /// Deprecated. Use stage_iid instead;
16988    #[deprecated]
16989    #[prost(int32, optional, tag="4")]
16990    pub stage_id: ::core::option::Option<i32>,
16991}
16992/// Nested message and enum types in `GpuRenderStageEvent`.
16993pub mod gpu_render_stage_event {
16994    /// optional. Additional data for the user. This may include attributes for
16995    /// the event like resource ids, shaders, etc.
16996    #[derive(Clone, PartialEq, ::prost::Message)]
16997    pub struct ExtraData {
16998        #[prost(string, optional, tag="1")]
16999        pub name: ::core::option::Option<::prost::alloc::string::String>,
17000        #[prost(string, optional, tag="2")]
17001        pub value: ::core::option::Option<::prost::alloc::string::String>,
17002    }
17003    // DEPRECATED
17004
17005    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
17006    /// The first trace packet of each session should include a Specifications
17007    /// to enumerate *all* IDs that will be used. The timestamp of this packet
17008    /// must be earlier than all other packets. Only one packet with Specifications
17009    /// is expected.
17010    #[derive(Clone, PartialEq, ::prost::Message)]
17011    pub struct Specifications {
17012        #[prost(message, optional, tag="1")]
17013        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
17014        /// Labels to categorize the hw Queue this event goes on.
17015        #[prost(message, repeated, tag="2")]
17016        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
17017        /// Labels to categorize render stage(binning, render, compute etc).
17018        #[prost(message, repeated, tag="3")]
17019        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
17020    }
17021    /// Nested message and enum types in `Specifications`.
17022    pub mod specifications {
17023        #[derive(Clone, PartialEq, ::prost::Message)]
17024        pub struct ContextSpec {
17025            #[prost(uint64, optional, tag="1")]
17026            pub context: ::core::option::Option<u64>,
17027            #[prost(int32, optional, tag="2")]
17028            pub pid: ::core::option::Option<i32>,
17029        }
17030        #[derive(Clone, PartialEq, ::prost::Message)]
17031        pub struct Description {
17032            #[prost(string, optional, tag="1")]
17033            pub name: ::core::option::Option<::prost::alloc::string::String>,
17034            #[prost(string, optional, tag="2")]
17035            pub description: ::core::option::Option<::prost::alloc::string::String>,
17036        }
17037    }
17038}
17039// Interned data.
17040
17041/// The iid is the numeric value of either the GL Context or the VkDevice
17042/// handle.
17043#[derive(Clone, PartialEq, ::prost::Message)]
17044pub struct InternedGraphicsContext {
17045    #[prost(uint64, optional, tag="1")]
17046    pub iid: ::core::option::Option<u64>,
17047    #[prost(int32, optional, tag="2")]
17048    pub pid: ::core::option::Option<i32>,
17049    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
17050    pub api: ::core::option::Option<i32>,
17051}
17052/// Nested message and enum types in `InternedGraphicsContext`.
17053pub mod interned_graphics_context {
17054    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17055    #[repr(i32)]
17056    pub enum Api {
17057        Undefined = 0,
17058        OpenGl = 1,
17059        Vulkan = 2,
17060        OpenCl = 3,
17061    }
17062    impl Api {
17063        /// String value of the enum field names used in the ProtoBuf definition.
17064        ///
17065        /// The values are not transformed in any way and thus are considered stable
17066        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17067        pub fn as_str_name(&self) -> &'static str {
17068            match self {
17069                Api::Undefined => "UNDEFINED",
17070                Api::OpenGl => "OPEN_GL",
17071                Api::Vulkan => "VULKAN",
17072                Api::OpenCl => "OPEN_CL",
17073            }
17074        }
17075    }
17076}
17077#[derive(Clone, PartialEq, ::prost::Message)]
17078pub struct InternedGpuRenderStageSpecification {
17079    #[prost(uint64, optional, tag="1")]
17080    pub iid: ::core::option::Option<u64>,
17081    #[prost(string, optional, tag="2")]
17082    pub name: ::core::option::Option<::prost::alloc::string::String>,
17083    #[prost(string, optional, tag="3")]
17084    pub description: ::core::option::Option<::prost::alloc::string::String>,
17085    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
17086    pub category: ::core::option::Option<i32>,
17087}
17088/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
17089pub mod interned_gpu_render_stage_specification {
17090    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17091    #[repr(i32)]
17092    pub enum RenderStageCategory {
17093        Other = 0,
17094        Graphics = 1,
17095        Compute = 2,
17096    }
17097    impl RenderStageCategory {
17098        /// String value of the enum field names used in the ProtoBuf definition.
17099        ///
17100        /// The values are not transformed in any way and thus are considered stable
17101        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17102        pub fn as_str_name(&self) -> &'static str {
17103            match self {
17104                RenderStageCategory::Other => "OTHER",
17105                RenderStageCategory::Graphics => "GRAPHICS",
17106                RenderStageCategory::Compute => "COMPUTE",
17107            }
17108        }
17109    }
17110}
17111// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
17112
17113// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
17114
17115/// Message for recording the Vulkan call.
17116#[derive(Clone, PartialEq, ::prost::Message)]
17117pub struct VulkanApiEvent {
17118    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
17119    pub event: ::core::option::Option<vulkan_api_event::Event>,
17120}
17121/// Nested message and enum types in `VulkanApiEvent`.
17122pub mod vulkan_api_event {
17123    /// For recording vkSetDebugUtilsObjectNameEXT and
17124    /// vkDebugMarkerSetObjectNameEXT
17125    #[derive(Clone, PartialEq, ::prost::Message)]
17126    pub struct VkDebugUtilsObjectName {
17127        #[prost(uint32, optional, tag="1")]
17128        pub pid: ::core::option::Option<u32>,
17129        #[prost(uint64, optional, tag="2")]
17130        pub vk_device: ::core::option::Option<u64>,
17131        /// VkObjectType.  Value must match
17132        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
17133        #[prost(int32, optional, tag="3")]
17134        pub object_type: ::core::option::Option<i32>,
17135        #[prost(uint64, optional, tag="4")]
17136        pub object: ::core::option::Option<u64>,
17137        #[prost(string, optional, tag="5")]
17138        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
17139    }
17140    /// For recording vkQueueSubmit call.
17141    #[derive(Clone, PartialEq, ::prost::Message)]
17142    pub struct VkQueueSubmit {
17143        #[prost(uint64, optional, tag="1")]
17144        pub duration_ns: ::core::option::Option<u64>,
17145        #[prost(uint32, optional, tag="2")]
17146        pub pid: ::core::option::Option<u32>,
17147        #[prost(uint32, optional, tag="3")]
17148        pub tid: ::core::option::Option<u32>,
17149        #[prost(uint64, optional, tag="4")]
17150        pub vk_queue: ::core::option::Option<u64>,
17151        #[prost(uint64, repeated, packed="false", tag="5")]
17152        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
17153        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
17154        /// submission_id must match GpuRenderStageEvent.submission_id if the
17155        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
17156        #[prost(uint32, optional, tag="6")]
17157        pub submission_id: ::core::option::Option<u32>,
17158    }
17159    #[derive(Clone, PartialEq, ::prost::Oneof)]
17160    pub enum Event {
17161        #[prost(message, tag="1")]
17162        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
17163        #[prost(message, tag="2")]
17164        VkQueueSubmit(VkQueueSubmit),
17165    }
17166}
17167// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
17168
17169// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
17170
17171/// All the information that cannot be sent within a VulkanMemoryEvent message,
17172/// are sent as annotations to the main memory event. One example is the
17173/// properties of the object that consumes the allocated memory, for example, a
17174/// buffer or an image.
17175/// key_iid and string_iid are both interned strings. Original string value is
17176/// stored in vulkan_memory_keys from
17177/// protos/perfetto/trace/interned_data/interned_data.proto.
17178#[derive(Clone, PartialEq, ::prost::Message)]
17179pub struct VulkanMemoryEventAnnotation {
17180    #[prost(uint64, optional, tag="1")]
17181    pub key_iid: ::core::option::Option<u64>,
17182    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
17183    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
17184}
17185/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
17186pub mod vulkan_memory_event_annotation {
17187    #[derive(Clone, PartialEq, ::prost::Oneof)]
17188    pub enum Value {
17189        #[prost(int64, tag="2")]
17190        IntValue(i64),
17191        #[prost(double, tag="3")]
17192        DoubleValue(f64),
17193        #[prost(uint64, tag="4")]
17194        StringIid(u64),
17195    }
17196}
17197/// Each VulkanMemoryEvent encompasses information regarding one single function
17198/// call that results in reserving, binding or freeing host or GPU memory. There
17199/// is a special message type, ANNOTATIONS, which is used to communicate
17200/// information that are not directly related to a memory event, nonetheless are
17201/// essential to understand the memory usage. An example is the size and memory
17202/// types of the memory heaps.
17203///
17204/// Next reserved id: 10 (up to 15).
17205/// Next id: 21.
17206#[derive(Clone, PartialEq, ::prost::Message)]
17207pub struct VulkanMemoryEvent {
17208    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
17209    pub source: ::core::option::Option<i32>,
17210    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
17211    pub operation: ::core::option::Option<i32>,
17212    #[prost(int64, optional, tag="3")]
17213    pub timestamp: ::core::option::Option<i64>,
17214    #[prost(uint32, optional, tag="4")]
17215    pub pid: ::core::option::Option<u32>,
17216    #[prost(fixed64, optional, tag="5")]
17217    pub memory_address: ::core::option::Option<u64>,
17218    #[prost(uint64, optional, tag="6")]
17219    pub memory_size: ::core::option::Option<u64>,
17220    /// Interned string. Original string value is stored in function_names from
17221    /// protos/perfetto/trace/interned_data/interned_data.proto.
17222    #[prost(uint64, optional, tag="7")]
17223    pub caller_iid: ::core::option::Option<u64>,
17224    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
17225    pub allocation_scope: ::core::option::Option<i32>,
17226    /// Extra related information, e.g., create configs, etc.
17227    #[prost(message, repeated, tag="9")]
17228    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
17229    /// Field IDs used for device memory (low sampling rate)
17230    #[prost(fixed64, optional, tag="16")]
17231    pub device: ::core::option::Option<u64>,
17232    #[prost(fixed64, optional, tag="17")]
17233    pub device_memory: ::core::option::Option<u64>,
17234    #[prost(uint32, optional, tag="18")]
17235    pub memory_type: ::core::option::Option<u32>,
17236    #[prost(uint32, optional, tag="19")]
17237    pub heap: ::core::option::Option<u32>,
17238    #[prost(fixed64, optional, tag="20")]
17239    pub object_handle: ::core::option::Option<u64>,
17240}
17241/// Nested message and enum types in `VulkanMemoryEvent`.
17242pub mod vulkan_memory_event {
17243    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17244    #[repr(i32)]
17245    pub enum Source {
17246        Unspecified = 0,
17247        Driver = 1,
17248        Device = 2,
17249        DeviceMemory = 3,
17250        Buffer = 4,
17251        Image = 5,
17252    }
17253    impl Source {
17254        /// String value of the enum field names used in the ProtoBuf definition.
17255        ///
17256        /// The values are not transformed in any way and thus are considered stable
17257        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17258        pub fn as_str_name(&self) -> &'static str {
17259            match self {
17260                Source::Unspecified => "SOURCE_UNSPECIFIED",
17261                Source::Driver => "SOURCE_DRIVER",
17262                Source::Device => "SOURCE_DEVICE",
17263                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
17264                Source::Buffer => "SOURCE_BUFFER",
17265                Source::Image => "SOURCE_IMAGE",
17266            }
17267        }
17268    }
17269    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17270    #[repr(i32)]
17271    pub enum Operation {
17272        OpUnspecified = 0,
17273        /// alloc, create
17274        OpCreate = 1,
17275        /// free, destroy(non-bound)
17276        OpDestroy = 2,
17277        /// bind buffer and image
17278        OpBind = 3,
17279        /// destroy (bound)
17280        OpDestroyBound = 4,
17281        /// only annotations
17282        OpAnnotations = 5,
17283    }
17284    impl Operation {
17285        /// String value of the enum field names used in the ProtoBuf definition.
17286        ///
17287        /// The values are not transformed in any way and thus are considered stable
17288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17289        pub fn as_str_name(&self) -> &'static str {
17290            match self {
17291                Operation::OpUnspecified => "OP_UNSPECIFIED",
17292                Operation::OpCreate => "OP_CREATE",
17293                Operation::OpDestroy => "OP_DESTROY",
17294                Operation::OpBind => "OP_BIND",
17295                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
17296                Operation::OpAnnotations => "OP_ANNOTATIONS",
17297            }
17298        }
17299    }
17300    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17301    #[repr(i32)]
17302    pub enum AllocationScope {
17303        ScopeUnspecified = 0,
17304        ScopeCommand = 1,
17305        ScopeObject = 2,
17306        ScopeCache = 3,
17307        ScopeDevice = 4,
17308        ScopeInstance = 5,
17309    }
17310    impl AllocationScope {
17311        /// String value of the enum field names used in the ProtoBuf definition.
17312        ///
17313        /// The values are not transformed in any way and thus are considered stable
17314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17315        pub fn as_str_name(&self) -> &'static str {
17316            match self {
17317                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
17318                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
17319                AllocationScope::ScopeObject => "SCOPE_OBJECT",
17320                AllocationScope::ScopeCache => "SCOPE_CACHE",
17321                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
17322                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
17323            }
17324        }
17325    }
17326}
17327// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
17328
17329// Begin of protos/perfetto/trace/profiling/profile_common.proto
17330
17331/// The interning fields in this file can refer to 2 different intern tables,
17332/// depending on the message they are used in. If the interned fields are present
17333/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
17334/// should be used. If the intered fields are present in the
17335/// StreamingProfilePacket proto, then the intern tables included in all of the
17336/// previous InternedData message with same sequence ID should be used.
17337/// TODO(fmayer): Move to the intern tables to a common location.
17338#[derive(Clone, PartialEq, ::prost::Message)]
17339pub struct InternedString {
17340    #[prost(uint64, optional, tag="1")]
17341    pub iid: ::core::option::Option<u64>,
17342    #[prost(bytes="vec", optional, tag="2")]
17343    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17344}
17345/// Source line info.
17346#[derive(Clone, PartialEq, ::prost::Message)]
17347pub struct Line {
17348    #[prost(string, optional, tag="1")]
17349    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
17350    #[prost(string, optional, tag="2")]
17351    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
17352    #[prost(uint32, optional, tag="3")]
17353    pub line_number: ::core::option::Option<u32>,
17354}
17355/// Symbols for a given address in a module.
17356#[derive(Clone, PartialEq, ::prost::Message)]
17357pub struct AddressSymbols {
17358    #[prost(uint64, optional, tag="1")]
17359    pub address: ::core::option::Option<u64>,
17360    /// Source lines that correspond to this address.
17361    ///
17362    /// These are repeated because when inlining happens, multiple functions'
17363    /// frames can be at a single address. Imagine function Foo calling the
17364    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
17365    /// both Foo and the std::vector<int> constructor when we symbolize the
17366    /// address.
17367    #[prost(message, repeated, tag="2")]
17368    pub lines: ::prost::alloc::vec::Vec<Line>,
17369}
17370/// Symbols for addresses seen in a module.
17371/// Used in re-symbolisation of complete traces.
17372#[derive(Clone, PartialEq, ::prost::Message)]
17373pub struct ModuleSymbols {
17374    /// Fully qualified path to the mapping.
17375    /// E.g. /system/lib64/libc.so.
17376    #[prost(string, optional, tag="1")]
17377    pub path: ::core::option::Option<::prost::alloc::string::String>,
17378    /// .note.gnu.build-id on Linux (not hex encoded).
17379    /// uuid on MacOS.
17380    /// Module GUID on Windows.
17381    #[prost(string, optional, tag="2")]
17382    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
17383    #[prost(message, repeated, tag="3")]
17384    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
17385}
17386#[derive(Clone, PartialEq, ::prost::Message)]
17387pub struct Mapping {
17388    /// Interning key.
17389    #[prost(uint64, optional, tag="1")]
17390    pub iid: ::core::option::Option<u64>,
17391    /// Interning key.
17392    #[prost(uint64, optional, tag="2")]
17393    pub build_id: ::core::option::Option<u64>,
17394    // The linker may create multiple memory mappings for the same shared
17395    // library.
17396    // This is so that the ELF header is mapped as read only, while the
17397    // executable memory is mapped as executable only.
17398    // The details of this depend on the linker, a possible mapping of an ELF
17399    // file is this:
17400    //          +----------------------+
17401    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
17402    //          +---------+------------+
17403    //          |         |
17404    //          | read    | executable
17405    //          v mapping v mapping
17406    //          +----------------------+
17407    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
17408    //          +------------------+---+
17409    //          ^         ^        ^
17410    //          +         +        +
17411    //        start     exact    relpc
17412    //        offset   offset    0x1800
17413    //        0x0000   0x1000
17414    //
17415    // exact_offset is the offset into the library file of this mapping.
17416    // start_offset is the offset into the library file of the first mapping
17417    // for that library. For native libraries (.so files) this should be 0.
17418
17419    /// This is not set on Android 10.
17420    #[prost(uint64, optional, tag="8")]
17421    pub exact_offset: ::core::option::Option<u64>,
17422    #[prost(uint64, optional, tag="3")]
17423    pub start_offset: ::core::option::Option<u64>,
17424    #[prost(uint64, optional, tag="4")]
17425    pub start: ::core::option::Option<u64>,
17426    #[prost(uint64, optional, tag="5")]
17427    pub end: ::core::option::Option<u64>,
17428    #[prost(uint64, optional, tag="6")]
17429    pub load_bias: ::core::option::Option<u64>,
17430    /// E.g. ["system", "lib64", "libc.so"]
17431    /// id of string.
17432    #[prost(uint64, repeated, packed="false", tag="7")]
17433    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
17434}
17435#[derive(Clone, PartialEq, ::prost::Message)]
17436pub struct Frame {
17437    /// Interning key
17438    #[prost(uint64, optional, tag="1")]
17439    pub iid: ::core::option::Option<u64>,
17440    /// E.g. "fopen"
17441    /// id of string.
17442    #[prost(uint64, optional, tag="2")]
17443    pub function_name_id: ::core::option::Option<u64>,
17444    #[prost(uint64, optional, tag="3")]
17445    pub mapping_id: ::core::option::Option<u64>,
17446    #[prost(uint64, optional, tag="4")]
17447    pub rel_pc: ::core::option::Option<u64>,
17448}
17449#[derive(Clone, PartialEq, ::prost::Message)]
17450pub struct Callstack {
17451    #[prost(uint64, optional, tag="1")]
17452    pub iid: ::core::option::Option<u64>,
17453    /// Frames of this callstack. Bottom frame first.
17454    #[prost(uint64, repeated, packed="false", tag="2")]
17455    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
17456}
17457// End of protos/perfetto/trace/profiling/profile_common.proto
17458
17459// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
17460
17461#[derive(Clone, PartialEq, ::prost::Message)]
17462pub struct HistogramName {
17463    #[prost(uint64, optional, tag="1")]
17464    pub iid: ::core::option::Option<u64>,
17465    #[prost(string, optional, tag="2")]
17466    pub name: ::core::option::Option<::prost::alloc::string::String>,
17467}
17468/// An individual histogram sample logged via Chrome's UMA metrics system.
17469#[derive(Clone, PartialEq, ::prost::Message)]
17470pub struct ChromeHistogramSample {
17471    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
17472    /// both must be present.
17473    #[prost(uint64, optional, tag="1")]
17474    pub name_hash: ::core::option::Option<u64>,
17475    #[prost(string, optional, tag="2")]
17476    pub name: ::core::option::Option<::prost::alloc::string::String>,
17477    #[prost(int64, optional, tag="3")]
17478    pub sample: ::core::option::Option<i64>,
17479    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
17480    #[prost(uint64, optional, tag="4")]
17481    pub name_iid: ::core::option::Option<u64>,
17482}
17483// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
17484
17485// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
17486
17487/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
17488/// macros. Users of the Perfetto SDK should prefer to use the
17489/// perfetto::TracedValue API to fill these protos, rather than filling them
17490/// manually.
17491///
17492/// Debug annotations are intended for debug use and are not considered a stable
17493/// API of the trace contents. Trace-based metrics that use debug annotation
17494/// values are prone to breakage, so please rely on typed TrackEvent fields for
17495/// these instead.
17496///
17497/// DebugAnnotations support nested arrays and dictionaries. Each entry is
17498/// encoded as a single DebugAnnotation message. Only dictionary entries
17499/// set the "name" field. The TrackEvent message forms an implicit root
17500/// dictionary.
17501///
17502/// Example TrackEvent with nested annotations:
17503///    track_event {
17504///      debug_annotations {
17505///        name: "foo"
17506///        dict_entries {
17507///          name: "a"
17508///          bool_value: true
17509///        }
17510///        dict_entries {
17511///          name: "b"
17512///          int_value: 123
17513///        }
17514///      }
17515///      debug_annotations {
17516///        name: "bar"
17517///        array_values {
17518///          string_value: "hello"
17519///        }
17520///        array_values {
17521///          string_value: "world"
17522///        }
17523///      }
17524///    }
17525///
17526/// Next ID: 18.
17527/// Reserved ID: 15
17528#[derive(Clone, PartialEq, ::prost::Message)]
17529pub struct DebugAnnotation {
17530    #[prost(bytes="vec", optional, tag="14")]
17531    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17532    #[prost(message, repeated, tag="11")]
17533    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
17534    #[prost(message, repeated, tag="12")]
17535    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
17536    /// Name fields are set only for dictionary entries.
17537    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
17538    pub name_field: ::core::option::Option<debug_annotation::NameField>,
17539    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
17540    pub value: ::core::option::Option<debug_annotation::Value>,
17541    /// Used to embed arbitrary proto messages (which are also typically used to
17542    /// represent typed TrackEvent arguments). |proto_type_name| or
17543    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
17544    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
17545    /// proto messages. See |TracedValue::WriteProto| for more details.
17546    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
17547    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
17548}
17549/// Nested message and enum types in `DebugAnnotation`.
17550pub mod debug_annotation {
17551    /// Deprecated legacy way to use nested values. Only kept for
17552    /// backwards-compatibility in TraceProcessor. May be removed in the future -
17553    /// code filling protos should use |dict_entries| and |array_values| instead.
17554    #[derive(Clone, PartialEq, ::prost::Message)]
17555    pub struct NestedValue {
17556        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
17557        pub nested_type: ::core::option::Option<i32>,
17558        #[prost(string, repeated, tag="2")]
17559        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17560        #[prost(message, repeated, tag="3")]
17561        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
17562        #[prost(message, repeated, tag="4")]
17563        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
17564        #[prost(int64, optional, tag="5")]
17565        pub int_value: ::core::option::Option<i64>,
17566        #[prost(double, optional, tag="6")]
17567        pub double_value: ::core::option::Option<f64>,
17568        #[prost(bool, optional, tag="7")]
17569        pub bool_value: ::core::option::Option<bool>,
17570        #[prost(string, optional, tag="8")]
17571        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
17572    }
17573    /// Nested message and enum types in `NestedValue`.
17574    pub mod nested_value {
17575        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17576        #[repr(i32)]
17577        pub enum NestedType {
17578            /// leaf value.
17579            Unspecified = 0,
17580            Dict = 1,
17581            Array = 2,
17582        }
17583        impl NestedType {
17584            /// String value of the enum field names used in the ProtoBuf definition.
17585            ///
17586            /// The values are not transformed in any way and thus are considered stable
17587            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17588            pub fn as_str_name(&self) -> &'static str {
17589                match self {
17590                    NestedType::Unspecified => "UNSPECIFIED",
17591                    NestedType::Dict => "DICT",
17592                    NestedType::Array => "ARRAY",
17593                }
17594            }
17595        }
17596    }
17597    /// Name fields are set only for dictionary entries.
17598    #[derive(Clone, PartialEq, ::prost::Oneof)]
17599    pub enum NameField {
17600        /// interned DebugAnnotationName.
17601        #[prost(uint64, tag="1")]
17602        NameIid(u64),
17603        /// non-interned variant.
17604        #[prost(string, tag="10")]
17605        Name(::prost::alloc::string::String),
17606    }
17607    #[derive(Clone, PartialEq, ::prost::Oneof)]
17608    pub enum Value {
17609        #[prost(bool, tag="2")]
17610        BoolValue(bool),
17611        #[prost(uint64, tag="3")]
17612        UintValue(u64),
17613        #[prost(int64, tag="4")]
17614        IntValue(i64),
17615        #[prost(double, tag="5")]
17616        DoubleValue(f64),
17617        /// Pointers are stored in a separate type as the JSON output treats them
17618        /// differently from other uint64 values.
17619        #[prost(uint64, tag="7")]
17620        PointerValue(u64),
17621        /// Deprecated. Use dict_entries / array_values instead.
17622        #[prost(message, tag="8")]
17623        NestedValue(NestedValue),
17624        /// Legacy instrumentation may not support conversion of nested data to
17625        /// NestedValue yet.
17626        #[prost(string, tag="9")]
17627        LegacyJsonValue(::prost::alloc::string::String),
17628        /// interned and non-interned variants of strings.
17629        #[prost(string, tag="6")]
17630        StringValue(::prost::alloc::string::String),
17631        /// Corresponds to |debug_annotation_string_values| field in InternedData.
17632        #[prost(uint64, tag="17")]
17633        StringValueIid(u64),
17634    }
17635    /// Used to embed arbitrary proto messages (which are also typically used to
17636    /// represent typed TrackEvent arguments). |proto_type_name| or
17637    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
17638    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
17639    /// proto messages. See |TracedValue::WriteProto| for more details.
17640    #[derive(Clone, PartialEq, ::prost::Oneof)]
17641    pub enum ProtoTypeDescriptor {
17642        #[prost(string, tag="16")]
17643        ProtoTypeName(::prost::alloc::string::String),
17644        /// interned DebugAnnotationValueTypeName.
17645        #[prost(uint64, tag="13")]
17646        ProtoTypeNameIid(u64),
17647    }
17648}
17649// --------------------
17650// Interned data types:
17651// --------------------
17652
17653#[derive(Clone, PartialEq, ::prost::Message)]
17654pub struct DebugAnnotationName {
17655    #[prost(uint64, optional, tag="1")]
17656    pub iid: ::core::option::Option<u64>,
17657    #[prost(string, optional, tag="2")]
17658    pub name: ::core::option::Option<::prost::alloc::string::String>,
17659}
17660/// See the |proto_type_descriptor| comment.
17661#[derive(Clone, PartialEq, ::prost::Message)]
17662pub struct DebugAnnotationValueTypeName {
17663    #[prost(uint64, optional, tag="1")]
17664    pub iid: ::core::option::Option<u64>,
17665    #[prost(string, optional, tag="2")]
17666    pub name: ::core::option::Option<::prost::alloc::string::String>,
17667}
17668// End of protos/perfetto/trace/track_event/debug_annotation.proto
17669
17670// Begin of protos/perfetto/trace/track_event/log_message.proto
17671
17672#[derive(Clone, PartialEq, ::prost::Message)]
17673pub struct LogMessage {
17674    /// interned SourceLocation.
17675    #[prost(uint64, optional, tag="1")]
17676    pub source_location_iid: ::core::option::Option<u64>,
17677    /// interned LogMessageBody.
17678    #[prost(uint64, optional, tag="2")]
17679    pub body_iid: ::core::option::Option<u64>,
17680    #[prost(enumeration="log_message::Priority", optional, tag="3")]
17681    pub prio: ::core::option::Option<i32>,
17682}
17683/// Nested message and enum types in `LogMessage`.
17684pub mod log_message {
17685    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17686    #[repr(i32)]
17687    pub enum Priority {
17688        PrioUnspecified = 0,
17689        PrioUnused = 1,
17690        PrioVerbose = 2,
17691        PrioDebug = 3,
17692        PrioInfo = 4,
17693        PrioWarn = 5,
17694        PrioError = 6,
17695        PrioFatal = 7,
17696    }
17697    impl Priority {
17698        /// String value of the enum field names used in the ProtoBuf definition.
17699        ///
17700        /// The values are not transformed in any way and thus are considered stable
17701        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17702        pub fn as_str_name(&self) -> &'static str {
17703            match self {
17704                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
17705                Priority::PrioUnused => "PRIO_UNUSED",
17706                Priority::PrioVerbose => "PRIO_VERBOSE",
17707                Priority::PrioDebug => "PRIO_DEBUG",
17708                Priority::PrioInfo => "PRIO_INFO",
17709                Priority::PrioWarn => "PRIO_WARN",
17710                Priority::PrioError => "PRIO_ERROR",
17711                Priority::PrioFatal => "PRIO_FATAL",
17712            }
17713        }
17714    }
17715}
17716// --------------------
17717// Interned data types:
17718// --------------------
17719
17720#[derive(Clone, PartialEq, ::prost::Message)]
17721pub struct LogMessageBody {
17722    #[prost(uint64, optional, tag="1")]
17723    pub iid: ::core::option::Option<u64>,
17724    #[prost(string, optional, tag="2")]
17725    pub body: ::core::option::Option<::prost::alloc::string::String>,
17726}
17727// End of protos/perfetto/trace/track_event/log_message.proto
17728
17729// Begin of protos/perfetto/trace/track_event/source_location.proto
17730
17731// --------------------
17732// Interned data types:
17733// --------------------
17734
17735/// A source location, represented as a native symbol.
17736/// This is similar to `message Frame` from
17737/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
17738/// source code locations (for example in track event args), not stack frames.
17739#[derive(Clone, PartialEq, ::prost::Message)]
17740pub struct UnsymbolizedSourceLocation {
17741    #[prost(uint64, optional, tag="1")]
17742    pub iid: ::core::option::Option<u64>,
17743    #[prost(uint64, optional, tag="2")]
17744    pub mapping_id: ::core::option::Option<u64>,
17745    #[prost(uint64, optional, tag="3")]
17746    pub rel_pc: ::core::option::Option<u64>,
17747}
17748#[derive(Clone, PartialEq, ::prost::Message)]
17749pub struct SourceLocation {
17750    #[prost(uint64, optional, tag="1")]
17751    pub iid: ::core::option::Option<u64>,
17752    #[prost(string, optional, tag="2")]
17753    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
17754    #[prost(string, optional, tag="3")]
17755    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
17756    #[prost(uint32, optional, tag="4")]
17757    pub line_number: ::core::option::Option<u32>,
17758}
17759// End of protos/perfetto/trace/track_event/source_location.proto
17760
17761// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
17762
17763/// A list of processes connected to the tracing service.
17764#[derive(Clone, PartialEq, ::prost::Message)]
17765pub struct ChromeActiveProcesses {
17766    #[prost(int32, repeated, packed="false", tag="1")]
17767    pub pid: ::prost::alloc::vec::Vec<i32>,
17768}
17769// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
17770
17771/// Trace event arguments for application state changes.
17772#[derive(Clone, PartialEq, ::prost::Message)]
17773pub struct ChromeApplicationStateInfo {
17774    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
17775    pub application_state: ::core::option::Option<i32>,
17776}
17777/// Nested message and enum types in `ChromeApplicationStateInfo`.
17778pub mod chrome_application_state_info {
17779    /// Enum definition taken from:
17780    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
17781    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17782    #[repr(i32)]
17783    pub enum ChromeApplicationState {
17784        ApplicationStateUnknown = 0,
17785        ApplicationStateHasRunningActivities = 1,
17786        ApplicationStateHasPausedActivities = 2,
17787        ApplicationStateHasStoppedActivities = 3,
17788        ApplicationStateHasDestroyedActivities = 4,
17789    }
17790    impl ChromeApplicationState {
17791        /// String value of the enum field names used in the ProtoBuf definition.
17792        ///
17793        /// The values are not transformed in any way and thus are considered stable
17794        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17795        pub fn as_str_name(&self) -> &'static str {
17796            match self {
17797                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
17798                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
17799                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
17800                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
17801                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
17802            }
17803        }
17804    }
17805}
17806/// Next id: 18
17807#[derive(Clone, PartialEq, ::prost::Message)]
17808pub struct ChromeCompositorSchedulerState {
17809    #[prost(message, optional, tag="1")]
17810    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
17811    #[prost(bool, optional, tag="2")]
17812    pub observing_begin_frame_source: ::core::option::Option<bool>,
17813    #[prost(bool, optional, tag="3")]
17814    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
17815    #[prost(bool, optional, tag="4")]
17816    pub pending_begin_frame_task: ::core::option::Option<bool>,
17817    #[prost(bool, optional, tag="5")]
17818    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
17819    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
17820    pub inside_action: ::core::option::Option<i32>,
17821    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
17822    pub deadline_mode: ::core::option::Option<i32>,
17823    #[prost(int64, optional, tag="9")]
17824    pub deadline_us: ::core::option::Option<i64>,
17825    #[prost(int64, optional, tag="10")]
17826    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
17827    #[prost(int64, optional, tag="11")]
17828    pub now_us: ::core::option::Option<i64>,
17829    #[prost(int64, optional, tag="12")]
17830    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
17831    #[prost(int64, optional, tag="13")]
17832    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
17833    #[prost(message, optional, tag="14")]
17834    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
17835    #[prost(message, optional, tag="15")]
17836    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
17837    #[prost(message, optional, tag="16")]
17838    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
17839    #[prost(message, optional, tag="17")]
17840    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
17841}
17842/// Nested message and enum types in `ChromeCompositorSchedulerState`.
17843pub mod chrome_compositor_scheduler_state {
17844    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17845    #[repr(i32)]
17846    pub enum BeginImplFrameDeadlineMode {
17847        DeadlineModeUnspecified = 0,
17848        DeadlineModeNone = 1,
17849        DeadlineModeImmediate = 2,
17850        DeadlineModeRegular = 3,
17851        DeadlineModeLate = 4,
17852        DeadlineModeBlocked = 5,
17853    }
17854    impl BeginImplFrameDeadlineMode {
17855        /// String value of the enum field names used in the ProtoBuf definition.
17856        ///
17857        /// The values are not transformed in any way and thus are considered stable
17858        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17859        pub fn as_str_name(&self) -> &'static str {
17860            match self {
17861                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
17862                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
17863                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
17864                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
17865                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
17866                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
17867            }
17868        }
17869    }
17870}
17871/// Describes the current values stored in the Chrome Compositor state machine.
17872/// Next id: 3
17873#[derive(Clone, PartialEq, ::prost::Message)]
17874pub struct ChromeCompositorStateMachine {
17875    #[prost(message, optional, tag="1")]
17876    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
17877    #[prost(message, optional, tag="2")]
17878    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
17879}
17880/// Nested message and enum types in `ChromeCompositorStateMachine`.
17881pub mod chrome_compositor_state_machine {
17882    /// Next id: 6
17883    #[derive(Clone, PartialEq, ::prost::Message)]
17884    pub struct MajorState {
17885        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
17886        pub next_action: ::core::option::Option<i32>,
17887        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
17888        pub begin_impl_frame_state: ::core::option::Option<i32>,
17889        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
17890        pub begin_main_frame_state: ::core::option::Option<i32>,
17891        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
17892        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
17893        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
17894        pub forced_redraw_state: ::core::option::Option<i32>,
17895    }
17896    /// Nested message and enum types in `MajorState`.
17897    pub mod major_state {
17898        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17899        #[repr(i32)]
17900        pub enum BeginImplFrameState {
17901            BeginImplFrameUnspecified = 0,
17902            BeginImplFrameIdle = 1,
17903            BeginImplFrameInsideBeginFrame = 2,
17904            BeginImplFrameInsideDeadline = 3,
17905        }
17906        impl BeginImplFrameState {
17907            /// String value of the enum field names used in the ProtoBuf definition.
17908            ///
17909            /// The values are not transformed in any way and thus are considered stable
17910            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17911            pub fn as_str_name(&self) -> &'static str {
17912                match self {
17913                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
17914                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
17915                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
17916                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
17917                }
17918            }
17919        }
17920        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17921        #[repr(i32)]
17922        pub enum BeginMainFrameState {
17923            BeginMainFrameUnspecified = 0,
17924            BeginMainFrameIdle = 1,
17925            BeginMainFrameSent = 2,
17926            BeginMainFrameReadyToCommit = 3,
17927        }
17928        impl BeginMainFrameState {
17929            /// String value of the enum field names used in the ProtoBuf definition.
17930            ///
17931            /// The values are not transformed in any way and thus are considered stable
17932            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17933            pub fn as_str_name(&self) -> &'static str {
17934                match self {
17935                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
17936                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
17937                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
17938                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
17939                }
17940            }
17941        }
17942        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17943        #[repr(i32)]
17944        pub enum LayerTreeFrameSinkState {
17945            LayerTreeFrameUnspecified = 0,
17946            LayerTreeFrameNone = 1,
17947            LayerTreeFrameActive = 2,
17948            LayerTreeFrameCreating = 3,
17949            LayerTreeFrameWaitingForFirstCommit = 4,
17950            LayerTreeFrameWaitingForFirstActivation = 5,
17951        }
17952        impl LayerTreeFrameSinkState {
17953            /// String value of the enum field names used in the ProtoBuf definition.
17954            ///
17955            /// The values are not transformed in any way and thus are considered stable
17956            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17957            pub fn as_str_name(&self) -> &'static str {
17958                match self {
17959                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
17960                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
17961                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
17962                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
17963                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
17964                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
17965                }
17966            }
17967        }
17968        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17969        #[repr(i32)]
17970        pub enum ForcedRedrawOnTimeoutState {
17971            ForcedRedrawUnspecified = 0,
17972            ForcedRedrawIdle = 1,
17973            ForcedRedrawWaitingForCommit = 2,
17974            ForcedRedrawWaitingForActivation = 3,
17975            ForcedRedrawWaitingForDraw = 4,
17976        }
17977        impl ForcedRedrawOnTimeoutState {
17978            /// String value of the enum field names used in the ProtoBuf definition.
17979            ///
17980            /// The values are not transformed in any way and thus are considered stable
17981            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17982            pub fn as_str_name(&self) -> &'static str {
17983                match self {
17984                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
17985                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
17986                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
17987                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
17988                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
17989                }
17990            }
17991        }
17992    }
17993    /// Next id: 47
17994    #[derive(Clone, PartialEq, ::prost::Message)]
17995    pub struct MinorState {
17996        #[prost(int32, optional, tag="1")]
17997        pub commit_count: ::core::option::Option<i32>,
17998        #[prost(int32, optional, tag="2")]
17999        pub current_frame_number: ::core::option::Option<i32>,
18000        #[prost(int32, optional, tag="3")]
18001        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
18002        #[prost(int32, optional, tag="4")]
18003        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
18004        #[prost(int32, optional, tag="5")]
18005        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
18006        #[prost(bool, optional, tag="6")]
18007        pub did_draw: ::core::option::Option<bool>,
18008        #[prost(bool, optional, tag="7")]
18009        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
18010        #[prost(bool, optional, tag="8")]
18011        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
18012        #[prost(bool, optional, tag="9")]
18013        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
18014        #[prost(bool, optional, tag="10")]
18015        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
18016        #[prost(bool, optional, tag="11")]
18017        pub did_commit_during_frame: ::core::option::Option<bool>,
18018        #[prost(bool, optional, tag="12")]
18019        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
18020        #[prost(bool, optional, tag="13")]
18021        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
18022        #[prost(bool, optional, tag="14")]
18023        pub did_prepare_tiles: ::core::option::Option<bool>,
18024        #[prost(int32, optional, tag="15")]
18025        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
18026        #[prost(int32, optional, tag="16")]
18027        pub pending_submit_frames: ::core::option::Option<i32>,
18028        #[prost(int32, optional, tag="17")]
18029        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
18030        #[prost(bool, optional, tag="18")]
18031        pub needs_redraw: ::core::option::Option<bool>,
18032        #[prost(bool, optional, tag="19")]
18033        pub needs_prepare_tiles: ::core::option::Option<bool>,
18034        #[prost(bool, optional, tag="20")]
18035        pub needs_begin_main_frame: ::core::option::Option<bool>,
18036        #[prost(bool, optional, tag="21")]
18037        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
18038        #[prost(bool, optional, tag="22")]
18039        pub visible: ::core::option::Option<bool>,
18040        #[prost(bool, optional, tag="23")]
18041        pub begin_frame_source_paused: ::core::option::Option<bool>,
18042        #[prost(bool, optional, tag="24")]
18043        pub can_draw: ::core::option::Option<bool>,
18044        #[prost(bool, optional, tag="25")]
18045        pub resourceless_draw: ::core::option::Option<bool>,
18046        #[prost(bool, optional, tag="26")]
18047        pub has_pending_tree: ::core::option::Option<bool>,
18048        #[prost(bool, optional, tag="27")]
18049        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
18050        #[prost(bool, optional, tag="28")]
18051        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
18052        #[prost(bool, optional, tag="29")]
18053        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
18054        #[prost(bool, optional, tag="30")]
18055        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
18056        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
18057        pub tree_priority: ::core::option::Option<i32>,
18058        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
18059        pub scroll_handler_state: ::core::option::Option<i32>,
18060        #[prost(bool, optional, tag="33")]
18061        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
18062        #[prost(bool, optional, tag="34")]
18063        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
18064        #[prost(bool, optional, tag="36")]
18065        pub video_needs_begin_frames: ::core::option::Option<bool>,
18066        #[prost(bool, optional, tag="37")]
18067        pub defer_begin_main_frame: ::core::option::Option<bool>,
18068        #[prost(bool, optional, tag="38")]
18069        pub last_commit_had_no_updates: ::core::option::Option<bool>,
18070        #[prost(bool, optional, tag="39")]
18071        pub did_draw_in_last_frame: ::core::option::Option<bool>,
18072        #[prost(bool, optional, tag="40")]
18073        pub did_submit_in_last_frame: ::core::option::Option<bool>,
18074        #[prost(bool, optional, tag="41")]
18075        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
18076        #[prost(bool, optional, tag="42")]
18077        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
18078        #[prost(bool, optional, tag="43")]
18079        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
18080        #[prost(bool, optional, tag="44")]
18081        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
18082        #[prost(bool, optional, tag="45")]
18083        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
18084        #[prost(bool, optional, tag="46")]
18085        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
18086    }
18087    /// Nested message and enum types in `MinorState`.
18088    pub mod minor_state {
18089        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18090        #[repr(i32)]
18091        pub enum TreePriority {
18092            Unspecified = 0,
18093            SamePriorityForBothTrees = 1,
18094            SmoothnessTakesPriority = 2,
18095            NewContentTakesPriority = 3,
18096        }
18097        impl TreePriority {
18098            /// String value of the enum field names used in the ProtoBuf definition.
18099            ///
18100            /// The values are not transformed in any way and thus are considered stable
18101            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18102            pub fn as_str_name(&self) -> &'static str {
18103                match self {
18104                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
18105                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
18106                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
18107                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
18108                }
18109            }
18110        }
18111        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18112        #[repr(i32)]
18113        pub enum ScrollHandlerState {
18114            ScrollHandlerUnspecified = 0,
18115            ScrollAffectsScrollHandler = 1,
18116            ScrollDoesNotAffectScrollHandler = 2,
18117        }
18118        impl ScrollHandlerState {
18119            /// String value of the enum field names used in the ProtoBuf definition.
18120            ///
18121            /// The values are not transformed in any way and thus are considered stable
18122            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18123            pub fn as_str_name(&self) -> &'static str {
18124                match self {
18125                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
18126                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
18127                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
18128                }
18129            }
18130        }
18131    }
18132}
18133/// Next id: 13
18134#[derive(Clone, PartialEq, ::prost::Message)]
18135pub struct BeginFrameArgs {
18136    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
18137    pub r#type: ::core::option::Option<i32>,
18138    #[prost(uint64, optional, tag="2")]
18139    pub source_id: ::core::option::Option<u64>,
18140    #[prost(uint64, optional, tag="3")]
18141    pub sequence_number: ::core::option::Option<u64>,
18142    #[prost(int64, optional, tag="4")]
18143    pub frame_time_us: ::core::option::Option<i64>,
18144    #[prost(int64, optional, tag="5")]
18145    pub deadline_us: ::core::option::Option<i64>,
18146    #[prost(int64, optional, tag="6")]
18147    pub interval_delta_us: ::core::option::Option<i64>,
18148    #[prost(bool, optional, tag="7")]
18149    pub on_critical_path: ::core::option::Option<bool>,
18150    #[prost(bool, optional, tag="8")]
18151    pub animate_only: ::core::option::Option<bool>,
18152    #[prost(int64, optional, tag="12")]
18153    pub frames_throttled_since_last: ::core::option::Option<i64>,
18154    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
18155    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
18156}
18157/// Nested message and enum types in `BeginFrameArgs`.
18158pub mod begin_frame_args {
18159    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
18160    /// drop this in the proto representation, and instead make the JSON format
18161    /// "subtype" field become the type field.
18162    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18163    #[repr(i32)]
18164    pub enum BeginFrameArgsType {
18165        Unspecified = 0,
18166        Invalid = 1,
18167        Normal = 2,
18168        Missed = 3,
18169    }
18170    impl BeginFrameArgsType {
18171        /// String value of the enum field names used in the ProtoBuf definition.
18172        ///
18173        /// The values are not transformed in any way and thus are considered stable
18174        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18175        pub fn as_str_name(&self) -> &'static str {
18176            match self {
18177                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
18178                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
18179                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
18180                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
18181            }
18182        }
18183    }
18184    #[derive(Clone, PartialEq, ::prost::Oneof)]
18185    pub enum CreatedFrom {
18186        /// The interned SourceLocation.
18187        #[prost(uint64, tag="9")]
18188        SourceLocationIid(u64),
18189        /// The SourceLocation that this args was created from.
18190        /// TODO(nuskos): Eventually we will support interning inside of
18191        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
18192        /// since we can emit it as part of the InternedData message. When we can
18193        /// remove this |source_location|.
18194        #[prost(message, tag="10")]
18195        SourceLocation(super::SourceLocation),
18196    }
18197}
18198/// Next id: 7
18199#[derive(Clone, PartialEq, ::prost::Message)]
18200pub struct BeginImplFrameArgs {
18201    #[prost(int64, optional, tag="1")]
18202    pub updated_at_us: ::core::option::Option<i64>,
18203    #[prost(int64, optional, tag="2")]
18204    pub finished_at_us: ::core::option::Option<i64>,
18205    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
18206    pub state: ::core::option::Option<i32>,
18207    #[prost(message, optional, tag="6")]
18208    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
18209    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
18210    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
18211}
18212/// Nested message and enum types in `BeginImplFrameArgs`.
18213pub mod begin_impl_frame_args {
18214    #[derive(Clone, PartialEq, ::prost::Message)]
18215    pub struct TimestampsInUs {
18216        #[prost(int64, optional, tag="1")]
18217        pub interval_delta: ::core::option::Option<i64>,
18218        #[prost(int64, optional, tag="2")]
18219        pub now_to_deadline_delta: ::core::option::Option<i64>,
18220        #[prost(int64, optional, tag="3")]
18221        pub frame_time_to_now_delta: ::core::option::Option<i64>,
18222        #[prost(int64, optional, tag="4")]
18223        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
18224        #[prost(int64, optional, tag="5")]
18225        pub now: ::core::option::Option<i64>,
18226        #[prost(int64, optional, tag="6")]
18227        pub frame_time: ::core::option::Option<i64>,
18228        #[prost(int64, optional, tag="7")]
18229        pub deadline: ::core::option::Option<i64>,
18230    }
18231    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18232    #[repr(i32)]
18233    pub enum State {
18234        BeginFrameFinished = 0,
18235        BeginFrameUsing = 1,
18236    }
18237    impl State {
18238        /// String value of the enum field names used in the ProtoBuf definition.
18239        ///
18240        /// The values are not transformed in any way and thus are considered stable
18241        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18242        pub fn as_str_name(&self) -> &'static str {
18243            match self {
18244                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
18245                State::BeginFrameUsing => "BEGIN_FRAME_USING",
18246            }
18247        }
18248    }
18249    #[derive(Clone, PartialEq, ::prost::Oneof)]
18250    pub enum Args {
18251        /// Only set if |state| is BEGIN_FRAME_FINISHED.
18252        #[prost(message, tag="4")]
18253        CurrentArgs(super::BeginFrameArgs),
18254        /// Only set if |state| is BEGIN_FRAME_USING.
18255        #[prost(message, tag="5")]
18256        LastArgs(super::BeginFrameArgs),
18257    }
18258}
18259#[derive(Clone, PartialEq, ::prost::Message)]
18260pub struct BeginFrameObserverState {
18261    #[prost(int64, optional, tag="1")]
18262    pub dropped_begin_frame_args: ::core::option::Option<i64>,
18263    #[prost(message, optional, tag="2")]
18264    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
18265}
18266#[derive(Clone, PartialEq, ::prost::Message)]
18267pub struct BeginFrameSourceState {
18268    #[prost(uint32, optional, tag="1")]
18269    pub source_id: ::core::option::Option<u32>,
18270    #[prost(bool, optional, tag="2")]
18271    pub paused: ::core::option::Option<bool>,
18272    #[prost(uint32, optional, tag="3")]
18273    pub num_observers: ::core::option::Option<u32>,
18274    #[prost(message, optional, tag="4")]
18275    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
18276}
18277#[derive(Clone, PartialEq, ::prost::Message)]
18278pub struct CompositorTimingHistory {
18279    #[prost(int64, optional, tag="1")]
18280    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
18281    #[prost(int64, optional, tag="2")]
18282    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
18283    #[prost(int64, optional, tag="3")]
18284    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
18285    #[prost(int64, optional, tag="4")]
18286    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
18287    #[prost(int64, optional, tag="5")]
18288    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
18289    #[prost(int64, optional, tag="6")]
18290    pub activate_estimate_delta_us: ::core::option::Option<i64>,
18291    #[prost(int64, optional, tag="7")]
18292    pub draw_estimate_delta_us: ::core::option::Option<i64>,
18293}
18294// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
18295
18296// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
18297
18298/// Details about ContentSettings trace events.
18299#[derive(Clone, PartialEq, ::prost::Message)]
18300pub struct ChromeContentSettingsEventInfo {
18301    /// The number of user defined hostname patterns for content settings at
18302    /// browser start. Similar to UMA histogram
18303    /// 'ContentSettings.NumberOfExceptions'.
18304    #[prost(uint32, optional, tag="1")]
18305    pub number_of_exceptions: ::core::option::Option<u32>,
18306}
18307// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
18308
18309/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
18310/// in
18311/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
18312/// instead.
18313#[derive(Clone, PartialEq, ::prost::Message)]
18314pub struct ChromeFrameReporter {
18315    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
18316    pub state: ::core::option::Option<i32>,
18317    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
18318    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
18319    pub reason: ::core::option::Option<i32>,
18320    #[prost(uint64, optional, tag="3")]
18321    pub frame_source: ::core::option::Option<u64>,
18322    #[prost(uint64, optional, tag="4")]
18323    pub frame_sequence: ::core::option::Option<u64>,
18324    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
18325    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
18326    /// smoothness.
18327    #[prost(bool, optional, tag="5")]
18328    pub affects_smoothness: ::core::option::Option<bool>,
18329    /// The type of active scroll.
18330    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
18331    pub scroll_state: ::core::option::Option<i32>,
18332    /// If any main thread animation is active during this frame.
18333    #[prost(bool, optional, tag="7")]
18334    pub has_main_animation: ::core::option::Option<bool>,
18335    /// If any compositor thread animation is active during this frame.
18336    #[prost(bool, optional, tag="8")]
18337    pub has_compositor_animation: ::core::option::Option<bool>,
18338    /// If any touch-driven UX (not scroll) is active during this frame.
18339    #[prost(bool, optional, tag="9")]
18340    pub has_smooth_input_main: ::core::option::Option<bool>,
18341    /// Whether the frame contained any missing content (i.e. whether there was
18342    /// checkerboarding in the frame).  If has_missing_content,
18343    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
18344    /// values, has_missing_content should equal checkerboarded_needs_raster ||
18345    /// checkerboarded_needs_record.
18346    #[prost(bool, optional, tag="10")]
18347    pub has_missing_content: ::core::option::Option<bool>,
18348    /// The id of layer_tree_host that the frame has been produced for.
18349    #[prost(uint64, optional, tag="11")]
18350    pub layer_tree_host_id: ::core::option::Option<u64>,
18351    /// If total latency of PipelineReporter exceeds a certain limit.
18352    #[prost(bool, optional, tag="12")]
18353    pub has_high_latency: ::core::option::Option<bool>,
18354    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
18355    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
18356    /// (i.e. dropped frames when there are no partial compositor updates).
18357    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
18358    pub frame_type: ::core::option::Option<i32>,
18359    /// The breakdown stage of PipelineReporter that is most likely accountable for
18360    /// high latency.
18361    #[prost(string, repeated, tag="14")]
18362    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18363    /// Whether the frame contained any content that is not fully rastered.
18364    #[prost(bool, optional, tag="15")]
18365    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
18366    /// Whether the frame contained any content that is not fully recorded.
18367    #[prost(bool, optional, tag="16")]
18368    pub checkerboarded_needs_record: ::core::option::Option<bool>,
18369    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
18370    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
18371    #[prost(int64, optional, tag="17")]
18372    pub surface_frame_trace_id: ::core::option::Option<i64>,
18373    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
18374    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
18375    #[prost(int64, optional, tag="18")]
18376    pub display_trace_id: ::core::option::Option<i64>,
18377}
18378/// Nested message and enum types in `ChromeFrameReporter`.
18379pub mod chrome_frame_reporter {
18380    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18381    #[repr(i32)]
18382    pub enum State {
18383        /// The frame did not have any updates to present.
18384        NoUpdateDesired = 0,
18385        /// The frame presented all the desired updates (i.e. any updates requested
18386        /// from both the compositor thread and main-threads were handled).
18387        PresentedAll = 1,
18388        /// The frame was presented with some updates, but also missed some updates
18389        /// (e.g. missed updates from the main-thread, but included updates from the
18390        /// compositor thread).
18391        PresentedPartial = 2,
18392        /// The frame was dropped, i.e. some updates were desired for the frame, but
18393        /// was not presented.
18394        Dropped = 3,
18395    }
18396    impl State {
18397        /// String value of the enum field names used in the ProtoBuf definition.
18398        ///
18399        /// The values are not transformed in any way and thus are considered stable
18400        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18401        pub fn as_str_name(&self) -> &'static str {
18402            match self {
18403                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
18404                State::PresentedAll => "STATE_PRESENTED_ALL",
18405                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
18406                State::Dropped => "STATE_DROPPED",
18407            }
18408        }
18409    }
18410    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18411    #[repr(i32)]
18412    pub enum FrameDropReason {
18413        ReasonUnspecified = 0,
18414        /// Frame was dropped by the display-compositor.
18415        /// The display-compositor may drop a frame some times (e.g. the frame missed
18416        /// the deadline, or was blocked on surface-sync, etc.)
18417        ReasonDisplayCompositor = 1,
18418        /// Frame was dropped because of the main-thread.
18419        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
18420        /// is running expensive javascript, or doing a lot of layout updates, etc.
18421        ReasonMainThread = 2,
18422        /// Frame was dropped by the client compositor.
18423        /// The client compositor can drop some frames too (e.g. attempting to
18424        /// recover latency, missing the deadline, etc.).
18425        ReasonClientCompositor = 3,
18426    }
18427    impl FrameDropReason {
18428        /// String value of the enum field names used in the ProtoBuf definition.
18429        ///
18430        /// The values are not transformed in any way and thus are considered stable
18431        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18432        pub fn as_str_name(&self) -> &'static str {
18433            match self {
18434                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
18435                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
18436                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
18437                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
18438            }
18439        }
18440    }
18441    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18442    #[repr(i32)]
18443    pub enum ScrollState {
18444        ScrollNone = 0,
18445        ScrollMainThread = 1,
18446        ScrollCompositorThread = 2,
18447        ScrollRaster = 3,
18448        /// Used when it can't be determined whether a scroll is in progress or not.
18449        ScrollUnknown = 4,
18450    }
18451    impl ScrollState {
18452        /// String value of the enum field names used in the ProtoBuf definition.
18453        ///
18454        /// The values are not transformed in any way and thus are considered stable
18455        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18456        pub fn as_str_name(&self) -> &'static str {
18457            match self {
18458                ScrollState::ScrollNone => "SCROLL_NONE",
18459                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
18460                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
18461                ScrollState::ScrollRaster => "SCROLL_RASTER",
18462                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
18463            }
18464        }
18465    }
18466    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18467    #[repr(i32)]
18468    pub enum FrameType {
18469        Forked = 0,
18470        Backfill = 1,
18471    }
18472    impl FrameType {
18473        /// String value of the enum field names used in the ProtoBuf definition.
18474        ///
18475        /// The values are not transformed in any way and thus are considered stable
18476        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18477        pub fn as_str_name(&self) -> &'static str {
18478            match self {
18479                FrameType::Forked => "FORKED",
18480                FrameType::Backfill => "BACKFILL",
18481            }
18482        }
18483    }
18484}
18485// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
18486
18487// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
18488
18489/// Details about one of Chrome's keyed services associated with the event.
18490#[derive(Clone, PartialEq, ::prost::Message)]
18491pub struct ChromeKeyedService {
18492    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
18493    /// Chrome, these are static strings known at compile time).
18494    #[prost(string, optional, tag="1")]
18495    pub name: ::core::option::Option<::prost::alloc::string::String>,
18496}
18497// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
18498
18499// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
18500
18501#[derive(Clone, PartialEq, ::prost::Message)]
18502pub struct ChromeLatencyInfo {
18503    #[prost(int64, optional, tag="1")]
18504    pub trace_id: ::core::option::Option<i64>,
18505    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
18506    pub step: ::core::option::Option<i32>,
18507    #[prost(int32, optional, tag="3")]
18508    pub frame_tree_node_id: ::core::option::Option<i32>,
18509    #[prost(message, repeated, tag="4")]
18510    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
18511    #[prost(bool, optional, tag="5")]
18512    pub is_coalesced: ::core::option::Option<bool>,
18513    #[prost(int64, optional, tag="6")]
18514    pub gesture_scroll_id: ::core::option::Option<i64>,
18515    #[prost(int64, optional, tag="7")]
18516    pub touch_id: ::core::option::Option<i64>,
18517    /// The type of input corresponding to this `ChromeLatencyInfo`.
18518    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
18519    pub input_type: ::core::option::Option<i32>,
18520}
18521/// Nested message and enum types in `ChromeLatencyInfo`.
18522pub mod chrome_latency_info {
18523    #[derive(Clone, PartialEq, ::prost::Message)]
18524    pub struct ComponentInfo {
18525        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
18526        pub component_type: ::core::option::Option<i32>,
18527        /// Microsecond timestamp in CLOCK_MONOTONIC domain
18528        #[prost(uint64, optional, tag="2")]
18529        pub time_us: ::core::option::Option<u64>,
18530    }
18531    /// NEXT ID: 12
18532    /// All step are optional but the enum is ordered (not by number) below in the
18533    /// order we expect them to appear if they are emitted in trace in a blocking
18534    /// fashion.
18535    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18536    #[repr(i32)]
18537    pub enum Step {
18538        Unspecified = 0,
18539        /// Emitted on the browser main thread.
18540        SendInputEventUi = 3,
18541        /// Happens on the renderer's compositor.
18542        HandleInputEventImpl = 5,
18543        DidHandleInputAndOverscroll = 8,
18544        /// Occurs on the Renderer's main thread.
18545        HandleInputEventMain = 4,
18546        MainThreadScrollUpdate = 2,
18547        HandleInputEventMainCommit = 1,
18548        /// Could be emitted on both the renderer's main OR compositor.
18549        HandledInputEventMainOrImpl = 9,
18550        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
18551        /// renderer's compositor and this will be emitted.
18552        HandledInputEventImpl = 10,
18553        /// Renderer's compositor.
18554        SwapBuffers = 6,
18555        /// Happens on the VizCompositor in the GPU process.
18556        DrawAndSwap = 7,
18557        /// Happens on the GPU main thread after the swap has completed.
18558        ///
18559        /// See above for NEXT ID, enum steps are not ordered by tag number.
18560        FinishedSwapBuffers = 11,
18561    }
18562    impl Step {
18563        /// String value of the enum field names used in the ProtoBuf definition.
18564        ///
18565        /// The values are not transformed in any way and thus are considered stable
18566        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18567        pub fn as_str_name(&self) -> &'static str {
18568            match self {
18569                Step::Unspecified => "STEP_UNSPECIFIED",
18570                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
18571                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
18572                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
18573                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
18574                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
18575                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
18576                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
18577                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
18578                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
18579                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
18580                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
18581            }
18582        }
18583    }
18584    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
18585    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
18586    /// practices.
18587    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18588    #[repr(i32)]
18589    pub enum LatencyComponentType {
18590        ComponentUnspecified = 0,
18591        ComponentInputEventLatencyBeginRwh = 1,
18592        ComponentInputEventLatencyScrollUpdateOriginal = 2,
18593        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
18594        ComponentInputEventLatencyOriginal = 4,
18595        ComponentInputEventLatencyUi = 5,
18596        ComponentInputEventLatencyRendererMain = 6,
18597        ComponentInputEventLatencyRenderingScheduledMain = 7,
18598        ComponentInputEventLatencyRenderingScheduledImpl = 8,
18599        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
18600        ComponentInputEventLatencyAckRwh = 10,
18601        ComponentInputEventLatencyRendererSwap = 11,
18602        ComponentDisplayCompositorReceivedFrame = 12,
18603        ComponentInputEventGpuSwapBuffer = 13,
18604        ComponentInputEventLatencyFrameSwap = 14,
18605    }
18606    impl LatencyComponentType {
18607        /// String value of the enum field names used in the ProtoBuf definition.
18608        ///
18609        /// The values are not transformed in any way and thus are considered stable
18610        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18611        pub fn as_str_name(&self) -> &'static str {
18612            match self {
18613                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
18614                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
18615                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
18616                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
18617                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
18618                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
18619                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
18620                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
18621                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
18622                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
18623                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
18624                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
18625                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
18626                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
18627                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
18628            }
18629        }
18630    }
18631    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18632    #[repr(i32)]
18633    pub enum InputType {
18634        UnspecifiedOrOther = 0,
18635        TouchMoved = 1,
18636        GestureScrollBegin = 2,
18637        GestureScrollUpdate = 3,
18638        GestureScrollEnd = 4,
18639        GestureTap = 5,
18640        GestureTapCancel = 6,
18641    }
18642    impl InputType {
18643        /// String value of the enum field names used in the ProtoBuf definition.
18644        ///
18645        /// The values are not transformed in any way and thus are considered stable
18646        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18647        pub fn as_str_name(&self) -> &'static str {
18648            match self {
18649                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
18650                InputType::TouchMoved => "TOUCH_MOVED",
18651                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
18652                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
18653                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
18654                InputType::GestureTap => "GESTURE_TAP",
18655                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
18656            }
18657        }
18658    }
18659}
18660// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
18661
18662// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
18663
18664/// Details about a legacy Chrome IPC message that is either sent by the event.
18665/// TODO(eseckler): Also use this message on the receiving side?
18666#[derive(Clone, PartialEq, ::prost::Message)]
18667pub struct ChromeLegacyIpc {
18668    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
18669    /// enum, e.g. FrameMsgStart,
18670    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
18671    pub message_class: ::core::option::Option<i32>,
18672    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
18673    /// IPC_MESSAGE_START macros.
18674    #[prost(uint32, optional, tag="2")]
18675    pub message_line: ::core::option::Option<u32>,
18676}
18677/// Nested message and enum types in `ChromeLegacyIpc`.
18678pub mod chrome_legacy_ipc {
18679    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18680    #[repr(i32)]
18681    pub enum MessageClass {
18682        ClassUnspecified = 0,
18683        ClassAutomation = 1,
18684        ClassFrame = 2,
18685        ClassPage = 3,
18686        ClassView = 4,
18687        ClassWidget = 5,
18688        ClassInput = 6,
18689        ClassTest = 7,
18690        ClassWorker = 8,
18691        ClassNacl = 9,
18692        ClassGpuChannel = 10,
18693        ClassMedia = 11,
18694        ClassPpapi = 12,
18695        ClassChrome = 13,
18696        ClassDrag = 14,
18697        ClassPrint = 15,
18698        ClassExtension = 16,
18699        ClassTextInputClient = 17,
18700        ClassBlinkTest = 18,
18701        ClassAccessibility = 19,
18702        ClassPrerender = 20,
18703        ClassChromoting = 21,
18704        ClassBrowserPlugin = 22,
18705        ClassAndroidWebView = 23,
18706        ClassNaclHost = 24,
18707        ClassEncryptedMedia = 25,
18708        ClassCast = 26,
18709        ClassGinJavaBridge = 27,
18710        ClassChromeUtilityPrinting = 28,
18711        ClassOzoneGpu = 29,
18712        ClassWebTest = 30,
18713        ClassNetworkHints = 31,
18714        ClassExtensionsGuestView = 32,
18715        ClassGuestView = 33,
18716        ClassMediaPlayerDelegate = 34,
18717        ClassExtensionWorker = 35,
18718        ClassSubresourceFilter = 36,
18719        ClassUnfreezableFrame = 37,
18720    }
18721    impl MessageClass {
18722        /// String value of the enum field names used in the ProtoBuf definition.
18723        ///
18724        /// The values are not transformed in any way and thus are considered stable
18725        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18726        pub fn as_str_name(&self) -> &'static str {
18727            match self {
18728                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
18729                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
18730                MessageClass::ClassFrame => "CLASS_FRAME",
18731                MessageClass::ClassPage => "CLASS_PAGE",
18732                MessageClass::ClassView => "CLASS_VIEW",
18733                MessageClass::ClassWidget => "CLASS_WIDGET",
18734                MessageClass::ClassInput => "CLASS_INPUT",
18735                MessageClass::ClassTest => "CLASS_TEST",
18736                MessageClass::ClassWorker => "CLASS_WORKER",
18737                MessageClass::ClassNacl => "CLASS_NACL",
18738                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
18739                MessageClass::ClassMedia => "CLASS_MEDIA",
18740                MessageClass::ClassPpapi => "CLASS_PPAPI",
18741                MessageClass::ClassChrome => "CLASS_CHROME",
18742                MessageClass::ClassDrag => "CLASS_DRAG",
18743                MessageClass::ClassPrint => "CLASS_PRINT",
18744                MessageClass::ClassExtension => "CLASS_EXTENSION",
18745                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
18746                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
18747                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
18748                MessageClass::ClassPrerender => "CLASS_PRERENDER",
18749                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
18750                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
18751                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
18752                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
18753                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
18754                MessageClass::ClassCast => "CLASS_CAST",
18755                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
18756                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
18757                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
18758                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
18759                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
18760                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
18761                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
18762                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
18763                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
18764                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
18765                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
18766            }
18767        }
18768    }
18769}
18770// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
18771
18772// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
18773
18774/// Details about Chrome message pump events
18775#[derive(Clone, PartialEq, ::prost::Message)]
18776pub struct ChromeMessagePump {
18777    /// True if there are sent messages in the queue.
18778    #[prost(bool, optional, tag="1")]
18779    pub sent_messages_in_queue: ::core::option::Option<bool>,
18780    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
18781    /// invoke.
18782    #[prost(uint64, optional, tag="2")]
18783    pub io_handler_location_iid: ::core::option::Option<u64>,
18784}
18785// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
18786
18787// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
18788
18789/// Contains information to identify mojo handling events. The trace events in
18790/// mojo are common for all mojo interfaces and this information is used to
18791/// identify who is the caller or callee.
18792#[derive(Clone, PartialEq, ::prost::Message)]
18793pub struct ChromeMojoEventInfo {
18794    /// Contains the interface name or the file name of the creator of a mojo
18795    /// handle watcher, recorded when an event if notified to the watcher. The code
18796    /// that runs within the track event belongs to the interface.
18797    #[prost(string, optional, tag="1")]
18798    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
18799    /// The hash of the IPC message that is being handled.
18800    #[prost(uint32, optional, tag="2")]
18801    pub ipc_hash: ::core::option::Option<u32>,
18802    /// A static string representing the mojo interface name of the message that is
18803    /// being handled.
18804    #[prost(string, optional, tag="3")]
18805    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
18806    /// Refers to an interned UnsymbolizedSourceLocation.
18807    /// The UnsymbolizedSourceLocation contains the interface method that's being
18808    /// handled, represented as a native symbol.
18809    /// The native symbol can be symbolized after the trace is recorded.
18810    /// Not using a symbolized source location for official Chromium builds to
18811    /// reduce binary size - emitting file/function names as strings into the
18812    /// trace requires storing them in the binary, which causes a significant
18813    /// binary size bloat for Chromium.
18814    #[prost(uint64, optional, tag="4")]
18815    pub mojo_interface_method_iid: ::core::option::Option<u64>,
18816    /// Indicate whether this is a message or reply.
18817    #[prost(bool, optional, tag="5")]
18818    pub is_reply: ::core::option::Option<bool>,
18819    /// The payload size of the message being sent through mojo messages.
18820    #[prost(uint64, optional, tag="6")]
18821    pub payload_size: ::core::option::Option<u64>,
18822    /// Represents the size of the message. Includes all headers and user payload.
18823    #[prost(uint64, optional, tag="7")]
18824    pub data_num_bytes: ::core::option::Option<u64>,
18825}
18826#[derive(Clone, PartialEq, ::prost::Message)]
18827pub struct ChromeRendererSchedulerState {
18828    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
18829    pub rail_mode: ::core::option::Option<i32>,
18830    #[prost(bool, optional, tag="2")]
18831    pub is_backgrounded: ::core::option::Option<bool>,
18832    #[prost(bool, optional, tag="3")]
18833    pub is_hidden: ::core::option::Option<bool>,
18834}
18835// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
18836
18837// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
18838
18839/// Details about a UI interaction initiated by the user, such as opening or
18840/// closing a tab or a context menu.
18841#[derive(Clone, PartialEq, ::prost::Message)]
18842pub struct ChromeUserEvent {
18843    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
18844    /// Chrome, these are usually static strings known at compile time, or
18845    /// concatenations of multiple such static strings).
18846    #[prost(string, optional, tag="1")]
18847    pub action: ::core::option::Option<::prost::alloc::string::String>,
18848    /// MD5 hash of the action string.
18849    #[prost(uint64, optional, tag="2")]
18850    pub action_hash: ::core::option::Option<u64>,
18851}
18852// End of protos/perfetto/trace/track_event/chrome_user_event.proto
18853
18854// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
18855
18856/// Details about HWNDMessageHandler trace events.
18857#[derive(Clone, PartialEq, ::prost::Message)]
18858pub struct ChromeWindowHandleEventInfo {
18859    #[prost(uint32, optional, tag="1")]
18860    pub dpi: ::core::option::Option<u32>,
18861    #[prost(uint32, optional, tag="2")]
18862    pub message_id: ::core::option::Option<u32>,
18863    #[prost(fixed64, optional, tag="3")]
18864    pub hwnd_ptr: ::core::option::Option<u64>,
18865}
18866// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
18867
18868// Begin of protos/perfetto/trace/track_event/screenshot.proto
18869
18870#[derive(Clone, PartialEq, ::prost::Message)]
18871pub struct Screenshot {
18872    #[prost(bytes="vec", optional, tag="1")]
18873    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18874}
18875// End of protos/perfetto/trace/track_event/screenshot.proto
18876
18877// Begin of protos/perfetto/trace/track_event/task_execution.proto
18878
18879/// TrackEvent arguments describing the execution of a task.
18880#[derive(Clone, PartialEq, ::prost::Message)]
18881pub struct TaskExecution {
18882    /// Source location that the task was posted from.
18883    /// interned SourceLocation.
18884    #[prost(uint64, optional, tag="1")]
18885    pub posted_from_iid: ::core::option::Option<u64>,
18886}
18887// Begin of protos/perfetto/trace/track_event/track_event.proto
18888
18889// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
18890// protos are still subject to change. Don't depend on them staying as they are.
18891
18892/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
18893/// which describe activity on a track, such as a thread or asynchronous event
18894/// track. The track is specified using separate TrackDescriptor messages and
18895/// referred to via the track's UUID.
18896///
18897/// A simple TrackEvent packet specifies a timestamp, category, name and type:
18898/// ```protobuf
18899///    trace_packet {
18900///      timestamp: 1000
18901///      track_event {
18902///        categories: \["my_cat"\]
18903///        name: "my_event"
18904///        type: TYPE_INSTANT
18905///       }
18906///     }
18907/// ```
18908///
18909/// To associate an event with a custom track (e.g. a thread), the track is
18910/// defined in a separate packet and referred to from the TrackEvent by its UUID:
18911/// ```protobuf
18912///    trace_packet {
18913///      track_descriptor {
18914///        track_uuid: 1234
18915///        name: "my_track"
18916///
18917///        // Optionally, associate the track with a thread.
18918///        thread_descriptor {
18919///          pid: 10
18920///          tid: 10
18921///          ..
18922///        }
18923///      }
18924///    }
18925/// ```
18926///
18927/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
18928///
18929/// ```protobuf
18930///    trace_packet {
18931///      timestamp: 1200
18932///      track_event {
18933///        track_uuid: 1234
18934///        categories: \["my_cat"\]
18935///        name: "my_slice"
18936///        type: TYPE_SLICE_BEGIN
18937///      }
18938///    }
18939///    trace_packet {
18940///      timestamp: 1400
18941///      track_event {
18942///        track_uuid: 1234
18943///        type: TYPE_SLICE_END
18944///      }
18945///    }
18946/// ```
18947/// TrackEvents also support optimizations to reduce data repetition and encoded
18948/// data size, e.g. through data interning (names, categories, ...) and delta
18949/// encoding of timestamps/counters. For details, see the InternedData message.
18950/// Further, default values for attributes of events on the same sequence (e.g.
18951/// their default track association) can be emitted as part of a
18952/// TrackEventDefaults message.
18953///
18954/// Next reserved id: 13 (up to 15). Next id: 55.
18955#[derive(Clone, PartialEq, ::prost::Message)]
18956pub struct TrackEvent {
18957    /// Names of categories of the event. In the client library, categories are a
18958    /// way to turn groups of individual events on or off.
18959    /// interned EventCategoryName.
18960    #[prost(uint64, repeated, packed="false", tag="3")]
18961    pub category_iids: ::prost::alloc::vec::Vec<u64>,
18962    /// non-interned variant.
18963    #[prost(string, repeated, tag="22")]
18964    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18965    #[prost(enumeration="track_event::Type", optional, tag="9")]
18966    pub r#type: ::core::option::Option<i32>,
18967    /// Identifies the track of the event. The default value may be overridden
18968    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
18969    /// sequence (in most cases sequence = one thread). If no value is specified
18970    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
18971    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
18972    #[prost(uint64, optional, tag="11")]
18973    pub track_uuid: ::core::option::Option<u64>,
18974    /// To encode counter values more efficiently, we support attaching additional
18975    /// counter values to a TrackEvent of any type. All values will share the same
18976    /// timestamp specified in the TracePacket. The value at
18977    /// extra_counter_values\[N\] is for the counter track referenced by
18978    /// extra_counter_track_uuids\[N\].
18979    ///
18980    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
18981    /// should always be equal or more uuids than values. It is valid to set more
18982    /// uuids (e.g. via defaults) than values. If uuids are specified in
18983    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
18984    /// default uuid list.
18985    ///
18986    /// For example, this allows snapshotting the thread time clock at each
18987    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
18988    #[prost(uint64, repeated, packed="false", tag="31")]
18989    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18990    #[prost(int64, repeated, packed="false", tag="12")]
18991    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
18992    /// Counter snapshots using floating point instead of integer values.
18993    #[prost(uint64, repeated, packed="false", tag="45")]
18994    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
18995    #[prost(double, repeated, packed="false", tag="46")]
18996    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
18997    /// IDs of flows originating, passing through, or ending at this event.
18998    /// Flow IDs are global within a trace.
18999    ///
19000    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
19001    /// an input event may be handled on one thread but cause another event on
19002    /// a different thread - a flow between the two events can associate them.
19003    ///
19004    /// The direction of the flows between events is inferred from the events'
19005    /// timestamps. The earliest event with the same flow ID becomes the source
19006    /// of the flow. Any events thereafter are intermediate steps of the flow,
19007    /// until the flow terminates at the last event with the flow ID.
19008    ///
19009    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
19010    /// that the same ID can later be reused for another flow.
19011    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
19012    #[deprecated]
19013    #[prost(uint64, repeated, packed="false", tag="36")]
19014    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
19015    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
19016    /// consumption.
19017    #[prost(fixed64, repeated, packed="false", tag="47")]
19018    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
19019    /// List of flow ids which should terminate on this event, otherwise same as
19020    /// |flow_ids|.
19021    /// Any one flow ID should be either listed as part of |flow_ids| OR
19022    /// |terminating_flow_ids|, not both.
19023    /// DEPRECATED. Only kept for backwards compatibility.  Use
19024    /// |terminating_flow_ids|.
19025    #[deprecated]
19026    #[prost(uint64, repeated, packed="false", tag="42")]
19027    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
19028    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
19029    /// "terminating_flow_ids" to reduce memory consumption.
19030    #[prost(fixed64, repeated, packed="false", tag="48")]
19031    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
19032    // ---------------------------------------------------------------------------
19033    // TrackEvent arguments:
19034    // ---------------------------------------------------------------------------
19035
19036    /// Unstable key/value annotations shown in the trace viewer but not intended
19037    /// for metrics use.
19038    #[prost(message, repeated, tag="4")]
19039    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
19040    /// Typed event arguments:
19041    #[prost(message, optional, tag="5")]
19042    pub task_execution: ::core::option::Option<TaskExecution>,
19043    #[prost(message, optional, tag="21")]
19044    pub log_message: ::core::option::Option<LogMessage>,
19045    #[prost(message, optional, tag="24")]
19046    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
19047    #[prost(message, optional, tag="25")]
19048    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
19049    #[prost(message, optional, tag="26")]
19050    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
19051    #[prost(message, optional, tag="27")]
19052    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
19053    #[prost(message, optional, tag="28")]
19054    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
19055    #[prost(message, optional, tag="29")]
19056    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
19057    /// DEPRECATED. Only kept for backwards compatibility. Use the
19058    /// |ChromeTrackEvent.frame_reporter| extension in
19059    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19060    /// instead.
19061    #[deprecated]
19062    #[prost(message, optional, tag="32")]
19063    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
19064    #[prost(message, optional, tag="39")]
19065    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
19066    #[prost(message, optional, tag="40")]
19067    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
19068    #[prost(message, optional, tag="41")]
19069    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
19070    #[prost(message, optional, tag="43")]
19071    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
19072    #[prost(message, optional, tag="49")]
19073    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
19074    #[prost(message, optional, tag="50")]
19075    pub screenshot: ::core::option::Option<Screenshot>,
19076    #[prost(message, optional, tag="35")]
19077    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
19078    #[prost(message, optional, tag="38")]
19079    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
19080    #[prost(message, optional, tag="6")]
19081    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
19082    /// Optional name of the event for its display in trace viewer. May be left
19083    /// unspecified for events with typed arguments.
19084    ///
19085    /// Note that metrics should not rely on event names, as they are prone to
19086    /// changing. Instead, they should use typed arguments to identify the events
19087    /// they are interested in.
19088    #[prost(oneof="track_event::NameField", tags="10, 23")]
19089    pub name_field: ::core::option::Option<track_event::NameField>,
19090    /// A new value for a counter track. |track_uuid| should refer to a track with
19091    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
19092    /// efficient encoding of counter values that are sampled at the beginning/end
19093    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
19094    /// Counter values can optionally be encoded in as delta values (positive or
19095    /// negative) on each packet sequence (see CounterIncrementalBase).
19096    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
19097    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
19098    /// An opaque identifier to correlate this slice with other slices that are
19099    /// considered part of the same logical operation, even if they are not
19100    /// causally connected. Examples uses of a correlation id might be the number
19101    /// of frame going through various stages of rendering in a GPU, the id for an
19102    /// RPC request going through a distributed system, or the id of a network
19103    /// request going through various stages of processing by the kernel.
19104    ///
19105    /// NOTE: if the events *are* causually connected, you probably want to use
19106    /// flows instead of OR in addition to correlation ids.
19107    ///
19108    /// UIs can use this identifier to visually link these slices, for instance,
19109    /// by assigning them a consistent color or highlighting the entire correlated
19110    /// set when one slice is hovered.
19111    ///
19112    /// Only one field within this 'oneof' should be set to define the correlation.
19113    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
19114    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
19115    /// This field is used only if the source location represents the function that
19116    /// executes during this event.
19117    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
19118    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
19119    // ---------------------------------------------------------------------------
19120    // Deprecated / legacy event fields, which will be removed in the future:
19121    // ---------------------------------------------------------------------------
19122
19123    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
19124    /// TracePacket instead.
19125    ///
19126    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
19127    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
19128    pub timestamp: ::core::option::Option<track_event::Timestamp>,
19129    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19130    /// encode thread time instead.
19131    ///
19132    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
19133    /// microseconds.
19134    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
19135    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
19136    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19137    /// encode thread instruction count instead.
19138    ///
19139    /// Value of the instruction counter for the current thread.
19140    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
19141    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
19142}
19143/// Nested message and enum types in `TrackEvent`.
19144pub mod track_event {
19145    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
19146    /// event attributes are initially simply proxied for conversion to a JSON
19147    /// trace. We intend to gradually transition these attributes to similar native
19148    /// features in TrackEvent (e.g. async + flow events), or deprecate them
19149    /// without replacement where transition is unsuitable.
19150    ///
19151    /// Next reserved id: 16 (up to 16).
19152    /// Next id: 20.
19153    #[derive(Clone, PartialEq, ::prost::Message)]
19154    pub struct LegacyEvent {
19155        /// Deprecated, use TrackEvent::name(_iid) instead.
19156        /// interned EventName.
19157        #[prost(uint64, optional, tag="1")]
19158        pub name_iid: ::core::option::Option<u64>,
19159        #[prost(int32, optional, tag="2")]
19160        pub phase: ::core::option::Option<i32>,
19161        #[prost(int64, optional, tag="3")]
19162        pub duration_us: ::core::option::Option<i64>,
19163        #[prost(int64, optional, tag="4")]
19164        pub thread_duration_us: ::core::option::Option<i64>,
19165        /// Elapsed retired instruction count during the event.
19166        #[prost(int64, optional, tag="15")]
19167        pub thread_instruction_delta: ::core::option::Option<i64>,
19168        /// Additional optional scope for |id|.
19169        #[prost(string, optional, tag="7")]
19170        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
19171        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
19172        #[prost(bool, optional, tag="9")]
19173        pub use_async_tts: ::core::option::Option<bool>,
19174        /// Idenfifies a flow. Flow events with the same bind_id are connected.
19175        #[prost(uint64, optional, tag="8")]
19176        pub bind_id: ::core::option::Option<u64>,
19177        /// Use the enclosing slice as binding point for a flow end event instead of
19178        /// the next slice. Flow start/step events always bind to the enclosing
19179        /// slice.
19180        #[prost(bool, optional, tag="12")]
19181        pub bind_to_enclosing: ::core::option::Option<bool>,
19182        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
19183        pub flow_direction: ::core::option::Option<i32>,
19184        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
19185        pub instant_event_scope: ::core::option::Option<i32>,
19186        /// Override the pid/tid if the writer needs to emit events on behalf of
19187        /// another process/thread. This should be the exception. Normally, the
19188        /// pid+tid from ThreadDescriptor is used.
19189        #[prost(int32, optional, tag="18")]
19190        pub pid_override: ::core::option::Option<i32>,
19191        #[prost(int32, optional, tag="19")]
19192        pub tid_override: ::core::option::Option<i32>,
19193        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
19194        pub id: ::core::option::Option<legacy_event::Id>,
19195    }
19196    /// Nested message and enum types in `LegacyEvent`.
19197    pub mod legacy_event {
19198        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19199        #[repr(i32)]
19200        pub enum FlowDirection {
19201            FlowUnspecified = 0,
19202            FlowIn = 1,
19203            FlowOut = 2,
19204            FlowInout = 3,
19205        }
19206        impl FlowDirection {
19207            /// String value of the enum field names used in the ProtoBuf definition.
19208            ///
19209            /// The values are not transformed in any way and thus are considered stable
19210            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19211            pub fn as_str_name(&self) -> &'static str {
19212                match self {
19213                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
19214                    FlowDirection::FlowIn => "FLOW_IN",
19215                    FlowDirection::FlowOut => "FLOW_OUT",
19216                    FlowDirection::FlowInout => "FLOW_INOUT",
19217                }
19218            }
19219        }
19220        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19221        #[repr(i32)]
19222        pub enum InstantEventScope {
19223            ScopeUnspecified = 0,
19224            ScopeGlobal = 1,
19225            ScopeProcess = 2,
19226            ScopeThread = 3,
19227        }
19228        impl InstantEventScope {
19229            /// String value of the enum field names used in the ProtoBuf definition.
19230            ///
19231            /// The values are not transformed in any way and thus are considered stable
19232            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19233            pub fn as_str_name(&self) -> &'static str {
19234                match self {
19235                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19236                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
19237                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
19238                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
19239                }
19240            }
19241        }
19242        #[derive(Clone, PartialEq, ::prost::Oneof)]
19243        pub enum Id {
19244            #[prost(uint64, tag="6")]
19245            UnscopedId(u64),
19246            #[prost(uint64, tag="10")]
19247            LocalId(u64),
19248            #[prost(uint64, tag="11")]
19249            GlobalId(u64),
19250        }
19251    }
19252    // TODO(eseckler): Support using binary symbols for category/event names.
19253
19254    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
19255    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19256    #[repr(i32)]
19257    pub enum Type {
19258        Unspecified = 0,
19259        /// Slice events are events that have a begin and end timestamp, i.e. a
19260        /// duration. They can be nested similar to a callstack: If, on the same
19261        /// track, event B begins after event A, but before A ends, B is a child
19262        /// event of A and will be drawn as a nested event underneath A in the UI.
19263        /// Note that child events should always end before their parents (e.g. B
19264        /// before A).
19265        ///
19266        /// Each slice event is formed by a pair of BEGIN + END events. The END event
19267        /// does not need to repeat any TrackEvent fields it has in common with its
19268        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
19269        /// END pair will be merged during trace import.
19270        ///
19271        /// Note that we deliberately chose not to support COMPLETE events (which
19272        /// would specify a duration directly) since clients would need to delay
19273        /// writing them until the slice is completed, which can result in reordered
19274        /// events in the trace and loss of unfinished events at the end of a trace.
19275        SliceBegin = 1,
19276        SliceEnd = 2,
19277        /// Instant events are nestable events without duration. They can be children
19278        /// of slice events on the same track.
19279        Instant = 3,
19280        /// Event that provides a value for a counter track. |track_uuid| should
19281        /// refer to a counter track and |counter_value| set to the new value. Note
19282        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
19283        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
19284        Counter = 4,
19285    }
19286    impl Type {
19287        /// String value of the enum field names used in the ProtoBuf definition.
19288        ///
19289        /// The values are not transformed in any way and thus are considered stable
19290        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19291        pub fn as_str_name(&self) -> &'static str {
19292            match self {
19293                Type::Unspecified => "TYPE_UNSPECIFIED",
19294                Type::SliceBegin => "TYPE_SLICE_BEGIN",
19295                Type::SliceEnd => "TYPE_SLICE_END",
19296                Type::Instant => "TYPE_INSTANT",
19297                Type::Counter => "TYPE_COUNTER",
19298            }
19299        }
19300    }
19301    /// Optional name of the event for its display in trace viewer. May be left
19302    /// unspecified for events with typed arguments.
19303    ///
19304    /// Note that metrics should not rely on event names, as they are prone to
19305    /// changing. Instead, they should use typed arguments to identify the events
19306    /// they are interested in.
19307    #[derive(Clone, PartialEq, ::prost::Oneof)]
19308    pub enum NameField {
19309        /// interned EventName.
19310        #[prost(uint64, tag="10")]
19311        NameIid(u64),
19312        /// non-interned variant.
19313        #[prost(string, tag="23")]
19314        Name(::prost::alloc::string::String),
19315    }
19316    /// A new value for a counter track. |track_uuid| should refer to a track with
19317    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
19318    /// efficient encoding of counter values that are sampled at the beginning/end
19319    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
19320    /// Counter values can optionally be encoded in as delta values (positive or
19321    /// negative) on each packet sequence (see CounterIncrementalBase).
19322    #[derive(Clone, PartialEq, ::prost::Oneof)]
19323    pub enum CounterValueField {
19324        #[prost(int64, tag="30")]
19325        CounterValue(i64),
19326        #[prost(double, tag="44")]
19327        DoubleCounterValue(f64),
19328    }
19329    /// An opaque identifier to correlate this slice with other slices that are
19330    /// considered part of the same logical operation, even if they are not
19331    /// causally connected. Examples uses of a correlation id might be the number
19332    /// of frame going through various stages of rendering in a GPU, the id for an
19333    /// RPC request going through a distributed system, or the id of a network
19334    /// request going through various stages of processing by the kernel.
19335    ///
19336    /// NOTE: if the events *are* causually connected, you probably want to use
19337    /// flows instead of OR in addition to correlation ids.
19338    ///
19339    /// UIs can use this identifier to visually link these slices, for instance,
19340    /// by assigning them a consistent color or highlighting the entire correlated
19341    /// set when one slice is hovered.
19342    ///
19343    /// Only one field within this 'oneof' should be set to define the correlation.
19344    #[derive(Clone, PartialEq, ::prost::Oneof)]
19345    pub enum CorrelationIdField {
19346        /// A 64-bit unsigned integer used as the correlation ID.
19347        ///
19348        /// Best for performance and compact traces if the identifier is naturally
19349        /// numerical or can be easily mapped to one by the trace producer.
19350        #[prost(uint64, tag="52")]
19351        CorrelationId(u64),
19352        /// A string value used as the correlation ID.
19353        ///
19354        /// Offers maximum flexibility for human-readable or complex identifiers
19355        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
19356        /// size. For frequently repeated string identifiers, consider
19357        /// 'correlation_id_string_iid'.
19358        #[prost(string, tag="53")]
19359        CorrelationIdStr(::prost::alloc::string::String),
19360        /// An interned string identifier (an IID) for correlation.
19361        ///
19362        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
19363        /// field within the packet sequence's InternedData. This approach combines
19364        /// the descriptiveness and uniqueness of strings with the efficiency of
19365        /// integer IDs for storage and comparison, especially for identifiers that
19366        /// repeat across many events.
19367        #[prost(uint64, tag="54")]
19368        CorrelationIdStrIid(u64),
19369    }
19370    /// This field is used only if the source location represents the function that
19371    /// executes during this event.
19372    #[derive(Clone, PartialEq, ::prost::Oneof)]
19373    pub enum SourceLocationField {
19374        /// Non-interned field.
19375        #[prost(message, tag="33")]
19376        SourceLocation(super::SourceLocation),
19377        /// Interned field.
19378        #[prost(uint64, tag="34")]
19379        SourceLocationIid(u64),
19380    }
19381    // ---------------------------------------------------------------------------
19382    // Deprecated / legacy event fields, which will be removed in the future:
19383    // ---------------------------------------------------------------------------
19384
19385    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
19386    /// TracePacket instead.
19387    ///
19388    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
19389    #[derive(Clone, PartialEq, ::prost::Oneof)]
19390    pub enum Timestamp {
19391        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
19392        /// calculate the absolute timestamp value, sum up all delta values of the
19393        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
19394        /// the |reference_timestamp| in ThreadDescriptor. This value should always
19395        /// be positive.
19396        #[prost(int64, tag="1")]
19397        TimestampDeltaUs(i64),
19398        /// Absolute value (e.g. a manually specified timestamp in the macro).
19399        /// This is a one-off value that does not affect delta timestamp computation
19400        /// in subsequent TrackEvents.
19401        #[prost(int64, tag="16")]
19402        TimestampAbsoluteUs(i64),
19403    }
19404    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19405    /// encode thread time instead.
19406    ///
19407    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
19408    /// microseconds.
19409    #[derive(Clone, PartialEq, ::prost::Oneof)]
19410    pub enum ThreadTime {
19411        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
19412        /// calculate the absolute timestamp value, sum up all delta values of the
19413        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
19414        /// the |reference_timestamp| in ThreadDescriptor. This value should always
19415        /// be positive.
19416        #[prost(int64, tag="2")]
19417        ThreadTimeDeltaUs(i64),
19418        /// This is a one-off absolute value that does not affect delta timestamp
19419        /// computation in subsequent TrackEvents.
19420        #[prost(int64, tag="17")]
19421        ThreadTimeAbsoluteUs(i64),
19422    }
19423    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
19424    /// encode thread instruction count instead.
19425    ///
19426    /// Value of the instruction counter for the current thread.
19427    #[derive(Clone, PartialEq, ::prost::Oneof)]
19428    pub enum ThreadInstructionCount {
19429        /// Same encoding as |thread_time| field above.
19430        #[prost(int64, tag="8")]
19431        ThreadInstructionCountDelta(i64),
19432        #[prost(int64, tag="20")]
19433        ThreadInstructionCountAbsolute(i64),
19434    }
19435}
19436/// Default values for fields of all TrackEvents on the same packet sequence.
19437/// Should be emitted as part of TracePacketDefaults whenever incremental state
19438/// is cleared. It's defined here because field IDs should match those of the
19439/// corresponding fields in TrackEvent.
19440#[derive(Clone, PartialEq, ::prost::Message)]
19441pub struct TrackEventDefaults {
19442    #[prost(uint64, optional, tag="11")]
19443    pub track_uuid: ::core::option::Option<u64>,
19444    #[prost(uint64, repeated, packed="false", tag="31")]
19445    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19446    #[prost(uint64, repeated, packed="false", tag="45")]
19447    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
19448}
19449// --------------------
19450// Interned data types:
19451// --------------------
19452
19453#[derive(Clone, PartialEq, ::prost::Message)]
19454pub struct EventCategory {
19455    #[prost(uint64, optional, tag="1")]
19456    pub iid: ::core::option::Option<u64>,
19457    #[prost(string, optional, tag="2")]
19458    pub name: ::core::option::Option<::prost::alloc::string::String>,
19459}
19460#[derive(Clone, PartialEq, ::prost::Message)]
19461pub struct EventName {
19462    #[prost(uint64, optional, tag="1")]
19463    pub iid: ::core::option::Option<u64>,
19464    #[prost(string, optional, tag="2")]
19465    pub name: ::core::option::Option<::prost::alloc::string::String>,
19466}
19467// End of protos/perfetto/trace/track_event/track_event.proto
19468
19469// Begin of protos/perfetto/trace/interned_data/interned_data.proto
19470
19471// ------------------------------ DATA INTERNING: ------------------------------
19472// Interning indexes are built up gradually by adding the entries contained in
19473// each TracePacket of the same packet sequence (packets emitted by the same
19474// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
19475// can only refer to interned data from other packets in the same sequence.
19476//
19477// The writer will emit new entries when it encounters new internable values
19478// that aren't yet in the index. Data in current and subsequent TracePackets can
19479// then refer to the entry by its position (interning ID, abbreviated "iid") in
19480// its index. An interning ID with value 0 is considered invalid (not set).
19481//
19482// Because of the incremental build-up, the interning index will miss data when
19483// TracePackets are lost, e.g. because a chunk was overridden in the central
19484// ring buffer. To avoid invalidation of the whole trace in such a case, the
19485// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
19486// When packet loss occurs, the reader will only lose interning data up to the
19487// next reset.
19488// -----------------------------------------------------------------------------
19489
19490/// Message that contains new entries for the interning indices of a packet
19491/// sequence.
19492///
19493/// The writer will usually emit new entries in the same TracePacket that first
19494/// refers to them (since the last reset of interning state). They may also be
19495/// emitted proactively in advance of referring to them in later packets.
19496///
19497/// Next reserved id: 8 (up to 15).
19498/// Next id: 44.
19499///
19500/// TODO(eseckler): Replace iid fields inside interned messages with
19501/// map<iid, message> type fields in InternedData.
19502#[derive(Clone, PartialEq, ::prost::Message)]
19503pub struct InternedData {
19504    /// Each field's message type needs to specify an |iid| field, which is the ID
19505    /// of the entry in the field's interning index. Each field constructs its own
19506    /// index, thus interning IDs are scoped to the tracing session and field
19507    /// (usually as a counter for efficient var-int encoding), and optionally to
19508    /// the incremental state generation of the packet sequence.
19509    #[prost(message, repeated, tag="1")]
19510    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
19511    #[prost(message, repeated, tag="2")]
19512    pub event_names: ::prost::alloc::vec::Vec<EventName>,
19513    #[prost(message, repeated, tag="3")]
19514    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
19515    #[prost(message, repeated, tag="27")]
19516    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
19517    #[prost(message, repeated, tag="4")]
19518    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
19519    #[prost(message, repeated, tag="28")]
19520    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
19521    #[prost(message, repeated, tag="20")]
19522    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
19523    #[prost(message, repeated, tag="25")]
19524    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
19525    // Note: field IDs up to 15 should be used for frequent data only.
19526
19527    /// Build IDs of exectuable files.
19528    #[prost(message, repeated, tag="16")]
19529    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
19530    /// Paths to executable files.
19531    #[prost(message, repeated, tag="17")]
19532    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
19533    /// Paths to source files.
19534    #[prost(message, repeated, tag="18")]
19535    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
19536    /// Names of functions used in frames below.
19537    #[prost(message, repeated, tag="5")]
19538    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
19539    /// Executable files mapped into processes.
19540    #[prost(message, repeated, tag="19")]
19541    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
19542    /// Frames of callstacks of a program.
19543    #[prost(message, repeated, tag="6")]
19544    pub frames: ::prost::alloc::vec::Vec<Frame>,
19545    /// A callstack of a program.
19546    #[prost(message, repeated, tag="7")]
19547    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
19548    /// Additional Vulkan information sent in a VulkanMemoryEvent message
19549    #[prost(message, repeated, tag="22")]
19550    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
19551    /// Graphics context of a render stage event.  This represent the GL
19552    /// context for an OpenGl app or the VkDevice for a Vulkan app.
19553    #[prost(message, repeated, tag="23")]
19554    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
19555    /// Description of a GPU hardware queue or render stage.
19556    #[prost(message, repeated, tag="24")]
19557    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
19558    /// This is set when FtraceConfig.symbolize_ksyms = true.
19559    /// The id of each symbol the number that will be reported in ftrace events
19560    /// like sched_block_reason.caller and is obtained from a monotonic counter.
19561    /// The same symbol can have different indexes in different bundles.
19562    /// This is is NOT the real address. This is to avoid disclosing KASLR through
19563    /// traces.
19564    #[prost(message, repeated, tag="26")]
19565    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
19566    /// Interned string values in the DebugAnnotation proto.
19567    #[prost(message, repeated, tag="29")]
19568    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
19569    /// Interned packet context for android.network_packets.
19570    #[prost(message, repeated, tag="30")]
19571    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
19572    /// Interned name of a js function. We only intern js functions as there is a
19573    /// lot of duplication for them, but less so for other strings in the V8 data
19574    /// source.
19575    #[prost(message, repeated, tag="31")]
19576    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
19577    /// Js functions can be emitted multiple times for various compilation tiers,
19578    /// so it makes sense to deduplicate all this.
19579    #[prost(message, repeated, tag="32")]
19580    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
19581    /// Interned JS script (there is one associated with each JS function)
19582    #[prost(message, repeated, tag="33")]
19583    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
19584    /// Interned Wasm script (there is one associated with each Wasm function)
19585    #[prost(message, repeated, tag="34")]
19586    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
19587    /// Every V8 event is associated with an isolate, intern the isolate to remove
19588    /// duplication.
19589    #[prost(message, repeated, tag="35")]
19590    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
19591    /// Interned protolog strings args.
19592    #[prost(message, repeated, tag="36")]
19593    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
19594    /// Interned protolog stacktraces.
19595    #[prost(message, repeated, tag="37")]
19596    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
19597    /// viewcapture
19598    #[prost(message, repeated, tag="38")]
19599    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
19600    #[prost(message, repeated, tag="39")]
19601    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
19602    #[prost(message, repeated, tag="40")]
19603    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
19604    #[prost(message, repeated, tag="41")]
19605    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
19606    /// Interned context for android.app_wakelocks.
19607    #[prost(message, repeated, tag="42")]
19608    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
19609    /// Interned correlation ids in track_event.
19610    #[prost(message, repeated, tag="43")]
19611    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
19612}
19613// End of protos/perfetto/trace/interned_data/interned_data.proto
19614
19615// Begin of protos/perfetto/trace/memory_graph.proto
19616
19617// Message definitions for app-reported memory breakdowns. At the moment, this
19618// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
19619// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
19620// This is unrelated to the native or java heap profilers (those protos live
19621// in //protos/perfetto/trace/profiling/).
19622
19623#[derive(Clone, PartialEq, ::prost::Message)]
19624pub struct MemoryTrackerSnapshot {
19625    /// Unique ID that represents the global memory dump.
19626    #[prost(uint64, optional, tag="1")]
19627    pub global_dump_id: ::core::option::Option<u64>,
19628    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
19629    pub level_of_detail: ::core::option::Option<i32>,
19630    #[prost(message, repeated, tag="3")]
19631    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
19632}
19633/// Nested message and enum types in `MemoryTrackerSnapshot`.
19634pub mod memory_tracker_snapshot {
19635    /// Memory snapshot of a process. The snapshot contains memory data that is
19636    /// from 2 different sources, namely system stats and instrumentation stats.
19637    /// The system memory usage stats come from the OS based on standard API
19638    /// available in the platform to query memory usage. The instrumentation stats
19639    /// are added by instrumenting specific piece of code which tracks memory
19640    /// allocations and deallocations made by a small sub-system within the
19641    /// application.
19642    /// The system stats of the global memory snapshot are recorded as part of
19643    /// ProcessStats and SmapsPacket fields in trace packet with the same
19644    /// timestamp.
19645    #[derive(Clone, PartialEq, ::prost::Message)]
19646    pub struct ProcessSnapshot {
19647        /// Process ID of the process
19648        #[prost(int32, optional, tag="1")]
19649        pub pid: ::core::option::Option<i32>,
19650        #[prost(message, repeated, tag="2")]
19651        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
19652        #[prost(message, repeated, tag="3")]
19653        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
19654    }
19655    /// Nested message and enum types in `ProcessSnapshot`.
19656    pub mod process_snapshot {
19657        // Memory dumps are represented as a graph of memory nodes which contain
19658        // statistics. To avoid double counting the same memory across different
19659        // nodes, edges are used to mark nodes that account for the same memory. See
19660        // this doc for examples of the usage:
19661        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
19662
19663        /// A single node in the memory graph.
19664        #[derive(Clone, PartialEq, ::prost::Message)]
19665        pub struct MemoryNode {
19666            /// Unique ID of the node across all processes involved in the global
19667            /// memory dump. The ID is only unique within this particular global dump
19668            /// identified by GlobalMemoryDumpPacket.global_dump_id.
19669            #[prost(uint64, optional, tag="1")]
19670            pub id: ::core::option::Option<u64>,
19671            /// Absolute name is a unique name for the memory node within the process
19672            /// with ProcessMemoryDump.pid. The name can contain multiple parts
19673            /// separated by '/', which traces the edges of the node from the root
19674            /// node.
19675            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
19676            /// node "buffer1" in a graph structure of:
19677            ///    root -> partition_allocator -> array_buffers -> buffer1.
19678            #[prost(string, optional, tag="2")]
19679            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
19680            /// A weak node means that the instrumentation that added the current node
19681            /// is unsure about the existence of the actual memory. Unless a "strong"
19682            /// (non-weak is default) node that has an edge to the current node exists
19683            /// in the current global dump, the current node will be discarded.
19684            #[prost(bool, optional, tag="3")]
19685            pub weak: ::core::option::Option<bool>,
19686            /// Size of the node in bytes, used to compute the effective size of the
19687            /// nodes without double counting.
19688            #[prost(uint64, optional, tag="4")]
19689            pub size_bytes: ::core::option::Option<u64>,
19690            #[prost(message, repeated, tag="5")]
19691            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
19692        }
19693        /// Nested message and enum types in `MemoryNode`.
19694        pub mod memory_node {
19695            /// Entries in the memory node that contain statistics and additional
19696            /// debuggable information about the memory. The size of the node is
19697            /// tracked separately in the |size_bytes| field.
19698            #[derive(Clone, PartialEq, ::prost::Message)]
19699            pub struct MemoryNodeEntry {
19700                #[prost(string, optional, tag="1")]
19701                pub name: ::core::option::Option<::prost::alloc::string::String>,
19702                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
19703                pub units: ::core::option::Option<i32>,
19704                /// Contains either one of uint64 or string value.
19705                #[prost(uint64, optional, tag="3")]
19706                pub value_uint64: ::core::option::Option<u64>,
19707                #[prost(string, optional, tag="4")]
19708                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
19709            }
19710            /// Nested message and enum types in `MemoryNodeEntry`.
19711            pub mod memory_node_entry {
19712                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19713                #[repr(i32)]
19714                pub enum Units {
19715                    Unspecified = 0,
19716                    Bytes = 1,
19717                    Count = 2,
19718                }
19719                impl Units {
19720                    /// String value of the enum field names used in the ProtoBuf definition.
19721                    ///
19722                    /// The values are not transformed in any way and thus are considered stable
19723                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19724                    pub fn as_str_name(&self) -> &'static str {
19725                        match self {
19726                            Units::Unspecified => "UNSPECIFIED",
19727                            Units::Bytes => "BYTES",
19728                            Units::Count => "COUNT",
19729                        }
19730                    }
19731                }
19732            }
19733        }
19734        /// A directed edge that connects any 2 nodes in the graph above. These are
19735        /// in addition to the inherent edges added due to the tree structure of the
19736        /// node's absolute names.
19737        /// Node with id |source_id| owns the node with id |target_id|, and has the
19738        /// effect of attributing the memory usage of target to source. |importance|
19739        /// is optional and relevant only for the cases of co-ownership, where it
19740        /// acts as a z-index: the owner with the highest importance will be
19741        /// attributed target's memory.
19742        #[derive(Clone, PartialEq, ::prost::Message)]
19743        pub struct MemoryEdge {
19744            #[prost(uint64, optional, tag="1")]
19745            pub source_id: ::core::option::Option<u64>,
19746            #[prost(uint64, optional, tag="2")]
19747            pub target_id: ::core::option::Option<u64>,
19748            #[prost(uint32, optional, tag="3")]
19749            pub importance: ::core::option::Option<u32>,
19750            #[prost(bool, optional, tag="4")]
19751            pub overridable: ::core::option::Option<bool>,
19752        }
19753    }
19754    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19755    #[repr(i32)]
19756    pub enum LevelOfDetail {
19757        DetailFull = 0,
19758        DetailLight = 1,
19759        DetailBackground = 2,
19760    }
19761    impl LevelOfDetail {
19762        /// String value of the enum field names used in the ProtoBuf definition.
19763        ///
19764        /// The values are not transformed in any way and thus are considered stable
19765        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19766        pub fn as_str_name(&self) -> &'static str {
19767            match self {
19768                LevelOfDetail::DetailFull => "DETAIL_FULL",
19769                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
19770                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
19771            }
19772        }
19773    }
19774}
19775// End of protos/perfetto/trace/memory_graph.proto
19776
19777// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
19778
19779/// Used to trace the execution of perfetto itself.
19780#[derive(Clone, PartialEq, ::prost::Message)]
19781pub struct PerfettoMetatrace {
19782    /// Only when using |event_id|.
19783    #[prost(uint64, optional, tag="3")]
19784    pub event_duration_ns: ::core::option::Option<u64>,
19785    /// Only when using |counter_id|.
19786    #[prost(int32, optional, tag="4")]
19787    pub counter_value: ::core::option::Option<i32>,
19788    /// ID of the thread that emitted the event.
19789    #[prost(uint32, optional, tag="5")]
19790    pub thread_id: ::core::option::Option<u32>,
19791    /// If true the meta-tracing ring buffer had overruns and hence some data is
19792    /// missing from this point.
19793    #[prost(bool, optional, tag="6")]
19794    pub has_overruns: ::core::option::Option<bool>,
19795    /// Args for the event.
19796    #[prost(message, repeated, tag="7")]
19797    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
19798    #[prost(message, repeated, tag="10")]
19799    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
19800    /// See base/metatrace_events.h for definitions.
19801    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
19802    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
19803}
19804/// Nested message and enum types in `PerfettoMetatrace`.
19805pub mod perfetto_metatrace {
19806    #[derive(Clone, PartialEq, ::prost::Message)]
19807    pub struct Arg {
19808        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
19809        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
19810        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
19811        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
19812    }
19813    /// Nested message and enum types in `Arg`.
19814    pub mod arg {
19815        #[derive(Clone, PartialEq, ::prost::Oneof)]
19816        pub enum KeyOrInternedKey {
19817            #[prost(string, tag="1")]
19818            Key(::prost::alloc::string::String),
19819            #[prost(uint64, tag="3")]
19820            KeyIid(u64),
19821        }
19822        #[derive(Clone, PartialEq, ::prost::Oneof)]
19823        pub enum ValueOrInternedValue {
19824            #[prost(string, tag="2")]
19825            Value(::prost::alloc::string::String),
19826            #[prost(uint64, tag="4")]
19827            ValueIid(u64),
19828        }
19829    }
19830    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
19831    /// |value_iid| above.
19832    #[derive(Clone, PartialEq, ::prost::Message)]
19833    pub struct InternedString {
19834        #[prost(uint64, optional, tag="1")]
19835        pub iid: ::core::option::Option<u64>,
19836        #[prost(string, optional, tag="2")]
19837        pub value: ::core::option::Option<::prost::alloc::string::String>,
19838    }
19839    /// See base/metatrace_events.h for definitions.
19840    #[derive(Clone, PartialEq, ::prost::Oneof)]
19841    pub enum RecordType {
19842        #[prost(uint32, tag="1")]
19843        EventId(u32),
19844        #[prost(uint32, tag="2")]
19845        CounterId(u32),
19846        /// For trace processor metatracing.
19847        #[prost(string, tag="8")]
19848        EventName(::prost::alloc::string::String),
19849        #[prost(uint64, tag="11")]
19850        EventNameIid(u64),
19851        #[prost(string, tag="9")]
19852        CounterName(::prost::alloc::string::String),
19853    }
19854}
19855// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
19856
19857// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
19858
19859/// Events emitted by the tracing service.
19860/// Next id: 12.
19861#[derive(Clone, PartialEq, ::prost::Message)]
19862pub struct TracingServiceEvent {
19863    /// When each of the following booleans are set to true, they report the
19864    /// point in time (through TracePacket's timestamp) where the condition
19865    /// they describe happened.
19866    /// The order of the booleans below matches the timestamp ordering
19867    /// they would generally be expected to have.
19868    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
19869    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
19870}
19871/// Nested message and enum types in `TracingServiceEvent`.
19872pub mod tracing_service_event {
19873    #[derive(Clone, PartialEq, ::prost::Message)]
19874    pub struct DataSources {
19875        #[prost(message, repeated, tag="1")]
19876        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
19877    }
19878    /// Nested message and enum types in `DataSources`.
19879    pub mod data_sources {
19880        #[derive(Clone, PartialEq, ::prost::Message)]
19881        pub struct DataSource {
19882            #[prost(string, optional, tag="1")]
19883            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
19884            #[prost(string, optional, tag="2")]
19885            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
19886        }
19887    }
19888    /// When each of the following booleans are set to true, they report the
19889    /// point in time (through TracePacket's timestamp) where the condition
19890    /// they describe happened.
19891    /// The order of the booleans below matches the timestamp ordering
19892    /// they would generally be expected to have.
19893    #[derive(Clone, PartialEq, ::prost::Oneof)]
19894    pub enum EventType {
19895        /// Emitted when we start tracing and specifically, this will be before any
19896        /// producer is notified about the existence of this trace. This is always
19897        /// emitted before the all_data_sources_started event. This event is also
19898        /// guaranteed to be seen (byte-offset wise) before any data packets from
19899        /// producers.
19900        #[prost(bool, tag="2")]
19901        TracingStarted(bool),
19902        /// Emitted after all data sources saw the start event and ACKed it.
19903        /// This identifies the point in time when it's safe to assume that all data
19904        /// sources have been recording events.
19905        #[prost(bool, tag="1")]
19906        AllDataSourcesStarted(bool),
19907        /// Emitted when a flush is started.
19908        #[prost(bool, tag="9")]
19909        FlushStarted(bool),
19910        /// Emitted when all data sources have been flushed successfully or with an
19911        /// error (including timeouts). This can generally happen many times over the
19912        /// course of the trace.
19913        #[prost(bool, tag="3")]
19914        AllDataSourcesFlushed(bool),
19915        /// Emitted when reading back the central tracing buffers has been completed.
19916        /// If |write_into_file| is specified, this can happen many times over the
19917        /// course of the trace.
19918        #[prost(bool, tag="4")]
19919        ReadTracingBuffersCompleted(bool),
19920        /// Emitted after tracing has been disabled and specifically, this will be
19921        /// after all packets from producers have been included in the central
19922        /// tracing buffer.
19923        #[prost(bool, tag="5")]
19924        TracingDisabled(bool),
19925        /// Emitted if perfetto --save-for-bugreport was invoked while the current
19926        /// tracing session was running and it had the highest bugreport_score. In
19927        /// this case the original consumer will see a nearly empty trace, because
19928        /// the contents are routed onto the bugreport file. This event flags the
19929        /// situation explicitly. Traces that contain this marker should be discarded
19930        /// by test infrastructures / pipelines.
19931        /// Deprecated since Android U, where --save-for-bugreport uses
19932        /// non-destructive cloning.
19933        #[prost(bool, tag="6")]
19934        SeizedForBugreport(bool),
19935        /// Emitted when not all data sources in all producers reply to a start
19936        /// request after some time.
19937        #[prost(message, tag="7")]
19938        SlowStartingDataSources(DataSources),
19939        /// Emitted when the last flush request has failed. Lists data sources that
19940        /// did not reply on time.
19941        #[prost(message, tag="8")]
19942        LastFlushSlowDataSources(DataSources),
19943        /// If this was a cloned tracing session, emitted when the tracing serice
19944        /// started the clone operation.
19945        #[prost(bool, tag="10")]
19946        CloneStarted(bool),
19947        /// If this was a cloned tracing session, emitted when the tracing service
19948        /// finished the clone operation (for a specific buffer).
19949        #[prost(uint32, tag="11")]
19950        BufferCloned(u32),
19951    }
19952}
19953// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
19954
19955// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
19956
19957/// Energy consumer based on aidl class:
19958/// android.hardware.power.stats.EnergyConsumer.
19959#[derive(Clone, PartialEq, ::prost::Message)]
19960pub struct AndroidEnergyConsumer {
19961    /// Unique ID of this energy consumer.  Matches the ID in a
19962    /// AndroidEnergyEstimationBreakdown.
19963    #[prost(int32, optional, tag="1")]
19964    pub energy_consumer_id: ::core::option::Option<i32>,
19965    /// For a group of energy consumers of the same logical type, sorting by
19966    /// ordinal gives their physical order. Ordinals must be consecutive integers
19967    /// starting from 0.
19968    #[prost(int32, optional, tag="2")]
19969    pub ordinal: ::core::option::Option<i32>,
19970    /// Type of this energy consumer.
19971    #[prost(string, optional, tag="3")]
19972    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
19973    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
19974    /// framework.
19975    #[prost(string, optional, tag="4")]
19976    pub name: ::core::option::Option<::prost::alloc::string::String>,
19977}
19978#[derive(Clone, PartialEq, ::prost::Message)]
19979pub struct AndroidEnergyConsumerDescriptor {
19980    #[prost(message, repeated, tag="1")]
19981    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
19982}
19983// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
19984
19985// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
19986
19987/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
19988/// This proto represents the aidl class:
19989/// android.hardware.power.stats.EnergyConsumerResult.
19990#[derive(Clone, PartialEq, ::prost::Message)]
19991pub struct AndroidEnergyEstimationBreakdown {
19992    /// The first trace packet of each session should include a energy consumer
19993    /// descriptor.
19994    #[prost(message, optional, tag="1")]
19995    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
19996    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
19997    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
19998    /// should be sent at the beginning of a trace.
19999    #[prost(int32, optional, tag="2")]
20000    pub energy_consumer_id: ::core::option::Option<i32>,
20001    /// Total accumulated energy since boot in microwatt-seconds (uWs)
20002    #[prost(int64, optional, tag="3")]
20003    pub energy_uws: ::core::option::Option<i64>,
20004    /// Optional attributed energy per Android ID / Linux UID for this
20005    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
20006    /// to total accumulated energy.
20007    #[prost(message, repeated, tag="4")]
20008    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
20009}
20010/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
20011pub mod android_energy_estimation_breakdown {
20012    #[derive(Clone, PartialEq, ::prost::Message)]
20013    pub struct EnergyUidBreakdown {
20014        /// Android ID/Linux UID, the accumulated energy is attributed to.
20015        #[prost(int32, optional, tag="1")]
20016        pub uid: ::core::option::Option<i32>,
20017        /// Accumulated energy since boot in microwatt-seconds (uWs).
20018        #[prost(int64, optional, tag="2")]
20019        pub energy_uws: ::core::option::Option<i64>,
20020    }
20021}
20022// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
20023
20024// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
20025
20026#[derive(Clone, PartialEq, ::prost::Message)]
20027pub struct EntityStateResidency {
20028    /// This is only emitted at the beginning of the trace.
20029    #[prost(message, repeated, tag="1")]
20030    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
20031    #[prost(message, repeated, tag="2")]
20032    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
20033}
20034/// Nested message and enum types in `EntityStateResidency`.
20035pub mod entity_state_residency {
20036    #[derive(Clone, PartialEq, ::prost::Message)]
20037    pub struct PowerEntityState {
20038        /// Index corresponding to the entity
20039        #[prost(int32, optional, tag="1")]
20040        pub entity_index: ::core::option::Option<i32>,
20041        /// Index corresponding to the state
20042        #[prost(int32, optional, tag="2")]
20043        pub state_index: ::core::option::Option<i32>,
20044        /// Name of the entity. This is device-specific, determined by the PowerStats
20045        /// HAL, and cannot be configured by the user. An example would be
20046        /// "Bluetooth".
20047        #[prost(string, optional, tag="3")]
20048        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
20049        /// Name of the state. This is device-specific, determined by the PowerStats
20050        /// HAL, and cannot be configured by the user. An example would be
20051        /// "Active".
20052        #[prost(string, optional, tag="4")]
20053        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
20054    }
20055    #[derive(Clone, PartialEq, ::prost::Message)]
20056    pub struct StateResidency {
20057        /// Index corresponding to PowerEntityState.entity_index
20058        #[prost(int32, optional, tag="1")]
20059        pub entity_index: ::core::option::Option<i32>,
20060        /// Index corresponding to PowerEntityState.state_index
20061        #[prost(int32, optional, tag="2")]
20062        pub state_index: ::core::option::Option<i32>,
20063        /// Time since boot that this entity has been in this state
20064        #[prost(uint64, optional, tag="3")]
20065        pub total_time_in_state_ms: ::core::option::Option<u64>,
20066        /// Total number of times since boot that the entity has entered this state
20067        #[prost(uint64, optional, tag="4")]
20068        pub total_state_entry_count: ::core::option::Option<u64>,
20069        /// Timestamp of the last time the entity entered this state
20070        #[prost(uint64, optional, tag="5")]
20071        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
20072    }
20073}
20074// End of protos/perfetto/trace/power/android_entity_state_residency.proto
20075
20076// Begin of protos/perfetto/trace/power/battery_counters.proto
20077
20078#[derive(Clone, PartialEq, ::prost::Message)]
20079pub struct BatteryCounters {
20080    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
20081    #[prost(int64, optional, tag="1")]
20082    pub charge_counter_uah: ::core::option::Option<i64>,
20083    /// Remaining battery capacity percentage of total capacity
20084    #[prost(float, optional, tag="2")]
20085    pub capacity_percent: ::core::option::Option<f32>,
20086    /// Instantaneous battery current in microamperes(µA).
20087    /// Negative values indicate current being drained from the battery and
20088    /// positive values indicate current feeding the battery from a charge source
20089    /// (USB).
20090    ///
20091    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
20092    #[prost(int64, optional, tag="3")]
20093    pub current_ua: ::core::option::Option<i64>,
20094    /// Instantaneous battery current in microamperes(µA).
20095    #[prost(int64, optional, tag="4")]
20096    pub current_avg_ua: ::core::option::Option<i64>,
20097    /// Battery name, emitted only on multiple batteries.
20098    #[prost(string, optional, tag="5")]
20099    pub name: ::core::option::Option<::prost::alloc::string::String>,
20100    /// Battery capacity in microwatt-hours(µWh).
20101    #[prost(int64, optional, tag="6")]
20102    pub energy_counter_uwh: ::core::option::Option<i64>,
20103    /// Battery voltage in microvolts(µV).
20104    #[prost(int64, optional, tag="7")]
20105    pub voltage_uv: ::core::option::Option<i64>,
20106}
20107// End of protos/perfetto/trace/power/battery_counters.proto
20108
20109// Begin of protos/perfetto/trace/power/power_rails.proto
20110
20111#[derive(Clone, PartialEq, ::prost::Message)]
20112pub struct PowerRails {
20113    /// This is only emitted at the beginning of the trace.
20114    #[prost(message, repeated, tag="1")]
20115    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
20116    #[prost(message, repeated, tag="2")]
20117    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
20118}
20119/// Nested message and enum types in `PowerRails`.
20120pub mod power_rails {
20121    #[derive(Clone, PartialEq, ::prost::Message)]
20122    pub struct RailDescriptor {
20123        /// Index corresponding to the rail
20124        #[prost(uint32, optional, tag="1")]
20125        pub index: ::core::option::Option<u32>,
20126        /// Name of the rail
20127        #[prost(string, optional, tag="2")]
20128        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
20129        /// Name of the subsystem to which this rail belongs
20130        #[prost(string, optional, tag="3")]
20131        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
20132        /// Hardware sampling rate (Hz).
20133        #[prost(uint32, optional, tag="4")]
20134        pub sampling_rate: ::core::option::Option<u32>,
20135    }
20136    #[derive(Clone, PartialEq, ::prost::Message)]
20137    pub struct EnergyData {
20138        /// Index corresponding to RailDescriptor.index
20139        #[prost(uint32, optional, tag="1")]
20140        pub index: ::core::option::Option<u32>,
20141        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
20142        #[prost(uint64, optional, tag="2")]
20143        pub timestamp_ms: ::core::option::Option<u64>,
20144        /// Accumulated energy since device boot in microwatt-seconds (uWs).
20145        #[prost(uint64, optional, tag="3")]
20146        pub energy: ::core::option::Option<u64>,
20147    }
20148}
20149// End of protos/perfetto/trace/power/power_rails.proto
20150
20151// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
20152
20153#[derive(Clone, PartialEq, ::prost::Message)]
20154pub struct ObfuscatedMember {
20155    /// This is the obfuscated field name relative to the class containing the
20156    /// ObfuscatedMember.
20157    #[prost(string, optional, tag="1")]
20158    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20159    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
20160    /// field name including its class. Otherwise, this is this the unqualified
20161    /// deobfuscated field name relative to the class containing this
20162    /// ObfuscatedMember.
20163    #[prost(string, optional, tag="2")]
20164    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20165}
20166#[derive(Clone, PartialEq, ::prost::Message)]
20167pub struct ObfuscatedClass {
20168    #[prost(string, optional, tag="1")]
20169    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20170    #[prost(string, optional, tag="2")]
20171    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
20172    /// fields.
20173    #[prost(message, repeated, tag="3")]
20174    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
20175    #[prost(message, repeated, tag="4")]
20176    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
20177}
20178#[derive(Clone, PartialEq, ::prost::Message)]
20179pub struct DeobfuscationMapping {
20180    #[prost(string, optional, tag="1")]
20181    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
20182    #[prost(int64, optional, tag="2")]
20183    pub version_code: ::core::option::Option<i64>,
20184    #[prost(message, repeated, tag="3")]
20185    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
20186}
20187// Begin of protos/perfetto/trace/profiling/heap_graph.proto
20188
20189#[derive(Clone, PartialEq, ::prost::Message)]
20190pub struct HeapGraphRoot {
20191    /// Objects retained by this root.
20192    #[prost(uint64, repeated, tag="1")]
20193    pub object_ids: ::prost::alloc::vec::Vec<u64>,
20194    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
20195    pub root_type: ::core::option::Option<i32>,
20196}
20197/// Nested message and enum types in `HeapGraphRoot`.
20198pub mod heap_graph_root {
20199    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20200    #[repr(i32)]
20201    pub enum Type {
20202        RootUnknown = 0,
20203        RootJniGlobal = 1,
20204        RootJniLocal = 2,
20205        RootJavaFrame = 3,
20206        RootNativeStack = 4,
20207        RootStickyClass = 5,
20208        RootThreadBlock = 6,
20209        RootMonitorUsed = 7,
20210        RootThreadObject = 8,
20211        RootInternedString = 9,
20212        RootFinalizing = 10,
20213        RootDebugger = 11,
20214        RootReferenceCleanup = 12,
20215        RootVmInternal = 13,
20216        RootJniMonitor = 14,
20217    }
20218    impl Type {
20219        /// String value of the enum field names used in the ProtoBuf definition.
20220        ///
20221        /// The values are not transformed in any way and thus are considered stable
20222        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20223        pub fn as_str_name(&self) -> &'static str {
20224            match self {
20225                Type::RootUnknown => "ROOT_UNKNOWN",
20226                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
20227                Type::RootJniLocal => "ROOT_JNI_LOCAL",
20228                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
20229                Type::RootNativeStack => "ROOT_NATIVE_STACK",
20230                Type::RootStickyClass => "ROOT_STICKY_CLASS",
20231                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
20232                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
20233                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
20234                Type::RootInternedString => "ROOT_INTERNED_STRING",
20235                Type::RootFinalizing => "ROOT_FINALIZING",
20236                Type::RootDebugger => "ROOT_DEBUGGER",
20237                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
20238                Type::RootVmInternal => "ROOT_VM_INTERNAL",
20239                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
20240            }
20241        }
20242    }
20243}
20244#[derive(Clone, PartialEq, ::prost::Message)]
20245pub struct HeapGraphType {
20246    /// TODO(fmayer): Consider removing this and using the index in the repeaed
20247    /// field to save space.
20248    #[prost(uint64, optional, tag="1")]
20249    pub id: ::core::option::Option<u64>,
20250    #[prost(uint64, optional, tag="2")]
20251    pub location_id: ::core::option::Option<u64>,
20252    #[prost(string, optional, tag="3")]
20253    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
20254    /// Size of objects of this type.
20255    #[prost(uint64, optional, tag="4")]
20256    pub object_size: ::core::option::Option<u64>,
20257    #[prost(uint64, optional, tag="5")]
20258    pub superclass_id: ::core::option::Option<u64>,
20259    /// Indices for InternedData.field_names for the names of the fields of
20260    /// instances of this class. This does NOT include the fields from
20261    /// superclasses. The consumer of this data needs to walk all super
20262    /// classes to get a full lists of fields. Objects always write the
20263    /// fields in order of most specific class to the furthest up superclass.
20264    #[prost(uint64, repeated, tag="6")]
20265    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
20266    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
20267    pub kind: ::core::option::Option<i32>,
20268    #[prost(uint64, optional, tag="8")]
20269    pub classloader_id: ::core::option::Option<u64>,
20270}
20271/// Nested message and enum types in `HeapGraphType`.
20272pub mod heap_graph_type {
20273    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20274    #[repr(i32)]
20275    pub enum Kind {
20276        Unknown = 0,
20277        Normal = 1,
20278        Noreferences = 2,
20279        String = 3,
20280        Array = 4,
20281        Class = 5,
20282        Classloader = 6,
20283        Dexcache = 7,
20284        SoftReference = 8,
20285        WeakReference = 9,
20286        FinalizerReference = 10,
20287        PhantomReference = 11,
20288    }
20289    impl Kind {
20290        /// String value of the enum field names used in the ProtoBuf definition.
20291        ///
20292        /// The values are not transformed in any way and thus are considered stable
20293        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20294        pub fn as_str_name(&self) -> &'static str {
20295            match self {
20296                Kind::Unknown => "KIND_UNKNOWN",
20297                Kind::Normal => "KIND_NORMAL",
20298                Kind::Noreferences => "KIND_NOREFERENCES",
20299                Kind::String => "KIND_STRING",
20300                Kind::Array => "KIND_ARRAY",
20301                Kind::Class => "KIND_CLASS",
20302                Kind::Classloader => "KIND_CLASSLOADER",
20303                Kind::Dexcache => "KIND_DEXCACHE",
20304                Kind::SoftReference => "KIND_SOFT_REFERENCE",
20305                Kind::WeakReference => "KIND_WEAK_REFERENCE",
20306                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
20307                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
20308            }
20309        }
20310    }
20311}
20312#[derive(Clone, PartialEq, ::prost::Message)]
20313pub struct HeapGraphObject {
20314    /// Index for InternedData.types for the name of the type of this object.
20315    #[prost(uint64, optional, tag="2")]
20316    pub type_id: ::core::option::Option<u64>,
20317    /// Bytes occupied by this objects.
20318    #[prost(uint64, optional, tag="3")]
20319    pub self_size: ::core::option::Option<u64>,
20320    /// Add this to all non-zero values in reference_object_id. This is used to
20321    /// get more compact varint encoding.
20322    ///
20323    /// The name is confusing, but this has always been used as a base for
20324    /// reference_object_id. The field should be named reference_object_id_base.
20325    #[prost(uint64, optional, tag="6")]
20326    pub reference_field_id_base: ::core::option::Option<u64>,
20327    /// Indices for InternedData.field_names for the name of the field referring
20328    /// to the object. For Android S+ and for instances of normal classes (e.g.
20329    /// not instances of java.lang.Class or arrays), this is instead set in the
20330    /// corresponding HeapGraphType, and this is left empty.
20331    #[prost(uint64, repeated, tag="4")]
20332    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
20333    /// Ids of the Object that is referred to.
20334    #[prost(uint64, repeated, tag="5")]
20335    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
20336    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
20337    /// the value of the `size` field.
20338    ///
20339    /// N.B. This is not the native size of this object.
20340    #[prost(int64, optional, tag="8")]
20341    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
20342    /// To reduce the space required we only emit the heap type if it has changed
20343    /// from the previous object we recorded.
20344    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
20345    pub heap_type_delta: ::core::option::Option<i32>,
20346    /// Ids of the Objects referred by this object, not via fields, but via
20347    /// internal runtime structures.
20348    #[prost(uint64, repeated, tag="10")]
20349    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
20350    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
20351    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
20352}
20353/// Nested message and enum types in `HeapGraphObject`.
20354pub mod heap_graph_object {
20355    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20356    #[repr(i32)]
20357    pub enum HeapType {
20358        Unknown = 0,
20359        App = 1,
20360        Zygote = 2,
20361        BootImage = 3,
20362    }
20363    impl HeapType {
20364        /// String value of the enum field names used in the ProtoBuf definition.
20365        ///
20366        /// The values are not transformed in any way and thus are considered stable
20367        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20368        pub fn as_str_name(&self) -> &'static str {
20369            match self {
20370                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
20371                HeapType::App => "HEAP_TYPE_APP",
20372                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
20373                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
20374            }
20375        }
20376    }
20377    #[derive(Clone, PartialEq, ::prost::Oneof)]
20378    pub enum Identifier {
20379        #[prost(uint64, tag="1")]
20380        Id(u64),
20381        #[prost(uint64, tag="7")]
20382        IdDelta(u64),
20383    }
20384}
20385#[derive(Clone, PartialEq, ::prost::Message)]
20386pub struct HeapGraph {
20387    #[prost(int32, optional, tag="1")]
20388    pub pid: ::core::option::Option<i32>,
20389    /// This contains all objects at the time this dump was taken. Some of these
20390    /// will be live, some of those unreachable (garbage). To find the live
20391    /// objects, the client needs to build the transitive closure of objects
20392    /// reachable from |roots|.
20393    /// All objects not contained within that transitive closure are garbage that
20394    /// has not yet been collected.
20395    #[prost(message, repeated, tag="2")]
20396    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
20397    /// Roots at the time this dump was taken.
20398    /// All live objects are reachable from the roots. All other objects are
20399    /// garbage.
20400    #[prost(message, repeated, tag="7")]
20401    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
20402    /// Types used in HeapGraphObjects.
20403    #[prost(message, repeated, tag="9")]
20404    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
20405    /// Field names for references in managed heap graph.
20406    #[prost(message, repeated, tag="4")]
20407    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
20408    /// Paths of files used in managed heap graph.
20409    #[prost(message, repeated, tag="8")]
20410    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
20411    #[prost(bool, optional, tag="5")]
20412    pub continued: ::core::option::Option<bool>,
20413    #[prost(uint64, optional, tag="6")]
20414    pub index: ::core::option::Option<u64>,
20415}
20416// End of protos/perfetto/trace/profiling/heap_graph.proto
20417
20418// Begin of protos/perfetto/trace/profiling/profile_packet.proto
20419
20420// This file contains a mixture of messages emitted by various sampling
20421// profilers:
20422//
20423// Memory allocator profiling
20424// ----------------
20425// ProfilePacket:
20426//    The packet emitted by heapprofd, which started off as a native heap
20427//    (malloc/free) profiler, but now supports custom allocators as well. Each
20428//    packet contains a preaggregated state of the heap at snapshot time, which
20429//    report the total allocated/free bytes per callstack (plus other info such
20430//    as the number of samples).
20431// StreamingAllocation/StreamingFree:
20432//    Emitted by heapprofd when configured in streaming mode (i.e. when
20433//    stream_allocations = true). This is only for local testing, and doesn't
20434//    report callstacks (only address time and size of each alloc/free). It can
20435//    lead to enormous traces, as it contains the stream of each alloc/free call.
20436//
20437// Callstack sampling
20438// ------------------
20439// StreamingProfilePacket:
20440//    The packet emitted by the chromium in-process sampling profiler, which is
20441//    based on periodically sending a signal to itself, and unwinding the stack
20442//    in the signal handler. Each packet contains a series of individual stack
20443//    samples for a Chromium thread.
20444//
20445// Callstack and performance counter sampling
20446// ---------------------
20447// PerfSample:
20448//    The packet emitted by traced_perf sampling performance profiler based on
20449//    the perf_event_open syscall. Each packet represents an individual sample
20450//    of a performance counter (which might be a timer), and optionally a
20451//    callstack of the process that was scheduled at the time of the sample.
20452//
20453
20454/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
20455/// involve more than one ProfilePacket if the snapshot is big (when |continued|
20456/// is true). The cardinality and grouping is as follows:
20457/// A ProfilePacket contains:
20458///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
20459///     one heap per process (the main malloc/free heap), but there can be more if
20460///     the process is using the heapprofd API to profile custom allocators.
20461///   - Globally interned strings, mappings and frames (to allow de-duplicating
20462///     frames/mapping in common between different processes).
20463/// A ProcessHeapSamples contains:
20464///   - The process and heap identifier.
20465///   - A number of HeapSample, one for each callsite that had some alloc/frees.
20466///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
20467/// A HeapSample contains statistics about callsites:
20468///   - Total number of bytes allocated and freed from that callsite.
20469///   - Total number of alloc/free calls sampled.
20470///   - Stats at the local maximum when dump_at_max = true.
20471/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
20472#[derive(Clone, PartialEq, ::prost::Message)]
20473pub struct ProfilePacket {
20474    /// The following interning tables are only used in Android version Q.
20475    /// In newer versions, these tables are in InternedData
20476    /// (see protos/perfetto/trace/interned_data) and are shared across
20477    /// multiple ProfilePackets.
20478    /// For backwards compatibility, consumers need to first look up interned
20479    /// data in the tables within the ProfilePacket, and then, if they are empty,
20480    /// look up in the InternedData instead.
20481    #[prost(message, repeated, tag="1")]
20482    pub strings: ::prost::alloc::vec::Vec<InternedString>,
20483    #[prost(message, repeated, tag="4")]
20484    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
20485    #[prost(message, repeated, tag="2")]
20486    pub frames: ::prost::alloc::vec::Vec<Frame>,
20487    #[prost(message, repeated, tag="3")]
20488    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
20489    #[prost(message, repeated, tag="5")]
20490    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
20491    /// If this is true, the next ProfilePacket in this package_sequence_id is a
20492    /// continuation of this one.
20493    /// To get all samples for a process, accummulate its
20494    /// ProcessHeapSamples.samples until you see continued=false.
20495    #[prost(bool, optional, tag="6")]
20496    pub continued: ::core::option::Option<bool>,
20497    /// Index of this ProfilePacket on its package_sequence_id. Can be used
20498    /// to detect dropped data.
20499    /// Verify these are consecutive.
20500    #[prost(uint64, optional, tag="7")]
20501    pub index: ::core::option::Option<u64>,
20502}
20503/// Nested message and enum types in `ProfilePacket`.
20504pub mod profile_packet {
20505    /// Next ID: 9
20506    #[derive(Clone, PartialEq, ::prost::Message)]
20507    pub struct HeapSample {
20508        #[prost(uint64, optional, tag="1")]
20509        pub callstack_id: ::core::option::Option<u64>,
20510        /// bytes allocated at this callstack.
20511        #[prost(uint64, optional, tag="2")]
20512        pub self_allocated: ::core::option::Option<u64>,
20513        /// bytes allocated at this callstack that have been freed.
20514        #[prost(uint64, optional, tag="3")]
20515        pub self_freed: ::core::option::Option<u64>,
20516        /// Bytes allocated by this callstack but not freed at the time the malloc
20517        /// heap usage of this process was maximal. This is only set if dump_at_max
20518        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
20519        /// self_idle will not be set.
20520        #[prost(uint64, optional, tag="8")]
20521        pub self_max: ::core::option::Option<u64>,
20522        /// Number of allocations that were sampled at this callstack but not freed
20523        /// at the time the malloc heap usage of this process was maximal. This is
20524        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
20525        /// self_allocated, self_freed and self_idle will not be set.
20526        #[prost(uint64, optional, tag="9")]
20527        pub self_max_count: ::core::option::Option<u64>,
20528        /// timestamp \[opt\]
20529        #[prost(uint64, optional, tag="4")]
20530        pub timestamp: ::core::option::Option<u64>,
20531        /// Number of allocations that were sampled at this callstack.
20532        #[prost(uint64, optional, tag="5")]
20533        pub alloc_count: ::core::option::Option<u64>,
20534        /// Number of allocations that were sampled at this callstack that have been
20535        /// freed.
20536        #[prost(uint64, optional, tag="6")]
20537        pub free_count: ::core::option::Option<u64>,
20538    }
20539    #[derive(Clone, PartialEq, ::prost::Message)]
20540    pub struct Histogram {
20541        #[prost(message, repeated, tag="1")]
20542        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
20543    }
20544    /// Nested message and enum types in `Histogram`.
20545    pub mod histogram {
20546        #[derive(Clone, PartialEq, ::prost::Message)]
20547        pub struct Bucket {
20548            /// This bucket counts values from the previous bucket's (or -infinity if
20549            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
20550            /// (exclusive).
20551            #[prost(uint64, optional, tag="1")]
20552            pub upper_limit: ::core::option::Option<u64>,
20553            /// This is the highest bucket. This is set instead of the upper_limit. Any
20554            /// values larger or equal to the previous bucket's upper_limit are counted
20555            /// in this bucket.
20556            #[prost(bool, optional, tag="2")]
20557            pub max_bucket: ::core::option::Option<bool>,
20558            /// Number of values that fall into this range.
20559            #[prost(uint64, optional, tag="3")]
20560            pub count: ::core::option::Option<u64>,
20561        }
20562    }
20563    #[derive(Clone, PartialEq, ::prost::Message)]
20564    pub struct ProcessStats {
20565        #[prost(uint64, optional, tag="1")]
20566        pub unwinding_errors: ::core::option::Option<u64>,
20567        #[prost(uint64, optional, tag="2")]
20568        pub heap_samples: ::core::option::Option<u64>,
20569        #[prost(uint64, optional, tag="3")]
20570        pub map_reparses: ::core::option::Option<u64>,
20571        #[prost(message, optional, tag="4")]
20572        pub unwinding_time_us: ::core::option::Option<Histogram>,
20573        #[prost(uint64, optional, tag="5")]
20574        pub total_unwinding_time_us: ::core::option::Option<u64>,
20575        #[prost(uint64, optional, tag="6")]
20576        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
20577    }
20578    #[derive(Clone, PartialEq, ::prost::Message)]
20579    pub struct ProcessHeapSamples {
20580        #[prost(uint64, optional, tag="1")]
20581        pub pid: ::core::option::Option<u64>,
20582        /// This process was profiled from startup.
20583        /// If false, this process was already running when profiling started.
20584        #[prost(bool, optional, tag="3")]
20585        pub from_startup: ::core::option::Option<bool>,
20586        /// This process was not profiled because a concurrent session was active.
20587        /// If this is true, samples will be empty.
20588        #[prost(bool, optional, tag="4")]
20589        pub rejected_concurrent: ::core::option::Option<bool>,
20590        /// This process disconnected while it was profiled.
20591        /// If false, the process outlived the profiling session.
20592        #[prost(bool, optional, tag="6")]
20593        pub disconnected: ::core::option::Option<bool>,
20594        /// If disconnected, this disconnect was caused by the client overrunning
20595        /// the buffer.
20596        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
20597        /// on new S builds.
20598        #[prost(bool, optional, tag="7")]
20599        pub buffer_overran: ::core::option::Option<bool>,
20600        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
20601        pub client_error: ::core::option::Option<i32>,
20602        /// If disconnected, this disconnected was caused by the shared memory
20603        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
20604        /// MEMORY CORRUPTION.
20605        #[prost(bool, optional, tag="8")]
20606        pub buffer_corrupted: ::core::option::Option<bool>,
20607        /// If disconnected, this disconnect was caused by heapprofd exceeding
20608        /// guardrails during this profiling session.
20609        #[prost(bool, optional, tag="10")]
20610        pub hit_guardrail: ::core::option::Option<bool>,
20611        #[prost(string, optional, tag="11")]
20612        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
20613        #[prost(uint64, optional, tag="12")]
20614        pub sampling_interval_bytes: ::core::option::Option<u64>,
20615        #[prost(uint64, optional, tag="13")]
20616        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
20617        /// Timestamp of the state of the target process that this dump represents.
20618        /// This can be different to the timestamp of the TracePackets for various
20619        /// reasons:
20620        /// * If disconnected is set above, this is the timestamp of last state
20621        ///    heapprofd had of the process before it disconnected.
20622        /// * Otherwise, if the rate of events produced by the process is high,
20623        ///    heapprofd might be behind.
20624        ///
20625        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
20626        ///                to have a type enum that we can reuse here.
20627        #[prost(uint64, optional, tag="9")]
20628        pub timestamp: ::core::option::Option<u64>,
20629        /// Metadata about heapprofd.
20630        #[prost(message, optional, tag="5")]
20631        pub stats: ::core::option::Option<ProcessStats>,
20632        #[prost(message, repeated, tag="2")]
20633        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
20634    }
20635    /// Nested message and enum types in `ProcessHeapSamples`.
20636    pub mod process_heap_samples {
20637        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20638        #[repr(i32)]
20639        pub enum ClientError {
20640            None = 0,
20641            HitTimeout = 1,
20642            InvalidStackBounds = 2,
20643        }
20644        impl ClientError {
20645            /// String value of the enum field names used in the ProtoBuf definition.
20646            ///
20647            /// The values are not transformed in any way and thus are considered stable
20648            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20649            pub fn as_str_name(&self) -> &'static str {
20650                match self {
20651                    ClientError::None => "CLIENT_ERROR_NONE",
20652                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
20653                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
20654                }
20655            }
20656        }
20657    }
20658}
20659/// Packet emitted by heapprofd when stream_allocations = true. Only for local
20660/// testing. Doesn't report the callsite.
20661#[derive(Clone, PartialEq, ::prost::Message)]
20662pub struct StreamingAllocation {
20663    /// TODO(fmayer): Add callstack.
20664    #[prost(uint64, repeated, packed="false", tag="1")]
20665    pub address: ::prost::alloc::vec::Vec<u64>,
20666    #[prost(uint64, repeated, packed="false", tag="2")]
20667    pub size: ::prost::alloc::vec::Vec<u64>,
20668    #[prost(uint64, repeated, packed="false", tag="3")]
20669    pub sample_size: ::prost::alloc::vec::Vec<u64>,
20670    #[prost(uint64, repeated, packed="false", tag="4")]
20671    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
20672    #[prost(uint32, repeated, packed="false", tag="5")]
20673    pub heap_id: ::prost::alloc::vec::Vec<u32>,
20674    #[prost(uint64, repeated, packed="false", tag="6")]
20675    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
20676}
20677/// Packet emitted by heapprofd when stream_allocations = true. Only for local
20678/// testing. Doesn't report the callsite.
20679#[derive(Clone, PartialEq, ::prost::Message)]
20680pub struct StreamingFree {
20681    /// TODO(fmayer): Add callstack.
20682    #[prost(uint64, repeated, packed="false", tag="1")]
20683    pub address: ::prost::alloc::vec::Vec<u64>,
20684    #[prost(uint32, repeated, packed="false", tag="2")]
20685    pub heap_id: ::prost::alloc::vec::Vec<u32>,
20686    #[prost(uint64, repeated, packed="false", tag="3")]
20687    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
20688}
20689/// Packet emitted by the chromium in-process signal-based callstack sampler.
20690/// Represents a series of individual stack samples (sampled at discrete points
20691/// in time), rather than aggregated over an interval.
20692#[derive(Clone, PartialEq, ::prost::Message)]
20693pub struct StreamingProfilePacket {
20694    /// Index into InternedData.callstacks
20695    #[prost(uint64, repeated, packed="false", tag="1")]
20696    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
20697    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
20698    /// this with ClockSnapshot-based delta encoding instead.
20699    #[prost(int64, repeated, packed="false", tag="2")]
20700    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
20701    #[prost(int32, optional, tag="3")]
20702    pub process_priority: ::core::option::Option<i32>,
20703}
20704/// Namespace for the contained enums.
20705#[derive(Clone, PartialEq, ::prost::Message)]
20706pub struct Profiling {
20707}
20708/// Nested message and enum types in `Profiling`.
20709pub mod profiling {
20710    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20711    #[repr(i32)]
20712    pub enum CpuMode {
20713        ModeUnknown = 0,
20714        ModeKernel = 1,
20715        ModeUser = 2,
20716        /// The following values aren't expected, but included for completeness:
20717        ModeHypervisor = 3,
20718        ModeGuestKernel = 4,
20719        ModeGuestUser = 5,
20720    }
20721    impl CpuMode {
20722        /// String value of the enum field names used in the ProtoBuf definition.
20723        ///
20724        /// The values are not transformed in any way and thus are considered stable
20725        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20726        pub fn as_str_name(&self) -> &'static str {
20727            match self {
20728                CpuMode::ModeUnknown => "MODE_UNKNOWN",
20729                CpuMode::ModeKernel => "MODE_KERNEL",
20730                CpuMode::ModeUser => "MODE_USER",
20731                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
20732                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
20733                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
20734            }
20735        }
20736    }
20737    /// Enumeration of libunwindstack's error codes.
20738    /// NB: the integral representations of the two enums are different.
20739    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20740    #[repr(i32)]
20741    pub enum StackUnwindError {
20742        UnwindErrorUnknown = 0,
20743        UnwindErrorNone = 1,
20744        UnwindErrorMemoryInvalid = 2,
20745        UnwindErrorUnwindInfo = 3,
20746        UnwindErrorUnsupported = 4,
20747        UnwindErrorInvalidMap = 5,
20748        UnwindErrorMaxFramesExceeded = 6,
20749        UnwindErrorRepeatedFrame = 7,
20750        UnwindErrorInvalidElf = 8,
20751        UnwindErrorSystemCall = 9,
20752        UnwindErrorThreadTimeout = 10,
20753        UnwindErrorThreadDoesNotExist = 11,
20754        UnwindErrorBadArch = 12,
20755        UnwindErrorMapsParse = 13,
20756        UnwindErrorInvalidParameter = 14,
20757        UnwindErrorPtraceCall = 15,
20758    }
20759    impl StackUnwindError {
20760        /// String value of the enum field names used in the ProtoBuf definition.
20761        ///
20762        /// The values are not transformed in any way and thus are considered stable
20763        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20764        pub fn as_str_name(&self) -> &'static str {
20765            match self {
20766                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
20767                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
20768                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
20769                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
20770                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
20771                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
20772                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
20773                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
20774                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
20775                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
20776                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
20777                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
20778                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
20779                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
20780                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
20781                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
20782            }
20783        }
20784    }
20785}
20786/// Packet emitted by the traced_perf sampling performance profiler, which
20787/// gathers data via the perf_event_open syscall. Each packet contains an
20788/// individual sample with a counter value, and optionally a
20789/// callstack.
20790///
20791/// Timestamps are within the root packet. The config can specify the clock, or
20792/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
20793/// timeframe, the default was CLOCK_BOOTTIME.
20794///
20795/// There are several distinct views of this message:
20796/// * indication of kernel buffer data loss (kernel_records_lost set)
20797/// * indication of skipped samples (sample_skipped_reason set)
20798/// * notable event in the sampling implementation (producer_event set)
20799/// * normal sample (timebase_count set, typically also callstack_iid)
20800#[derive(Clone, PartialEq, ::prost::Message)]
20801pub struct PerfSample {
20802    #[prost(uint32, optional, tag="1")]
20803    pub cpu: ::core::option::Option<u32>,
20804    #[prost(uint32, optional, tag="2")]
20805    pub pid: ::core::option::Option<u32>,
20806    #[prost(uint32, optional, tag="3")]
20807    pub tid: ::core::option::Option<u32>,
20808    /// Execution state that the process was sampled at.
20809    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
20810    pub cpu_mode: ::core::option::Option<i32>,
20811    /// Value of the timebase counter (since the event was configured, no deltas).
20812    #[prost(uint64, optional, tag="6")]
20813    pub timebase_count: ::core::option::Option<u64>,
20814    /// Value of the followers counter (since the event was configured, no deltas).
20815    #[prost(uint64, repeated, packed="false", tag="7")]
20816    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
20817    /// Unwound callstack. Might be partial, in which case a synthetic "error"
20818    /// frame is appended, and |unwind_error| is set accordingly.
20819    #[prost(uint64, optional, tag="4")]
20820    pub callstack_iid: ::core::option::Option<u64>,
20821    /// If set, indicates that this message is not a sample, but rather an
20822    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
20823    /// loss occurs when the kernel has insufficient ring buffer capacity to write
20824    /// a record (which gets discarded). A record in this context is an individual
20825    /// ring buffer entry, and counts more than just sample records.
20826    ///
20827    /// The |timestamp| of the packet corresponds to the time that the producer
20828    /// wrote the packet for trace-sorting purposes alone, and should not be
20829    /// interpreted relative to the sample timestamps. This field is sufficient to
20830    /// detect that *some* kernel data loss happened within the trace, but not the
20831    /// specific time bounds of that loss (which would require tracking precedessor
20832    /// & successor timestamps, which is not deemed necessary at the moment).
20833    #[prost(uint64, optional, tag="17")]
20834    pub kernel_records_lost: ::core::option::Option<u64>,
20835    #[prost(message, optional, tag="19")]
20836    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
20837    /// If set, stack unwinding was incomplete due to an error.
20838    /// Unset values should be treated as UNWIND_ERROR_NONE.
20839    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
20840    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
20841    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
20842    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
20843}
20844/// Nested message and enum types in `PerfSample`.
20845pub mod perf_sample {
20846    /// A notable event within the sampling implementation.
20847    #[derive(Clone, PartialEq, ::prost::Message)]
20848    pub struct ProducerEvent {
20849        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
20850        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
20851    }
20852    /// Nested message and enum types in `ProducerEvent`.
20853    pub mod producer_event {
20854        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20855        #[repr(i32)]
20856        pub enum DataSourceStopReason {
20857            ProfilerStopUnknown = 0,
20858            ProfilerStopGuardrail = 1,
20859        }
20860        impl DataSourceStopReason {
20861            /// String value of the enum field names used in the ProtoBuf definition.
20862            ///
20863            /// The values are not transformed in any way and thus are considered stable
20864            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20865            pub fn as_str_name(&self) -> &'static str {
20866                match self {
20867                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
20868                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
20869                }
20870            }
20871        }
20872        #[derive(Clone, PartialEq, ::prost::Oneof)]
20873        pub enum OptionalSourceStopReason {
20874            #[prost(enumeration="DataSourceStopReason", tag="1")]
20875            SourceStopReason(i32),
20876        }
20877    }
20878    /// If set, indicates that the profiler encountered a sample that was relevant,
20879    /// but was skipped.
20880    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20881    #[repr(i32)]
20882    pub enum SampleSkipReason {
20883        ProfilerSkipUnknown = 0,
20884        ProfilerSkipReadStage = 1,
20885        ProfilerSkipUnwindStage = 2,
20886        ProfilerSkipUnwindEnqueue = 3,
20887        ProfilerSkipNotInScope = 4,
20888    }
20889    impl SampleSkipReason {
20890        /// String value of the enum field names used in the ProtoBuf definition.
20891        ///
20892        /// The values are not transformed in any way and thus are considered stable
20893        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20894        pub fn as_str_name(&self) -> &'static str {
20895            match self {
20896                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
20897                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
20898                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
20899                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
20900                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
20901            }
20902        }
20903    }
20904    /// If set, stack unwinding was incomplete due to an error.
20905    /// Unset values should be treated as UNWIND_ERROR_NONE.
20906    #[derive(Clone, PartialEq, ::prost::Oneof)]
20907    pub enum OptionalUnwindError {
20908        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
20909        UnwindError(i32),
20910    }
20911    #[derive(Clone, PartialEq, ::prost::Oneof)]
20912    pub enum OptionalSampleSkippedReason {
20913        #[prost(enumeration="SampleSkipReason", tag="18")]
20914        SampleSkippedReason(i32),
20915    }
20916}
20917/// Submessage for TracePacketDefaults.
20918#[derive(Clone, PartialEq, ::prost::Message)]
20919pub struct PerfSampleDefaults {
20920    /// The sampling timebase. Might not be identical to the data source config if
20921    /// the implementation decided to default/override some parameters.
20922    #[prost(message, optional, tag="1")]
20923    pub timebase: ::core::option::Option<perf_events::Timebase>,
20924    /// Description of followers event
20925    #[prost(message, repeated, tag="4")]
20926    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
20927    /// If the config requested process sharding, report back the count and which
20928    /// of those bins was selected. Never changes for the duration of a trace.
20929    #[prost(uint32, optional, tag="2")]
20930    pub process_shard_count: ::core::option::Option<u32>,
20931    #[prost(uint32, optional, tag="3")]
20932    pub chosen_process_shard: ::core::option::Option<u32>,
20933}
20934// End of protos/perfetto/trace/profiling/profile_packet.proto
20935
20936// Begin of protos/perfetto/trace/profiling/smaps.proto
20937
20938#[derive(Clone, PartialEq, ::prost::Message)]
20939pub struct SmapsEntry {
20940    #[prost(string, optional, tag="1")]
20941    pub path: ::core::option::Option<::prost::alloc::string::String>,
20942    #[prost(uint64, optional, tag="2")]
20943    pub size_kb: ::core::option::Option<u64>,
20944    #[prost(uint64, optional, tag="3")]
20945    pub private_dirty_kb: ::core::option::Option<u64>,
20946    #[prost(uint64, optional, tag="4")]
20947    pub swap_kb: ::core::option::Option<u64>,
20948    /// for field upload (instead of path).
20949    #[prost(string, optional, tag="5")]
20950    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20951    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
20952    #[prost(uint64, optional, tag="6")]
20953    pub start_address: ::core::option::Option<u64>,
20954    #[prost(uint64, optional, tag="7")]
20955    pub module_timestamp: ::core::option::Option<u64>,
20956    #[prost(string, optional, tag="8")]
20957    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
20958    #[prost(string, optional, tag="9")]
20959    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
20960    #[prost(uint32, optional, tag="10")]
20961    pub protection_flags: ::core::option::Option<u32>,
20962    #[prost(uint64, optional, tag="11")]
20963    pub private_clean_resident_kb: ::core::option::Option<u64>,
20964    #[prost(uint64, optional, tag="12")]
20965    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
20966    #[prost(uint64, optional, tag="13")]
20967    pub shared_clean_resident_kb: ::core::option::Option<u64>,
20968    #[prost(uint64, optional, tag="14")]
20969    pub locked_kb: ::core::option::Option<u64>,
20970    #[prost(uint64, optional, tag="15")]
20971    pub proportional_resident_kb: ::core::option::Option<u64>,
20972}
20973#[derive(Clone, PartialEq, ::prost::Message)]
20974pub struct SmapsPacket {
20975    #[prost(uint32, optional, tag="1")]
20976    pub pid: ::core::option::Option<u32>,
20977    #[prost(message, repeated, tag="2")]
20978    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
20979}
20980// End of protos/perfetto/trace/profiling/smaps.proto
20981
20982// Begin of protos/perfetto/trace/ps/process_stats.proto
20983
20984/// Per-process periodically sampled stats. These samples are wrapped in a
20985/// dedicated message (as opposite to be fields in process_tree.proto) because
20986/// they are dumped at a different rate than cmdline and thread list.
20987/// Note: not all of these stats will be present in every ProcessStats message
20988/// and sometimes processes may be missing. This is because counters are
20989/// cached to reduce emission of counters which do not change.
20990#[derive(Clone, PartialEq, ::prost::Message)]
20991pub struct ProcessStats {
20992    #[prost(message, repeated, tag="1")]
20993    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
20994    /// The time at which we finish collecting this batch of samples;
20995    /// the top-level packet timestamp is the time at which
20996    /// we begin collection.
20997    #[prost(uint64, optional, tag="2")]
20998    pub collection_end_timestamp: ::core::option::Option<u64>,
20999}
21000/// Nested message and enum types in `ProcessStats`.
21001pub mod process_stats {
21002    /// Per-thread periodically sampled stats.
21003    /// Note: not all of these stats will be present in every message. See the note
21004    /// for ProcessStats.
21005    #[derive(Clone, PartialEq, ::prost::Message)]
21006    pub struct Thread {
21007        #[prost(int32, optional, tag="1")]
21008        pub tid: ::core::option::Option<i32>,
21009    }
21010    #[derive(Clone, PartialEq, ::prost::Message)]
21011    pub struct FdInfo {
21012        #[prost(uint64, optional, tag="1")]
21013        pub fd: ::core::option::Option<u64>,
21014        #[prost(string, optional, tag="2")]
21015        pub path: ::core::option::Option<::prost::alloc::string::String>,
21016    }
21017    #[derive(Clone, PartialEq, ::prost::Message)]
21018    pub struct Process {
21019        #[prost(int32, optional, tag="1")]
21020        pub pid: ::core::option::Option<i32>,
21021        #[prost(message, repeated, tag="11")]
21022        pub threads: ::prost::alloc::vec::Vec<Thread>,
21023        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
21024        #[prost(uint64, optional, tag="2")]
21025        pub vm_size_kb: ::core::option::Option<u64>,
21026        #[prost(uint64, optional, tag="3")]
21027        pub vm_rss_kb: ::core::option::Option<u64>,
21028        #[prost(uint64, optional, tag="4")]
21029        pub rss_anon_kb: ::core::option::Option<u64>,
21030        #[prost(uint64, optional, tag="5")]
21031        pub rss_file_kb: ::core::option::Option<u64>,
21032        #[prost(uint64, optional, tag="6")]
21033        pub rss_shmem_kb: ::core::option::Option<u64>,
21034        #[prost(uint64, optional, tag="7")]
21035        pub vm_swap_kb: ::core::option::Option<u64>,
21036        #[prost(uint64, optional, tag="8")]
21037        pub vm_locked_kb: ::core::option::Option<u64>,
21038        /// When adding a new field remember to update kProcMemCounterSize in
21039        /// the trace processor.
21040        #[prost(uint64, optional, tag="9")]
21041        pub vm_hwm_kb: ::core::option::Option<u64>,
21042        #[prost(int64, optional, tag="10")]
21043        pub oom_score_adj: ::core::option::Option<i64>,
21044        /// The peak resident set size is resettable in newer Posix kernels.
21045        /// This field specifies if reset is supported and if the writer had reset
21046        /// the peaks after each process stats recording.
21047        #[prost(bool, optional, tag="12")]
21048        pub is_peak_rss_resettable: ::core::option::Option<bool>,
21049        /// Private, shared and swap footprint of the process as measured by
21050        /// Chrome. To know more about these metrics refer to:
21051        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
21052        #[prost(uint32, optional, tag="13")]
21053        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
21054        #[prost(uint32, optional, tag="14")]
21055        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
21056        #[prost(message, repeated, tag="15")]
21057        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
21058        /// These fields are set only when scan_smaps_rollup=true
21059        #[prost(uint64, optional, tag="16")]
21060        pub smr_rss_kb: ::core::option::Option<u64>,
21061        #[prost(uint64, optional, tag="17")]
21062        pub smr_pss_kb: ::core::option::Option<u64>,
21063        #[prost(uint64, optional, tag="18")]
21064        pub smr_pss_anon_kb: ::core::option::Option<u64>,
21065        #[prost(uint64, optional, tag="19")]
21066        pub smr_pss_file_kb: ::core::option::Option<u64>,
21067        #[prost(uint64, optional, tag="20")]
21068        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
21069        #[prost(uint64, optional, tag="23")]
21070        pub smr_swap_pss_kb: ::core::option::Option<u64>,
21071        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
21072        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
21073        /// Resolution of "clock ticks", usually 10ms.
21074        #[prost(uint64, optional, tag="21")]
21075        pub runtime_user_mode: ::core::option::Option<u64>,
21076        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
21077        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
21078        /// Resolution of "clock ticks", usually 10ms.
21079        #[prost(uint64, optional, tag="22")]
21080        pub runtime_kernel_mode: ::core::option::Option<u64>,
21081    }
21082}
21083// End of protos/perfetto/trace/ps/process_stats.proto
21084
21085// Begin of protos/perfetto/trace/ps/process_tree.proto
21086
21087/// Metadata about the processes and threads in the trace.
21088/// Note: this proto was designed to be filled in by traced_probes and should
21089/// only be populated with accurate information coming from the system. Other
21090/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
21091/// in TrackDescriptor.
21092#[derive(Clone, PartialEq, ::prost::Message)]
21093pub struct ProcessTree {
21094    /// List of processes and threads in the client. These lists are incremental
21095    /// and not exhaustive. A process and its threads might show up separately in
21096    /// different ProcessTree messages. A thread might event not show up at all, if
21097    /// no sched_switch activity was detected, for instance:
21098    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
21099    /// #1 { threads: [{pid: 12, tgid: 10}] }
21100    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
21101    #[prost(message, repeated, tag="1")]
21102    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
21103    #[prost(message, repeated, tag="2")]
21104    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
21105    /// The time at which we finish collecting this process tree;
21106    /// the top-level packet timestamp is the time at which
21107    /// we begin collection.
21108    #[prost(uint64, optional, tag="3")]
21109    pub collection_end_timestamp: ::core::option::Option<u64>,
21110}
21111/// Nested message and enum types in `ProcessTree`.
21112pub mod process_tree {
21113    /// Representation of a thread.
21114    #[derive(Clone, PartialEq, ::prost::Message)]
21115    pub struct Thread {
21116        /// The thread ID (as per gettid()) in the root PID namespace.
21117        #[prost(int32, optional, tag="1")]
21118        pub tid: ::core::option::Option<i32>,
21119        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
21120        #[prost(int32, optional, tag="3")]
21121        pub tgid: ::core::option::Option<i32>,
21122        /// The name of the thread.
21123        #[prost(string, optional, tag="2")]
21124        pub name: ::core::option::Option<::prost::alloc::string::String>,
21125        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
21126        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
21127        /// level thread ID) omitted.
21128        #[prost(int32, repeated, packed="false", tag="4")]
21129        pub nstid: ::prost::alloc::vec::Vec<i32>,
21130    }
21131    /// Representation of a process.
21132    #[derive(Clone, PartialEq, ::prost::Message)]
21133    pub struct Process {
21134        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
21135        /// PID namespace.
21136        #[prost(int32, optional, tag="1")]
21137        pub pid: ::core::option::Option<i32>,
21138        /// The parent process ID, as per getppid().
21139        #[prost(int32, optional, tag="2")]
21140        pub ppid: ::core::option::Option<i32>,
21141        /// The command line for the process, as per /proc/pid/cmdline, broken up on
21142        /// NUL bytes.
21143        /// If it is a kernel thread or a zombie, there will only be one cmdline
21144        /// field and it will contain /proc/pid/comm.
21145        #[prost(string, repeated, tag="3")]
21146        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21147        /// If true, the |cmdline| field was filled with the main thread's "comm"
21148        /// field instead.
21149        /// Introduced in: perfetto v50.
21150        #[prost(bool, optional, tag="9")]
21151        pub cmdline_is_comm: ::core::option::Option<bool>,
21152        /// The uid for the process, as per /proc/pid/status.
21153        #[prost(int32, optional, tag="5")]
21154        pub uid: ::core::option::Option<i32>,
21155        /// The non-root-level process IDs if the process runs in a PID namespace.
21156        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
21157        /// (root-level process ID) omitted.
21158        #[prost(int32, repeated, packed="false", tag="6")]
21159        pub nspid: ::prost::alloc::vec::Vec<i32>,
21160        /// Timestamp of when the process was created, in nanoseconds
21161        /// from boot. Parsed from starttime in /proc/pid/stat.
21162        /// Recorded if record_process_age config option is set.
21163        /// Resolution of "clock ticks", usually 10ms.
21164        #[prost(uint64, optional, tag="7")]
21165        pub process_start_from_boot: ::core::option::Option<u64>,
21166        /// If true, the process is a kernel thread.
21167        /// Set only on linux v6.4+. For traces from older devices, it is possible to
21168        /// infer most kthreads by checking that they're a descendant of kthreadd
21169        /// (pid=2), or are the idle process (pid=0).
21170        /// Introduced in: perfetto v50.
21171        #[prost(bool, optional, tag="8")]
21172        pub is_kthread: ::core::option::Option<bool>,
21173    }
21174}
21175// End of protos/perfetto/trace/ps/process_tree.proto
21176
21177// Begin of protos/perfetto/trace/remote_clock_sync.proto
21178
21179/// Records the parameters for aligning clock readings between machines.
21180#[derive(Clone, PartialEq, ::prost::Message)]
21181pub struct RemoteClockSync {
21182    #[prost(message, repeated, tag="1")]
21183    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
21184}
21185/// Nested message and enum types in `RemoteClockSync`.
21186pub mod remote_clock_sync {
21187    /// Synchronized clock snapshots taken on both sides of the relay port (the
21188    /// tracing service and the relay service). A round of clock synchronization
21189    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
21190    /// snapshot -> client snapshot -> host snapshot.
21191    #[derive(Clone, PartialEq, ::prost::Message)]
21192    pub struct SyncedClocks {
21193        #[prost(message, optional, tag="2")]
21194        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
21195        #[prost(message, optional, tag="3")]
21196        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
21197    }
21198}
21199// End of protos/perfetto/trace/remote_clock_sync.proto
21200
21201// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
21202
21203/// Deliberate empty message. See comment on StatsdAtom#atom below.
21204#[derive(Clone, PartialEq, ::prost::Message)]
21205pub struct Atom {
21206}
21207/// One or more statsd atoms. This must continue to match:
21208/// perfetto/protos/third_party/statsd/shell_data.proto
21209/// So that we can efficiently add data from statsd directly to the
21210/// trace.
21211#[derive(Clone, PartialEq, ::prost::Message)]
21212pub struct StatsdAtom {
21213    /// Atom should be filled with an Atom proto from:
21214    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
21215    /// We don't reference Atom directly here since we don't want to import
21216    /// Atom.proto and all its transitive dependencies into Perfetto.
21217    /// atom and timestamp_nanos have the same cardinality
21218    #[prost(message, repeated, tag="1")]
21219    pub atom: ::prost::alloc::vec::Vec<Atom>,
21220    #[prost(int64, repeated, packed="false", tag="2")]
21221    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
21222}
21223// End of protos/perfetto/trace/statsd/statsd_atom.proto
21224
21225// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
21226
21227/// Various Linux system stat counters from /proc.
21228/// The fields in this message can be reported at different rates and with
21229/// different granularity. See sys_stats_config.proto.
21230#[derive(Clone, PartialEq, ::prost::Message)]
21231pub struct SysStats {
21232    #[prost(message, repeated, tag="1")]
21233    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
21234    #[prost(message, repeated, tag="2")]
21235    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
21236    /// One entry per cpu.
21237    #[prost(message, repeated, tag="3")]
21238    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
21239    /// Num processes forked since boot.
21240    /// Populated only if FORK_COUNT in config.stat_counters.
21241    #[prost(uint64, optional, tag="4")]
21242    pub num_forks: ::core::option::Option<u64>,
21243    // Number of interrupts, broken by IRQ number.
21244    // Populated only if IRQ_COUNTS in config.stat_counters.
21245
21246    /// Total num of irqs serviced since boot.
21247    #[prost(uint64, optional, tag="5")]
21248    pub num_irq_total: ::core::option::Option<u64>,
21249    #[prost(message, repeated, tag="6")]
21250    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
21251    // Number of softirqs, broken by softirq number.
21252    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
21253
21254    /// Total num of softirqs since boot.
21255    #[prost(uint64, optional, tag="7")]
21256    pub num_softirq_total: ::core::option::Option<u64>,
21257    /// Per-softirq count.
21258    #[prost(message, repeated, tag="8")]
21259    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
21260    /// The time at which we finish collecting this set of samples;
21261    /// the top-level packet timestamp is the time at which
21262    /// we begin collection.
21263    #[prost(uint64, optional, tag="9")]
21264    pub collection_end_timestamp: ::core::option::Option<u64>,
21265    /// One entry per device.
21266    #[prost(message, repeated, tag="10")]
21267    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
21268    /// Cpu current frequency from
21269    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
21270    /// One entry per cpu. Report 0 for offline cpu
21271    #[prost(uint32, repeated, packed="false", tag="11")]
21272    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
21273    /// One entry per each node's zones.
21274    #[prost(message, repeated, tag="12")]
21275    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
21276    /// One entry per disk device.
21277    #[prost(message, repeated, tag="13")]
21278    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
21279    /// One entry per PsiResource type.
21280    #[prost(message, repeated, tag="14")]
21281    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
21282    #[prost(message, repeated, tag="15")]
21283    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
21284    #[prost(message, repeated, tag="16")]
21285    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
21286    /// Read GPU frequency info on Intel/AMD devices.
21287    #[prost(uint64, repeated, packed="false", tag="17")]
21288    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
21289}
21290/// Nested message and enum types in `SysStats`.
21291pub mod sys_stats {
21292    /// Counters from /proc/meminfo. Values are in KB.
21293    #[derive(Clone, PartialEq, ::prost::Message)]
21294    pub struct MeminfoValue {
21295        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
21296        pub key: ::core::option::Option<i32>,
21297        #[prost(uint64, optional, tag="2")]
21298        pub value: ::core::option::Option<u64>,
21299    }
21300    /// Counter from /proc/vmstat. Units are often pages, not KB.
21301    #[derive(Clone, PartialEq, ::prost::Message)]
21302    pub struct VmstatValue {
21303        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
21304        pub key: ::core::option::Option<i32>,
21305        #[prost(uint64, optional, tag="2")]
21306        pub value: ::core::option::Option<u64>,
21307    }
21308    /// Times in each mode, since boot. Unit: nanoseconds.
21309    #[derive(Clone, PartialEq, ::prost::Message)]
21310    pub struct CpuTimes {
21311        #[prost(uint32, optional, tag="1")]
21312        pub cpu_id: ::core::option::Option<u32>,
21313        /// Time spent in user mode.
21314        #[prost(uint64, optional, tag="2")]
21315        pub user_ns: ::core::option::Option<u64>,
21316        /// Time spent in user mode (low prio).
21317        #[prost(uint64, optional, tag="3")]
21318        pub user_nice_ns: ::core::option::Option<u64>,
21319        /// Time spent in system mode.
21320        #[prost(uint64, optional, tag="4")]
21321        pub system_mode_ns: ::core::option::Option<u64>,
21322        /// Time spent in the idle task.
21323        #[prost(uint64, optional, tag="5")]
21324        pub idle_ns: ::core::option::Option<u64>,
21325        /// Time spent waiting for I/O.
21326        #[prost(uint64, optional, tag="6")]
21327        pub io_wait_ns: ::core::option::Option<u64>,
21328        /// Time spent servicing interrupts.
21329        #[prost(uint64, optional, tag="7")]
21330        pub irq_ns: ::core::option::Option<u64>,
21331        /// Time spent servicing softirqs.
21332        #[prost(uint64, optional, tag="8")]
21333        pub softirq_ns: ::core::option::Option<u64>,
21334        /// Time spent executing something else on host than this guest.
21335        #[prost(uint64, optional, tag="9")]
21336        pub steal_ns: ::core::option::Option<u64>,
21337    }
21338    #[derive(Clone, PartialEq, ::prost::Message)]
21339    pub struct InterruptCount {
21340        #[prost(int32, optional, tag="1")]
21341        pub irq: ::core::option::Option<i32>,
21342        #[prost(uint64, optional, tag="2")]
21343        pub count: ::core::option::Option<u64>,
21344    }
21345    /// Frequencies for /sys/class/devfreq/ entries in kHz.
21346    #[derive(Clone, PartialEq, ::prost::Message)]
21347    pub struct DevfreqValue {
21348        #[prost(string, optional, tag="1")]
21349        pub key: ::core::option::Option<::prost::alloc::string::String>,
21350        #[prost(uint64, optional, tag="2")]
21351        pub value: ::core::option::Option<u64>,
21352    }
21353    #[derive(Clone, PartialEq, ::prost::Message)]
21354    pub struct BuddyInfo {
21355        #[prost(string, optional, tag="1")]
21356        pub node: ::core::option::Option<::prost::alloc::string::String>,
21357        #[prost(string, optional, tag="2")]
21358        pub zone: ::core::option::Option<::prost::alloc::string::String>,
21359        #[prost(uint32, repeated, packed="false", tag="3")]
21360        pub order_pages: ::prost::alloc::vec::Vec<u32>,
21361    }
21362    /// Counters from /proc/diskstats.
21363    #[derive(Clone, PartialEq, ::prost::Message)]
21364    pub struct DiskStat {
21365        #[prost(string, optional, tag="1")]
21366        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
21367        #[prost(uint64, optional, tag="2")]
21368        pub read_sectors: ::core::option::Option<u64>,
21369        #[prost(uint64, optional, tag="3")]
21370        pub read_time_ms: ::core::option::Option<u64>,
21371        #[prost(uint64, optional, tag="4")]
21372        pub write_sectors: ::core::option::Option<u64>,
21373        #[prost(uint64, optional, tag="5")]
21374        pub write_time_ms: ::core::option::Option<u64>,
21375        #[prost(uint64, optional, tag="6")]
21376        pub discard_sectors: ::core::option::Option<u64>,
21377        #[prost(uint64, optional, tag="7")]
21378        pub discard_time_ms: ::core::option::Option<u64>,
21379        #[prost(uint64, optional, tag="8")]
21380        pub flush_count: ::core::option::Option<u64>,
21381        #[prost(uint64, optional, tag="9")]
21382        pub flush_time_ms: ::core::option::Option<u64>,
21383    }
21384    /// Reading from /proc/pressure/*.
21385    #[derive(Clone, PartialEq, ::prost::Message)]
21386    pub struct PsiSample {
21387        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
21388        pub resource: ::core::option::Option<i32>,
21389        /// Total absolute stall time (in nanos) for a given resource.
21390        /// While PSI readings are in micros, we store in nanos for consistency with
21391        /// most other time-based counters.
21392        #[prost(uint64, optional, tag="2")]
21393        pub total_ns: ::core::option::Option<u64>,
21394    }
21395    /// Nested message and enum types in `PsiSample`.
21396    pub mod psi_sample {
21397        /// Type of resource that may have exhibited pressure stalls.
21398        ///     * _SOME indicates some resource tasks stalled.
21399        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
21400        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21401        #[repr(i32)]
21402        pub enum PsiResource {
21403            Unspecified = 0,
21404            CpuSome = 1,
21405            CpuFull = 2,
21406            IoSome = 3,
21407            IoFull = 4,
21408            MemorySome = 5,
21409            MemoryFull = 6,
21410        }
21411        impl PsiResource {
21412            /// String value of the enum field names used in the ProtoBuf definition.
21413            ///
21414            /// The values are not transformed in any way and thus are considered stable
21415            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21416            pub fn as_str_name(&self) -> &'static str {
21417                match self {
21418                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
21419                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
21420                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
21421                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
21422                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
21423                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
21424                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
21425                }
21426            }
21427        }
21428    }
21429    /// Reading from /sys/class/thermal/*.
21430    #[derive(Clone, PartialEq, ::prost::Message)]
21431    pub struct ThermalZone {
21432        #[prost(string, optional, tag="1")]
21433        pub name: ::core::option::Option<::prost::alloc::string::String>,
21434        #[prost(uint64, optional, tag="2")]
21435        pub temp: ::core::option::Option<u64>,
21436        #[prost(string, optional, tag="3")]
21437        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21438    }
21439    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
21440    #[derive(Clone, PartialEq, ::prost::Message)]
21441    pub struct CpuIdleStateEntry {
21442        /// Name of the idle state, e.g. C1-C10
21443        #[prost(string, optional, tag="1")]
21444        pub state: ::core::option::Option<::prost::alloc::string::String>,
21445        #[prost(uint64, optional, tag="2")]
21446        pub duration_us: ::core::option::Option<u64>,
21447    }
21448    #[derive(Clone, PartialEq, ::prost::Message)]
21449    pub struct CpuIdleState {
21450        #[prost(uint32, optional, tag="1")]
21451        pub cpu_id: ::core::option::Option<u32>,
21452        #[prost(message, repeated, tag="2")]
21453        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
21454    }
21455}
21456// End of protos/perfetto/trace/sys_stats/sys_stats.proto
21457
21458// Begin of protos/perfetto/trace/system_info/cpu_info.proto
21459
21460/// Information about CPUs from procfs and sysfs.
21461#[derive(Clone, PartialEq, ::prost::Message)]
21462pub struct CpuInfo {
21463    /// Describes available CPUs, one entry per CPU.
21464    #[prost(message, repeated, tag="1")]
21465    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
21466}
21467/// Nested message and enum types in `CpuInfo`.
21468pub mod cpu_info {
21469    #[derive(Clone, PartialEq, ::prost::Message)]
21470    pub struct ArmCpuIdentifier {
21471        /// Implementer code
21472        #[prost(uint32, optional, tag="1")]
21473        pub implementer: ::core::option::Option<u32>,
21474        /// Architecture code
21475        #[prost(uint32, optional, tag="2")]
21476        pub architecture: ::core::option::Option<u32>,
21477        /// CPU variant
21478        #[prost(uint32, optional, tag="3")]
21479        pub variant: ::core::option::Option<u32>,
21480        /// CPU part
21481        #[prost(uint32, optional, tag="4")]
21482        pub part: ::core::option::Option<u32>,
21483        /// CPU revision
21484        #[prost(uint32, optional, tag="5")]
21485        pub revision: ::core::option::Option<u32>,
21486    }
21487    /// Information about a single CPU.
21488    #[derive(Clone, PartialEq, ::prost::Message)]
21489    pub struct Cpu {
21490        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
21491        /// Example: "AArch64 Processor rev 12 (aarch64)"
21492        #[prost(string, optional, tag="1")]
21493        pub processor: ::core::option::Option<::prost::alloc::string::String>,
21494        /// Frequencies from
21495        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
21496        /// where X is the index of this CPU.
21497        #[prost(uint32, repeated, packed="false", tag="2")]
21498        pub frequencies: ::prost::alloc::vec::Vec<u32>,
21499        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
21500        /// the index of this CPU.
21501        #[prost(uint32, optional, tag="3")]
21502        pub capacity: ::core::option::Option<u32>,
21503        /// Features is a bitmap containing a bit set for each feature defined in
21504        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
21505        /// index.
21506        #[prost(uint64, optional, tag="5")]
21507        pub features: ::core::option::Option<u64>,
21508        /// Code to identify the CPU
21509        #[prost(oneof="cpu::Identifier", tags="4")]
21510        pub identifier: ::core::option::Option<cpu::Identifier>,
21511    }
21512    /// Nested message and enum types in `Cpu`.
21513    pub mod cpu {
21514        /// Code to identify the CPU
21515        #[derive(Clone, PartialEq, ::prost::Oneof)]
21516        pub enum Identifier {
21517            #[prost(message, tag="4")]
21518            ArmIdentifier(super::ArmCpuIdentifier),
21519        }
21520    }
21521}
21522// End of protos/perfetto/trace/system_info/cpu_info.proto
21523
21524// Begin of protos/perfetto/trace/test_event.proto
21525
21526/// Event used by testing code.
21527#[derive(Clone, PartialEq, ::prost::Message)]
21528pub struct TestEvent {
21529    /// Arbitrary string used in tests.
21530    #[prost(string, optional, tag="1")]
21531    pub str: ::core::option::Option<::prost::alloc::string::String>,
21532    /// The current value of the random number sequence used in tests.
21533    #[prost(uint32, optional, tag="2")]
21534    pub seq_value: ::core::option::Option<u32>,
21535    /// Monotonically increased on each packet.
21536    #[prost(uint64, optional, tag="3")]
21537    pub counter: ::core::option::Option<u64>,
21538    /// No more packets should follow (from the current sequence).
21539    #[prost(bool, optional, tag="4")]
21540    pub is_last: ::core::option::Option<bool>,
21541    #[prost(message, optional, tag="5")]
21542    pub payload: ::core::option::Option<test_event::TestPayload>,
21543}
21544/// Nested message and enum types in `TestEvent`.
21545pub mod test_event {
21546    #[derive(Clone, PartialEq, ::prost::Message)]
21547    pub struct TestPayload {
21548        #[prost(string, repeated, tag="1")]
21549        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21550        #[prost(message, repeated, tag="2")]
21551        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
21552        #[prost(string, optional, tag="4")]
21553        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
21554        #[prost(int32, optional, tag="5")]
21555        pub single_int: ::core::option::Option<i32>,
21556        #[prost(int32, repeated, packed="false", tag="6")]
21557        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
21558        /// When 0 this is the bottom-most nested message.
21559        #[prost(uint32, optional, tag="3")]
21560        pub remaining_nesting_depth: ::core::option::Option<u32>,
21561        #[prost(message, repeated, tag="7")]
21562        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
21563    }
21564}
21565// End of protos/perfetto/trace/test_event.proto
21566
21567// Begin of protos/perfetto/trace/trace_packet_defaults.proto
21568
21569/// Default values for TracePacket fields that hold for a particular TraceWriter
21570/// packet sequence. This message contains a subset of the TracePacket fields
21571/// with matching IDs. When provided, these fields define the default values
21572/// that should be applied, at import time, to all TracePacket(s) with the same
21573/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
21574///
21575/// Should be reemitted whenever incremental state is cleared on the sequence.
21576#[derive(Clone, PartialEq, ::prost::Message)]
21577pub struct TracePacketDefaults {
21578    #[prost(uint32, optional, tag="58")]
21579    pub timestamp_clock_id: ::core::option::Option<u32>,
21580    /// Default values for TrackEvents (e.g. default track).
21581    #[prost(message, optional, tag="11")]
21582    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
21583    /// Defaults for perf profiler packets (PerfSample).
21584    #[prost(message, optional, tag="12")]
21585    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
21586    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
21587    /// V8RegexpCode)
21588    #[prost(message, optional, tag="99")]
21589    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
21590}
21591// Begin of protos/perfetto/trace/trace_uuid.proto
21592
21593/// A random unique ID that identifies the trace.
21594/// This message has been introduced in v32. Prior to that, the UUID was
21595/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
21596/// This has been moved to a standalone packet to deal with new use-cases for
21597/// go/gapless-aot, where the same tracing session can be serialized several
21598/// times, in which case the UUID is changed on each snapshot and does not match
21599/// the one in the TraceConfig.
21600#[derive(Clone, PartialEq, ::prost::Message)]
21601pub struct TraceUuid {
21602    #[prost(int64, optional, tag="1")]
21603    pub msb: ::core::option::Option<i64>,
21604    #[prost(int64, optional, tag="2")]
21605    pub lsb: ::core::option::Option<i64>,
21606}
21607// End of protos/perfetto/trace/trace_uuid.proto
21608
21609// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
21610
21611/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
21612/// usually by the process's main thread.
21613///
21614/// Next id: 9.
21615#[derive(Clone, PartialEq, ::prost::Message)]
21616pub struct ProcessDescriptor {
21617    #[prost(int32, optional, tag="1")]
21618    pub pid: ::core::option::Option<i32>,
21619    #[prost(string, repeated, tag="2")]
21620    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21621    #[prost(string, optional, tag="6")]
21622    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
21623    #[prost(int32, optional, tag="5")]
21624    pub process_priority: ::core::option::Option<i32>,
21625    /// Process start time in nanoseconds.
21626    /// The timestamp refers to the trace clock by default. Other clock IDs
21627    /// provided in TracePacket are not supported.
21628    #[prost(int64, optional, tag="7")]
21629    pub start_timestamp_ns: ::core::option::Option<i64>,
21630    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
21631    pub chrome_process_type: ::core::option::Option<i32>,
21632    /// To support old UI. New UI should determine default sorting by process_type.
21633    #[prost(int32, optional, tag="3")]
21634    pub legacy_sort_index: ::core::option::Option<i32>,
21635    /// Labels can be used to further describe properties of the work performed by
21636    /// the process. For example, these can be used by Chrome renderer process to
21637    /// provide titles of frames being rendered.
21638    #[prost(string, repeated, tag="8")]
21639    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21640}
21641/// Nested message and enum types in `ProcessDescriptor`.
21642pub mod process_descriptor {
21643    // ---------------------------------------------------------------------------
21644    // Deprecated / legacy fields, which will be removed in the future:
21645    // ---------------------------------------------------------------------------
21646
21647    /// See chromium's content::ProcessType.
21648    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21649    #[repr(i32)]
21650    pub enum ChromeProcessType {
21651        ProcessUnspecified = 0,
21652        ProcessBrowser = 1,
21653        ProcessRenderer = 2,
21654        ProcessUtility = 3,
21655        ProcessZygote = 4,
21656        ProcessSandboxHelper = 5,
21657        ProcessGpu = 6,
21658        ProcessPpapiPlugin = 7,
21659        ProcessPpapiBroker = 8,
21660    }
21661    impl ChromeProcessType {
21662        /// String value of the enum field names used in the ProtoBuf definition.
21663        ///
21664        /// The values are not transformed in any way and thus are considered stable
21665        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21666        pub fn as_str_name(&self) -> &'static str {
21667            match self {
21668                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
21669                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
21670                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
21671                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
21672                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
21673                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
21674                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
21675                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
21676                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
21677            }
21678        }
21679    }
21680}
21681// End of protos/perfetto/trace/track_event/process_descriptor.proto
21682
21683// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
21684
21685/// This message specifies the "range of interest" for track events. With the
21686/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
21687/// Trace Processor drops track events outside of this range.
21688#[derive(Clone, PartialEq, ::prost::Message)]
21689pub struct TrackEventRangeOfInterest {
21690    #[prost(int64, optional, tag="1")]
21691    pub start_us: ::core::option::Option<i64>,
21692}
21693// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
21694
21695/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
21696/// usually by the thread's trace writer.
21697///
21698/// Next id: 9.
21699#[derive(Clone, PartialEq, ::prost::Message)]
21700pub struct ThreadDescriptor {
21701    #[prost(int32, optional, tag="1")]
21702    pub pid: ::core::option::Option<i32>,
21703    #[prost(int32, optional, tag="2")]
21704    pub tid: ::core::option::Option<i32>,
21705    #[prost(string, optional, tag="5")]
21706    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
21707    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
21708    pub chrome_thread_type: ::core::option::Option<i32>,
21709    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
21710    /// and timestamp_clock_id fields instead.
21711    #[prost(int64, optional, tag="6")]
21712    pub reference_timestamp_us: ::core::option::Option<i64>,
21713    /// Absolute reference values. Clock values in subsequent TrackEvents can be
21714    /// encoded accumulatively and relative to these. This reduces their var-int
21715    /// encoding size.
21716    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
21717    #[prost(int64, optional, tag="7")]
21718    pub reference_thread_time_us: ::core::option::Option<i64>,
21719    #[prost(int64, optional, tag="8")]
21720    pub reference_thread_instruction_count: ::core::option::Option<i64>,
21721    /// To support old UI. New UI should determine default sorting by thread_type.
21722    #[prost(int32, optional, tag="3")]
21723    pub legacy_sort_index: ::core::option::Option<i32>,
21724}
21725/// Nested message and enum types in `ThreadDescriptor`.
21726pub mod thread_descriptor {
21727    // ---------------------------------------------------------------------------
21728    // Deprecated / legacy fields, which will be removed in the future:
21729    // ---------------------------------------------------------------------------
21730
21731    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21732    #[repr(i32)]
21733    pub enum ChromeThreadType {
21734        ChromeThreadUnspecified = 0,
21735        ChromeThreadMain = 1,
21736        ChromeThreadIo = 2,
21737        /// Scheduler:
21738        ChromeThreadPoolBgWorker = 3,
21739        ChromeThreadPoolFgWorker = 4,
21740        ChromeThreadPoolFbBlocking = 5,
21741        ChromeThreadPoolBgBlocking = 6,
21742        ChromeThreadPoolService = 7,
21743        /// Compositor:
21744        ChromeThreadCompositor = 8,
21745        ChromeThreadVizCompositor = 9,
21746        ChromeThreadCompositorWorker = 10,
21747        /// Renderer:
21748        ChromeThreadServiceWorker = 11,
21749        /// Tracing related threads:
21750        ChromeThreadMemoryInfra = 50,
21751        ChromeThreadSamplingProfiler = 51,
21752    }
21753    impl ChromeThreadType {
21754        /// String value of the enum field names used in the ProtoBuf definition.
21755        ///
21756        /// The values are not transformed in any way and thus are considered stable
21757        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21758        pub fn as_str_name(&self) -> &'static str {
21759            match self {
21760                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
21761                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
21762                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
21763                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
21764                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
21765                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
21766                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
21767                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
21768                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
21769                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
21770                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
21771                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
21772                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
21773                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
21774            }
21775        }
21776    }
21777}
21778// End of protos/perfetto/trace/track_event/thread_descriptor.proto
21779
21780// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
21781
21782/// Describes the attributes for a Chrome process. Must be paired with a
21783/// ProcessDescriptor in the same TrackDescriptor.
21784///
21785/// Next id: 6.
21786#[derive(Clone, PartialEq, ::prost::Message)]
21787pub struct ChromeProcessDescriptor {
21788    #[prost(enumeration="chrome_process_descriptor::ProcessType", optional, tag="1")]
21789    pub process_type: ::core::option::Option<i32>,
21790    #[prost(int32, optional, tag="2")]
21791    pub process_priority: ::core::option::Option<i32>,
21792    /// To support old UI. New UI should determine default sorting by process_type.
21793    #[prost(int32, optional, tag="3")]
21794    pub legacy_sort_index: ::core::option::Option<i32>,
21795    /// Name of the hosting app for WebView. Used to match renderer processes to
21796    /// their hosting apps.
21797    #[prost(string, optional, tag="4")]
21798    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
21799    /// The ID to link crashes to trace.
21800    /// Notes:
21801    /// * The ID is per process. So, each trace may contain many IDs, and you need
21802    ///    to look for the ID from crashed process to find the crash report.
21803    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
21804    ///    get an uploaded trace, since uploads could have failed.
21805    /// * On the other hand, if there was a crash during the session and trace was
21806    ///    uploaded, it is very likely to find a crash report with the trace ID.
21807    /// * This is not crash ID or trace ID. It is just a random 64-bit number
21808    ///    recorded in both traces and crashes. It is possible to have collisions,
21809    ///    though very rare.
21810    #[prost(uint64, optional, tag="5")]
21811    pub crash_trace_id: ::core::option::Option<u64>,
21812}
21813/// Nested message and enum types in `ChromeProcessDescriptor`.
21814pub mod chrome_process_descriptor {
21815    /// See chromium's content::ProcessType.
21816    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21817    #[repr(i32)]
21818    pub enum ProcessType {
21819        ProcessUnspecified = 0,
21820        ProcessBrowser = 1,
21821        ProcessRenderer = 2,
21822        ProcessUtility = 3,
21823        ProcessZygote = 4,
21824        ProcessSandboxHelper = 5,
21825        ProcessGpu = 6,
21826        ProcessPpapiPlugin = 7,
21827        ProcessPpapiBroker = 8,
21828        ProcessServiceNetwork = 9,
21829        ProcessServiceTracing = 10,
21830        ProcessServiceStorage = 11,
21831        ProcessServiceAudio = 12,
21832        ProcessServiceDataDecoder = 13,
21833        ProcessServiceUtilWin = 14,
21834        ProcessServiceProxyResolver = 15,
21835        ProcessServiceCdm = 16,
21836        ProcessServiceVideoCapture = 17,
21837        ProcessServiceUnzipper = 18,
21838        ProcessServiceMirroring = 19,
21839        ProcessServiceFilepatcher = 20,
21840        ProcessServiceTts = 21,
21841        ProcessServicePrinting = 22,
21842        ProcessServiceQuarantine = 23,
21843        ProcessServiceCrosLocalsearch = 24,
21844        ProcessServiceCrosAssistantAudioDecoder = 25,
21845        ProcessServiceFileutil = 26,
21846        ProcessServicePrintcompositor = 27,
21847        ProcessServicePaintpreview = 28,
21848        ProcessServiceSpeechrecognition = 29,
21849        ProcessServiceXrdevice = 30,
21850        ProcessServiceReadicon = 31,
21851        ProcessServiceLanguagedetection = 32,
21852        ProcessServiceSharing = 33,
21853        ProcessServiceMediaparser = 34,
21854        ProcessServiceQrcodegenerator = 35,
21855        ProcessServiceProfileimport = 36,
21856        ProcessServiceIme = 37,
21857        ProcessServiceRecording = 38,
21858        ProcessServiceShapedetection = 39,
21859        ProcessRendererExtension = 40,
21860        ProcessServiceMediaFoundation = 41,
21861    }
21862    impl ProcessType {
21863        /// String value of the enum field names used in the ProtoBuf definition.
21864        ///
21865        /// The values are not transformed in any way and thus are considered stable
21866        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21867        pub fn as_str_name(&self) -> &'static str {
21868            match self {
21869                ProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
21870                ProcessType::ProcessBrowser => "PROCESS_BROWSER",
21871                ProcessType::ProcessRenderer => "PROCESS_RENDERER",
21872                ProcessType::ProcessUtility => "PROCESS_UTILITY",
21873                ProcessType::ProcessZygote => "PROCESS_ZYGOTE",
21874                ProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
21875                ProcessType::ProcessGpu => "PROCESS_GPU",
21876                ProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
21877                ProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
21878                ProcessType::ProcessServiceNetwork => "PROCESS_SERVICE_NETWORK",
21879                ProcessType::ProcessServiceTracing => "PROCESS_SERVICE_TRACING",
21880                ProcessType::ProcessServiceStorage => "PROCESS_SERVICE_STORAGE",
21881                ProcessType::ProcessServiceAudio => "PROCESS_SERVICE_AUDIO",
21882                ProcessType::ProcessServiceDataDecoder => "PROCESS_SERVICE_DATA_DECODER",
21883                ProcessType::ProcessServiceUtilWin => "PROCESS_SERVICE_UTIL_WIN",
21884                ProcessType::ProcessServiceProxyResolver => "PROCESS_SERVICE_PROXY_RESOLVER",
21885                ProcessType::ProcessServiceCdm => "PROCESS_SERVICE_CDM",
21886                ProcessType::ProcessServiceVideoCapture => "PROCESS_SERVICE_VIDEO_CAPTURE",
21887                ProcessType::ProcessServiceUnzipper => "PROCESS_SERVICE_UNZIPPER",
21888                ProcessType::ProcessServiceMirroring => "PROCESS_SERVICE_MIRRORING",
21889                ProcessType::ProcessServiceFilepatcher => "PROCESS_SERVICE_FILEPATCHER",
21890                ProcessType::ProcessServiceTts => "PROCESS_SERVICE_TTS",
21891                ProcessType::ProcessServicePrinting => "PROCESS_SERVICE_PRINTING",
21892                ProcessType::ProcessServiceQuarantine => "PROCESS_SERVICE_QUARANTINE",
21893                ProcessType::ProcessServiceCrosLocalsearch => "PROCESS_SERVICE_CROS_LOCALSEARCH",
21894                ProcessType::ProcessServiceCrosAssistantAudioDecoder => "PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER",
21895                ProcessType::ProcessServiceFileutil => "PROCESS_SERVICE_FILEUTIL",
21896                ProcessType::ProcessServicePrintcompositor => "PROCESS_SERVICE_PRINTCOMPOSITOR",
21897                ProcessType::ProcessServicePaintpreview => "PROCESS_SERVICE_PAINTPREVIEW",
21898                ProcessType::ProcessServiceSpeechrecognition => "PROCESS_SERVICE_SPEECHRECOGNITION",
21899                ProcessType::ProcessServiceXrdevice => "PROCESS_SERVICE_XRDEVICE",
21900                ProcessType::ProcessServiceReadicon => "PROCESS_SERVICE_READICON",
21901                ProcessType::ProcessServiceLanguagedetection => "PROCESS_SERVICE_LANGUAGEDETECTION",
21902                ProcessType::ProcessServiceSharing => "PROCESS_SERVICE_SHARING",
21903                ProcessType::ProcessServiceMediaparser => "PROCESS_SERVICE_MEDIAPARSER",
21904                ProcessType::ProcessServiceQrcodegenerator => "PROCESS_SERVICE_QRCODEGENERATOR",
21905                ProcessType::ProcessServiceProfileimport => "PROCESS_SERVICE_PROFILEIMPORT",
21906                ProcessType::ProcessServiceIme => "PROCESS_SERVICE_IME",
21907                ProcessType::ProcessServiceRecording => "PROCESS_SERVICE_RECORDING",
21908                ProcessType::ProcessServiceShapedetection => "PROCESS_SERVICE_SHAPEDETECTION",
21909                ProcessType::ProcessRendererExtension => "PROCESS_RENDERER_EXTENSION",
21910                ProcessType::ProcessServiceMediaFoundation => "PROCESS_SERVICE_MEDIA_FOUNDATION",
21911            }
21912        }
21913    }
21914}
21915// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
21916
21917// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
21918
21919/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
21920/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
21921/// in the same TrackDescriptor.
21922///
21923/// Next id: 3.
21924#[derive(Clone, PartialEq, ::prost::Message)]
21925pub struct ChromeThreadDescriptor {
21926    #[prost(enumeration="chrome_thread_descriptor::ThreadType", optional, tag="1")]
21927    pub thread_type: ::core::option::Option<i32>,
21928    /// To support old UI. New UI should determine default sorting by thread_type.
21929    #[prost(int32, optional, tag="2")]
21930    pub legacy_sort_index: ::core::option::Option<i32>,
21931    /// Indicates whether the thread's tid specified in the thread descriptor is
21932    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
21933    #[prost(bool, optional, tag="3")]
21934    pub is_sandboxed_tid: ::core::option::Option<bool>,
21935}
21936/// Nested message and enum types in `ChromeThreadDescriptor`.
21937pub mod chrome_thread_descriptor {
21938    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21939    #[repr(i32)]
21940    pub enum ThreadType {
21941        ThreadUnspecified = 0,
21942        ThreadMain = 1,
21943        ThreadIo = 2,
21944        ThreadPoolBgWorker = 3,
21945        ThreadPoolFgWorker = 4,
21946        ThreadPoolFgBlocking = 5,
21947        ThreadPoolBgBlocking = 6,
21948        ThreadPoolService = 7,
21949        ThreadCompositor = 8,
21950        ThreadVizCompositor = 9,
21951        ThreadCompositorWorker = 10,
21952        ThreadServiceWorker = 11,
21953        ThreadNetworkService = 12,
21954        ThreadChildIo = 13,
21955        ThreadBrowserIo = 14,
21956        ThreadBrowserMain = 15,
21957        ThreadRendererMain = 16,
21958        ThreadUtilityMain = 17,
21959        ThreadGpuMain = 18,
21960        ThreadCacheBlockfile = 19,
21961        ThreadMedia = 20,
21962        ThreadAudioOutputdevice = 21,
21963        ThreadAudioInputdevice = 22,
21964        ThreadGpuMemory = 23,
21965        ThreadGpuVsync = 24,
21966        ThreadDxaVideodecoder = 25,
21967        ThreadBrowserWatchdog = 26,
21968        ThreadWebrtcNetwork = 27,
21969        ThreadWindowOwner = 28,
21970        ThreadWebrtcSignaling = 29,
21971        ThreadWebrtcWorker = 30,
21972        ThreadPpapiMain = 31,
21973        ThreadGpuWatchdog = 32,
21974        ThreadSwapper = 33,
21975        ThreadGamepadPolling = 34,
21976        ThreadWebcrypto = 35,
21977        ThreadDatabase = 36,
21978        ThreadProxyresolver = 37,
21979        ThreadDevtoolsadb = 38,
21980        ThreadNetworkconfigwatcher = 39,
21981        ThreadWasapiRender = 40,
21982        ThreadLoaderLockSampler = 41,
21983        ThreadMemoryInfra = 50,
21984        ThreadSamplingProfiler = 51,
21985        ThreadCompositorGpu = 52,
21986    }
21987    impl ThreadType {
21988        /// String value of the enum field names used in the ProtoBuf definition.
21989        ///
21990        /// The values are not transformed in any way and thus are considered stable
21991        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21992        pub fn as_str_name(&self) -> &'static str {
21993            match self {
21994                ThreadType::ThreadUnspecified => "THREAD_UNSPECIFIED",
21995                ThreadType::ThreadMain => "THREAD_MAIN",
21996                ThreadType::ThreadIo => "THREAD_IO",
21997                ThreadType::ThreadPoolBgWorker => "THREAD_POOL_BG_WORKER",
21998                ThreadType::ThreadPoolFgWorker => "THREAD_POOL_FG_WORKER",
21999                ThreadType::ThreadPoolFgBlocking => "THREAD_POOL_FG_BLOCKING",
22000                ThreadType::ThreadPoolBgBlocking => "THREAD_POOL_BG_BLOCKING",
22001                ThreadType::ThreadPoolService => "THREAD_POOL_SERVICE",
22002                ThreadType::ThreadCompositor => "THREAD_COMPOSITOR",
22003                ThreadType::ThreadVizCompositor => "THREAD_VIZ_COMPOSITOR",
22004                ThreadType::ThreadCompositorWorker => "THREAD_COMPOSITOR_WORKER",
22005                ThreadType::ThreadServiceWorker => "THREAD_SERVICE_WORKER",
22006                ThreadType::ThreadNetworkService => "THREAD_NETWORK_SERVICE",
22007                ThreadType::ThreadChildIo => "THREAD_CHILD_IO",
22008                ThreadType::ThreadBrowserIo => "THREAD_BROWSER_IO",
22009                ThreadType::ThreadBrowserMain => "THREAD_BROWSER_MAIN",
22010                ThreadType::ThreadRendererMain => "THREAD_RENDERER_MAIN",
22011                ThreadType::ThreadUtilityMain => "THREAD_UTILITY_MAIN",
22012                ThreadType::ThreadGpuMain => "THREAD_GPU_MAIN",
22013                ThreadType::ThreadCacheBlockfile => "THREAD_CACHE_BLOCKFILE",
22014                ThreadType::ThreadMedia => "THREAD_MEDIA",
22015                ThreadType::ThreadAudioOutputdevice => "THREAD_AUDIO_OUTPUTDEVICE",
22016                ThreadType::ThreadAudioInputdevice => "THREAD_AUDIO_INPUTDEVICE",
22017                ThreadType::ThreadGpuMemory => "THREAD_GPU_MEMORY",
22018                ThreadType::ThreadGpuVsync => "THREAD_GPU_VSYNC",
22019                ThreadType::ThreadDxaVideodecoder => "THREAD_DXA_VIDEODECODER",
22020                ThreadType::ThreadBrowserWatchdog => "THREAD_BROWSER_WATCHDOG",
22021                ThreadType::ThreadWebrtcNetwork => "THREAD_WEBRTC_NETWORK",
22022                ThreadType::ThreadWindowOwner => "THREAD_WINDOW_OWNER",
22023                ThreadType::ThreadWebrtcSignaling => "THREAD_WEBRTC_SIGNALING",
22024                ThreadType::ThreadWebrtcWorker => "THREAD_WEBRTC_WORKER",
22025                ThreadType::ThreadPpapiMain => "THREAD_PPAPI_MAIN",
22026                ThreadType::ThreadGpuWatchdog => "THREAD_GPU_WATCHDOG",
22027                ThreadType::ThreadSwapper => "THREAD_SWAPPER",
22028                ThreadType::ThreadGamepadPolling => "THREAD_GAMEPAD_POLLING",
22029                ThreadType::ThreadWebcrypto => "THREAD_WEBCRYPTO",
22030                ThreadType::ThreadDatabase => "THREAD_DATABASE",
22031                ThreadType::ThreadProxyresolver => "THREAD_PROXYRESOLVER",
22032                ThreadType::ThreadDevtoolsadb => "THREAD_DEVTOOLSADB",
22033                ThreadType::ThreadNetworkconfigwatcher => "THREAD_NETWORKCONFIGWATCHER",
22034                ThreadType::ThreadWasapiRender => "THREAD_WASAPI_RENDER",
22035                ThreadType::ThreadLoaderLockSampler => "THREAD_LOADER_LOCK_SAMPLER",
22036                ThreadType::ThreadMemoryInfra => "THREAD_MEMORY_INFRA",
22037                ThreadType::ThreadSamplingProfiler => "THREAD_SAMPLING_PROFILER",
22038                ThreadType::ThreadCompositorGpu => "THREAD_COMPOSITOR_GPU",
22039            }
22040        }
22041    }
22042}
22043// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
22044
22045// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
22046
22047/// Defines properties of a counter track, e.g. for built-in counters (thread
22048/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
22049/// a specific app component).
22050///
22051/// Counter tracks only support TYPE_COUNTER track events, which specify new
22052/// values for the counter. For counters that require per-slice values, counter
22053/// values can instead be provided in a more efficient encoding via TrackEvent's
22054/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
22055/// slice-type events cannot be emitted onto a counter track.
22056///
22057/// Values for counters that are only emitted on a single packet sequence can
22058/// optionally be delta-encoded, see |is_incremental|.
22059///
22060/// Next id: 7.
22061#[derive(Clone, PartialEq, ::prost::Message)]
22062pub struct CounterDescriptor {
22063    /// For built-in counters (e.g. thread time). Custom user-specified counters
22064    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
22065    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
22066    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
22067    pub r#type: ::core::option::Option<i32>,
22068    /// Names of categories of the counter (usually for user-specified counters).
22069    /// In the client library, categories are a way to turn groups of individual
22070    /// counters (or events) on or off.
22071    #[prost(string, repeated, tag="2")]
22072    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22073    /// Type of the counter's values. Built-in counters imply a value for this
22074    /// field.
22075    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
22076    pub unit: ::core::option::Option<i32>,
22077    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
22078    /// name can be used instead.
22079    #[prost(string, optional, tag="6")]
22080    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
22081    /// Multiplication factor of this counter's values, e.g. to supply
22082    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
22083    #[prost(int64, optional, tag="4")]
22084    pub unit_multiplier: ::core::option::Option<i64>,
22085    /// Whether values for this counter are provided as delta values. Only
22086    /// supported for counters that are emitted on a single packet-sequence (e.g.
22087    /// thread time). Counter values in subsequent packets on the current packet
22088    /// sequence will be interpreted as delta values from the sequence's most
22089    /// recent value for the counter. When incremental state is cleared, the
22090    /// counter value is considered to be reset to 0. Thus, the first value after
22091    /// incremental state is cleared is effectively an absolute value.
22092    #[prost(bool, optional, tag="5")]
22093    pub is_incremental: ::core::option::Option<bool>,
22094}
22095/// Nested message and enum types in `CounterDescriptor`.
22096pub mod counter_descriptor {
22097    /// Built-in counters, usually with special meaning in the client library,
22098    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
22099    /// track name from the enum value if none is provided in TrackDescriptor.
22100    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22101    #[repr(i32)]
22102    pub enum BuiltinCounterType {
22103        CounterUnspecified = 0,
22104        // Thread-scoped counters. The thread's track should be specified via
22105        // |parent_uuid| in the TrackDescriptor for such a counter.
22106
22107        /// implies UNIT_TIME_NS.
22108        CounterThreadTimeNs = 1,
22109        /// implies UNIT_COUNT.
22110        CounterThreadInstructionCount = 2,
22111    }
22112    impl BuiltinCounterType {
22113        /// String value of the enum field names used in the ProtoBuf definition.
22114        ///
22115        /// The values are not transformed in any way and thus are considered stable
22116        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22117        pub fn as_str_name(&self) -> &'static str {
22118            match self {
22119                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
22120                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
22121                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
22122            }
22123        }
22124    }
22125    /// Type of the values for the counters - to supply lower granularity units,
22126    /// see also |unit_multiplier|.
22127    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22128    #[repr(i32)]
22129    pub enum Unit {
22130        Unspecified = 0,
22131        TimeNs = 1,
22132        Count = 2,
22133        /// TODO(eseckler): Support more units as necessary.
22134        SizeBytes = 3,
22135    }
22136    impl Unit {
22137        /// String value of the enum field names used in the ProtoBuf definition.
22138        ///
22139        /// The values are not transformed in any way and thus are considered stable
22140        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22141        pub fn as_str_name(&self) -> &'static str {
22142            match self {
22143                Unit::Unspecified => "UNIT_UNSPECIFIED",
22144                Unit::TimeNs => "UNIT_TIME_NS",
22145                Unit::Count => "UNIT_COUNT",
22146                Unit::SizeBytes => "UNIT_SIZE_BYTES",
22147            }
22148        }
22149    }
22150}
22151// End of protos/perfetto/trace/track_event/counter_descriptor.proto
22152
22153// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
22154
22155/// Defines a track for TrackEvents. Slices and instant events on the same track
22156/// will be nested based on their timestamps, see TrackEvent::Type.
22157///
22158/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
22159/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
22160/// when the ring buffer wraps, it should be reemitted whenever incremental state
22161/// is cleared.
22162///
22163/// As a fallback, TrackEvents emitted without an explicit track association will
22164/// be associated with an implicit trace-global track (uuid = 0), see also
22165/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
22166/// TrackDescriptor for this implicit track.
22167///
22168/// Next id: 17.
22169#[derive(Clone, PartialEq, ::prost::Message)]
22170pub struct TrackDescriptor {
22171    /// Unique ID that identifies this track. This ID is global to the whole trace.
22172    /// Producers should ensure that it is unlikely to clash with IDs emitted by
22173    /// other producers. A value of 0 denotes the implicit trace-global track.
22174    ///
22175    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
22176    /// event id + id_scope, pid, and/or tid to compute this ID.
22177    #[prost(uint64, optional, tag="1")]
22178    pub uuid: ::core::option::Option<u64>,
22179    /// A parent track reference can be used to describe relationships between
22180    /// tracks. For example, to define an asynchronous track which is scoped to a
22181    /// specific process, specify the uuid for that process's process track here.
22182    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
22183    /// thread, specify the uuid for that thread's thread track here. In general,
22184    /// setting a parent will *nest* that track under the parent in the UI and in
22185    /// the trace processor data model (with the important exception noted below).
22186    ///
22187    /// If not specified, the track will be a root track, i.e. not nested under any
22188    /// other track.
22189    ///
22190    /// Note: if the `thread` or `process` fields are set, this value will be
22191    /// *ignored* as priority is given to those fields.
22192    ///
22193    /// Note: if the parent is set to a track with `thread` or `process` fields
22194    /// set, the track will *not* be nested under the parent in the UI and in the
22195    /// trace processor data model. Instead, the track will inherit the parent's
22196    /// thread/process association and will appear as a *sibling* of the parent.
22197    /// This semantic exists for back-compat reasons as the UI used to work this
22198    /// way for years and changing this leads to a lot of traces subtly breaking.
22199    /// If you want to force nesting, create *another* intermediate track to act as
22200    /// the parent.
22201    #[prost(uint64, optional, tag="5")]
22202    pub parent_uuid: ::core::option::Option<u64>,
22203    /// A human-readable description of the track providing more context about its
22204    /// data. In the UI, this is shown in a popup when the track's help button is
22205    /// clicked.
22206    #[prost(string, optional, tag="14")]
22207    pub description: ::core::option::Option<::prost::alloc::string::String>,
22208    /// Associate the track with a process, making it the process-global track.
22209    /// There should only be one such track per process (usually for instant
22210    /// events; trace processor uses this fact to detect pid reuse). If you need
22211    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
22212    ///
22213    /// Trace processor will merge events on a process track with slice-type events
22214    /// from other sources (e.g. ftrace) for the same process into a single
22215    /// timeline view.
22216    #[prost(message, optional, tag="3")]
22217    pub process: ::core::option::Option<ProcessDescriptor>,
22218    #[prost(message, optional, tag="6")]
22219    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
22220    /// Associate the track with a thread, indicating that the track's events
22221    /// describe synchronous code execution on the thread. There should only be one
22222    /// such track per thread (trace processor uses this fact to detect tid reuse).
22223    ///
22224    /// Trace processor will merge events on a thread track with slice-type events
22225    /// from other sources (e.g. ftrace) for the same thread into a single timeline
22226    /// view.
22227    #[prost(message, optional, tag="4")]
22228    pub thread: ::core::option::Option<ThreadDescriptor>,
22229    #[prost(message, optional, tag="7")]
22230    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
22231    /// Descriptor for a counter track. If set, the track will only support
22232    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
22233    /// |extra_counter_values|).
22234    #[prost(message, optional, tag="8")]
22235    pub counter: ::core::option::Option<CounterDescriptor>,
22236    /// If true, forces Trace Processor to use separate tracks for track events
22237    /// and system events for the same thread.
22238    ///
22239    /// Track events timestamps in Chrome have microsecond resolution, while
22240    /// system events use nanoseconds. It results in broken event nesting when
22241    /// track events and system events share a track.
22242    #[prost(bool, optional, tag="9")]
22243    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
22244    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
22245    pub child_ordering: ::core::option::Option<i32>,
22246    /// An opaque value which allows specifying how two sibling tracks should be
22247    /// ordered relative to each other: tracks with lower ranks will appear before
22248    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
22249    /// 0.
22250    ///
22251    /// Note: this option is only relevant for tracks where the parent has
22252    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
22253    ///
22254    /// Note: for tracks where the parent has `thread` or `process` are set, this
22255    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
22256    /// See `parent_uuid` for details.
22257    #[prost(int32, optional, tag="12")]
22258    pub sibling_order_rank: ::core::option::Option<i32>,
22259    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
22260    pub sibling_merge_behavior: ::core::option::Option<i32>,
22261    /// An opaque value which allows specifying which tracks should be merged
22262    /// together.
22263    ///
22264    /// Only meaningful when `sibling_merge_behavior` is set to
22265    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
22266    #[prost(string, optional, tag="16")]
22267    pub sibling_merge_key: ::core::option::Option<::prost::alloc::string::String>,
22268    /// Name of the track.
22269    ///
22270    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
22271    /// emitted before any `TrackEvent`s on the same track.
22272    ///
22273    /// Note: any name specified here will be *ignored* for the root thread scoped
22274    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
22275    /// case, the name of the track is shared by many different data sources and so
22276    /// is centrally controlled by trace processor.
22277    ///
22278    /// It's strongly recommended to only emit the name for a track uuid *once*. If
22279    /// a descriptor *has* to be emitted multiple times (e.g. between different
22280    /// processes), it's recommended to ensure that the name is consistent across
22281    /// all TrackDescriptors with the same `uuid`.
22282    ///
22283    /// If the the above recommendation is not followed and the same uuid is
22284    /// emitted with different names, it is implementation defined how the final
22285    /// name will be chosen and may change at any time.
22286    ///
22287    /// The current implementation of trace processor chooses the name in the
22288    /// following way, depending on the value of the `sibling_merge_behavior`
22289    /// field:
22290    ///
22291    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
22292    ///    * The *last* non-null name in the whole trace according to trace order
22293    ///      will be used.
22294    ///    * If no non-null name is present in the whole trace, the trace processor
22295    ///      may fall back to other sources to provide a name for the track (e.g.
22296    ///      the first event name for slice tracks, the counter name for counter
22297    ///      tracks). This is implementation defined and may change at any time.
22298    ///
22299    /// 2. If `sibling_merge_behavior` is set to any other value:
22300    ///    * The first non-null name before the first event on the track *or on any
22301    ///      descendant tracks* is processed will be used. For example, consider
22302    ///      the following sequence of events:
22303    ///        ts=100: TrackDescriptor(uuid=A)
22304    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
22305    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
22306    ///        ts=400: TrackEvent(track_uuid=B)
22307    ///      In this case, the name for track A will be "Track A" because the
22308    ///      descriptor with the name was emitted before the first event on a
22309    ///      descendant track (B).
22310    ///    * If no non-null name is present before the event is processed, the trace
22311    ///      processor may fall back to other sources to provide a name for the
22312    ///      track (e.g. the first event name for slice tracks, the counter name for
22313    ///      counter tracks). This is implementation defined and may change at any
22314    ///      time.
22315    ///    * Note on processing order: In the standard trace processor pipeline,
22316    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
22317    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
22318    ///      track, all its descriptors in the trace are processed before its
22319    ///      events. Consequently, the "first non-null name before the first event"
22320    ///      will be the name from the first `TrackDescriptor` for that track in the
22321    ///      trace file that has a non-null name. However, in a streaming parsing
22322    ///      scenario, the timestamp order of descriptors and events is significant,
22323    ///      and a descriptor arriving after an event has been processed will not be
22324    ///      used to name the track.
22325    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
22326    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
22327}
22328/// Nested message and enum types in `TrackDescriptor`.
22329pub mod track_descriptor {
22330    /// Specifies how the UI should display child tracks of this track (i.e. tracks
22331    /// where `parent_uuid` is specified to this track `uuid`). Note that this
22332    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
22333    /// this if it has a good reason not to do so.
22334    ///
22335    /// Note: for tracks where `thread` or `process` are set, this option is
22336    /// *ignored*. See `parent_uuid` for details.
22337    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22338    #[repr(i32)]
22339    pub enum ChildTracksOrdering {
22340        /// The default ordering, with no bearing on how the UI will visualise the
22341        /// tracks.
22342        Unknown = 0,
22343        /// Order tracks by `name` or `static_name` depending on which one has been
22344        /// specified.
22345        Lexicographic = 1,
22346        /// Order tracks by the first `ts` event in a track.
22347        Chronological = 2,
22348        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
22349        /// the lower values will be shown before tracks with higher values. Tracks
22350        /// with no value will be treated as having 0 rank.
22351        Explicit = 3,
22352    }
22353    impl ChildTracksOrdering {
22354        /// String value of the enum field names used in the ProtoBuf definition.
22355        ///
22356        /// The values are not transformed in any way and thus are considered stable
22357        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22358        pub fn as_str_name(&self) -> &'static str {
22359            match self {
22360                ChildTracksOrdering::Unknown => "UNKNOWN",
22361                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
22362                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
22363                ChildTracksOrdering::Explicit => "EXPLICIT",
22364            }
22365        }
22366    }
22367    /// Specifies how the analysis tools should "merge" different sibling
22368    /// TrackEvent tracks.
22369    ///
22370    /// For two or more tracks to be merged, they must be "eligible" siblings.
22371    /// Eligibility is determined by the following rules:
22372    /// 1. All tracks must have the same parent.
22373    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
22374    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
22375    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
22376    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
22377    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
22378    ///
22379    /// Specifically:
22380    ///    - in the UI, all tracks which are merged together will be
22381    ///      displayed as a single "visual" track.
22382    ///    - in the trace processor, all tracks which are merged together will be
22383    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
22384    ///      of tracks which have an active event at the same time.
22385    ///
22386    /// When tracks are merged togther, the properties for the merged track will be
22387    /// chosen from the source tracks based on the following rules:
22388    ///    - for `sibling_order_rank`: the rank of the merged track will be the
22389    ///      smallest rank among the source tracks.
22390    ///    - for all other properties: the property taken is unspecified and can
22391    ///      be any value provided by one of the source tracks. This can lead to
22392    ///      non-deterministic behavior.
22393    ///       - examples of other properties include `name`, `child_ordering` etc.
22394    ///       - because of this, it's strongly recommended to ensure that all source
22395    ///         tracks have the same value for these properties.
22396    ///       - the trace processor will also emit an error stat if it detects
22397    ///         that the properties are not the same across all source tracks.
22398    ///
22399    /// Note: merging is done *recursively* so entire trees of tracks can be merged
22400    /// together. To make this clearer, consider an example track hierarchy (in
22401    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
22402    /// track line, like "Updater", is its 'name' property):
22403    ///
22404    ///    Initial track hierarchy:
22405    ///      SystemActivity
22406    ///      ├── AuthService (smk: "auth_main_cluster")
22407    ///      │   └── LoginOp (smk: "login_v1")
22408    ///      ├── AuthService (smk: "auth_main_cluster")
22409    ///      │   └── LoginOp (smk: "login_v1")
22410    ///      ├── AuthService (smk: "auth_backup_cluster")
22411    ///      │   └── GuestOp (smk: "guest_v1")
22412    ///      └── UserProfileService (smk: "profile_cluster")
22413    ///          └── GetProfileOp (smk: "getprofile_v1")
22414    ///
22415    /// Merging outcomes:
22416    ///
22417    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
22418    ///    - The first two "AuthService" tracks merge because they share
22419    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
22420    ///      aligning with recommendations. The merged track is named "AuthService".
22421    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
22422    ///      remains separate, as its `sibling_merge_key` is different.
22423    ///    - "UserProfileService" also remains separate.
22424    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
22425    ///      "LoginOp" get merged as they have the same sibling merge key.
22426    ///
22427    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
22428    ///      SystemActivity
22429    ///      ├── AuthService (merged by smk: "auth_main_cluster")
22430    ///      │   ├── LoginOp (merged by smk: "login_v1")
22431    ///      ├── AuthService (smk: "auth_backup_cluster")
22432    ///      │   └── GuestOp (smk: "guest_v1")
22433    ///      └── UserProfileService (smk: "profile_cluster")
22434    ///          └── GetProfileOp (smk: "getprofile_v1")
22435    ///
22436    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
22437    ///    - All three tracks named "AuthService" merge because they share the same
22438    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
22439    ///      for this merged track would be taken from one of the source tracks
22440    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
22441    ///      relevant if its children had key-based merge behaviors.
22442    ///    - "UserProfileService" remains separate due to its different name.
22443    ///    - Within the single merged "AuthService" track:
22444    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
22445    ///      they have the same name.
22446    ///
22447    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
22448    ///      SystemActivity
22449    ///      ├── AuthService (merged from 3 "AuthService" tracks)
22450    ///      │   ├── LoginOp (smk: "login_v1")
22451    ///      │   └── GuestOp (smk: "guest_v1")
22452    ///      └── UserProfileService (smk: "profile_cluster")
22453    ///          └── GetProfileOp (smk: "getprofile_v1")
22454    ///
22455    /// Note: for tracks where `thread` or `process` are set, this option is
22456    /// *ignored*. See `parent_uuid` for details.
22457    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22458    #[repr(i32)]
22459    pub enum SiblingMergeBehavior {
22460        /// When unspecified or not set, defaults to
22461        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
22462        Unspecified = 0,
22463        /// Merge this track with eligible siblings which have the same `name`.
22464        ///
22465        /// This is the default behavior.option.
22466        ///
22467        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
22468        /// worked this way for years and inherited this behavior from
22469        /// chrome://tracing which has worked this way for even longer
22470        ByTrackName = 1,
22471        /// Never merge this track with any siblings. Useful if if this track has a
22472        /// specific meaning and you want to see separately from any others.
22473        None = 2,
22474        /// Merge this track with eligible siblings which have the same
22475        /// `sibling_merge_key`.
22476        BySiblingMergeKey = 3,
22477    }
22478    impl SiblingMergeBehavior {
22479        /// String value of the enum field names used in the ProtoBuf definition.
22480        ///
22481        /// The values are not transformed in any way and thus are considered stable
22482        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22483        pub fn as_str_name(&self) -> &'static str {
22484            match self {
22485                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
22486                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
22487                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
22488                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
22489            }
22490        }
22491    }
22492    /// Name of the track.
22493    ///
22494    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
22495    /// emitted before any `TrackEvent`s on the same track.
22496    ///
22497    /// Note: any name specified here will be *ignored* for the root thread scoped
22498    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
22499    /// case, the name of the track is shared by many different data sources and so
22500    /// is centrally controlled by trace processor.
22501    ///
22502    /// It's strongly recommended to only emit the name for a track uuid *once*. If
22503    /// a descriptor *has* to be emitted multiple times (e.g. between different
22504    /// processes), it's recommended to ensure that the name is consistent across
22505    /// all TrackDescriptors with the same `uuid`.
22506    ///
22507    /// If the the above recommendation is not followed and the same uuid is
22508    /// emitted with different names, it is implementation defined how the final
22509    /// name will be chosen and may change at any time.
22510    ///
22511    /// The current implementation of trace processor chooses the name in the
22512    /// following way, depending on the value of the `sibling_merge_behavior`
22513    /// field:
22514    ///
22515    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
22516    ///    * The *last* non-null name in the whole trace according to trace order
22517    ///      will be used.
22518    ///    * If no non-null name is present in the whole trace, the trace processor
22519    ///      may fall back to other sources to provide a name for the track (e.g.
22520    ///      the first event name for slice tracks, the counter name for counter
22521    ///      tracks). This is implementation defined and may change at any time.
22522    ///
22523    /// 2. If `sibling_merge_behavior` is set to any other value:
22524    ///    * The first non-null name before the first event on the track *or on any
22525    ///      descendant tracks* is processed will be used. For example, consider
22526    ///      the following sequence of events:
22527    ///        ts=100: TrackDescriptor(uuid=A)
22528    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
22529    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
22530    ///        ts=400: TrackEvent(track_uuid=B)
22531    ///      In this case, the name for track A will be "Track A" because the
22532    ///      descriptor with the name was emitted before the first event on a
22533    ///      descendant track (B).
22534    ///    * If no non-null name is present before the event is processed, the trace
22535    ///      processor may fall back to other sources to provide a name for the
22536    ///      track (e.g. the first event name for slice tracks, the counter name for
22537    ///      counter tracks). This is implementation defined and may change at any
22538    ///      time.
22539    ///    * Note on processing order: In the standard trace processor pipeline,
22540    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
22541    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
22542    ///      track, all its descriptors in the trace are processed before its
22543    ///      events. Consequently, the "first non-null name before the first event"
22544    ///      will be the name from the first `TrackDescriptor` for that track in the
22545    ///      trace file that has a non-null name. However, in a streaming parsing
22546    ///      scenario, the timestamp order of descriptors and events is significant,
22547    ///      and a descriptor arriving after an event has been processed will not be
22548    ///      used to name the track.
22549    #[derive(Clone, PartialEq, ::prost::Oneof)]
22550    pub enum StaticOrDynamicName {
22551        #[prost(string, tag="2")]
22552        Name(::prost::alloc::string::String),
22553        /// This field is only set by the SDK when perfetto::StaticString is
22554        /// provided.
22555        #[prost(string, tag="10")]
22556        StaticName(::prost::alloc::string::String),
22557        /// Equivalent to name, used just to mark that the data is coming from
22558        /// android.os.Trace.
22559        #[prost(string, tag="13")]
22560        AtraceName(::prost::alloc::string::String),
22561    }
22562}
22563// End of protos/perfetto/trace/track_event/track_descriptor.proto
22564
22565// Begin of protos/perfetto/trace/translation/translation_table.proto
22566
22567/// Translation rules for the trace processor.
22568/// See the comments for each rule type for specific meaning.
22569#[derive(Clone, PartialEq, ::prost::Message)]
22570pub struct TranslationTable {
22571    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
22572    pub table: ::core::option::Option<translation_table::Table>,
22573}
22574/// Nested message and enum types in `TranslationTable`.
22575pub mod translation_table {
22576    #[derive(Clone, PartialEq, ::prost::Oneof)]
22577    pub enum Table {
22578        #[prost(message, tag="1")]
22579        ChromeHistogram(super::ChromeHistorgramTranslationTable),
22580        #[prost(message, tag="2")]
22581        ChromeUserEvent(super::ChromeUserEventTranslationTable),
22582        #[prost(message, tag="3")]
22583        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
22584        #[prost(message, tag="4")]
22585        SliceName(super::SliceNameTranslationTable),
22586        #[prost(message, tag="5")]
22587        ProcessTrackName(super::ProcessTrackNameTranslationTable),
22588        #[prost(message, tag="6")]
22589        ChromeStudy(super::ChromeStudyTranslationTable),
22590    }
22591}
22592/// Chrome histogram sample hash -> name translation rules.
22593#[derive(Clone, PartialEq, ::prost::Message)]
22594pub struct ChromeHistorgramTranslationTable {
22595    #[prost(map="uint64, string", tag="1")]
22596    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22597}
22598/// Chrome user event action hash -> name translation rules.
22599#[derive(Clone, PartialEq, ::prost::Message)]
22600pub struct ChromeUserEventTranslationTable {
22601    #[prost(map="uint64, string", tag="1")]
22602    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22603}
22604/// Chrome performance mark translation rules.
22605#[derive(Clone, PartialEq, ::prost::Message)]
22606pub struct ChromePerformanceMarkTranslationTable {
22607    #[prost(map="uint32, string", tag="1")]
22608    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
22609    #[prost(map="uint32, string", tag="2")]
22610    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
22611}
22612/// Raw -> deobfuscated slice name translation rules.
22613#[derive(Clone, PartialEq, ::prost::Message)]
22614pub struct SliceNameTranslationTable {
22615    #[prost(map="string, string", tag="1")]
22616    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
22617}
22618/// Raw -> deobfuscated process track name translation rules.
22619#[derive(Clone, PartialEq, ::prost::Message)]
22620pub struct ProcessTrackNameTranslationTable {
22621    #[prost(map="string, string", tag="1")]
22622    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
22623}
22624/// Chrome study hash -> name translation rules.
22625#[derive(Clone, PartialEq, ::prost::Message)]
22626pub struct ChromeStudyTranslationTable {
22627    #[prost(map="uint64, string", tag="1")]
22628    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
22629}
22630// End of protos/perfetto/trace/translation/translation_table.proto
22631
22632// Begin of protos/perfetto/trace/trigger.proto
22633
22634/// When a TracingSession receives a trigger it records the boot time nanoseconds
22635/// in the TracePacket's timestamp field as well as the name of the producer that
22636/// triggered it. We emit this data so filtering can be done on triggers received
22637/// in the trace.
22638#[derive(Clone, PartialEq, ::prost::Message)]
22639pub struct Trigger {
22640    /// Name of the trigger which was received.
22641    #[prost(string, optional, tag="1")]
22642    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
22643    /// The actual producer that activated |trigger|.
22644    #[prost(string, optional, tag="2")]
22645    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
22646    /// The verified UID of the producer.
22647    #[prost(int32, optional, tag="3")]
22648    pub trusted_producer_uid: ::core::option::Option<i32>,
22649    /// The value of stop_delay_ms from the configuration.
22650    #[prost(uint64, optional, tag="4")]
22651    pub stop_delay_ms: ::core::option::Option<u64>,
22652}
22653// End of protos/perfetto/trace/trigger.proto
22654
22655// Begin of protos/perfetto/trace/ui_state.proto
22656
22657/// Common state for UIs visualizing Perfetto traces.
22658/// This message can be appended as a TracePacket by UIs to save the
22659/// visible state (e.g. scroll position/zoom state) for future opening
22660/// of the trace.
22661/// Design doc: go/trace-ui-state.
22662#[derive(Clone, PartialEq, ::prost::Message)]
22663pub struct UiState {
22664    /// The start and end bounds of the viewport of the UI in nanoseconds.
22665    ///
22666    /// This is the absolute time associated to slices and other events in
22667    /// trace processor tables (i.e. the |ts| column of most tables)
22668    #[prost(int64, optional, tag="1")]
22669    pub timeline_start_ts: ::core::option::Option<i64>,
22670    #[prost(int64, optional, tag="2")]
22671    pub timeline_end_ts: ::core::option::Option<i64>,
22672    #[prost(message, optional, tag="3")]
22673    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
22674}
22675/// Nested message and enum types in `UiState`.
22676pub mod ui_state {
22677    /// Indicates that the given process should be highlighted by the UI.
22678    #[derive(Clone, PartialEq, ::prost::Message)]
22679    pub struct HighlightProcess {
22680        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
22681        pub selector: ::core::option::Option<highlight_process::Selector>,
22682    }
22683    /// Nested message and enum types in `HighlightProcess`.
22684    pub mod highlight_process {
22685        #[derive(Clone, PartialEq, ::prost::Oneof)]
22686        pub enum Selector {
22687            /// The pid of the process to highlight. This is useful for UIs to focus
22688            /// on tracks of a particular process in the trace.
22689            ///
22690            /// If more than one process in a trace has the same pid, it is UI
22691            /// implementation specific how the process to be focused will be
22692            /// chosen.
22693            #[prost(uint32, tag="1")]
22694            Pid(u32),
22695            /// The command line of the process to highlight; for most Android apps,
22696            /// this is the package name of the app. This is useful for UIs to focus
22697            /// on a particular app in the trace.
22698            ///
22699            /// If more than one process hasthe same cmdline, it is UI implementation
22700            /// specific how the process to be focused will be chosen.
22701            #[prost(string, tag="2")]
22702            Cmdline(::prost::alloc::string::String),
22703        }
22704    }
22705}
22706// Begin of protos/perfetto/trace/trace_packet.proto
22707
22708/// TracePacket is the root object of a Perfetto trace.
22709/// A Perfetto trace is a linear sequence of TracePacket(s).
22710///
22711/// The tracing service guarantees that all TracePacket(s) written by a given
22712/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
22713/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
22714/// to the Consumer (or written into the trace file).
22715/// TracePacket(s) written by different TraceWriter(s), hence even different
22716/// data sources, can be seen in arbitrary order.
22717/// The consumer can re-establish a total order, if interested, using the packet
22718/// timestamps, after having synchronized the different clocks onto a global
22719/// clock.
22720///
22721/// The tracing service is agnostic of the content of TracePacket, with the
22722/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
22723/// the service itself.
22724///
22725/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
22726///
22727/// Next reserved id: 14 (up to 15).
22728/// Next id: 121.
22729#[derive(Clone, PartialEq, ::prost::Message)]
22730pub struct TracePacket {
22731    /// The timestamp of the TracePacket.
22732    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
22733    /// Android). It can be overridden using a different timestamp_clock_id.
22734    /// The clock domain definition in ClockSnapshot can also override:
22735    /// - The unit (default: 1ns).
22736    /// - The absolute vs delta encoding (default: absolute timestamp).
22737    #[prost(uint64, optional, tag="8")]
22738    pub timestamp: ::core::option::Option<u64>,
22739    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
22740    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
22741    /// producer-defined clock id.
22742    /// If unspecified and if no default per-sequence value has been provided via
22743    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
22744    #[prost(uint32, optional, tag="58")]
22745    pub timestamp_clock_id: ::core::option::Option<u32>,
22746    /// Trusted process id of the producer which generated this packet, written by
22747    /// the service.
22748    #[prost(int32, optional, tag="79")]
22749    pub trusted_pid: ::core::option::Option<i32>,
22750    /// Incrementally emitted interned data, valid only on the packet's sequence
22751    /// (packets with the same |trusted_packet_sequence_id|). The writer will
22752    /// usually emit new interned data in the same TracePacket that first refers to
22753    /// it (since the last reset of interning state). It may also be emitted
22754    /// proactively in advance of referring to them in later packets.
22755    #[prost(message, optional, tag="12")]
22756    pub interned_data: ::core::option::Option<InternedData>,
22757    #[prost(uint32, optional, tag="13")]
22758    pub sequence_flags: ::core::option::Option<u32>,
22759    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
22760    #[prost(bool, optional, tag="41")]
22761    pub incremental_state_cleared: ::core::option::Option<bool>,
22762    /// Default values for fields of later TracePackets emitted on this packet's
22763    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
22764    /// It must be reemitted when incremental state is cleared (see
22765    /// |incremental_state_cleared|).
22766    /// Requires that any future packet emitted on the same sequence specifies
22767    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
22768    /// TracePacketDefaults always override the global defaults for any future
22769    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
22770    #[prost(message, optional, tag="59")]
22771    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
22772    /// Flag set by the service if, for the current packet sequence (see
22773    /// |trusted_packet_sequence_id|), either:
22774    /// * this is the first packet, or
22775    /// * one or multiple packets were dropped since the last packet that the
22776    ///    consumer read from the sequence. This can happen if chunks in the trace
22777    ///    buffer are overridden before the consumer could read them when the trace
22778    ///    is configured in ring buffer mode.
22779    ///
22780    /// When packet loss occurs, incrementally emitted data (including interned
22781    /// data) on the sequence should be considered invalid up until the next packet
22782    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
22783    #[prost(bool, optional, tag="42")]
22784    pub previous_packet_dropped: ::core::option::Option<bool>,
22785    /// Flag set by a producer (starting from SDK v29) if, for the current packet
22786    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
22787    ///
22788    /// This flag can be used for distinguishing the two situations when
22789    /// processing the trace:
22790    /// 1. There are no prior events for the sequence because of data loss, e.g.
22791    ///     due to ring buffer wrapping.
22792    /// 2. There are no prior events for the sequence because it didn't start
22793    ///     before this packet (= there's definitely no preceding data loss).
22794    ///
22795    /// Given that older SDK versions do not support this flag, this flag not
22796    /// being present for a particular sequence does not necessarily imply data
22797    /// loss.
22798    #[prost(bool, optional, tag="87")]
22799    pub first_packet_on_sequence: ::core::option::Option<bool>,
22800    /// The machine ID for identifying trace packets in a multi-machine tracing
22801    /// session. Is emitted by the tracing service for producers running on a
22802    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
22803    #[prost(uint32, optional, tag="98")]
22804    pub machine_id: ::core::option::Option<u32>,
22805    #[prost(oneof="trace_packet::Data", tags="2, 9, 4, 5, 6, 7, 11, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 56, 57, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 80, 81, 82, 83, 84, 86, 91, 61, 64, 60, 43, 44, 1, 36, 50, 72, 88, 92, 90, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 114, 115, 116, 117, 118, 120, 119, 900")]
22806    pub data: ::core::option::Option<trace_packet::Data>,
22807    /// Trusted user id of the producer which generated this packet. Keep in sync
22808    /// with TrustedPacket.trusted_uid.
22809    ///
22810    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
22811    /// instead.
22812    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
22813    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
22814    /// Service-assigned identifier of the packet sequence this packet belongs to.
22815    /// Uniquely identifies a producer + writer pair within the tracing session. A
22816    /// value of zero denotes an invalid ID. Keep in sync with
22817    /// TrustedPacket.trusted_packet_sequence_id.
22818    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
22819    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
22820}
22821/// Nested message and enum types in `TracePacket`.
22822pub mod trace_packet {
22823    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22824    #[repr(i32)]
22825    pub enum SequenceFlags {
22826        SeqUnspecified = 0,
22827        /// Set by the writer to indicate that it will re-emit any incremental data
22828        /// for the packet's sequence before referring to it again. This includes
22829        /// interned data as well as periodically emitted data like
22830        /// Process/ThreadDescriptors. This flag only affects the current packet
22831        /// sequence (see |trusted_packet_sequence_id|).
22832        ///
22833        /// When set, this TracePacket and subsequent TracePackets on the same
22834        /// sequence will not refer to any incremental data emitted before this
22835        /// TracePacket. For example, previously emitted interned data will be
22836        /// re-emitted if it is referred to again.
22837        ///
22838        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
22839        /// to skip packets in the sequence until the next one with this flag set, to
22840        /// ensure intact incremental data.
22841        SeqIncrementalStateCleared = 1,
22842        /// This packet requires incremental state, such as TracePacketDefaults or
22843        /// InternedData, to be parsed correctly. The trace reader should skip this
22844        /// packet if incremental state is not valid on this sequence, i.e. if no
22845        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
22846        /// current |trusted_packet_sequence_id|.
22847        SeqNeedsIncrementalState = 2,
22848    }
22849    impl SequenceFlags {
22850        /// String value of the enum field names used in the ProtoBuf definition.
22851        ///
22852        /// The values are not transformed in any way and thus are considered stable
22853        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22854        pub fn as_str_name(&self) -> &'static str {
22855            match self {
22856                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
22857                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
22858                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
22859            }
22860        }
22861    }
22862    #[derive(Clone, PartialEq, ::prost::Oneof)]
22863    pub enum Data {
22864        #[prost(message, tag="2")]
22865        ProcessTree(super::ProcessTree),
22866        #[prost(message, tag="9")]
22867        ProcessStats(super::ProcessStats),
22868        #[prost(message, tag="4")]
22869        InodeFileMap(super::InodeFileMap),
22870        #[prost(message, tag="5")]
22871        ChromeEvents(super::ChromeEventBundle),
22872        #[prost(message, tag="6")]
22873        ClockSnapshot(super::ClockSnapshot),
22874        #[prost(message, tag="7")]
22875        SysStats(super::SysStats),
22876        #[prost(message, tag="11")]
22877        TrackEvent(super::TrackEvent),
22878        // IDs up to 15 are reserved. They take only one byte to encode their
22879        // preamble so should be used for frequent events.
22880
22881        #[prost(message, tag="89")]
22882        TraceUuid(super::TraceUuid),
22883        #[prost(message, tag="33")]
22884        TraceConfig(super::TraceConfig),
22885        #[prost(message, tag="34")]
22886        FtraceStats(super::FtraceStats),
22887        #[prost(message, tag="35")]
22888        TraceStats(super::TraceStats),
22889        #[prost(message, tag="37")]
22890        ProfilePacket(super::ProfilePacket),
22891        #[prost(message, tag="74")]
22892        StreamingAllocation(super::StreamingAllocation),
22893        #[prost(message, tag="75")]
22894        StreamingFree(super::StreamingFree),
22895        #[prost(message, tag="38")]
22896        Battery(super::BatteryCounters),
22897        #[prost(message, tag="40")]
22898        PowerRails(super::PowerRails),
22899        #[prost(message, tag="39")]
22900        AndroidLog(super::AndroidLogPacket),
22901        #[prost(message, tag="45")]
22902        SystemInfo(super::SystemInfo),
22903        #[prost(message, tag="46")]
22904        Trigger(super::Trigger),
22905        #[prost(message, tag="109")]
22906        ChromeTrigger(super::ChromeTrigger),
22907        #[prost(message, tag="47")]
22908        PackagesList(super::PackagesList),
22909        #[prost(message, tag="48")]
22910        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
22911        #[prost(message, tag="49")]
22912        PerfettoMetatrace(super::PerfettoMetatrace),
22913        #[prost(message, tag="51")]
22914        ChromeMetadata(super::ChromeMetadataPacket),
22915        #[prost(message, tag="52")]
22916        GpuCounterEvent(super::GpuCounterEvent),
22917        #[prost(message, tag="53")]
22918        GpuRenderStageEvent(super::GpuRenderStageEvent),
22919        #[prost(message, tag="54")]
22920        StreamingProfilePacket(super::StreamingProfilePacket),
22921        #[prost(message, tag="56")]
22922        HeapGraph(super::HeapGraph),
22923        #[prost(message, tag="57")]
22924        GraphicsFrameEvent(super::GraphicsFrameEvent),
22925        #[prost(message, tag="62")]
22926        VulkanMemoryEvent(super::VulkanMemoryEvent),
22927        #[prost(message, tag="63")]
22928        GpuLog(super::GpuLog),
22929        #[prost(message, tag="65")]
22930        VulkanApiEvent(super::VulkanApiEvent),
22931        #[prost(message, tag="66")]
22932        PerfSample(super::PerfSample),
22933        #[prost(message, tag="67")]
22934        CpuInfo(super::CpuInfo),
22935        #[prost(message, tag="68")]
22936        SmapsPacket(super::SmapsPacket),
22937        #[prost(message, tag="69")]
22938        ServiceEvent(super::TracingServiceEvent),
22939        #[prost(message, tag="70")]
22940        InitialDisplayState(super::InitialDisplayState),
22941        #[prost(message, tag="71")]
22942        GpuMemTotalEvent(super::GpuMemTotalEvent),
22943        #[prost(message, tag="73")]
22944        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
22945        #[prost(message, tag="76")]
22946        FrameTimelineEvent(super::FrameTimelineEvent),
22947        #[prost(message, tag="77")]
22948        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
22949        #[prost(message, tag="78")]
22950        UiState(super::UiState),
22951        #[prost(message, tag="80")]
22952        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
22953        #[prost(message, tag="81")]
22954        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
22955        #[prost(message, tag="82")]
22956        TranslationTable(super::TranslationTable),
22957        #[prost(message, tag="83")]
22958        AndroidGameInterventionList(super::AndroidGameInterventionList),
22959        #[prost(message, tag="84")]
22960        StatsdAtom(super::StatsdAtom),
22961        #[prost(message, tag="86")]
22962        AndroidSystemProperty(super::AndroidSystemProperty),
22963        #[prost(message, tag="91")]
22964        EntityStateResidency(super::EntityStateResidency),
22965        /// Only used in profile packets.
22966        #[prost(message, tag="61")]
22967        ModuleSymbols(super::ModuleSymbols),
22968        #[prost(message, tag="64")]
22969        DeobfuscationMapping(super::DeobfuscationMapping),
22970        /// Only used by TrackEvent.
22971        #[prost(message, tag="60")]
22972        TrackDescriptor(super::TrackDescriptor),
22973        /// Deprecated, use TrackDescriptor instead.
22974        #[prost(message, tag="43")]
22975        ProcessDescriptor(super::ProcessDescriptor),
22976        /// Deprecated, use TrackDescriptor instead.
22977        #[prost(message, tag="44")]
22978        ThreadDescriptor(super::ThreadDescriptor),
22979        /// Events from the Linux kernel ftrace infrastructure.
22980        #[prost(message, tag="1")]
22981        FtraceEvents(super::FtraceEventBundle),
22982        /// This field is emitted at periodic intervals (~10s) and
22983        /// contains always the binary representation of the UUID
22984        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
22985        /// efficiently partition long traces without having to fully parse them.
22986        #[prost(bytes, tag="36")]
22987        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
22988        /// Zero or more proto encoded trace packets compressed using deflate.
22989        /// Each compressed_packets TracePacket (including the two field ids and
22990        /// sizes) should be less than 512KB.
22991        #[prost(bytes, tag="50")]
22992        CompressedPackets(::prost::alloc::vec::Vec<u8>),
22993        /// Data sources can extend the trace proto with custom extension protos (see
22994        /// docs/design-docs/extensions.md). When they do that, the descriptor of
22995        /// their extension proto descriptor is serialized in this packet. This
22996        /// allows trace_processor to deserialize extended messages using reflection
22997        /// even if the extension proto is not checked in the Perfetto repo.
22998        #[prost(message, tag="72")]
22999        ExtensionDescriptor(super::ExtensionDescriptor),
23000        /// Represents a single packet sent or received by the network.
23001        #[prost(message, tag="88")]
23002        NetworkPacket(super::NetworkPacketEvent),
23003        /// Represents one or more packets sent or received by the network.
23004        #[prost(message, tag="92")]
23005        NetworkPacketBundle(super::NetworkPacketBundle),
23006        /// The "range of interest" for track events. See the message definition
23007        /// comments for more details.
23008        #[prost(message, tag="90")]
23009        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
23010        /// Winscope traces
23011        #[prost(message, tag="93")]
23012        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
23013        #[prost(message, tag="94")]
23014        SurfaceflingerTransactions(super::TransactionTraceEntry),
23015        #[prost(message, tag="96")]
23016        ShellTransition(super::ShellTransition),
23017        #[prost(message, tag="97")]
23018        ShellHandlerMappings(super::ShellHandlerMappings),
23019        #[prost(message, tag="104")]
23020        ProtologMessage(super::ProtoLogMessage),
23021        #[prost(message, tag="105")]
23022        ProtologViewerConfig(super::ProtoLogViewerConfig),
23023        #[prost(message, tag="112")]
23024        WinscopeExtensions(super::WinscopeExtensions),
23025        /// Events from the Windows etw infrastructure.
23026        #[prost(message, tag="95")]
23027        EtwEvents(super::EtwTraceEventBundle),
23028        #[prost(message, tag="99")]
23029        V8JsCode(super::V8JsCode),
23030        #[prost(message, tag="100")]
23031        V8InternalCode(super::V8InternalCode),
23032        #[prost(message, tag="101")]
23033        V8WasmCode(super::V8WasmCode),
23034        #[prost(message, tag="102")]
23035        V8RegExpCode(super::V8RegExpCode),
23036        #[prost(message, tag="103")]
23037        V8CodeMove(super::V8CodeMove),
23038        /// Clock synchronization with remote machines.
23039        #[prost(message, tag="107")]
23040        RemoteClockSync(super::RemoteClockSync),
23041        #[prost(message, tag="110")]
23042        PixelModemEvents(super::PixelModemEvents),
23043        #[prost(message, tag="111")]
23044        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
23045        #[prost(message, tag="113")]
23046        CloneSnapshotTrigger(super::Trigger),
23047        #[prost(message, tag="114")]
23048        BluetoothTraceEvent(super::BluetoothTraceEvent),
23049        #[prost(message, tag="115")]
23050        KernelWakelockData(super::KernelWakelockData),
23051        #[prost(message, tag="116")]
23052        AppWakelockBundle(super::AppWakelockBundle),
23053        /// Generic events for a standard kernel implementation
23054        #[prost(message, tag="117")]
23055        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
23056        #[prost(message, tag="118")]
23057        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
23058        #[prost(message, tag="120")]
23059        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
23060        #[prost(message, tag="119")]
23061        CpuPerUidData(super::CpuPerUidData),
23062        /// This field is only used for testing.
23063        /// In previous versions of this proto this field had the id 268435455
23064        /// This caused many problems:
23065        /// - protozero decoder does not handle field ids larger than 999.
23066        /// - old versions of protoc produce Java bindings with syntax errors when
23067        ///    the field id is large enough.
23068        #[prost(message, tag="900")]
23069        ForTesting(super::TestEvent),
23070    }
23071    /// Trusted user id of the producer which generated this packet. Keep in sync
23072    /// with TrustedPacket.trusted_uid.
23073    ///
23074    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
23075    /// instead.
23076    #[derive(Clone, PartialEq, ::prost::Oneof)]
23077    pub enum OptionalTrustedUid {
23078        #[prost(int32, tag="3")]
23079        TrustedUid(i32),
23080    }
23081    /// Service-assigned identifier of the packet sequence this packet belongs to.
23082    /// Uniquely identifies a producer + writer pair within the tracing session. A
23083    /// value of zero denotes an invalid ID. Keep in sync with
23084    /// TrustedPacket.trusted_packet_sequence_id.
23085    #[derive(Clone, PartialEq, ::prost::Oneof)]
23086    pub enum OptionalTrustedPacketSequenceId {
23087        #[prost(uint32, tag="10")]
23088        TrustedPacketSequenceId(u32),
23089    }
23090}
23091// End of protos/perfetto/trace/trace_packet.proto
23092
23093// Begin of protos/perfetto/trace/trace.proto
23094
23095#[derive(Clone, PartialEq, ::prost::Message)]
23096pub struct Trace {
23097    #[prost(message, repeated, tag="1")]
23098    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
23099}
23100// End of protos/perfetto/common/tracing_service_state.proto
23101
23102// Begin of protos/perfetto/common/builtin_clock.proto
23103
23104#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23105#[repr(i32)]
23106pub enum BuiltinClock {
23107    Unknown = 0,
23108    Realtime = 1,
23109    RealtimeCoarse = 2,
23110    Monotonic = 3,
23111    MonotonicCoarse = 4,
23112    MonotonicRaw = 5,
23113    Boottime = 6,
23114    Tsc = 9,
23115    Perf = 10,
23116    MaxId = 63,
23117}
23118impl BuiltinClock {
23119    /// String value of the enum field names used in the ProtoBuf definition.
23120    ///
23121    /// The values are not transformed in any way and thus are considered stable
23122    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23123    pub fn as_str_name(&self) -> &'static str {
23124        match self {
23125            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
23126            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
23127            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
23128            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
23129            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
23130            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
23131            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
23132            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
23133            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
23134            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
23135        }
23136    }
23137}
23138// End of protos/perfetto/config/android/android_input_event_config.proto
23139
23140// Begin of protos/perfetto/common/android_log_constants.proto
23141
23142/// Values from NDK's android/log.h.
23143#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23144#[repr(i32)]
23145pub enum AndroidLogId {
23146    /// MAIN.
23147    LidDefault = 0,
23148    LidRadio = 1,
23149    LidEvents = 2,
23150    LidSystem = 3,
23151    LidCrash = 4,
23152    LidStats = 5,
23153    LidSecurity = 6,
23154    LidKernel = 7,
23155}
23156impl AndroidLogId {
23157    /// String value of the enum field names used in the ProtoBuf definition.
23158    ///
23159    /// The values are not transformed in any way and thus are considered stable
23160    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23161    pub fn as_str_name(&self) -> &'static str {
23162        match self {
23163            AndroidLogId::LidDefault => "LID_DEFAULT",
23164            AndroidLogId::LidRadio => "LID_RADIO",
23165            AndroidLogId::LidEvents => "LID_EVENTS",
23166            AndroidLogId::LidSystem => "LID_SYSTEM",
23167            AndroidLogId::LidCrash => "LID_CRASH",
23168            AndroidLogId::LidStats => "LID_STATS",
23169            AndroidLogId::LidSecurity => "LID_SECURITY",
23170            AndroidLogId::LidKernel => "LID_KERNEL",
23171        }
23172    }
23173}
23174#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23175#[repr(i32)]
23176pub enum AndroidLogPriority {
23177    PrioUnspecified = 0,
23178    /// _DEFAULT, but should never be seen in logs.
23179    PrioUnused = 1,
23180    PrioVerbose = 2,
23181    PrioDebug = 3,
23182    PrioInfo = 4,
23183    PrioWarn = 5,
23184    PrioError = 6,
23185    PrioFatal = 7,
23186}
23187impl AndroidLogPriority {
23188    /// String value of the enum field names used in the ProtoBuf definition.
23189    ///
23190    /// The values are not transformed in any way and thus are considered stable
23191    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23192    pub fn as_str_name(&self) -> &'static str {
23193        match self {
23194            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
23195            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
23196            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
23197            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
23198            AndroidLogPriority::PrioInfo => "PRIO_INFO",
23199            AndroidLogPriority::PrioWarn => "PRIO_WARN",
23200            AndroidLogPriority::PrioError => "PRIO_ERROR",
23201            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
23202        }
23203    }
23204}
23205// End of protos/perfetto/config/android/pixel_modem_config.proto
23206
23207// Begin of protos/perfetto/common/protolog_common.proto
23208
23209#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23210#[repr(i32)]
23211pub enum ProtoLogLevel {
23212    ProtologLevelUndefined = 0,
23213    ProtologLevelDebug = 1,
23214    ProtologLevelVerbose = 2,
23215    ProtologLevelInfo = 3,
23216    ProtologLevelWarn = 4,
23217    ProtologLevelError = 5,
23218    ProtologLevelWtf = 6,
23219}
23220impl ProtoLogLevel {
23221    /// String value of the enum field names used in the ProtoBuf definition.
23222    ///
23223    /// The values are not transformed in any way and thus are considered stable
23224    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23225    pub fn as_str_name(&self) -> &'static str {
23226        match self {
23227            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
23228            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
23229            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
23230            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
23231            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
23232            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
23233            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
23234        }
23235    }
23236}
23237// End of protos/perfetto/config/profiling/perf_event_config.proto
23238
23239// Begin of protos/perfetto/config/statsd/atom_ids.proto
23240
23241/// This enum is obtained by post-processing
23242/// AOSP/frameworks/proto_logging/stats/atoms.proto through
23243/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
23244/// enum value for each proto field defined in the upstream atoms.proto.
23245#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23246#[repr(i32)]
23247pub enum AtomId {
23248    AtomUnspecified = 0,
23249    AtomBleScanStateChanged = 2,
23250    AtomProcessStateChanged = 3,
23251    AtomBleScanResultReceived = 4,
23252    AtomSensorStateChanged = 5,
23253    AtomGpsScanStateChanged = 6,
23254    AtomSyncStateChanged = 7,
23255    AtomScheduledJobStateChanged = 8,
23256    AtomScreenBrightnessChanged = 9,
23257    AtomWakelockStateChanged = 10,
23258    AtomLongPartialWakelockStateChanged = 11,
23259    AtomMobileRadioPowerStateChanged = 12,
23260    AtomWifiRadioPowerStateChanged = 13,
23261    AtomActivityManagerSleepStateChanged = 14,
23262    AtomMemoryFactorStateChanged = 15,
23263    AtomExcessiveCpuUsageReported = 16,
23264    AtomCachedKillReported = 17,
23265    AtomProcessMemoryStatReported = 18,
23266    AtomLauncherEvent = 19,
23267    AtomBatterySaverModeStateChanged = 20,
23268    AtomDeviceIdleModeStateChanged = 21,
23269    AtomDeviceIdlingModeStateChanged = 22,
23270    AtomAudioStateChanged = 23,
23271    AtomMediaCodecStateChanged = 24,
23272    AtomCameraStateChanged = 25,
23273    AtomFlashlightStateChanged = 26,
23274    AtomUidProcessStateChanged = 27,
23275    AtomProcessLifeCycleStateChanged = 28,
23276    AtomScreenStateChanged = 29,
23277    AtomBatteryLevelChanged = 30,
23278    AtomChargingStateChanged = 31,
23279    AtomPluggedStateChanged = 32,
23280    AtomInteractiveStateChanged = 33,
23281    AtomTouchEventReported = 34,
23282    AtomWakeupAlarmOccurred = 35,
23283    AtomKernelWakeupReported = 36,
23284    AtomWifiLockStateChanged = 37,
23285    AtomWifiSignalStrengthChanged = 38,
23286    AtomWifiScanStateChanged = 39,
23287    AtomPhoneSignalStrengthChanged = 40,
23288    AtomSettingChanged = 41,
23289    AtomActivityForegroundStateChanged = 42,
23290    AtomIsolatedUidChanged = 43,
23291    AtomPacketWakeupOccurred = 44,
23292    AtomWallClockTimeShifted = 45,
23293    AtomAnomalyDetected = 46,
23294    AtomAppBreadcrumbReported = 47,
23295    AtomAppStartOccurred = 48,
23296    AtomAppStartCanceled = 49,
23297    AtomAppStartFullyDrawn = 50,
23298    AtomLmkKillOccurred = 51,
23299    AtomPictureInPictureStateChanged = 52,
23300    AtomWifiMulticastLockStateChanged = 53,
23301    AtomAppStartMemoryStateCaptured = 55,
23302    AtomShutdownSequenceReported = 56,
23303    AtomBootSequenceReported = 57,
23304    AtomOverlayStateChanged = 59,
23305    AtomForegroundServiceStateChanged = 60,
23306    AtomCallStateChanged = 61,
23307    AtomKeyguardStateChanged = 62,
23308    AtomKeyguardBouncerStateChanged = 63,
23309    AtomKeyguardBouncerPasswordEntered = 64,
23310    AtomAppDied = 65,
23311    AtomResourceConfigurationChanged = 66,
23312    AtomBluetoothEnabledStateChanged = 67,
23313    AtomBluetoothConnectionStateChanged = 68,
23314    AtomGpsSignalQualityChanged = 69,
23315    AtomUsbConnectorStateChanged = 70,
23316    AtomSpeakerImpedanceReported = 71,
23317    AtomHardwareFailed = 72,
23318    AtomPhysicalDropDetected = 73,
23319    AtomChargeCyclesReported = 74,
23320    AtomMobileConnectionStateChanged = 75,
23321    AtomMobileRadioTechnologyChanged = 76,
23322    AtomUsbDeviceAttached = 77,
23323    AtomAppCrashOccurred = 78,
23324    AtomAnrOccurred = 79,
23325    AtomWtfOccurred = 80,
23326    AtomLowMemReported = 81,
23327    AtomGenericAtom = 82,
23328    AtomVibratorStateChanged = 84,
23329    AtomDeferredJobStatsReported = 85,
23330    AtomThermalThrottling = 86,
23331    AtomBiometricAcquired = 87,
23332    AtomBiometricAuthenticated = 88,
23333    AtomBiometricErrorOccurred = 89,
23334    AtomUiEventReported = 90,
23335    AtomBatteryHealthSnapshot = 91,
23336    AtomSlowIo = 92,
23337    AtomBatteryCausedShutdown = 93,
23338    AtomPhoneServiceStateChanged = 94,
23339    AtomPhoneStateChanged = 95,
23340    AtomUserRestrictionChanged = 96,
23341    AtomSettingsUiChanged = 97,
23342    AtomConnectivityStateChanged = 98,
23343    AtomServiceStateChanged = 99,
23344    AtomServiceLaunchReported = 100,
23345    AtomFlagFlipUpdateOccurred = 101,
23346    AtomBinaryPushStateChanged = 102,
23347    AtomDevicePolicyEvent = 103,
23348    AtomDocsUiFileOpCanceled = 104,
23349    AtomDocsUiFileOpCopyMoveModeReported = 105,
23350    AtomDocsUiFileOpFailure = 106,
23351    AtomDocsUiProviderFileOp = 107,
23352    AtomDocsUiInvalidScopedAccessRequest = 108,
23353    AtomDocsUiLaunchReported = 109,
23354    AtomDocsUiRootVisited = 110,
23355    AtomDocsUiStartupMs = 111,
23356    AtomDocsUiUserActionReported = 112,
23357    AtomWifiEnabledStateChanged = 113,
23358    AtomWifiRunningStateChanged = 114,
23359    AtomAppCompacted = 115,
23360    AtomNetworkDnsEventReported = 116,
23361    AtomDocsUiPickerLaunchedFromReported = 117,
23362    AtomDocsUiPickResultReported = 118,
23363    AtomDocsUiSearchModeReported = 119,
23364    AtomDocsUiSearchTypeReported = 120,
23365    AtomDataStallEvent = 121,
23366    AtomRescuePartyResetReported = 122,
23367    AtomSignedConfigReported = 123,
23368    AtomGnssNiEventReported = 124,
23369    AtomBluetoothLinkLayerConnectionEvent = 125,
23370    AtomBluetoothAclConnectionStateChanged = 126,
23371    AtomBluetoothScoConnectionStateChanged = 127,
23372    AtomAppDowngraded = 128,
23373    AtomAppOptimizedAfterDowngraded = 129,
23374    AtomLowStorageStateChanged = 130,
23375    AtomGnssNfwNotificationReported = 131,
23376    AtomGnssConfigurationReported = 132,
23377    AtomUsbPortOverheatEventReported = 133,
23378    AtomNfcErrorOccurred = 134,
23379    AtomNfcStateChanged = 135,
23380    AtomNfcBeamOccurred = 136,
23381    AtomNfcCardemulationOccurred = 137,
23382    AtomNfcTagOccurred = 138,
23383    AtomNfcHceTransactionOccurred = 139,
23384    AtomSeStateChanged = 140,
23385    AtomSeOmapiReported = 141,
23386    AtomBroadcastDispatchLatencyReported = 142,
23387    AtomAttentionManagerServiceResultReported = 143,
23388    AtomAdbConnectionChanged = 144,
23389    AtomSpeechDspStatReported = 145,
23390    AtomUsbContaminantReported = 146,
23391    AtomWatchdogRollbackOccurred = 147,
23392    AtomBiometricSystemHealthIssueDetected = 148,
23393    AtomBubbleUiChanged = 149,
23394    AtomScheduledJobConstraintChanged = 150,
23395    AtomBluetoothActiveDeviceChanged = 151,
23396    AtomBluetoothA2dpPlaybackStateChanged = 152,
23397    AtomBluetoothA2dpCodecConfigChanged = 153,
23398    AtomBluetoothA2dpCodecCapabilityChanged = 154,
23399    AtomBluetoothA2dpAudioUnderrunReported = 155,
23400    AtomBluetoothA2dpAudioOverrunReported = 156,
23401    AtomBluetoothDeviceRssiReported = 157,
23402    AtomBluetoothDeviceFailedContactCounterReported = 158,
23403    AtomBluetoothDeviceTxPowerLevelReported = 159,
23404    AtomBluetoothHciTimeoutReported = 160,
23405    AtomBluetoothQualityReportReported = 161,
23406    AtomBluetoothDeviceInfoReported = 162,
23407    AtomBluetoothRemoteVersionInfoReported = 163,
23408    AtomBluetoothSdpAttributeReported = 164,
23409    AtomBluetoothBondStateChanged = 165,
23410    AtomBluetoothClassicPairingEventReported = 166,
23411    AtomBluetoothSmpPairingEventReported = 167,
23412    AtomScreenTimeoutExtensionReported = 168,
23413    AtomProcessStartTime = 169,
23414    AtomPermissionGrantRequestResultReported = 170,
23415    AtomBluetoothSocketConnectionStateChanged = 171,
23416    AtomDeviceIdentifierAccessDenied = 172,
23417    AtomBubbleDeveloperErrorReported = 173,
23418    AtomAssistGestureStageReported = 174,
23419    AtomAssistGestureFeedbackReported = 175,
23420    AtomAssistGestureProgressReported = 176,
23421    AtomTouchGestureClassified = 177,
23422    AtomHiddenApiUsed = 178,
23423    AtomStyleUiChanged = 179,
23424    AtomPrivacyIndicatorsInteracted = 180,
23425    AtomAppInstallOnExternalStorageReported = 181,
23426    AtomNetworkStackReported = 182,
23427    AtomAppMovedStorageReported = 183,
23428    AtomBiometricEnrolled = 184,
23429    AtomSystemServerWatchdogOccurred = 185,
23430    AtomTombStoneOccurred = 186,
23431    AtomBluetoothClassOfDeviceReported = 187,
23432    AtomIntelligenceEventReported = 188,
23433    AtomThermalThrottlingSeverityStateChanged = 189,
23434    AtomRoleRequestResultReported = 190,
23435    AtomMediametricsAudiopolicyReported = 191,
23436    AtomMediametricsAudiorecordReported = 192,
23437    AtomMediametricsAudiothreadReported = 193,
23438    AtomMediametricsAudiotrackReported = 194,
23439    AtomMediametricsCodecReported = 195,
23440    AtomMediametricsDrmWidevineReported = 196,
23441    AtomMediametricsExtractorReported = 197,
23442    AtomMediametricsMediadrmReported = 198,
23443    AtomMediametricsNuplayerReported = 199,
23444    AtomMediametricsRecorderReported = 200,
23445    AtomMediametricsDrmmanagerReported = 201,
23446    AtomCarPowerStateChanged = 203,
23447    AtomGarageModeInfo = 204,
23448    AtomTestAtomReported = 205,
23449    AtomContentCaptureCallerMismatchReported = 206,
23450    AtomContentCaptureServiceEvents = 207,
23451    AtomContentCaptureSessionEvents = 208,
23452    AtomContentCaptureFlushed = 209,
23453    AtomLocationManagerApiUsageReported = 210,
23454    AtomReviewPermissionsFragmentResultReported = 211,
23455    AtomRuntimePermissionsUpgradeResult = 212,
23456    AtomGrantPermissionsActivityButtonActions = 213,
23457    AtomLocationAccessCheckNotificationAction = 214,
23458    AtomAppPermissionFragmentActionReported = 215,
23459    AtomAppPermissionFragmentViewed = 216,
23460    AtomAppPermissionsFragmentViewed = 217,
23461    AtomPermissionAppsFragmentViewed = 218,
23462    AtomTextSelectionEvent = 219,
23463    AtomTextLinkifyEvent = 220,
23464    AtomConversationActionsEvent = 221,
23465    AtomLanguageDetectionEvent = 222,
23466    AtomExclusionRectStateChanged = 223,
23467    AtomBackGestureReportedReported = 224,
23468    AtomUpdateEngineUpdateAttemptReported = 225,
23469    AtomUpdateEngineSuccessfulUpdateReported = 226,
23470    AtomCameraActionEvent = 227,
23471    AtomAppCompatibilityChangeReported = 228,
23472    AtomPerfettoUploaded = 229,
23473    AtomVmsClientConnectionStateChanged = 230,
23474    AtomMediaProviderScanOccurred = 233,
23475    AtomMediaContentDeleted = 234,
23476    AtomMediaProviderPermissionRequested = 235,
23477    AtomMediaProviderSchemaChanged = 236,
23478    AtomMediaProviderIdleMaintenanceFinished = 237,
23479    AtomRebootEscrowRecoveryReported = 238,
23480    AtomBootTimeEventDurationReported = 239,
23481    AtomBootTimeEventElapsedTimeReported = 240,
23482    AtomBootTimeEventUtcTimeReported = 241,
23483    AtomBootTimeEventErrorCodeReported = 242,
23484    AtomUserspaceRebootReported = 243,
23485    AtomNotificationReported = 244,
23486    AtomNotificationPanelReported = 245,
23487    AtomNotificationChannelModified = 246,
23488    AtomIntegrityCheckResultReported = 247,
23489    AtomIntegrityRulesPushed = 248,
23490    AtomCbMessageReported = 249,
23491    AtomCbMessageError = 250,
23492    AtomWifiHealthStatReported = 251,
23493    AtomWifiFailureStatReported = 252,
23494    AtomWifiConnectionResultReported = 253,
23495    AtomAppFreezeChanged = 254,
23496    AtomSnapshotMergeReported = 255,
23497    AtomForegroundServiceAppOpSessionEnded = 256,
23498    AtomDisplayJankReported = 257,
23499    AtomAppStandbyBucketChanged = 258,
23500    AtomSharesheetStarted = 259,
23501    AtomRankingSelected = 260,
23502    AtomTvsettingsUiInteracted = 261,
23503    AtomLauncherSnapshot = 262,
23504    AtomPackageInstallerV2Reported = 263,
23505    AtomUserLifecycleJourneyReported = 264,
23506    AtomUserLifecycleEventOccurred = 265,
23507    AtomAccessibilityShortcutReported = 266,
23508    AtomAccessibilityServiceReported = 267,
23509    AtomDocsUiDragAndDropReported = 268,
23510    AtomAppUsageEventOccurred = 269,
23511    AtomAutoRevokeNotificationClicked = 270,
23512    AtomAutoRevokeFragmentAppViewed = 271,
23513    AtomAutoRevokedAppInteraction = 272,
23514    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
23515    AtomEvsUsageStatsReported = 274,
23516    AtomAudioPowerUsageDataReported = 275,
23517    AtomTvTunerStateChanged = 276,
23518    AtomMediaoutputOpSwitchReported = 277,
23519    AtomCbMessageFiltered = 278,
23520    AtomTvTunerDvrStatus = 279,
23521    AtomTvCasSessionOpenStatus = 280,
23522    AtomAssistantInvocationReported = 281,
23523    AtomDisplayWakeReported = 282,
23524    AtomCarUserHalModifyUserRequestReported = 283,
23525    AtomCarUserHalModifyUserResponseReported = 284,
23526    AtomCarUserHalPostSwitchResponseReported = 285,
23527    AtomCarUserHalInitialUserInfoRequestReported = 286,
23528    AtomCarUserHalInitialUserInfoResponseReported = 287,
23529    AtomCarUserHalUserAssociationRequestReported = 288,
23530    AtomCarUserHalSetUserAssociationResponseReported = 289,
23531    AtomNetworkIpProvisioningReported = 290,
23532    AtomNetworkDhcpRenewReported = 291,
23533    AtomNetworkValidationReported = 292,
23534    AtomNetworkStackQuirkReported = 293,
23535    AtomMediametricsAudiorecorddeviceusageReported = 294,
23536    AtomMediametricsAudiothreaddeviceusageReported = 295,
23537    AtomMediametricsAudiotrackdeviceusageReported = 296,
23538    AtomMediametricsAudiodeviceconnectionReported = 297,
23539    AtomBlobCommitted = 298,
23540    AtomBlobLeased = 299,
23541    AtomBlobOpened = 300,
23542    AtomContactsProviderStatusReported = 301,
23543    AtomKeystoreKeyEventReported = 302,
23544    AtomNetworkTetheringReported = 303,
23545    AtomImeTouchReported = 304,
23546    AtomUiInteractionFrameInfoReported = 305,
23547    AtomUiActionLatencyReported = 306,
23548    AtomWifiDisconnectReported = 307,
23549    AtomWifiConnectionStateChanged = 308,
23550    AtomHdmiCecActiveSourceChanged = 309,
23551    AtomHdmiCecMessageReported = 310,
23552    AtomAirplaneMode = 311,
23553    AtomModemRestart = 312,
23554    AtomCarrierIdMismatchReported = 313,
23555    AtomCarrierIdTableUpdated = 314,
23556    AtomDataStallRecoveryReported = 315,
23557    AtomMediametricsMediaparserReported = 316,
23558    AtomTlsHandshakeReported = 317,
23559    AtomTextClassifierApiUsageReported = 318,
23560    AtomCarWatchdogKillStatsReported = 319,
23561    AtomMediametricsPlaybackReported = 320,
23562    AtomMediaNetworkInfoChanged = 321,
23563    AtomMediaPlaybackStateChanged = 322,
23564    AtomMediaPlaybackErrorReported = 323,
23565    AtomMediaPlaybackTrackChanged = 324,
23566    AtomWifiScanReported = 325,
23567    AtomWifiPnoScanReported = 326,
23568    AtomTifTuneChanged = 327,
23569    AtomAutoRotateReported = 328,
23570    AtomPerfettoTrigger = 329,
23571    AtomTranscodingData = 330,
23572    AtomImsServiceEntitlementUpdated = 331,
23573    AtomDeviceRotated = 333,
23574    AtomSimSpecificSettingsRestored = 334,
23575    AtomTextClassifierDownloadReported = 335,
23576    AtomPinStorageEvent = 336,
23577    AtomFaceDownReported = 337,
23578    AtomBluetoothHalCrashReasonReported = 338,
23579    AtomRebootEscrowPreparationReported = 339,
23580    AtomRebootEscrowLskfCaptureReported = 340,
23581    AtomRebootEscrowRebootReported = 341,
23582    AtomBinderLatencyReported = 342,
23583    AtomMediametricsAaudiostreamReported = 343,
23584    AtomMediaTranscodingSessionEnded = 344,
23585    AtomMagnificationUsageReported = 345,
23586    AtomMagnificationModeWithImeOnReported = 346,
23587    AtomAppSearchCallStatsReported = 347,
23588    AtomAppSearchPutDocumentStatsReported = 348,
23589    AtomDeviceControlChanged = 349,
23590    AtomDeviceStateChanged = 350,
23591    AtomInputdeviceRegistered = 351,
23592    AtomSmartspaceCardReported = 352,
23593    AtomAuthPromptAuthenticateInvoked = 353,
23594    AtomAuthManagerCanAuthenticateInvoked = 354,
23595    AtomAuthEnrollActionInvoked = 355,
23596    AtomAuthDeprecatedApiUsed = 356,
23597    AtomUnattendedRebootOccurred = 357,
23598    AtomLongRebootBlockingReported = 358,
23599    AtomLocationTimeZoneProviderStateChanged = 359,
23600    AtomFdtrackEventOccurred = 364,
23601    AtomTimeoutAutoExtendedReported = 365,
23602    AtomAlarmBatchDelivered = 367,
23603    AtomAlarmScheduled = 368,
23604    AtomCarWatchdogIoOveruseStatsReported = 369,
23605    AtomUserLevelHibernationStateChanged = 370,
23606    AtomAppSearchInitializeStatsReported = 371,
23607    AtomAppSearchQueryStatsReported = 372,
23608    AtomAppProcessDied = 373,
23609    AtomNetworkIpReachabilityMonitorReported = 374,
23610    AtomSlowInputEventReported = 375,
23611    AtomAnrOccurredProcessingStarted = 376,
23612    AtomAppSearchRemoveStatsReported = 377,
23613    AtomMediaCodecReported = 378,
23614    AtomPermissionUsageFragmentInteraction = 379,
23615    AtomPermissionDetailsInteraction = 380,
23616    AtomPrivacySensorToggleInteraction = 381,
23617    AtomPrivacyToggleDialogInteraction = 382,
23618    AtomAppSearchOptimizeStatsReported = 383,
23619    AtomNonA11yToolServiceWarningReport = 384,
23620    AtomAppCompatStateChanged = 386,
23621    AtomSizeCompatRestartButtonEventReported = 387,
23622    AtomSplitscreenUiChanged = 388,
23623    AtomNetworkDnsHandshakeReported = 389,
23624    AtomBluetoothCodePathCounter = 390,
23625    AtomBluetoothLeBatchScanReportDelay = 392,
23626    AtomAccessibilityFloatingMenuUiChanged = 393,
23627    AtomNeuralnetworksCompilationCompleted = 394,
23628    AtomNeuralnetworksExecutionCompleted = 395,
23629    AtomNeuralnetworksCompilationFailed = 396,
23630    AtomNeuralnetworksExecutionFailed = 397,
23631    AtomContextHubBooted = 398,
23632    AtomContextHubRestarted = 399,
23633    AtomContextHubLoadedNanoappSnapshotReported = 400,
23634    AtomChreCodeDownloadTransacted = 401,
23635    AtomUwbSessionInited = 402,
23636    AtomUwbSessionClosed = 403,
23637    AtomUwbFirstRangingReceived = 404,
23638    AtomUwbRangingMeasurementReceived = 405,
23639    AtomTextClassifierDownloadWorkScheduled = 406,
23640    AtomTextClassifierDownloadWorkCompleted = 407,
23641    AtomClipboardCleared = 408,
23642    AtomVmCreationRequested = 409,
23643    AtomNearbyDeviceScanStateChanged = 410,
23644    AtomApplicationLocalesChanged = 412,
23645    AtomMediametricsAudiotrackstatusReported = 413,
23646    AtomFoldStateDurationReported = 414,
23647    AtomLocationTimeZoneProviderControllerStateChanged = 415,
23648    AtomDisplayHbmStateChanged = 416,
23649    AtomDisplayHbmBrightnessChanged = 417,
23650    AtomPersistentUriPermissionsFlushed = 418,
23651    AtomEarlyBootCompOsArtifactsCheckReported = 419,
23652    AtomVbmetaDigestReported = 420,
23653    AtomApexInfoGathered = 421,
23654    AtomPvmInfoGathered = 422,
23655    AtomWearSettingsUiInteracted = 423,
23656    AtomTracingServiceReportEvent = 424,
23657    AtomMediametricsAudiorecordstatusReported = 425,
23658    AtomLauncherLatency = 426,
23659    AtomDropboxEntryDropped = 427,
23660    AtomWifiP2pConnectionReported = 428,
23661    AtomGameStateChanged = 429,
23662    AtomHotwordDetectorCreateRequested = 430,
23663    AtomHotwordDetectionServiceInitResultReported = 431,
23664    AtomHotwordDetectionServiceRestarted = 432,
23665    AtomHotwordDetectorKeyphraseTriggered = 433,
23666    AtomHotwordDetectorEvents = 434,
23667    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
23668    AtomContactsIndexerUpdateStatsReported = 440,
23669    AtomAppBackgroundRestrictionsInfo = 441,
23670    AtomMmsSmsProviderGetThreadIdFailed = 442,
23671    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
23672    AtomPermissionReminderNotificationInteracted = 444,
23673    AtomRecentPermissionDecisionsInteracted = 445,
23674    AtomGnssPsdsDownloadReported = 446,
23675    AtomLeAudioConnectionSessionReported = 447,
23676    AtomLeAudioBroadcastSessionReported = 448,
23677    AtomDreamUiEventReported = 449,
23678    AtomTaskManagerEventReported = 450,
23679    AtomCdmAssociationAction = 451,
23680    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
23681    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
23682    AtomAccessibilityTextReadingOptionsChanged = 454,
23683    AtomWifiSetupFailureCrashReported = 455,
23684    AtomUwbDeviceErrorReported = 456,
23685    AtomIsolatedCompilationScheduled = 457,
23686    AtomIsolatedCompilationEnded = 458,
23687    AtomOnsOpportunisticEsimProvisioningComplete = 459,
23688    AtomSystemServerPreWatchdogOccurred = 460,
23689    AtomTelephonyAnomalyDetected = 461,
23690    AtomLetterboxPositionChanged = 462,
23691    AtomRemoteKeyProvisioningAttempt = 463,
23692    AtomRemoteKeyProvisioningNetworkInfo = 464,
23693    AtomRemoteKeyProvisioningTiming = 465,
23694    AtomMediaoutputOpInteractionReport = 466,
23695    AtomSyncExemptionOccurred = 468,
23696    AtomAutofillPresentationEventReported = 469,
23697    AtomDockStateChanged = 470,
23698    AtomSafetySourceStateCollected = 471,
23699    AtomSafetyCenterSystemEventReported = 472,
23700    AtomSafetyCenterInteractionReported = 473,
23701    AtomSettingsProviderSettingChanged = 474,
23702    AtomBroadcastDeliveryEventReported = 475,
23703    AtomServiceRequestEventReported = 476,
23704    AtomProviderAcquisitionEventReported = 477,
23705    AtomBluetoothDeviceNameReported = 478,
23706    AtomCbConfigUpdated = 479,
23707    AtomCbModuleErrorReported = 480,
23708    AtomCbServiceFeatureChanged = 481,
23709    AtomCbReceiverFeatureChanged = 482,
23710    AtomPrivacySignalNotificationInteraction = 484,
23711    AtomPrivacySignalIssueCardInteraction = 485,
23712    AtomPrivacySignalsJobFailure = 486,
23713    AtomVibrationReported = 487,
23714    AtomUwbRangingStart = 489,
23715    AtomAppCompactedV2 = 491,
23716    AtomDisplayBrightnessChanged = 494,
23717    AtomActivityActionBlocked = 495,
23718    AtomNetworkDnsServerSupportReported = 504,
23719    AtomVmBooted = 505,
23720    AtomVmExited = 506,
23721    AtomAmbientBrightnessStatsReported = 507,
23722    AtomMediametricsSpatializercapabilitiesReported = 508,
23723    AtomMediametricsSpatializerdeviceenabledReported = 509,
23724    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
23725    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
23726    AtomHearingAidInfoReported = 513,
23727    AtomDeviceWideJobConstraintChanged = 514,
23728    AtomAmbientModeChanged = 515,
23729    AtomAnrLatencyReported = 516,
23730    AtomResourceApiInfo = 517,
23731    AtomSystemDefaultNetworkChanged = 518,
23732    AtomIwlanSetupDataCallResultReported = 519,
23733    AtomIwlanPdnDisconnectedReasonReported = 520,
23734    AtomAirplaneModeSessionReported = 521,
23735    AtomVmCpuStatusReported = 522,
23736    AtomVmMemStatusReported = 523,
23737    AtomPackageInstallationSessionReported = 524,
23738    AtomDefaultNetworkRematchInfo = 525,
23739    AtomNetworkSelectionPerformance = 526,
23740    AtomNetworkNsdReported = 527,
23741    AtomBluetoothDisconnectionReasonReported = 529,
23742    AtomBluetoothLocalVersionsReported = 530,
23743    AtomBluetoothRemoteSupportedFeaturesReported = 531,
23744    AtomBluetoothLocalSupportedFeaturesReported = 532,
23745    AtomBluetoothGattAppInfo = 533,
23746    AtomBrightnessConfigurationUpdated = 534,
23747    AtomWearMediaOutputSwitcherLaunched = 538,
23748    AtomWearMediaOutputSwitcherFinished = 539,
23749    AtomWearMediaOutputSwitcherConnectionReported = 540,
23750    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
23751    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
23752    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
23753    AtomPackageManagerSnapshotReported = 544,
23754    AtomPackageManagerAppsFilterCacheBuildReported = 545,
23755    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
23756    AtomLauncherImpressionEvent = 547,
23757    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
23758    AtomWsWatchFaceEdited = 551,
23759    AtomWsWatchFaceFavoriteActionReported = 552,
23760    AtomWsWatchFaceSetActionReported = 553,
23761    AtomPackageUninstallationReported = 554,
23762    AtomGameModeChanged = 555,
23763    AtomGameModeConfigurationChanged = 556,
23764    AtomBedtimeModeStateChanged = 557,
23765    AtomNetworkSliceSessionEnded = 558,
23766    AtomNetworkSliceDailyDataUsageReported = 559,
23767    AtomNfcTagTypeOccurred = 560,
23768    AtomNfcAidConflictOccurred = 561,
23769    AtomNfcReaderConflictOccurred = 562,
23770    AtomWsTileListChanged = 563,
23771    AtomGetTypeAccessedWithoutPermission = 564,
23772    AtomMobileBundledAppInfoGathered = 566,
23773    AtomWsWatchFaceComplicationSetChanged = 567,
23774    AtomMediaDrmCreated = 568,
23775    AtomMediaDrmErrored = 569,
23776    AtomMediaDrmSessionOpened = 570,
23777    AtomMediaDrmSessionClosed = 571,
23778    AtomUserSelectedResolution = 572,
23779    AtomUnsafeIntentEventReported = 573,
23780    AtomPerformanceHintSessionReported = 574,
23781    AtomMediametricsMidiDeviceCloseReported = 576,
23782    AtomBiometricTouchReported = 577,
23783    AtomHotwordAudioEgressEventReported = 578,
23784    AtomLocationEnabledStateChanged = 580,
23785    AtomImeRequestFinished = 581,
23786    AtomUsbComplianceWarningsReported = 582,
23787    AtomAppSupportedLocalesChanged = 583,
23788    AtomMediaProviderVolumeRecoveryReported = 586,
23789    AtomBiometricPropertiesCollected = 587,
23790    AtomKernelWakeupAttributed = 588,
23791    AtomScreenStateChangedV2 = 589,
23792    AtomWsBackupActionReported = 590,
23793    AtomWsRestoreActionReported = 591,
23794    AtomDeviceLogAccessEventReported = 592,
23795    AtomMediaSessionUpdated = 594,
23796    AtomWearOobeStateChanged = 595,
23797    AtomWsNotificationUpdated = 596,
23798    AtomNetworkValidationFailureStatsDailyReported = 601,
23799    AtomWsComplicationTapped = 602,
23800    AtomWsNotificationBlocking = 780,
23801    AtomWsNotificationBridgemodeUpdated = 822,
23802    AtomWsNotificationDismissalActioned = 823,
23803    AtomWsNotificationActioned = 824,
23804    AtomWsNotificationLatency = 880,
23805    AtomWifiBytesTransfer = 10000,
23806    AtomWifiBytesTransferByFgBg = 10001,
23807    AtomMobileBytesTransfer = 10002,
23808    AtomMobileBytesTransferByFgBg = 10003,
23809    AtomBluetoothBytesTransfer = 10006,
23810    AtomKernelWakelock = 10004,
23811    AtomSubsystemSleepState = 10005,
23812    AtomCpuTimePerUid = 10009,
23813    AtomCpuTimePerUidFreq = 10010,
23814    AtomWifiActivityInfo = 10011,
23815    AtomModemActivityInfo = 10012,
23816    AtomBluetoothActivityInfo = 10007,
23817    AtomProcessMemoryState = 10013,
23818    AtomSystemElapsedRealtime = 10014,
23819    AtomSystemUptime = 10015,
23820    AtomCpuActiveTime = 10016,
23821    AtomCpuClusterTime = 10017,
23822    AtomDiskSpace = 10018,
23823    AtomRemainingBatteryCapacity = 10019,
23824    AtomFullBatteryCapacity = 10020,
23825    AtomTemperature = 10021,
23826    AtomBinderCalls = 10022,
23827    AtomBinderCallsExceptions = 10023,
23828    AtomLooperStats = 10024,
23829    AtomDiskStats = 10025,
23830    AtomDirectoryUsage = 10026,
23831    AtomAppSize = 10027,
23832    AtomCategorySize = 10028,
23833    AtomProcStats = 10029,
23834    AtomBatteryVoltage = 10030,
23835    AtomNumFingerprintsEnrolled = 10031,
23836    AtomDiskIo = 10032,
23837    AtomPowerProfile = 10033,
23838    AtomProcStatsPkgProc = 10034,
23839    AtomProcessCpuTime = 10035,
23840    AtomCpuTimePerThreadFreq = 10037,
23841    AtomOnDevicePowerMeasurement = 10038,
23842    AtomDeviceCalculatedPowerUse = 10039,
23843    AtomProcessMemoryHighWaterMark = 10042,
23844    AtomBatteryLevel = 10043,
23845    AtomBuildInformation = 10044,
23846    AtomBatteryCycleCount = 10045,
23847    AtomDebugElapsedClock = 10046,
23848    AtomDebugFailingElapsedClock = 10047,
23849    AtomNumFacesEnrolled = 10048,
23850    AtomRoleHolder = 10049,
23851    AtomDangerousPermissionState = 10050,
23852    AtomTrainInfo = 10051,
23853    AtomTimeZoneDataInfo = 10052,
23854    AtomExternalStorageInfo = 10053,
23855    AtomGpuStatsGlobalInfo = 10054,
23856    AtomGpuStatsAppInfo = 10055,
23857    AtomSystemIonHeapSize = 10056,
23858    AtomAppsOnExternalStorageInfo = 10057,
23859    AtomFaceSettings = 10058,
23860    AtomCoolingDevice = 10059,
23861    AtomAppOps = 10060,
23862    AtomProcessSystemIonHeapSize = 10061,
23863    AtomSurfaceflingerStatsGlobalInfo = 10062,
23864    AtomSurfaceflingerStatsLayerInfo = 10063,
23865    AtomProcessMemorySnapshot = 10064,
23866    AtomVmsClientStats = 10065,
23867    AtomNotificationRemoteViews = 10066,
23868    AtomDangerousPermissionStateSampled = 10067,
23869    AtomGraphicsStats = 10068,
23870    AtomRuntimeAppOpAccess = 10069,
23871    AtomIonHeapSize = 10070,
23872    AtomPackageNotificationPreferences = 10071,
23873    AtomPackageNotificationChannelPreferences = 10072,
23874    AtomPackageNotificationChannelGroupPreferences = 10073,
23875    AtomGnssStats = 10074,
23876    AtomAttributedAppOps = 10075,
23877    AtomVoiceCallSession = 10076,
23878    AtomVoiceCallRatUsage = 10077,
23879    AtomSimSlotState = 10078,
23880    AtomSupportedRadioAccessFamily = 10079,
23881    AtomSettingSnapshot = 10080,
23882    AtomBlobInfo = 10081,
23883    AtomDataUsageBytesTransfer = 10082,
23884    AtomBytesTransferByTagAndMetered = 10083,
23885    AtomDndModeRule = 10084,
23886    AtomGeneralExternalStorageAccessStats = 10085,
23887    AtomIncomingSms = 10086,
23888    AtomOutgoingSms = 10087,
23889    AtomCarrierIdTableVersion = 10088,
23890    AtomDataCallSession = 10089,
23891    AtomCellularServiceState = 10090,
23892    AtomCellularDataServiceSwitch = 10091,
23893    AtomSystemMemory = 10092,
23894    AtomImsRegistrationTermination = 10093,
23895    AtomImsRegistrationStats = 10094,
23896    AtomCpuTimePerClusterFreq = 10095,
23897    AtomCpuCyclesPerUidCluster = 10096,
23898    AtomDeviceRotatedData = 10097,
23899    AtomCpuCyclesPerThreadGroupCluster = 10098,
23900    AtomMediaDrmActivityInfo = 10099,
23901    AtomOemManagedBytesTransfer = 10100,
23902    AtomGnssPowerStats = 10101,
23903    AtomTimeZoneDetectorState = 10102,
23904    AtomKeystore2StorageStats = 10103,
23905    AtomRkpPoolStats = 10104,
23906    AtomProcessDmabufMemory = 10105,
23907    AtomPendingAlarmInfo = 10106,
23908    AtomUserLevelHibernatedApps = 10107,
23909    AtomLauncherLayoutSnapshot = 10108,
23910    AtomGlobalHibernatedApps = 10109,
23911    AtomInputEventLatencySketch = 10110,
23912    AtomBatteryUsageStatsBeforeReset = 10111,
23913    AtomBatteryUsageStatsSinceReset = 10112,
23914    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
23915    AtomInstalledIncrementalPackage = 10114,
23916    AtomTelephonyNetworkRequests = 10115,
23917    AtomAppSearchStorageInfo = 10116,
23918    AtomVmstat = 10117,
23919    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
23920    AtomKeystore2KeyCreationWithAuthInfo = 10119,
23921    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
23922    AtomKeystore2AtomWithOverflow = 10121,
23923    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
23924    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
23925    AtomRkpErrorStats = 10124,
23926    AtomKeystore2CrashStats = 10125,
23927    AtomVendorApexInfo = 10126,
23928    AtomAccessibilityShortcutStats = 10127,
23929    AtomAccessibilityFloatingMenuStats = 10128,
23930    AtomDataUsageBytesTransferV2 = 10129,
23931    AtomMediaCapabilities = 10130,
23932    AtomCarWatchdogSystemIoUsageSummary = 10131,
23933    AtomCarWatchdogUidIoUsageSummary = 10132,
23934    AtomImsRegistrationFeatureTagStats = 10133,
23935    AtomRcsClientProvisioningStats = 10134,
23936    AtomRcsAcsProvisioningStats = 10135,
23937    AtomSipDelegateStats = 10136,
23938    AtomSipTransportFeatureTagStats = 10137,
23939    AtomSipMessageResponse = 10138,
23940    AtomSipTransportSession = 10139,
23941    AtomImsDedicatedBearerListenerEvent = 10140,
23942    AtomImsDedicatedBearerEvent = 10141,
23943    AtomImsRegistrationServiceDescStats = 10142,
23944    AtomUceEventStats = 10143,
23945    AtomPresenceNotifyEvent = 10144,
23946    AtomGbaEvent = 10145,
23947    AtomPerSimStatus = 10146,
23948    AtomGpuWorkPerUid = 10147,
23949    AtomPersistentUriPermissionsAmountPerPackage = 10148,
23950    AtomSignedPartitionInfo = 10149,
23951    AtomPinnedFileSizesPerPackage = 10150,
23952    AtomPendingIntentsPerPackage = 10151,
23953    AtomUserInfo = 10152,
23954    AtomTelephonyNetworkRequestsV2 = 10153,
23955    AtomDeviceTelephonyProperties = 10154,
23956    AtomRemoteKeyProvisioningErrorCounts = 10155,
23957    AtomSafetyState = 10156,
23958    AtomIncomingMms = 10157,
23959    AtomOutgoingMms = 10158,
23960    AtomMultiUserInfo = 10160,
23961    AtomNetworkBpfMapInfo = 10161,
23962    AtomOutgoingShortCodeSms = 10162,
23963    AtomConnectivityStateSample = 10163,
23964    AtomNetworkSelectionRematchReasonsInfo = 10164,
23965    AtomGameModeInfo = 10165,
23966    AtomGameModeConfiguration = 10166,
23967    AtomGameModeListener = 10167,
23968    AtomNetworkSliceRequestCount = 10168,
23969    AtomWsTileSnapshot = 10169,
23970    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
23971    AtomProcessState = 10171,
23972    AtomProcessAssociation = 10172,
23973    AtomAdpfSystemComponentInfo = 10173,
23974    AtomNotificationMemoryUse = 10174,
23975    AtomHdrCapabilities = 10175,
23976    AtomWsFavouriteWatchFaceListSnapshot = 10176,
23977    AtomAccessibilityCheckResultReported = 910,
23978    AtomAdaptiveAuthUnlockAfterLockReported = 820,
23979    AtomThermalStatusCalled = 772,
23980    AtomThermalHeadroomCalled = 773,
23981    AtomThermalHeadroomThresholdsCalled = 774,
23982    AtomAdpfHintSessionTidCleanup = 839,
23983    AtomThermalHeadroomThresholds = 10201,
23984    AtomAdpfSessionSnapshot = 10218,
23985    AtomJsscriptengineLatencyReported = 483,
23986    AtomAdServicesApiCalled = 435,
23987    AtomAdServicesMesurementReportsUploaded = 436,
23988    AtomMobileDataDownloadFileGroupStatusReported = 490,
23989    AtomMobileDataDownloadDownloadResultReported = 502,
23990    AtomAdServicesSettingsUsageReported = 493,
23991    AtomBackgroundFetchProcessReported = 496,
23992    AtomUpdateCustomAudienceProcessReported = 497,
23993    AtomRunAdBiddingProcessReported = 498,
23994    AtomRunAdScoringProcessReported = 499,
23995    AtomRunAdSelectionProcessReported = 500,
23996    AtomRunAdBiddingPerCaProcessReported = 501,
23997    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
23998    AtomAdServicesMeasurementRegistrations = 512,
23999    AtomAdServicesGetTopicsReported = 535,
24000    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
24001    AtomAdServicesEpochComputationClassifierReported = 537,
24002    AtomAdServicesBackCompatGetTopicsReported = 598,
24003    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
24004    AtomAdServicesMeasurementDebugKeys = 640,
24005    AtomAdServicesErrorReported = 662,
24006    AtomAdServicesBackgroundJobsExecutionReported = 663,
24007    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
24008    AtomAdServicesMeasurementAttribution = 674,
24009    AtomAdServicesMeasurementJobs = 675,
24010    AtomAdServicesMeasurementWipeout = 676,
24011    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
24012    AtomAdServicesEnrollmentDataStored = 697,
24013    AtomAdServicesEnrollmentFileDownloaded = 698,
24014    AtomAdServicesEnrollmentMatched = 699,
24015    AtomAdServicesConsentMigrated = 702,
24016    AtomAdServicesEnrollmentFailed = 714,
24017    AtomAdServicesMeasurementClickVerification = 756,
24018    AtomAdServicesEncryptionKeyFetched = 765,
24019    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
24020    AtomDestinationRegisteredBeacons = 767,
24021    AtomReportInteractionApiCalled = 768,
24022    AtomInteractionReportingTableCleared = 769,
24023    AtomAppManifestConfigHelperCalled = 788,
24024    AtomAdFilteringProcessJoinCaReported = 793,
24025    AtomAdFilteringProcessAdSelectionReported = 794,
24026    AtomAdCounterHistogramUpdaterReported = 795,
24027    AtomSignatureVerification = 807,
24028    AtomKAnonImmediateSignJoinStatusReported = 808,
24029    AtomKAnonBackgroundJobStatusReported = 809,
24030    AtomKAnonInitializeStatusReported = 810,
24031    AtomKAnonSignStatusReported = 811,
24032    AtomKAnonJoinStatusReported = 812,
24033    AtomKAnonKeyAttestationStatusReported = 813,
24034    AtomGetAdSelectionDataApiCalled = 814,
24035    AtomGetAdSelectionDataBuyerInputGenerated = 815,
24036    AtomBackgroundJobSchedulingReported = 834,
24037    AtomTopicsEncryptionEpochComputationReported = 840,
24038    AtomTopicsEncryptionGetTopicsReported = 841,
24039    AtomAdservicesShellCommandCalled = 842,
24040    AtomUpdateSignalsApiCalled = 843,
24041    AtomEncodingJobRun = 844,
24042    AtomEncodingJsFetch = 845,
24043    AtomEncodingJsExecution = 846,
24044    AtomPersistAdSelectionResultCalled = 847,
24045    AtomServerAuctionKeyFetchCalled = 848,
24046    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
24047    AtomAdServicesMeasurementProcessOdpRegistration = 864,
24048    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
24049    AtomSelectAdsFromOutcomesApiCalled = 876,
24050    AtomReportImpressionApiCalled = 877,
24051    AtomAdServicesEnrollmentTransactionStats = 885,
24052    AtomAdServicesCobaltLoggerEventReported = 902,
24053    AtomAdServicesCobaltPeriodicJobEventReported = 903,
24054    AtomUpdateSignalsProcessReported = 905,
24055    AtomTopicsScheduleEpochJobSettingReported = 930,
24056    AtomAiWallpapersButtonPressed = 706,
24057    AtomAiWallpapersTemplateSelected = 707,
24058    AtomAiWallpapersTermSelected = 708,
24059    AtomAiWallpapersWallpaperSet = 709,
24060    AtomAiWallpapersSessionSummary = 710,
24061    AtomApexInstallationRequested = 732,
24062    AtomApexInstallationStaged = 733,
24063    AtomApexInstallationEnded = 734,
24064    AtomAppSearchSetSchemaStatsReported = 385,
24065    AtomAppSearchSchemaMigrationStatsReported = 579,
24066    AtomAppSearchUsageSearchIntentStatsReported = 825,
24067    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
24068    AtomAppSearchAppsIndexerStatsReported = 909,
24069    AtomArtDatumReported = 332,
24070    AtomArtDeviceDatumReported = 550,
24071    AtomArtDatumDeltaReported = 565,
24072    AtomArtDex2oatReported = 929,
24073    AtomArtDeviceStatus = 10205,
24074    AtomBackgroundDexoptJobEnded = 467,
24075    AtomPrerebootDexoptJobEnded = 883,
24076    AtomOdrefreshReported = 366,
24077    AtomOdsignReported = 548,
24078    AtomAutofillUiEventReported = 603,
24079    AtomAutofillFillRequestReported = 604,
24080    AtomAutofillFillResponseReported = 605,
24081    AtomAutofillSaveEventReported = 606,
24082    AtomAutofillSessionCommitted = 607,
24083    AtomAutofillFieldClassificationEventReported = 659,
24084    AtomCarRecentsEventReported = 770,
24085    AtomCarCalmModeEventReported = 797,
24086    AtomCarWakeupFromSuspendReported = 852,
24087    AtomPluginInitialized = 655,
24088    AtomBluetoothHashedDeviceNameReported = 613,
24089    AtomBluetoothL2capCocClientConnection = 614,
24090    AtomBluetoothL2capCocServerConnection = 615,
24091    AtomBluetoothLeSessionConnected = 656,
24092    AtomRestrictedBluetoothDeviceNameReported = 666,
24093    AtomBluetoothProfileConnectionAttempted = 696,
24094    AtomBluetoothContentProfileErrorReported = 781,
24095    AtomBluetoothRfcommConnectionAttempted = 782,
24096    AtomRemoteDeviceInformationWithMetricId = 862,
24097    AtomLeAppScanStateChanged = 870,
24098    AtomLeRadioScanStopped = 871,
24099    AtomLeScanResultReceived = 872,
24100    AtomLeScanAbused = 873,
24101    AtomLeAdvStateChanged = 874,
24102    AtomLeAdvErrorReported = 875,
24103    AtomA2dpSessionReported = 904,
24104    AtomBluetoothCrossLayerEventReported = 916,
24105    AtomBroadcastAudioSessionReported = 927,
24106    AtomBroadcastAudioSyncReported = 928,
24107    AtomBluetoothRfcommConnectionReportedAtClose = 982,
24108    AtomBluetoothLeConnection = 988,
24109    AtomBroadcastSent = 922,
24110    AtomCameraFeatureCombinationQueryEvent = 900,
24111    AtomCertificateTransparencyLogListStateChanged = 934,
24112    AtomCertificateTransparencyLogListUpdateFailed = 972,
24113    AtomDailyKeepaliveInfoReported = 650,
24114    AtomNetworkRequestStateChanged = 779,
24115    AtomTetheringActiveSessionsReported = 925,
24116    AtomNetworkStatsRecorderFileOperated = 783,
24117    AtomCoreNetworkingTerribleErrorOccurred = 979,
24118    AtomApfSessionInfoReported = 777,
24119    AtomIpClientRaInfoReported = 778,
24120    AtomVpnConnectionStateChanged = 850,
24121    AtomVpnConnectionReported = 851,
24122    AtomCpuPolicy = 10199,
24123    AtomCredentialManagerApiCalled = 585,
24124    AtomCredentialManagerInitPhaseReported = 651,
24125    AtomCredentialManagerCandidatePhaseReported = 652,
24126    AtomCredentialManagerFinalPhaseReported = 653,
24127    AtomCredentialManagerTotalReported = 667,
24128    AtomCredentialManagerFinalnouidReported = 668,
24129    AtomCredentialManagerGetReported = 669,
24130    AtomCredentialManagerAuthClickReported = 670,
24131    AtomCredentialManagerApiv2Called = 671,
24132    AtomCronetEngineCreated = 703,
24133    AtomCronetTrafficReported = 704,
24134    AtomCronetEngineBuilderInitialized = 762,
24135    AtomCronetHttpFlagsInitialized = 763,
24136    AtomCronetInitialized = 764,
24137    AtomDesktopModeUiChanged = 818,
24138    AtomDesktopModeSessionTaskUpdate = 819,
24139    AtomDesktopModeTaskSizeUpdated = 935,
24140    AtomDeviceLockCheckInRequestReported = 726,
24141    AtomDeviceLockProvisioningCompleteReported = 727,
24142    AtomDeviceLockKioskAppRequestReported = 728,
24143    AtomDeviceLockCheckInRetryReported = 789,
24144    AtomDeviceLockProvisionFailureReported = 790,
24145    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
24146    AtomDevicePolicyManagementMode = 10216,
24147    AtomDevicePolicyState = 10217,
24148    AtomDisplayModeDirectorVoteChanged = 792,
24149    AtomExternalDisplayStateChanged = 806,
24150    AtomDndStateChanged = 657,
24151    AtomDreamSettingChanged = 705,
24152    AtomDreamSettingSnapshot = 10192,
24153    AtomExpressEventReported = 528,
24154    AtomExpressHistogramSampleReported = 593,
24155    AtomExpressUidEventReported = 644,
24156    AtomExpressUidHistogramSampleReported = 658,
24157    AtomFederatedComputeApiCalled = 712,
24158    AtomFederatedComputeTrainingEventReported = 771,
24159    AtomExampleIteratorNextLatencyReported = 838,
24160    AtomFullScreenIntentLaunched = 631,
24161    AtomBalAllowed = 632,
24162    AtomInTaskActivityStarted = 685,
24163    AtomDeviceOrientationChanged = 906,
24164    AtomCachedAppsHighWatermark = 10189,
24165    AtomStylusPredictionMetricsReported = 718,
24166    AtomUserRiskEventReported = 725,
24167    AtomMediaProjectionStateChanged = 729,
24168    AtomMediaProjectionTargetChanged = 730,
24169    AtomExcessiveBinderProxyCountReported = 853,
24170    AtomProxyBytesTransferByFgBg = 10200,
24171    AtomMobileBytesTransferByProcState = 10204,
24172    AtomBiometricFrrNotification = 817,
24173    AtomSensitiveContentMediaProjectionSession = 830,
24174    AtomSensitiveNotificationAppProtectionSession = 831,
24175    AtomSensitiveNotificationAppProtectionApplied = 832,
24176    AtomSensitiveNotificationRedaction = 833,
24177    AtomSensitiveContentAppProtection = 835,
24178    AtomAppRestrictionStateChanged = 866,
24179    AtomBatteryUsageStatsPerUid = 10209,
24180    AtomPostgcMemorySnapshot = 924,
24181    AtomPowerSaveTempAllowlistChanged = 926,
24182    AtomAppOpAccessTracked = 931,
24183    AtomContentOrFileUriEventReported = 933,
24184    AtomApplicationGrammaticalInflectionChanged = 584,
24185    AtomSystemGrammaticalInflectionChanged = 816,
24186    AtomBatteryHealth = 10220,
24187    AtomHdmiEarcStatusReported = 701,
24188    AtomHdmiSoundbarModeStatusReported = 724,
24189    AtomHealthConnectApiCalled = 616,
24190    AtomHealthConnectUsageStats = 617,
24191    AtomHealthConnectStorageStats = 618,
24192    AtomHealthConnectApiInvoked = 643,
24193    AtomExerciseRouteApiCalled = 654,
24194    AtomHealthConnectExportInvoked = 907,
24195    AtomHealthConnectImportInvoked = 918,
24196    AtomHealthConnectExportImportStatsReported = 919,
24197    AtomHealthConnectUiImpression = 623,
24198    AtomHealthConnectUiInteraction = 624,
24199    AtomHealthConnectAppOpenedReported = 625,
24200    AtomHotwordEgressSizeAtomReported = 761,
24201    AtomIkeSessionTerminated = 678,
24202    AtomIkeLivenessCheckSessionValidated = 760,
24203    AtomNegotiatedSecurityAssociation = 821,
24204    AtomKeyboardConfigured = 682,
24205    AtomKeyboardSystemsEventReported = 683,
24206    AtomInputdeviceUsageReported = 686,
24207    AtomInputEventLatencyReported = 932,
24208    AtomTouchpadUsage = 10191,
24209    AtomKernelOomKillOccurred = 754,
24210    AtomEmergencyStateChanged = 633,
24211    AtomChreSignificantMotionStateChanged = 868,
24212    AtomPopulationDensityProviderLoadingReported = 1002,
24213    AtomDensityBasedCoarseLocationsUsageReported = 1003,
24214    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
24215    AtomMediaCodecReclaimRequestCompleted = 600,
24216    AtomMediaCodecStarted = 641,
24217    AtomMediaCodecStopped = 642,
24218    AtomMediaCodecRendered = 684,
24219    AtomMediaEditingEndedReported = 798,
24220    AtomMteState = 10181,
24221    AtomMicroxrDeviceBootCompleteReported = 901,
24222    AtomNfcObserveModeStateChanged = 855,
24223    AtomNfcFieldChanged = 856,
24224    AtomNfcPollingLoopNotificationReported = 857,
24225    AtomNfcProprietaryCapabilitiesReported = 858,
24226    AtomOndevicepersonalizationApiCalled = 711,
24227    AtomComponentStateChangedReported = 863,
24228    AtomPdfLoadReported = 859,
24229    AtomPdfApiUsageReported = 860,
24230    AtomPdfSearchReported = 861,
24231    AtomPressureStallInformation = 10229,
24232    AtomPermissionRationaleDialogViewed = 645,
24233    AtomPermissionRationaleDialogActionReported = 646,
24234    AtomAppDataSharingUpdatesNotificationInteraction = 647,
24235    AtomAppDataSharingUpdatesFragmentViewed = 648,
24236    AtomAppDataSharingUpdatesFragmentActionReported = 649,
24237    AtomEnhancedConfirmationDialogResultReported = 827,
24238    AtomEnhancedConfirmationRestrictionCleared = 828,
24239    AtomPhotopickerSessionInfoReported = 886,
24240    AtomPhotopickerApiInfoReported = 887,
24241    AtomPhotopickerUiEventLogged = 888,
24242    AtomPhotopickerMediaItemStatusReported = 889,
24243    AtomPhotopickerPreviewInfoLogged = 890,
24244    AtomPhotopickerMenuInteractionLogged = 891,
24245    AtomPhotopickerBannerInteractionLogged = 892,
24246    AtomPhotopickerMediaLibraryInfoLogged = 893,
24247    AtomPhotopickerPageInfoLogged = 894,
24248    AtomPhotopickerMediaGridSyncInfoReported = 895,
24249    AtomPhotopickerAlbumSyncInfoReported = 896,
24250    AtomPhotopickerSearchInfoReported = 897,
24251    AtomSearchDataExtractionDetailsReported = 898,
24252    AtomEmbeddedPhotopickerInfoReported = 899,
24253    AtomAtom9999 = 9999,
24254    AtomAtom99999 = 99999,
24255    AtomScreenOffReported = 776,
24256    AtomScreenTimeoutOverrideReported = 836,
24257    AtomScreenInteractiveSessionReported = 837,
24258    AtomScreenDimReported = 867,
24259    AtomMediaProviderDatabaseRollbackReported = 784,
24260    AtomBackupSetupStatusReported = 785,
24261    AtomRangingSessionConfigured = 993,
24262    AtomRangingSessionStarted = 994,
24263    AtomRangingSessionClosed = 995,
24264    AtomRangingTechnologyStarted = 996,
24265    AtomRangingTechnologyStopped = 997,
24266    AtomRkpdPoolStats = 664,
24267    AtomRkpdClientOperation = 665,
24268    AtomSandboxApiCalled = 488,
24269    AtomSandboxActivityEventOccurred = 735,
24270    AtomSdkSandboxRestrictedAccessInSession = 796,
24271    AtomSandboxSdkStorage = 10159,
24272    AtomSelinuxAuditLog = 799,
24273    AtomSettingsSpaReported = 622,
24274    AtomTestExtensionAtomReported = 660,
24275    AtomTestRestrictedAtomReported = 672,
24276    AtomStatsSocketLossReported = 752,
24277    AtomLockscreenShortcutSelected = 611,
24278    AtomLockscreenShortcutTriggered = 612,
24279    AtomLauncherImpressionEventV2 = 716,
24280    AtomDisplaySwitchLatencyTracked = 753,
24281    AtomNotificationListenerService = 829,
24282    AtomNavHandleTouchPoints = 869,
24283    AtomCommunalHubWidgetEventReported = 908,
24284    AtomCommunalHubSnapshot = 10226,
24285    AtomEmergencyNumberDialed = 637,
24286    AtomCallStats = 10221,
24287    AtomCallAudioRouteStats = 10222,
24288    AtomTelecomApiStats = 10223,
24289    AtomTelecomErrorStats = 10224,
24290    AtomCellularRadioPowerStateChanged = 713,
24291    AtomEmergencyNumbersInfo = 10180,
24292    AtomDataNetworkValidation = 10207,
24293    AtomDataRatStateChanged = 854,
24294    AtomConnectedChannelChanged = 882,
24295    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
24296    AtomQualifiedRatListChanged = 634,
24297    AtomQnsImsCallDropStats = 635,
24298    AtomQnsFallbackRestrictionChanged = 636,
24299    AtomQnsRatPreferenceMismatchInfo = 10177,
24300    AtomQnsHandoverTimeMillis = 10178,
24301    AtomQnsHandoverPingpong = 10179,
24302    AtomSatelliteController = 10182,
24303    AtomSatelliteSession = 10183,
24304    AtomSatelliteIncomingDatagram = 10184,
24305    AtomSatelliteOutgoingDatagram = 10185,
24306    AtomSatelliteProvision = 10186,
24307    AtomSatelliteSosMessageRecommender = 10187,
24308    AtomCarrierRoamingSatelliteSession = 10211,
24309    AtomCarrierRoamingSatelliteControllerStats = 10212,
24310    AtomControllerStatsPerPackage = 10213,
24311    AtomSatelliteEntitlement = 10214,
24312    AtomSatelliteConfigUpdater = 10215,
24313    AtomSatelliteAccessController = 10219,
24314    AtomCellularIdentifierDisclosed = 800,
24315    AtomThreadnetworkTelemetryDataReported = 738,
24316    AtomThreadnetworkTopoEntryRepeated = 739,
24317    AtomThreadnetworkDeviceInfoReported = 740,
24318    AtomBootIntegrityInfoReported = 775,
24319    AtomTvLowPowerStandbyPolicy = 679,
24320    AtomExternalTvInputEvent = 717,
24321    AtomTestUprobestatsAtomReported = 915,
24322    AtomUwbActivityInfo = 10188,
24323    AtomMediatorUpdated = 721,
24324    AtomSysproxyBluetoothBytesTransfer = 10196,
24325    AtomSysproxyConnectionUpdated = 786,
24326    AtomWearCompanionConnectionState = 921,
24327    AtomMediaActionReported = 608,
24328    AtomMediaControlsLaunched = 609,
24329    AtomMediaSessionStateChanged = 677,
24330    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
24331    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
24332    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
24333    AtomWearModeStateChanged = 715,
24334    AtomRendererInitialized = 736,
24335    AtomSchemaVersionReceived = 737,
24336    AtomLayoutInspected = 741,
24337    AtomLayoutExpressionInspected = 742,
24338    AtomLayoutAnimationsInspected = 743,
24339    AtomMaterialComponentsInspected = 744,
24340    AtomTileRequested = 745,
24341    AtomStateResponseReceived = 746,
24342    AtomTileResponseReceived = 747,
24343    AtomInflationFinished = 748,
24344    AtomInflationFailed = 749,
24345    AtomIgnoredInflationFailuresReported = 750,
24346    AtomDrawableRendered = 751,
24347    AtomWearTimeSyncRequested = 911,
24348    AtomWearTimeUpdateStarted = 912,
24349    AtomWearTimeSyncAttemptCompleted = 913,
24350    AtomWearTimeChanged = 914,
24351    AtomWearAdaptiveSuspendStatsReported = 619,
24352    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
24353    AtomWearPowerAnomalyServiceEventStatsReported = 621,
24354    AtomWsWearTimeSession = 610,
24355    AtomWsIncomingCallActionReported = 626,
24356    AtomWsCallDisconnectionReported = 627,
24357    AtomWsCallDurationReported = 628,
24358    AtomWsCallUserExperienceLatencyReported = 629,
24359    AtomWsCallInteractionReported = 630,
24360    AtomWsOnBodyStateChanged = 787,
24361    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
24362    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
24363    AtomWsComplicationsImpactedNotificationEventReported = 804,
24364    AtomWsRemoteEventUsageReported = 920,
24365    AtomWsBugreportRequested = 936,
24366    AtomWsBugreportTriggered = 937,
24367    AtomWsBugreportFinished = 938,
24368    AtomWsBugreportResultReceived = 939,
24369    AtomWsStandaloneModeSnapshot = 10197,
24370    AtomWsFavoriteWatchFaceSnapshot = 10206,
24371    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
24372    AtomWsWatchFaceCustomizationSnapshot = 10227,
24373    AtomWearPowerMenuOpened = 731,
24374    AtomWearAssistantOpened = 755,
24375    AtomFirstOverlayStateChanged = 917,
24376    AtomWifiAwareNdpReported = 638,
24377    AtomWifiAwareAttachReported = 639,
24378    AtomWifiSelfRecoveryTriggered = 661,
24379    AtomSoftApStarted = 680,
24380    AtomSoftApStopped = 681,
24381    AtomWifiLockReleased = 687,
24382    AtomWifiLockDeactivated = 688,
24383    AtomWifiConfigSaved = 689,
24384    AtomWifiAwareResourceUsingChanged = 690,
24385    AtomWifiAwareHalApiCalled = 691,
24386    AtomWifiLocalOnlyRequestReceived = 692,
24387    AtomWifiLocalOnlyRequestScanTriggered = 693,
24388    AtomWifiThreadTaskExecuted = 694,
24389    AtomWifiStateChanged = 700,
24390    AtomPnoScanStarted = 719,
24391    AtomPnoScanStopped = 720,
24392    AtomWifiIsUnusableReported = 722,
24393    AtomWifiApCapabilitiesReported = 723,
24394    AtomSoftApStateChanged = 805,
24395    AtomScorerPredictionResultReported = 884,
24396    AtomWifiAwareCapabilities = 10190,
24397    AtomWifiModuleInfo = 10193,
24398    AtomWifiSettingInfo = 10194,
24399    AtomWifiComplexSettingInfo = 10195,
24400    AtomWifiConfiguredNetworkInfo = 10198,
24401}
24402impl AtomId {
24403    /// String value of the enum field names used in the ProtoBuf definition.
24404    ///
24405    /// The values are not transformed in any way and thus are considered stable
24406    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24407    pub fn as_str_name(&self) -> &'static str {
24408        match self {
24409            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
24410            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
24411            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
24412            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
24413            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
24414            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
24415            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
24416            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
24417            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
24418            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
24419            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
24420            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
24421            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
24422            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
24423            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
24424            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
24425            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
24426            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
24427            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
24428            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
24429            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
24430            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
24431            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
24432            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
24433            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
24434            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
24435            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
24436            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
24437            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
24438            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
24439            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
24440            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
24441            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
24442            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
24443            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
24444            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
24445            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
24446            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
24447            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
24448            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
24449            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
24450            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
24451            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
24452            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
24453            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
24454            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
24455            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
24456            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
24457            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
24458            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
24459            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
24460            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
24461            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
24462            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
24463            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
24464            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
24465            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
24466            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
24467            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
24468            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
24469            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
24470            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
24471            AtomId::AtomAppDied => "ATOM_APP_DIED",
24472            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
24473            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
24474            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
24475            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
24476            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
24477            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
24478            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
24479            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
24480            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
24481            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
24482            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
24483            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
24484            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
24485            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
24486            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
24487            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
24488            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
24489            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
24490            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
24491            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
24492            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
24493            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
24494            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
24495            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
24496            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
24497            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
24498            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
24499            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
24500            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
24501            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
24502            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
24503            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
24504            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
24505            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
24506            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
24507            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
24508            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
24509            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
24510            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
24511            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
24512            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
24513            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
24514            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
24515            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
24516            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
24517            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
24518            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
24519            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
24520            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
24521            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
24522            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
24523            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
24524            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
24525            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
24526            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
24527            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
24528            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
24529            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
24530            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
24531            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
24532            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
24533            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
24534            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
24535            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
24536            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
24537            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
24538            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
24539            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
24540            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
24541            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
24542            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
24543            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
24544            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
24545            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
24546            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
24547            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
24548            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
24549            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
24550            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
24551            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
24552            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
24553            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
24554            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
24555            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
24556            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
24557            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
24558            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
24559            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
24560            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
24561            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
24562            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
24563            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
24564            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
24565            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
24566            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
24567            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
24568            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
24569            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
24570            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
24571            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
24572            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
24573            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
24574            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
24575            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
24576            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
24577            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
24578            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
24579            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
24580            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
24581            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
24582            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
24583            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
24584            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
24585            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
24586            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
24587            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
24588            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
24589            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
24590            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
24591            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
24592            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
24593            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
24594            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
24595            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
24596            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
24597            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
24598            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
24599            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
24600            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
24601            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
24602            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
24603            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
24604            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
24605            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
24606            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
24607            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
24608            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
24609            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
24610            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
24611            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
24612            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
24613            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
24614            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
24615            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
24616            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
24617            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
24618            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
24619            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
24620            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
24621            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
24622            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
24623            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
24624            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
24625            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
24626            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
24627            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
24628            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
24629            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
24630            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
24631            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
24632            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
24633            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
24634            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
24635            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
24636            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
24637            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
24638            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
24639            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
24640            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
24641            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
24642            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
24643            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
24644            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
24645            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
24646            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
24647            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
24648            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
24649            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
24650            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
24651            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
24652            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
24653            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
24654            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
24655            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
24656            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
24657            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
24658            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
24659            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
24660            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
24661            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
24662            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
24663            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
24664            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
24665            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
24666            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
24667            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
24668            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
24669            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
24670            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
24671            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
24672            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
24673            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
24674            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
24675            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
24676            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
24677            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
24678            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
24679            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
24680            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
24681            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
24682            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
24683            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
24684            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
24685            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
24686            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
24687            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
24688            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
24689            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
24690            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
24691            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
24692            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
24693            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
24694            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
24695            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
24696            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
24697            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
24698            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
24699            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
24700            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
24701            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
24702            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
24703            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
24704            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
24705            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
24706            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
24707            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
24708            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
24709            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
24710            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
24711            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
24712            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
24713            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
24714            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
24715            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
24716            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
24717            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
24718            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
24719            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
24720            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
24721            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
24722            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
24723            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
24724            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
24725            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
24726            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
24727            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
24728            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
24729            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
24730            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
24731            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
24732            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
24733            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
24734            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
24735            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
24736            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
24737            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
24738            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
24739            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
24740            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
24741            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
24742            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
24743            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
24744            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
24745            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
24746            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
24747            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
24748            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
24749            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
24750            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
24751            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
24752            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
24753            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
24754            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
24755            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
24756            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
24757            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
24758            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
24759            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
24760            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
24761            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
24762            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
24763            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
24764            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
24765            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
24766            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
24767            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
24768            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
24769            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
24770            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
24771            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
24772            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
24773            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
24774            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
24775            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
24776            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
24777            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
24778            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
24779            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
24780            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
24781            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
24782            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
24783            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
24784            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
24785            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
24786            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
24787            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
24788            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
24789            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
24790            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
24791            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
24792            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
24793            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
24794            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
24795            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
24796            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
24797            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
24798            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
24799            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
24800            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
24801            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
24802            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
24803            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
24804            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
24805            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
24806            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
24807            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
24808            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
24809            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
24810            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
24811            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
24812            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
24813            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
24814            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
24815            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
24816            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
24817            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
24818            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
24819            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
24820            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
24821            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
24822            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
24823            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
24824            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
24825            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
24826            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
24827            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
24828            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
24829            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
24830            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
24831            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
24832            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
24833            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
24834            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
24835            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
24836            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
24837            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
24838            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
24839            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
24840            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
24841            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
24842            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
24843            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
24844            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
24845            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
24846            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
24847            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
24848            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
24849            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
24850            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
24851            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
24852            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
24853            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
24854            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
24855            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
24856            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
24857            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
24858            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
24859            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
24860            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
24861            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
24862            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
24863            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
24864            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
24865            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
24866            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
24867            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
24868            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
24869            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
24870            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
24871            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
24872            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
24873            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
24874            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
24875            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
24876            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
24877            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
24878            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
24879            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
24880            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
24881            AtomId::AtomVmExited => "ATOM_VM_EXITED",
24882            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
24883            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
24884            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
24885            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
24886            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
24887            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
24888            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
24889            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
24890            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
24891            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
24892            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
24893            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
24894            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
24895            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
24896            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
24897            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
24898            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
24899            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
24900            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
24901            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
24902            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
24903            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
24904            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
24905            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
24906            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
24907            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
24908            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
24909            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
24910            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
24911            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
24912            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
24913            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
24914            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
24915            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
24916            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
24917            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
24918            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
24919            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
24920            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
24921            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
24922            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
24923            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
24924            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
24925            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
24926            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
24927            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
24928            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
24929            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
24930            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
24931            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
24932            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
24933            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
24934            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
24935            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
24936            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
24937            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
24938            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
24939            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
24940            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
24941            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
24942            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
24943            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
24944            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
24945            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
24946            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
24947            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
24948            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
24949            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
24950            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
24951            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
24952            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
24953            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
24954            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
24955            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
24956            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
24957            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
24958            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
24959            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
24960            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
24961            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
24962            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
24963            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
24964            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
24965            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
24966            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
24967            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
24968            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
24969            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
24970            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
24971            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
24972            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
24973            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
24974            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
24975            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
24976            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
24977            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
24978            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
24979            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
24980            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
24981            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
24982            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
24983            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
24984            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
24985            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
24986            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
24987            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
24988            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
24989            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
24990            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
24991            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
24992            AtomId::AtomAppSize => "ATOM_APP_SIZE",
24993            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
24994            AtomId::AtomProcStats => "ATOM_PROC_STATS",
24995            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
24996            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
24997            AtomId::AtomDiskIo => "ATOM_DISK_IO",
24998            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
24999            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
25000            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
25001            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
25002            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
25003            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
25004            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
25005            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
25006            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
25007            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
25008            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
25009            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
25010            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
25011            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
25012            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
25013            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
25014            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
25015            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
25016            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
25017            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
25018            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
25019            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
25020            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
25021            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
25022            AtomId::AtomAppOps => "ATOM_APP_OPS",
25023            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
25024            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
25025            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
25026            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
25027            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
25028            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
25029            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
25030            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
25031            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
25032            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
25033            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
25034            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
25035            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
25036            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
25037            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
25038            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
25039            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
25040            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
25041            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
25042            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
25043            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
25044            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
25045            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
25046            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
25047            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
25048            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
25049            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
25050            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
25051            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
25052            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
25053            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
25054            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
25055            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
25056            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
25057            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
25058            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
25059            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
25060            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
25061            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
25062            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
25063            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
25064            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
25065            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
25066            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
25067            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
25068            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
25069            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
25070            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
25071            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
25072            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
25073            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
25074            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
25075            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
25076            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
25077            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
25078            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
25079            AtomId::AtomVmstat => "ATOM_VMSTAT",
25080            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
25081            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
25082            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
25083            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
25084            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
25085            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
25086            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
25087            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
25088            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
25089            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
25090            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
25091            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
25092            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
25093            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
25094            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
25095            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
25096            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
25097            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
25098            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
25099            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
25100            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
25101            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
25102            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
25103            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
25104            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
25105            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
25106            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
25107            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
25108            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
25109            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
25110            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
25111            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
25112            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
25113            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
25114            AtomId::AtomUserInfo => "ATOM_USER_INFO",
25115            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
25116            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
25117            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
25118            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
25119            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
25120            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
25121            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
25122            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
25123            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
25124            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
25125            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
25126            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
25127            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
25128            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
25129            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
25130            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
25131            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
25132            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
25133            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
25134            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
25135            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
25136            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
25137            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
25138            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
25139            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
25140            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
25141            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
25142            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
25143            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
25144            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
25145            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
25146            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
25147            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
25148            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
25149            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
25150            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
25151            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
25152            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
25153            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
25154            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
25155            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
25156            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
25157            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
25158            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
25159            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
25160            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
25161            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
25162            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
25163            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
25164            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
25165            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
25166            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
25167            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
25168            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
25169            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
25170            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
25171            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
25172            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
25173            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
25174            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
25175            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
25176            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
25177            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
25178            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
25179            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
25180            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
25181            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
25182            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
25183            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
25184            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
25185            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
25186            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
25187            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
25188            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
25189            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
25190            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
25191            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
25192            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
25193            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
25194            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
25195            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
25196            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
25197            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
25198            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
25199            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
25200            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
25201            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
25202            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
25203            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
25204            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
25205            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
25206            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
25207            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
25208            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
25209            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
25210            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
25211            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
25212            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
25213            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
25214            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
25215            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
25216            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
25217            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
25218            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
25219            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
25220            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
25221            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
25222            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
25223            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
25224            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
25225            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
25226            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
25227            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
25228            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
25229            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
25230            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
25231            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
25232            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
25233            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
25234            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
25235            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
25236            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
25237            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
25238            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
25239            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
25240            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
25241            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
25242            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
25243            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
25244            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
25245            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
25246            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
25247            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
25248            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
25249            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
25250            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
25251            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
25252            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
25253            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
25254            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
25255            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
25256            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
25257            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
25258            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
25259            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
25260            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
25261            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
25262            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
25263            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
25264            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
25265            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
25266            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
25267            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
25268            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
25269            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
25270            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
25271            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
25272            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
25273            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
25274            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
25275            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
25276            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
25277            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
25278            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
25279            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
25280            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
25281            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
25282            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
25283            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
25284            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
25285            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
25286            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
25287            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
25288            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
25289            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
25290            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
25291            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
25292            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
25293            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
25294            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
25295            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
25296            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
25297            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
25298            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
25299            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
25300            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
25301            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
25302            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
25303            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
25304            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
25305            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
25306            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
25307            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
25308            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
25309            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
25310            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
25311            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
25312            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
25313            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
25314            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
25315            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
25316            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
25317            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
25318            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
25319            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
25320            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
25321            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
25322            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
25323            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
25324            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
25325            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
25326            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
25327            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
25328            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
25329            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
25330            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
25331            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
25332            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
25333            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
25334            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
25335            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
25336            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
25337            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
25338            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
25339            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
25340            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
25341            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
25342            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
25343            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
25344            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
25345            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
25346            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
25347            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
25348            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
25349            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
25350            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
25351            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
25352            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
25353            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
25354            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
25355            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
25356            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
25357            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
25358            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
25359            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
25360            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
25361            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
25362            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
25363            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
25364            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
25365            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
25366            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
25367            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
25368            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
25369            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
25370            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
25371            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
25372            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
25373            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
25374            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
25375            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
25376            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
25377            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
25378            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
25379            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
25380            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
25381            AtomId::AtomMteState => "ATOM_MTE_STATE",
25382            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
25383            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
25384            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
25385            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
25386            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
25387            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
25388            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
25389            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
25390            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
25391            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
25392            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
25393            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
25394            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
25395            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
25396            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
25397            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
25398            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
25399            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
25400            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
25401            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
25402            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
25403            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
25404            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
25405            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
25406            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
25407            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
25408            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
25409            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
25410            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
25411            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
25412            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
25413            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
25414            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
25415            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
25416            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
25417            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
25418            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
25419            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
25420            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
25421            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
25422            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
25423            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
25424            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
25425            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
25426            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
25427            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
25428            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
25429            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
25430            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
25431            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
25432            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
25433            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
25434            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
25435            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
25436            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
25437            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
25438            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
25439            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
25440            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
25441            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
25442            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
25443            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
25444            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
25445            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
25446            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
25447            AtomId::AtomCallStats => "ATOM_CALL_STATS",
25448            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
25449            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
25450            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
25451            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
25452            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
25453            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
25454            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
25455            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
25456            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
25457            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
25458            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
25459            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
25460            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
25461            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
25462            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
25463            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
25464            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
25465            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
25466            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
25467            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
25468            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
25469            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
25470            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
25471            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
25472            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
25473            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
25474            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
25475            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
25476            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
25477            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
25478            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
25479            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
25480            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
25481            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
25482            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
25483            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
25484            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
25485            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
25486            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
25487            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
25488            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
25489            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
25490            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
25491            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
25492            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
25493            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
25494            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
25495            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
25496            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
25497            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
25498            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
25499            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
25500            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
25501            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
25502            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
25503            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
25504            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
25505            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
25506            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
25507            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
25508            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
25509            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
25510            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
25511            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
25512            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
25513            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
25514            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
25515            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
25516            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
25517            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
25518            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
25519            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
25520            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
25521            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
25522            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
25523            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
25524            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
25525            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
25526            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
25527            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
25528            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
25529            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
25530            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
25531            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
25532            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
25533            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
25534            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
25535            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
25536            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
25537            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
25538            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
25539            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
25540            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
25541            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
25542            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
25543            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
25544            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
25545            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
25546            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
25547            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
25548            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
25549            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
25550            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
25551            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
25552            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
25553            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
25554            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
25555            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
25556            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
25557            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
25558            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
25559            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
25560            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
25561            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
25562        }
25563    }
25564}
25565// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
25566
25567// Begin of protos/perfetto/common/sys_stats_counters.proto
25568
25569// When editing entries here remember also to update "sys_stats_counters.h" with
25570// the corresponding string definitions for the actual /proc files parser.
25571
25572/// Counter definitions for Linux's /proc/meminfo.
25573#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25574#[repr(i32)]
25575pub enum MeminfoCounters {
25576    MeminfoUnspecified = 0,
25577    MeminfoMemTotal = 1,
25578    MeminfoMemFree = 2,
25579    MeminfoMemAvailable = 3,
25580    MeminfoBuffers = 4,
25581    MeminfoCached = 5,
25582    MeminfoSwapCached = 6,
25583    MeminfoActive = 7,
25584    MeminfoInactive = 8,
25585    MeminfoActiveAnon = 9,
25586    MeminfoInactiveAnon = 10,
25587    MeminfoActiveFile = 11,
25588    MeminfoInactiveFile = 12,
25589    MeminfoUnevictable = 13,
25590    MeminfoMlocked = 14,
25591    MeminfoSwapTotal = 15,
25592    MeminfoSwapFree = 16,
25593    MeminfoDirty = 17,
25594    MeminfoWriteback = 18,
25595    MeminfoAnonPages = 19,
25596    MeminfoMapped = 20,
25597    MeminfoShmem = 21,
25598    MeminfoSlab = 22,
25599    MeminfoSlabReclaimable = 23,
25600    MeminfoSlabUnreclaimable = 24,
25601    MeminfoKernelStack = 25,
25602    MeminfoPageTables = 26,
25603    MeminfoCommitLimit = 27,
25604    MeminfoCommitedAs = 28,
25605    MeminfoVmallocTotal = 29,
25606    MeminfoVmallocUsed = 30,
25607    MeminfoVmallocChunk = 31,
25608    MeminfoCmaTotal = 32,
25609    MeminfoCmaFree = 33,
25610    MeminfoGpu = 34,
25611    MeminfoZram = 35,
25612    MeminfoMisc = 36,
25613    MeminfoIonHeap = 37,
25614    MeminfoIonHeapPool = 38,
25615}
25616impl MeminfoCounters {
25617    /// String value of the enum field names used in the ProtoBuf definition.
25618    ///
25619    /// The values are not transformed in any way and thus are considered stable
25620    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25621    pub fn as_str_name(&self) -> &'static str {
25622        match self {
25623            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
25624            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
25625            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
25626            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
25627            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
25628            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
25629            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
25630            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
25631            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
25632            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
25633            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
25634            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
25635            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
25636            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
25637            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
25638            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
25639            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
25640            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
25641            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
25642            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
25643            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
25644            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
25645            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
25646            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
25647            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
25648            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
25649            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
25650            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
25651            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
25652            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
25653            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
25654            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
25655            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
25656            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
25657            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
25658            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
25659            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
25660            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
25661            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
25662        }
25663    }
25664}
25665/// Counter definitions for Linux's /proc/vmstat.
25666#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25667#[repr(i32)]
25668pub enum VmstatCounters {
25669    VmstatUnspecified = 0,
25670    VmstatNrFreePages = 1,
25671    VmstatNrAllocBatch = 2,
25672    VmstatNrInactiveAnon = 3,
25673    VmstatNrActiveAnon = 4,
25674    VmstatNrInactiveFile = 5,
25675    VmstatNrActiveFile = 6,
25676    VmstatNrUnevictable = 7,
25677    VmstatNrMlock = 8,
25678    VmstatNrAnonPages = 9,
25679    VmstatNrMapped = 10,
25680    VmstatNrFilePages = 11,
25681    VmstatNrDirty = 12,
25682    VmstatNrWriteback = 13,
25683    VmstatNrSlabReclaimable = 14,
25684    VmstatNrSlabUnreclaimable = 15,
25685    VmstatNrPageTablePages = 16,
25686    VmstatNrKernelStack = 17,
25687    VmstatNrOverhead = 18,
25688    VmstatNrUnstable = 19,
25689    VmstatNrBounce = 20,
25690    VmstatNrVmscanWrite = 21,
25691    VmstatNrVmscanImmediateReclaim = 22,
25692    VmstatNrWritebackTemp = 23,
25693    VmstatNrIsolatedAnon = 24,
25694    VmstatNrIsolatedFile = 25,
25695    VmstatNrShmem = 26,
25696    VmstatNrDirtied = 27,
25697    VmstatNrWritten = 28,
25698    VmstatNrPagesScanned = 29,
25699    VmstatWorkingsetRefault = 30,
25700    VmstatWorkingsetActivate = 31,
25701    VmstatWorkingsetNodereclaim = 32,
25702    VmstatNrAnonTransparentHugepages = 33,
25703    VmstatNrFreeCma = 34,
25704    VmstatNrSwapcache = 35,
25705    VmstatNrDirtyThreshold = 36,
25706    VmstatNrDirtyBackgroundThreshold = 37,
25707    VmstatPgpgin = 38,
25708    VmstatPgpgout = 39,
25709    VmstatPgpgoutclean = 40,
25710    VmstatPswpin = 41,
25711    VmstatPswpout = 42,
25712    VmstatPgallocDma = 43,
25713    VmstatPgallocNormal = 44,
25714    VmstatPgallocMovable = 45,
25715    VmstatPgfree = 46,
25716    VmstatPgactivate = 47,
25717    VmstatPgdeactivate = 48,
25718    VmstatPgfault = 49,
25719    VmstatPgmajfault = 50,
25720    VmstatPgrefillDma = 51,
25721    VmstatPgrefillNormal = 52,
25722    VmstatPgrefillMovable = 53,
25723    VmstatPgstealKswapdDma = 54,
25724    VmstatPgstealKswapdNormal = 55,
25725    VmstatPgstealKswapdMovable = 56,
25726    VmstatPgstealDirectDma = 57,
25727    VmstatPgstealDirectNormal = 58,
25728    VmstatPgstealDirectMovable = 59,
25729    VmstatPgscanKswapdDma = 60,
25730    VmstatPgscanKswapdNormal = 61,
25731    VmstatPgscanKswapdMovable = 62,
25732    VmstatPgscanDirectDma = 63,
25733    VmstatPgscanDirectNormal = 64,
25734    VmstatPgscanDirectMovable = 65,
25735    VmstatPgscanDirectThrottle = 66,
25736    VmstatPginodesteal = 67,
25737    VmstatSlabsScanned = 68,
25738    VmstatKswapdInodesteal = 69,
25739    VmstatKswapdLowWmarkHitQuickly = 70,
25740    VmstatKswapdHighWmarkHitQuickly = 71,
25741    VmstatPageoutrun = 72,
25742    VmstatAllocstall = 73,
25743    VmstatPgrotated = 74,
25744    VmstatDropPagecache = 75,
25745    VmstatDropSlab = 76,
25746    VmstatPgmigrateSuccess = 77,
25747    VmstatPgmigrateFail = 78,
25748    VmstatCompactMigrateScanned = 79,
25749    VmstatCompactFreeScanned = 80,
25750    VmstatCompactIsolated = 81,
25751    VmstatCompactStall = 82,
25752    VmstatCompactFail = 83,
25753    VmstatCompactSuccess = 84,
25754    VmstatCompactDaemonWake = 85,
25755    VmstatUnevictablePgsCulled = 86,
25756    VmstatUnevictablePgsScanned = 87,
25757    VmstatUnevictablePgsRescued = 88,
25758    VmstatUnevictablePgsMlocked = 89,
25759    VmstatUnevictablePgsMunlocked = 90,
25760    VmstatUnevictablePgsCleared = 91,
25761    VmstatUnevictablePgsStranded = 92,
25762    VmstatNrZspages = 93,
25763    VmstatNrIonHeap = 94,
25764    VmstatNrGpuHeap = 95,
25765    VmstatAllocstallDma = 96,
25766    VmstatAllocstallMovable = 97,
25767    VmstatAllocstallNormal = 98,
25768    VmstatCompactDaemonFreeScanned = 99,
25769    VmstatCompactDaemonMigrateScanned = 100,
25770    VmstatNrFastrpc = 101,
25771    VmstatNrIndirectlyReclaimable = 102,
25772    VmstatNrIonHeapPool = 103,
25773    VmstatNrKernelMiscReclaimable = 104,
25774    VmstatNrShadowCallStackBytes = 105,
25775    VmstatNrShmemHugepages = 106,
25776    VmstatNrShmemPmdmapped = 107,
25777    VmstatNrUnreclaimablePages = 108,
25778    VmstatNrZoneActiveAnon = 109,
25779    VmstatNrZoneActiveFile = 110,
25780    VmstatNrZoneInactiveAnon = 111,
25781    VmstatNrZoneInactiveFile = 112,
25782    VmstatNrZoneUnevictable = 113,
25783    VmstatNrZoneWritePending = 114,
25784    VmstatOomKill = 115,
25785    VmstatPglazyfree = 116,
25786    VmstatPglazyfreed = 117,
25787    VmstatPgrefill = 118,
25788    VmstatPgscanDirect = 119,
25789    VmstatPgscanKswapd = 120,
25790    VmstatPgskipDma = 121,
25791    VmstatPgskipMovable = 122,
25792    VmstatPgskipNormal = 123,
25793    VmstatPgstealDirect = 124,
25794    VmstatPgstealKswapd = 125,
25795    VmstatSwapRa = 126,
25796    VmstatSwapRaHit = 127,
25797    VmstatWorkingsetRestore = 128,
25798    VmstatAllocstallDevice = 129,
25799    VmstatAllocstallDma32 = 130,
25800    VmstatBalloonDeflate = 131,
25801    VmstatBalloonInflate = 132,
25802    VmstatBalloonMigrate = 133,
25803    VmstatCmaAllocFail = 134,
25804    VmstatCmaAllocSuccess = 135,
25805    VmstatNrFileHugepages = 136,
25806    VmstatNrFilePmdmapped = 137,
25807    VmstatNrFollPinAcquired = 138,
25808    VmstatNrFollPinReleased = 139,
25809    VmstatNrSecPageTablePages = 140,
25810    VmstatNrShadowCallStack = 141,
25811    VmstatNrSwapcached = 142,
25812    VmstatNrThrottledWritten = 143,
25813    VmstatPgallocDevice = 144,
25814    VmstatPgallocDma32 = 145,
25815    VmstatPgdemoteDirect = 146,
25816    VmstatPgdemoteKswapd = 147,
25817    VmstatPgreuse = 148,
25818    VmstatPgscanAnon = 149,
25819    VmstatPgscanFile = 150,
25820    VmstatPgskipDevice = 151,
25821    VmstatPgskipDma32 = 152,
25822    VmstatPgstealAnon = 153,
25823    VmstatPgstealFile = 154,
25824    VmstatThpCollapseAlloc = 155,
25825    VmstatThpCollapseAllocFailed = 156,
25826    VmstatThpDeferredSplitPage = 157,
25827    VmstatThpFaultAlloc = 158,
25828    VmstatThpFaultFallback = 159,
25829    VmstatThpFaultFallbackCharge = 160,
25830    VmstatThpFileAlloc = 161,
25831    VmstatThpFileFallback = 162,
25832    VmstatThpFileFallbackCharge = 163,
25833    VmstatThpFileMapped = 164,
25834    VmstatThpMigrationFail = 165,
25835    VmstatThpMigrationSplit = 166,
25836    VmstatThpMigrationSuccess = 167,
25837    VmstatThpScanExceedNonePte = 168,
25838    VmstatThpScanExceedSharePte = 169,
25839    VmstatThpScanExceedSwapPte = 170,
25840    VmstatThpSplitPage = 171,
25841    VmstatThpSplitPageFailed = 172,
25842    VmstatThpSplitPmd = 173,
25843    VmstatThpSwpout = 174,
25844    VmstatThpSwpoutFallback = 175,
25845    VmstatThpZeroPageAlloc = 176,
25846    VmstatThpZeroPageAllocFailed = 177,
25847    VmstatVmaLockAbort = 178,
25848    VmstatVmaLockMiss = 179,
25849    VmstatVmaLockRetry = 180,
25850    VmstatVmaLockSuccess = 181,
25851    VmstatWorkingsetActivateAnon = 182,
25852    VmstatWorkingsetActivateFile = 183,
25853    VmstatWorkingsetNodes = 184,
25854    VmstatWorkingsetRefaultAnon = 185,
25855    VmstatWorkingsetRefaultFile = 186,
25856    VmstatWorkingsetRestoreAnon = 187,
25857    VmstatWorkingsetRestoreFile = 188,
25858}
25859impl VmstatCounters {
25860    /// String value of the enum field names used in the ProtoBuf definition.
25861    ///
25862    /// The values are not transformed in any way and thus are considered stable
25863    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25864    pub fn as_str_name(&self) -> &'static str {
25865        match self {
25866            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
25867            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
25868            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
25869            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
25870            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
25871            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
25872            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
25873            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
25874            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
25875            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
25876            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
25877            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
25878            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
25879            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
25880            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
25881            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
25882            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
25883            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
25884            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
25885            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
25886            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
25887            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
25888            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
25889            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
25890            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
25891            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
25892            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
25893            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
25894            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
25895            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
25896            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
25897            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
25898            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
25899            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
25900            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
25901            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
25902            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
25903            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
25904            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
25905            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
25906            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
25907            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
25908            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
25909            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
25910            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
25911            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
25912            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
25913            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
25914            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
25915            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
25916            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
25917            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
25918            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
25919            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
25920            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
25921            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
25922            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
25923            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
25924            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
25925            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
25926            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
25927            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
25928            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
25929            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
25930            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
25931            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
25932            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
25933            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
25934            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
25935            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
25936            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
25937            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
25938            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
25939            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
25940            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
25941            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
25942            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
25943            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
25944            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
25945            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
25946            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
25947            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
25948            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
25949            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
25950            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
25951            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
25952            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
25953            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
25954            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
25955            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
25956            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
25957            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
25958            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
25959            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
25960            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
25961            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
25962            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
25963            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
25964            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
25965            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
25966            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
25967            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
25968            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
25969            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
25970            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
25971            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
25972            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
25973            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
25974            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
25975            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
25976            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
25977            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
25978            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
25979            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
25980            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
25981            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
25982            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
25983            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
25984            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
25985            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
25986            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
25987            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
25988            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
25989            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
25990            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
25991            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
25992            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
25993            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
25994            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
25995            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
25996            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
25997            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
25998            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
25999            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
26000            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
26001            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
26002            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
26003            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
26004            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
26005            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
26006            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
26007            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
26008            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
26009            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
26010            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
26011            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
26012            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
26013            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
26014            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
26015            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
26016            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
26017            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
26018            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
26019            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
26020            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
26021            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
26022            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
26023            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
26024            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
26025            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
26026            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
26027            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
26028            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
26029            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
26030            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
26031            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
26032            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
26033            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
26034            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
26035            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
26036            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
26037            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
26038            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
26039            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
26040            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
26041            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
26042            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
26043            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
26044            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
26045            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
26046            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
26047            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
26048            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
26049            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
26050            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
26051            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
26052            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
26053            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
26054            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
26055        }
26056    }
26057}
26058// End of protos/perfetto/trace/android/app_wakelock_data.proto
26059
26060// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
26061
26062/// Describes the packet type and direction. CMD and EVT are unidirectional, so
26063/// no need to differentiate the direction.
26064#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26065#[repr(i32)]
26066pub enum BluetoothTracePacketType {
26067    HciCmd = 1,
26068    HciEvt = 2,
26069    HciAclRx = 3,
26070    HciAclTx = 4,
26071    HciScoRx = 5,
26072    HciScoTx = 6,
26073    HciIsoRx = 7,
26074    HciIsoTx = 8,
26075}
26076impl BluetoothTracePacketType {
26077    /// String value of the enum field names used in the ProtoBuf definition.
26078    ///
26079    /// The values are not transformed in any way and thus are considered stable
26080    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26081    pub fn as_str_name(&self) -> &'static str {
26082        match self {
26083            BluetoothTracePacketType::HciCmd => "HCI_CMD",
26084            BluetoothTracePacketType::HciEvt => "HCI_EVT",
26085            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
26086            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
26087            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
26088            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
26089            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
26090            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
26091        }
26092    }
26093}
26094// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
26095
26096// Begin of protos/perfetto/trace/android/network_trace.proto
26097
26098#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26099#[repr(i32)]
26100pub enum TrafficDirection {
26101    DirUnspecified = 0,
26102    DirIngress = 1,
26103    DirEgress = 2,
26104}
26105impl TrafficDirection {
26106    /// String value of the enum field names used in the ProtoBuf definition.
26107    ///
26108    /// The values are not transformed in any way and thus are considered stable
26109    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26110    pub fn as_str_name(&self) -> &'static str {
26111        match self {
26112            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
26113            TrafficDirection::DirIngress => "DIR_INGRESS",
26114            TrafficDirection::DirEgress => "DIR_EGRESS",
26115        }
26116    }
26117}
26118#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26119#[repr(i32)]
26120pub enum TrustedOverlay {
26121    Unset = 0,
26122    Disabled = 1,
26123    Enabled = 2,
26124}
26125impl TrustedOverlay {
26126    /// String value of the enum field names used in the ProtoBuf definition.
26127    ///
26128    /// The values are not transformed in any way and thus are considered stable
26129    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26130    pub fn as_str_name(&self) -> &'static str {
26131        match self {
26132            TrustedOverlay::Unset => "UNSET",
26133            TrustedOverlay::Disabled => "DISABLED",
26134            TrustedOverlay::Enabled => "ENABLED",
26135        }
26136    }
26137}
26138/// Must match definition in the IComposerClient HAL
26139#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26140#[repr(i32)]
26141pub enum HwcCompositionType {
26142    /// Invalid composition type
26143    HwcTypeUnspecified = 0,
26144    /// Layer was composited by the client into the client target buffer
26145    HwcTypeClient = 1,
26146    /// Layer was composited by the device through hardware overlays
26147    HwcTypeDevice = 2,
26148    /// Layer was composited by the device using a color
26149    HwcTypeSolidColor = 3,
26150    /// Similar to DEVICE, but the layer position may have been asynchronously set
26151    /// through setCursorPosition
26152    HwcTypeCursor = 4,
26153    /// Layer was composited by the device via a sideband stream
26154    HwcTypeSideband = 5,
26155    /// Layer was composited by hardware optimized for display decoration
26156    HwcTypeDisplayDecoration = 6,
26157}
26158impl HwcCompositionType {
26159    /// String value of the enum field names used in the ProtoBuf definition.
26160    ///
26161    /// The values are not transformed in any way and thus are considered stable
26162    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26163    pub fn as_str_name(&self) -> &'static str {
26164        match self {
26165            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
26166            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
26167            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
26168            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
26169            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
26170            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
26171            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
26172        }
26173    }
26174}
26175#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26176#[repr(i32)]
26177pub enum FtraceParseStatus {
26178    FtraceStatusUnspecified = 0,
26179    /// Not written, used for convenience of implementation:
26180    FtraceStatusOk = 1,
26181    /// Issues with reading data out of the ftrace ring buffer:
26182    FtraceStatusUnexpectedReadError = 2,
26183    FtraceStatusPartialPageRead = 3,
26184    /// Ring buffer binary data not matching our understanding of the layout:
26185    FtraceStatusAbiInvalidPageHeader = 4,
26186    FtraceStatusAbiShortEventHeader = 5,
26187    FtraceStatusAbiNullPadding = 6,
26188    FtraceStatusAbiShortPaddingLength = 7,
26189    FtraceStatusAbiInvalidPaddingLength = 8,
26190    FtraceStatusAbiShortTimeExtend = 9,
26191    FtraceStatusAbiShortTimeStamp = 10,
26192    FtraceStatusAbiShortDataLength = 11,
26193    FtraceStatusAbiZeroDataLength = 12,
26194    FtraceStatusAbiInvalidDataLength = 13,
26195    FtraceStatusAbiShortEventId = 14,
26196    FtraceStatusAbiEndOverflow = 15,
26197    /// Issues with parsing the event payload:
26198    FtraceStatusShortCompactEvent = 16,
26199    FtraceStatusInvalidEvent = 17,
26200}
26201impl FtraceParseStatus {
26202    /// String value of the enum field names used in the ProtoBuf definition.
26203    ///
26204    /// The values are not transformed in any way and thus are considered stable
26205    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26206    pub fn as_str_name(&self) -> &'static str {
26207        match self {
26208            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
26209            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
26210            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
26211            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
26212            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
26213            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
26214            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
26215            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
26216            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
26217            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
26218            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
26219            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
26220            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
26221            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
26222            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
26223            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
26224            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
26225            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
26226        }
26227    }
26228}
26229#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26230#[repr(i32)]
26231pub enum FtraceClock {
26232    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
26233    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
26234    Unspecified = 0,
26235    Unknown = 1,
26236    Global = 2,
26237    Local = 3,
26238    MonoRaw = 4,
26239}
26240impl FtraceClock {
26241    /// String value of the enum field names used in the ProtoBuf definition.
26242    ///
26243    /// The values are not transformed in any way and thus are considered stable
26244    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26245    pub fn as_str_name(&self) -> &'static str {
26246        match self {
26247            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
26248            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
26249            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
26250            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
26251            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
26252        }
26253    }
26254}
26255// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
26256
26257// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
26258
26259// Describes Chrome's Compositor scheduler's current state and associated
26260// variables.
26261//
26262// These protos and enums were adapted from the corresponding original JSON
26263// trace event for the scheduler state. In contrast to the JSON, we use strongly
26264// typed enum values instead of strings for many fields, and
26265// microsecond-granularity timestamps.
26266//
26267// The original format was generated in JSON by the code at
26268// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
26269//
26270// And is now generated as protozero:
26271// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
26272//
26273// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
26274
26275#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26276#[repr(i32)]
26277pub enum ChromeCompositorSchedulerAction {
26278    CcSchedulerActionUnspecified = 0,
26279    CcSchedulerActionNone = 1,
26280    CcSchedulerActionSendBeginMainFrame = 2,
26281    CcSchedulerActionCommit = 3,
26282    CcSchedulerActionActivateSyncTree = 4,
26283    CcSchedulerActionDrawIfPossible = 5,
26284    CcSchedulerActionDrawForced = 6,
26285    CcSchedulerActionDrawAbort = 7,
26286    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
26287    CcSchedulerActionPrepareTiles = 9,
26288    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
26289    CcSchedulerActionPerformImplSideInvalidation = 11,
26290    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
26291    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
26292}
26293impl ChromeCompositorSchedulerAction {
26294    /// String value of the enum field names used in the ProtoBuf definition.
26295    ///
26296    /// The values are not transformed in any way and thus are considered stable
26297    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26298    pub fn as_str_name(&self) -> &'static str {
26299        match self {
26300            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
26301            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
26302            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
26303            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
26304            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
26305            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
26306            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
26307            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
26308            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
26309            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
26310            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
26311            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
26312            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
26313            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
26314        }
26315    }
26316}
26317// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
26318
26319// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
26320
26321// Describes the state of the RendererScheduler for a given Renderer Process.
26322
26323/// RAIL Mode is an indication of the kind of work that a Renderer is currently
26324/// performing which is in turn used to prioritise work accordingly.
26325/// A fuller description of these modes can be found <https://web.dev/rail/>
26326#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26327#[repr(i32)]
26328pub enum ChromeRailMode {
26329    RailModeNone = 0,
26330    RailModeResponse = 1,
26331    RailModeAnimation = 2,
26332    RailModeIdle = 3,
26333    RailModeLoad = 4,
26334}
26335impl ChromeRailMode {
26336    /// String value of the enum field names used in the ProtoBuf definition.
26337    ///
26338    /// The values are not transformed in any way and thus are considered stable
26339    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26340    pub fn as_str_name(&self) -> &'static str {
26341        match self {
26342            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
26343            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
26344            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
26345            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
26346            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
26347        }
26348    }
26349}