perfetto_trace_protos/
perfetto.protos.rs

1// Begin of protos/perfetto/common/ftrace_descriptor.proto
2
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct FtraceDescriptor {
5    /// Report the available atrace categories.
6    ///
7    /// Used by Traceur via `perfetto --query`.
8    #[prost(message, repeated, tag="1")]
9    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
10}
11/// Nested message and enum types in `FtraceDescriptor`.
12pub mod ftrace_descriptor {
13    #[derive(Clone, PartialEq, ::prost::Message)]
14    pub struct AtraceCategory {
15        #[prost(string, optional, tag="1")]
16        pub name: ::core::option::Option<::prost::alloc::string::String>,
17        #[prost(string, optional, tag="2")]
18        pub description: ::core::option::Option<::prost::alloc::string::String>,
19    }
20}
21// End of protos/perfetto/common/ftrace_descriptor.proto
22
23// Begin of protos/perfetto/common/gpu_counter_descriptor.proto
24
25/// Description of GPU counters.
26/// This message is sent by a GPU counter producer to specify the counters
27/// available in the hardware.
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct GpuCounterDescriptor {
30    #[prost(message, repeated, tag="1")]
31    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
32    #[prost(message, repeated, tag="2")]
33    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
34    /// optional.  Minimum sampling period supported by the producer in
35    /// nanoseconds.
36    #[prost(uint64, optional, tag="3")]
37    pub min_sampling_period_ns: ::core::option::Option<u64>,
38    /// optional.  Maximum sampling period supported by the producer in
39    /// nanoseconds.
40    #[prost(uint64, optional, tag="4")]
41    pub max_sampling_period_ns: ::core::option::Option<u64>,
42    /// optional.  The producer supports counter sampling by instrumenting the
43    /// command buffer.
44    #[prost(bool, optional, tag="5")]
45    pub supports_instrumented_sampling: ::core::option::Option<bool>,
46}
47/// Nested message and enum types in `GpuCounterDescriptor`.
48pub mod gpu_counter_descriptor {
49    #[derive(Clone, PartialEq, ::prost::Message)]
50    pub struct GpuCounterSpec {
51        #[prost(uint32, optional, tag="1")]
52        pub counter_id: ::core::option::Option<u32>,
53        #[prost(string, optional, tag="2")]
54        pub name: ::core::option::Option<::prost::alloc::string::String>,
55        #[prost(string, optional, tag="3")]
56        pub description: ::core::option::Option<::prost::alloc::string::String>,
57        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
58        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
59        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
60        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
61        #[prost(bool, optional, tag="9")]
62        pub select_by_default: ::core::option::Option<bool>,
63        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
64        pub groups: ::prost::alloc::vec::Vec<i32>,
65        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
66        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
67    }
68    /// Nested message and enum types in `GpuCounterSpec`.
69    pub mod gpu_counter_spec {
70        #[derive(Clone, PartialEq, ::prost::Oneof)]
71        pub enum PeakValue {
72            #[prost(int64, tag="5")]
73            IntPeakValue(i64),
74            #[prost(double, tag="6")]
75            DoublePeakValue(f64),
76        }
77    }
78    /// Allow producer to group counters into block to represent counter islands.
79    /// A capacity may be specified to indicate the number of counters that can be
80    /// enable simultaneously in that block.
81    #[derive(Clone, PartialEq, ::prost::Message)]
82    pub struct GpuCounterBlock {
83        /// required. Unique ID for the counter group.
84        #[prost(uint32, optional, tag="1")]
85        pub block_id: ::core::option::Option<u32>,
86        /// optional. Number of counters supported by the block. No limit if unset.
87        #[prost(uint32, optional, tag="2")]
88        pub block_capacity: ::core::option::Option<u32>,
89        /// optional. Name of block.
90        #[prost(string, optional, tag="3")]
91        pub name: ::core::option::Option<::prost::alloc::string::String>,
92        /// optional. Description for the block.
93        #[prost(string, optional, tag="4")]
94        pub description: ::core::option::Option<::prost::alloc::string::String>,
95        /// list of counters that are part of the block.
96        #[prost(uint32, repeated, packed="false", tag="5")]
97        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
98    }
99    /// Logical groups for a counter.  This is used in the UI to present the
100    /// related counters together.
101    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
102    #[repr(i32)]
103    pub enum GpuCounterGroup {
104        Unclassified = 0,
105        System = 1,
106        Vertices = 2,
107        Fragments = 3,
108        Primitives = 4,
109        /// Includes counters relating to caching and bandwidth.
110        Memory = 5,
111        Compute = 6,
112        RayTracing = 7,
113    }
114    impl GpuCounterGroup {
115        /// String value of the enum field names used in the ProtoBuf definition.
116        ///
117        /// The values are not transformed in any way and thus are considered stable
118        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
119        pub fn as_str_name(&self) -> &'static str {
120            match self {
121                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
122                GpuCounterGroup::System => "SYSTEM",
123                GpuCounterGroup::Vertices => "VERTICES",
124                GpuCounterGroup::Fragments => "FRAGMENTS",
125                GpuCounterGroup::Primitives => "PRIMITIVES",
126                GpuCounterGroup::Memory => "MEMORY",
127                GpuCounterGroup::Compute => "COMPUTE",
128                GpuCounterGroup::RayTracing => "RAY_TRACING",
129            }
130        }
131    }
132    /// next id: 41
133    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
134    #[repr(i32)]
135    pub enum MeasureUnit {
136        None = 0,
137        Bit = 1,
138        Kilobit = 2,
139        Megabit = 3,
140        Gigabit = 4,
141        Terabit = 5,
142        Petabit = 6,
143        Byte = 7,
144        Kilobyte = 8,
145        Megabyte = 9,
146        Gigabyte = 10,
147        Terabyte = 11,
148        Petabyte = 12,
149        Hertz = 13,
150        Kilohertz = 14,
151        Megahertz = 15,
152        Gigahertz = 16,
153        Terahertz = 17,
154        Petahertz = 18,
155        Nanosecond = 19,
156        Microsecond = 20,
157        Millisecond = 21,
158        Second = 22,
159        Minute = 23,
160        Hour = 24,
161        Vertex = 25,
162        Pixel = 26,
163        Triangle = 27,
164        Primitive = 38,
165        Fragment = 39,
166        Milliwatt = 28,
167        Watt = 29,
168        Kilowatt = 30,
169        Joule = 31,
170        Volt = 32,
171        Ampere = 33,
172        Celsius = 34,
173        Fahrenheit = 35,
174        Kelvin = 36,
175        /// Values should be out of 100.
176        Percent = 37,
177        Instruction = 40,
178    }
179    impl MeasureUnit {
180        /// String value of the enum field names used in the ProtoBuf definition.
181        ///
182        /// The values are not transformed in any way and thus are considered stable
183        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
184        pub fn as_str_name(&self) -> &'static str {
185            match self {
186                MeasureUnit::None => "NONE",
187                MeasureUnit::Bit => "BIT",
188                MeasureUnit::Kilobit => "KILOBIT",
189                MeasureUnit::Megabit => "MEGABIT",
190                MeasureUnit::Gigabit => "GIGABIT",
191                MeasureUnit::Terabit => "TERABIT",
192                MeasureUnit::Petabit => "PETABIT",
193                MeasureUnit::Byte => "BYTE",
194                MeasureUnit::Kilobyte => "KILOBYTE",
195                MeasureUnit::Megabyte => "MEGABYTE",
196                MeasureUnit::Gigabyte => "GIGABYTE",
197                MeasureUnit::Terabyte => "TERABYTE",
198                MeasureUnit::Petabyte => "PETABYTE",
199                MeasureUnit::Hertz => "HERTZ",
200                MeasureUnit::Kilohertz => "KILOHERTZ",
201                MeasureUnit::Megahertz => "MEGAHERTZ",
202                MeasureUnit::Gigahertz => "GIGAHERTZ",
203                MeasureUnit::Terahertz => "TERAHERTZ",
204                MeasureUnit::Petahertz => "PETAHERTZ",
205                MeasureUnit::Nanosecond => "NANOSECOND",
206                MeasureUnit::Microsecond => "MICROSECOND",
207                MeasureUnit::Millisecond => "MILLISECOND",
208                MeasureUnit::Second => "SECOND",
209                MeasureUnit::Minute => "MINUTE",
210                MeasureUnit::Hour => "HOUR",
211                MeasureUnit::Vertex => "VERTEX",
212                MeasureUnit::Pixel => "PIXEL",
213                MeasureUnit::Triangle => "TRIANGLE",
214                MeasureUnit::Primitive => "PRIMITIVE",
215                MeasureUnit::Fragment => "FRAGMENT",
216                MeasureUnit::Milliwatt => "MILLIWATT",
217                MeasureUnit::Watt => "WATT",
218                MeasureUnit::Kilowatt => "KILOWATT",
219                MeasureUnit::Joule => "JOULE",
220                MeasureUnit::Volt => "VOLT",
221                MeasureUnit::Ampere => "AMPERE",
222                MeasureUnit::Celsius => "CELSIUS",
223                MeasureUnit::Fahrenheit => "FAHRENHEIT",
224                MeasureUnit::Kelvin => "KELVIN",
225                MeasureUnit::Percent => "PERCENT",
226                MeasureUnit::Instruction => "INSTRUCTION",
227            }
228        }
229    }
230}
231// End of protos/perfetto/common/gpu_counter_descriptor.proto
232
233// Begin of protos/perfetto/common/track_event_descriptor.proto
234
235#[derive(Clone, PartialEq, ::prost::Message)]
236pub struct TrackEventCategory {
237    #[prost(string, optional, tag="1")]
238    pub name: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, optional, tag="2")]
240    pub description: ::core::option::Option<::prost::alloc::string::String>,
241    #[prost(string, repeated, tag="3")]
242    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
243}
244#[derive(Clone, PartialEq, ::prost::Message)]
245pub struct TrackEventDescriptor {
246    #[prost(message, repeated, tag="1")]
247    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
248}
249// End of protos/perfetto/common/track_event_descriptor.proto
250
251// Begin of protos/perfetto/common/data_source_descriptor.proto
252
253/// This message is sent from Producer(s) to the tracing Service when registering
254/// to advertise their capabilities. It describes the structure of tracing
255/// protos that will be produced by the data source and the supported filters.
256#[derive(Clone, PartialEq, ::prost::Message)]
257pub struct DataSourceDescriptor {
258    /// e.g., "linux.ftrace", "chromium.tracing"
259    #[prost(string, optional, tag="1")]
260    pub name: ::core::option::Option<::prost::alloc::string::String>,
261    /// When non-zero, this is a unique ID within the scope of the Producer for
262    /// this data source (it is NOT globally unique). This is useful to
263    /// differentiate between data sources with matching names when calling
264    /// UpdateDataSource(). This field has been introduced in November 2021
265    /// (v22, Android T) and is not supported on older versions.
266    #[prost(uint64, optional, tag="7")]
267    pub id: ::core::option::Option<u64>,
268    /// When true the data source is expected to ack the stop request through the
269    /// NotifyDataSourceStopped() IPC. This field has been introduced after
270    /// Android P in Jul 2018 and is not supported on older versions.
271    #[prost(bool, optional, tag="2")]
272    pub will_notify_on_stop: ::core::option::Option<bool>,
273    /// When true the data source is expected to ack the start request through the
274    /// NotifyDataSourceStarted() IPC. This field has been introduced after
275    /// Android P in March 2019 and is not supported on older versions.
276    #[prost(bool, optional, tag="3")]
277    pub will_notify_on_start: ::core::option::Option<bool>,
278    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
279    /// set if the data source writes packets that refer to previous trace
280    /// contents, and knows how to stop referring to the already-emitted data.
281    #[prost(bool, optional, tag="4")]
282    pub handles_incremental_state_clear: ::core::option::Option<bool>,
283    /// If true, indicates that the data source does nothing upon Flush. This
284    /// allows the service to reduce the flush-related IPC traffic and better deal
285    /// with frozen producers (see go/perfetto-frozen). This is usually the case
286    /// for data sources like 'track_event' that don't have access to the various
287    /// thread task runners to post a flush task and rely purely on server-side
288    /// scraping.
289    /// Introduced in v39 / Android V.
290    #[prost(bool, optional, tag="9")]
291    pub no_flush: ::core::option::Option<bool>,
292    /// Optional specification about available GPU counters.
293    #[prost(message, optional, tag="5")]
294    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
295    #[prost(message, optional, tag="6")]
296    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
297    #[prost(message, optional, tag="8")]
298    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
299}
300// End of protos/perfetto/common/data_source_descriptor.proto
301
302// Begin of protos/perfetto/common/tracing_service_state.proto
303
304/// Reports the state of the tracing service. Used to gather details about the
305/// data sources connected.
306/// See ConsumerPort::QueryServiceState().
307#[derive(Clone, PartialEq, ::prost::Message)]
308pub struct TracingServiceState {
309    /// Lists all the producers connected.
310    #[prost(message, repeated, tag="1")]
311    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
312    /// Lists the data sources available.
313    #[prost(message, repeated, tag="2")]
314    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
315    /// Lists the tracing sessions active AND owned by a consumer that has the same
316    /// UID of the caller (or all of them if the caller is root).
317    /// Introduced in v24 / Android T.
318    #[prost(message, repeated, tag="6")]
319    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
320    /// This is always set to true from v24 and beyond. This flag is only used to
321    /// tell the difference between: (1) talking to a recent service which happens
322    /// to have no tracing session active; (2) talking to an older version of the
323    /// service which will never report any tracing session.
324    #[prost(bool, optional, tag="7")]
325    pub supports_tracing_sessions: ::core::option::Option<bool>,
326    /// Total number of tracing sessions.
327    #[prost(int32, optional, tag="3")]
328    pub num_sessions: ::core::option::Option<i32>,
329    /// Number of tracing sessions in the started state. Always <= num_sessions.
330    #[prost(int32, optional, tag="4")]
331    pub num_sessions_started: ::core::option::Option<i32>,
332    /// The version of traced (the same returned by `traced --version`).
333    /// This is a human readable string with and its format varies depending on
334    /// the build system and the repo (standalone vs AOSP).
335    /// This is intended for human debugging only.
336    #[prost(string, optional, tag="5")]
337    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
338}
339/// Nested message and enum types in `TracingServiceState`.
340pub mod tracing_service_state {
341    /// Describes a producer process.
342    #[derive(Clone, PartialEq, ::prost::Message)]
343    pub struct Producer {
344        /// Unique ID of the producer (monotonic counter).
345        #[prost(int32, optional, tag="1")]
346        pub id: ::core::option::Option<i32>,
347        /// Typically matches the process name.
348        #[prost(string, optional, tag="2")]
349        pub name: ::core::option::Option<::prost::alloc::string::String>,
350        /// Unix pid of the remote process. Supported only on Linux-based systems.
351        /// Introduced in v24 / Android T.
352        #[prost(int32, optional, tag="5")]
353        pub pid: ::core::option::Option<i32>,
354        /// Unix uid of the remote process.
355        #[prost(int32, optional, tag="3")]
356        pub uid: ::core::option::Option<i32>,
357        /// The version of the client library used by the producer.
358        /// This is a human readable string with and its format varies depending on
359        /// the build system and the repo (standalone vs AOSP).
360        /// This is intended for human debugging only.
361        #[prost(string, optional, tag="4")]
362        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
363        /// Returns true if the process appears to be frozen (Android only).
364        /// Introduced in Perfetto V49 / Android 24Q4.
365        #[prost(bool, optional, tag="6")]
366        pub frozen: ::core::option::Option<bool>,
367    }
368    /// Describes a data source registered by a producer. Data sources are listed
369    /// regardless of the fact that they are being used or not.
370    #[derive(Clone, PartialEq, ::prost::Message)]
371    pub struct DataSource {
372        /// Descriptor passed by the data source when calling RegisterDataSource().
373        #[prost(message, optional, tag="1")]
374        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
375        /// ID of the producer, as per Producer.id.
376        #[prost(int32, optional, tag="2")]
377        pub producer_id: ::core::option::Option<i32>,
378    }
379    #[derive(Clone, PartialEq, ::prost::Message)]
380    pub struct TracingSession {
381        /// The TracingSessionID.
382        #[prost(uint64, optional, tag="1")]
383        pub id: ::core::option::Option<u64>,
384        /// The Unix uid of the consumer that started the session.
385        /// This is meaningful only if the caller is root. In all other cases only
386        /// tracing sessions that match the caller UID will be displayed.
387        #[prost(int32, optional, tag="2")]
388        pub consumer_uid: ::core::option::Option<i32>,
389        /// Internal state of the tracing session.
390        /// These strings are FYI only and subjected to change.
391        #[prost(string, optional, tag="3")]
392        pub state: ::core::option::Option<::prost::alloc::string::String>,
393        /// The unique_session_name as set in the trace config (might be empty).
394        #[prost(string, optional, tag="4")]
395        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
396        /// The number and size of each buffer.
397        #[prost(uint32, repeated, packed="false", tag="5")]
398        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
399        /// Duration, as specified in the TraceConfig.duration_ms.
400        #[prost(uint32, optional, tag="6")]
401        pub duration_ms: ::core::option::Option<u32>,
402        /// Number of data sources involved in the session.
403        #[prost(uint32, optional, tag="7")]
404        pub num_data_sources: ::core::option::Option<u32>,
405        /// Time when the session was started, in the CLOCK_REALTIME domain.
406        /// Available only on Linux-based systems.
407        #[prost(int64, optional, tag="8")]
408        pub start_realtime_ns: ::core::option::Option<i64>,
409        // The fields below have been introduced in v42.
410
411        /// The bugreport_score, as set in TraceConfig.bugreport_score.
412        #[prost(int32, optional, tag="9")]
413        pub bugreport_score: ::core::option::Option<i32>,
414        /// As per TraceConfig.bugreport_filename.
415        #[prost(string, optional, tag="10")]
416        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
417        /// If true, the session is in the STARTED state. If false the session is in
418        /// any other state (see `state` field).
419        #[prost(bool, optional, tag="11")]
420        pub is_started: ::core::option::Option<bool>,
421    }
422}
423// End of protos/perfetto/common/semantic_type.proto
424
425// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
426
427/// Data source that lists game modes and game interventions of games
428/// on an Android device.
429#[derive(Clone, PartialEq, ::prost::Message)]
430pub struct AndroidGameInterventionListConfig {
431    /// If not empty, emit info about only the following list of package names
432    /// (exact match, no regex). Otherwise, emit info about all packages.
433    #[prost(string, repeated, tag="1")]
434    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
435}
436// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
437
438// Begin of protos/perfetto/config/android/android_input_event_config.proto
439
440/// Custom configuration for the "android.input.inputevent" data source.
441///
442/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
443///
444/// Next ID: 5
445#[derive(Clone, PartialEq, ::prost::Message)]
446pub struct AndroidInputEventConfig {
447    /// The tracing mode to use. If unspecified, it will default to
448    /// TRACE_MODE_USE_RULES.
449    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
450    pub mode: ::core::option::Option<i32>,
451    /// The list of rules to use to determine the trace level of events.
452    /// Each event will be traced using the TraceLevel of the first rule that it
453    /// triggers from this list. The rules are evaluated in the order in which they
454    /// are specified. If an event does not match any of the rules,
455    /// TRACE_LEVEL_NONE will be used by default.
456    #[prost(message, repeated, tag="2")]
457    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
458    // --- Control flags ---
459
460    /// Trace input events processed by the system as they are being dispatched
461    /// to application windows. All trace rules will apply.
462    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
463    ///    it will
464    ///      trace InputDispatcher's inbound events (which does not include events
465    ///      synthesized within InputDispatcher) that match the rules.
466    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
467    ///    events
468    ///      matching the rules, including all events synthesized within
469    ///      InputDispatcher, will be traced.
470    #[prost(bool, optional, tag="3")]
471    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
472    /// Trace details about which windows the system is sending each input event
473    /// to. All trace rules will apply.
474    #[prost(bool, optional, tag="4")]
475    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
476}
477/// Nested message and enum types in `AndroidInputEventConfig`.
478pub mod android_input_event_config {
479    /// A rule that specifies the TraceLevel for an event based on matching
480    /// conditions. All matchers in the rule are optional. To trigger this rule, an
481    /// event must match all of its specified matchers (i.e. the matchers function
482    /// like a series of conditions connected by a logical 'AND' operator). A rule
483    /// with no specified matchers will match all events. Next ID: 6
484    #[derive(Clone, PartialEq, ::prost::Message)]
485    pub struct TraceRule {
486        /// The trace level to be used for events that trigger this rule.
487        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
488        #[prost(enumeration="TraceLevel", optional, tag="1")]
489        pub trace_level: ::core::option::Option<i32>,
490        // --- Optional Matchers ---
491
492        /// Package matchers
493        ///
494        /// Respectively matches if all or any of the target apps for this event are
495        /// contained in the specified list of package names.
496        ///
497        /// Intended usage:
498        ///    - Use match_all_packages to selectively allow tracing for the listed
499        ///    packages.
500        ///    - Use match_any_packages to selectively deny tracing for certain
501        ///    packages.
502        ///
503        /// WARNING: Great care must be taken when designing rules for field tracing!
504        ///           This is because each event is almost always sent to more than
505        ///           one app.
506        ///               For example, when allowing tracing for a package that has a
507        ///               spy window
508        ///           over the display (e.g. SystemUI) using match_any_packages,
509        ///           essentially all input will be recorded on that display. This is
510        ///           because the events will be sent to the spy as well as the
511        ///           foreground app, and regardless of what the foreground app is,
512        ///           the event will end up being traced.
513        ///               Alternatively, when attempting to block tracing for specific
514        ///               packages using
515        ///           match_all_packages, no events will likely be blocked. This is
516        ///           because the event will also be sent to other apps (such as, but
517        ///           not limited to, ones with spy windows), so the matcher will not
518        ///           match unless all other targets are also listed under the
519        ///           match_all_packages list.
520        #[prost(string, repeated, tag="2")]
521        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
522        #[prost(string, repeated, tag="3")]
523        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
524        /// Matches if the event is secure, which means that at least one of the
525        /// targets of this event is using the window flag FLAG_SECURE.
526        #[prost(bool, optional, tag="4")]
527        pub match_secure: ::core::option::Option<bool>,
528        /// Matches if there was an active IME connection while this event was being
529        /// processed.
530        #[prost(bool, optional, tag="5")]
531        pub match_ime_connection_active: ::core::option::Option<bool>,
532    }
533    /// Trace modes are tracing presets that are included in the system.
534    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
535    #[repr(i32)]
536    pub enum TraceMode {
537        /// Preset mode for maximal tracing.
538        /// WARNING: This will bypass all privacy measures on debuggable builds, and
539        /// will record all
540        ///           input events processed by the system, regardless of the context
541        ///           in which they were processed. It should only be used for tracing
542        ///           on a local device or for tests. It should NEVER be used for
543        ///           field tracing.
544        TraceAll = 0,
545        /// Use the tracing rules defined in this config to specify what events to
546        /// trace.
547        UseRules = 1,
548    }
549    impl TraceMode {
550        /// String value of the enum field names used in the ProtoBuf definition.
551        ///
552        /// The values are not transformed in any way and thus are considered stable
553        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
554        pub fn as_str_name(&self) -> &'static str {
555            match self {
556                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
557                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
558            }
559        }
560    }
561    /// The level of tracing that should be applied to an event.
562    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
563    #[repr(i32)]
564    pub enum TraceLevel {
565        /// Do not trace the input event.
566        None = 0,
567        /// Trace the event as a redacted event, where certain sensitive fields are
568        /// omitted from the trace, including the coordinates of pointer events and
569        /// the key/scan codes of key events.
570        Redacted = 1,
571        /// Trace the complete event.
572        Complete = 2,
573    }
574    impl TraceLevel {
575        /// String value of the enum field names used in the ProtoBuf definition.
576        ///
577        /// The values are not transformed in any way and thus are considered stable
578        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
579        pub fn as_str_name(&self) -> &'static str {
580            match self {
581                TraceLevel::None => "TRACE_LEVEL_NONE",
582                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
583                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
584            }
585        }
586    }
587}
588// End of protos/perfetto/common/android_log_constants.proto
589
590// Begin of protos/perfetto/config/android/android_log_config.proto
591
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct AndroidLogConfig {
594    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
595    pub log_ids: ::prost::alloc::vec::Vec<i32>,
596    /// If set ignores all log messages whose prio is < the given value.
597    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
598    pub min_prio: ::core::option::Option<i32>,
599    /// If non-empty ignores all log messages whose tag doesn't match one of the
600    /// specified values.
601    #[prost(string, repeated, tag="4")]
602    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
603}
604// End of protos/perfetto/config/android/android_log_config.proto
605
606// Begin of protos/perfetto/config/android/android_polled_state_config.proto
607
608/// Data source that polls for display state. This should only be used for
609/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct AndroidPolledStateConfig {
612    /// Frequency of polling. If absent the state will be recorded once, at the
613    /// start of the trace.
614    /// This is required to be > 100ms to avoid excessive CPU usage.
615    #[prost(uint32, optional, tag="1")]
616    pub poll_ms: ::core::option::Option<u32>,
617}
618// End of protos/perfetto/config/android/android_polled_state_config.proto
619
620// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
621
622/// Data source that controls the system properties used to guard initialization
623/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
624/// processes like SurfaceFlinger.
625///
626/// This data source only tells Skia to initialized the Perfetto SDK and start
627/// routing data to the Track Event system instead of ATrace. For those events
628/// to actually show up in a trace, the track_event data source must be used as
629/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
630/// processes may need to be restarted for Skia to revert to using ATrace if
631/// Track Events are no longer desired.
632///
633/// In addition to switching Skia to use Perfetto's track_event data source,
634/// this "guard" also controls Skia's "broad tracing", which removes Skia's
635/// internal tracing constraints and allows the track_event config to specify
636/// which categories should be traced. Filtering to the "skia.always" category
637/// *tag* in a track_event config can be used to re-enable the standard
638/// constraints typically used with ATrace.
639///
640/// Data source name: android.sdk_sysprop_guard
641/// Introduced in Android 14 (U) QPR1.
642/// Next id: 4
643#[derive(Clone, PartialEq, ::prost::Message)]
644pub struct AndroidSdkSyspropGuardConfig {
645    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
646    /// integration with the track_event data source in RenderEngine.
647    /// If false or omitted, the simpler ATrace fallback is used.
648    ///
649    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
650    /// restarted.
651    ///
652    /// Specifically this sets the following system properties:
653    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
654    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
655    ///
656    /// Does not affect actual track_event data *collection*, which must be
657    /// configured separately.
658    #[prost(bool, optional, tag="1")]
659    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
660    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
661    /// with the track_event data source. hwui_package_name_filter
662    /// can be used to control which apps are affected.
663    /// If false or omitted, the simpler ATrace fallback is used.
664    ///
665    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
666    /// restarted.
667    ///
668    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
669    /// If filtering is NOT set, this controls these GLOBAL system properties:
670    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
671    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
672    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
673    /// for each package listed in the filter:
674    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
675    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
676    ///
677    /// Does not affect actual track_event data *collection*, which must be
678    /// configured separately.
679    #[prost(bool, optional, tag="2")]
680    pub hwui_skia_track_events: ::core::option::Option<bool>,
681    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
682    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
683    #[prost(string, repeated, tag="3")]
684    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
685}
686// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
687
688// Begin of protos/perfetto/config/android/android_system_property_config.proto
689
690/// Data source that polls for system properties.
691#[derive(Clone, PartialEq, ::prost::Message)]
692pub struct AndroidSystemPropertyConfig {
693    /// Frequency of polling. If absent the state will be recorded once, at the
694    /// start of the trace.
695    /// This is required to be > 100ms to avoid excessive CPU usage.
696    #[prost(uint32, optional, tag="1")]
697    pub poll_ms: ::core::option::Option<u32>,
698    /// Properties to poll. All property names must start with "debug.tracing.".
699    #[prost(string, repeated, tag="2")]
700    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
701}
702// End of protos/perfetto/config/android/android_system_property_config.proto
703
704// Begin of protos/perfetto/config/android/app_wakelock_config.proto
705
706/// Configuration for the android.app_wakelocks data source.
707#[derive(Clone, PartialEq, ::prost::Message)]
708pub struct AppWakelocksConfig {
709    /// Specifies the delay (in milliseconds) after which the data source will
710    /// attempt to write events. Writing less frequently reduces the trace size by
711    /// making better use of the packed arrays and reducing the total number of
712    /// TracePackets needed (which each have dozens of bytes of overhead). The
713    /// suggested delay is 5000ms.
714    #[prost(int32, optional, tag="1")]
715    pub write_delay_ms: ::core::option::Option<i32>,
716    /// When set, wakelocks held for less than this amount of time are filtered
717    /// from the resulting trace. Note: duration is computed by matching wakelocks
718    /// with identical attributes, not by tracking the underlying objects. The
719    /// threshold should be < the trace's flush_period_ms.
720    #[prost(int32, optional, tag="2")]
721    pub filter_duration_below_ms: ::core::option::Option<i32>,
722    /// When true, the owner_pid is dropped from the resulting output, reducing the
723    /// size of the interning tables.
724    #[prost(bool, optional, tag="3")]
725    pub drop_owner_pid: ::core::option::Option<bool>,
726}
727// End of protos/perfetto/config/android/app_wakelock_config.proto
728
729// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
730
731/// Data source that records CPU per UID data.
732#[derive(Clone, PartialEq, ::prost::Message)]
733pub struct CpuPerUidConfig {
734    /// Record at this frequency.
735    #[prost(uint32, optional, tag="1")]
736    pub poll_ms: ::core::option::Option<u32>,
737}
738// End of protos/perfetto/config/android/cpu_per_uid_config.proto
739
740// Begin of protos/perfetto/config/android/inputmethod_config.proto
741
742/// Custom configuration for the "android.inputmethod" data source.
743#[derive(Clone, PartialEq, ::prost::Message)]
744pub struct InputMethodConfig {
745    /// If true, enables tracing in the clients.
746    #[prost(bool, optional, tag="1")]
747    pub client: ::core::option::Option<bool>,
748    /// If true, enables tracing in InputMethodService.
749    #[prost(bool, optional, tag="2")]
750    pub service: ::core::option::Option<bool>,
751    /// If true, enables tracing in InputMethodManagerService.
752    #[prost(bool, optional, tag="3")]
753    pub manager_service: ::core::option::Option<bool>,
754}
755// End of protos/perfetto/config/android/inputmethod_config.proto
756
757// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
758
759/// Data source that records kernel (and native) wakelock data.
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct KernelWakelocksConfig {
762    /// Record at this frequency.
763    #[prost(uint32, optional, tag="1")]
764    pub poll_ms: ::core::option::Option<u32>,
765}
766// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
767
768// Begin of protos/perfetto/config/android/network_trace_config.proto
769
770/// Network tracing data source that records details on all packets sent or
771/// received by the network.
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct NetworkPacketTraceConfig {
774    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
775    /// ring buffer. The polling interval should be such that the ring buffer is
776    /// unlikely to fill in that interval (or that filling is an acceptable risk).
777    /// The minimum polling rate is 100ms (values below this are ignored).
778    /// Introduced in Android 14 (U).
779    #[prost(uint32, optional, tag="1")]
780    pub poll_ms: ::core::option::Option<u32>,
781    /// The aggregation_threshold is the number of packets at which an event will
782    /// switch from per-packet details to aggregate details. For example, a value
783    /// of 50 means that if a particular event (grouped by the unique combinations
784    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
785    /// packets, the exact timestamp and length are recorded for each packet. If
786    /// there were 50 or more packets in an event, it would only record the total
787    /// duration, packets, and length. A value of zero or unspecified will always
788    /// / record per-packet details. A value of 1 always records aggregate details.
789    #[prost(uint32, optional, tag="2")]
790    pub aggregation_threshold: ::core::option::Option<u32>,
791    /// Specifies the maximum number of packet contexts to intern at a time. This
792    /// prevents the interning table from growing too large and controls whether
793    /// interning is enabled or disabled (a value of zero disables interning and
794    /// is the default). When a data sources interning table reaches this amount,
795    /// packet contexts will be inlined into NetworkPacketEvents.
796    #[prost(uint32, optional, tag="3")]
797    pub intern_limit: ::core::option::Option<u32>,
798    /// The following fields specify whether certain fields should be dropped from
799    /// the output. Dropping fields improves normalization results, reduces the
800    /// size of the interning table, and slightly reduces event size.
801    #[prost(bool, optional, tag="4")]
802    pub drop_local_port: ::core::option::Option<bool>,
803    #[prost(bool, optional, tag="5")]
804    pub drop_remote_port: ::core::option::Option<bool>,
805    #[prost(bool, optional, tag="6")]
806    pub drop_tcp_flags: ::core::option::Option<bool>,
807}
808// End of protos/perfetto/config/android/network_trace_config.proto
809
810// Begin of protos/perfetto/config/android/packages_list_config.proto
811
812/// Data source that lists details (such as version code) about packages on an
813/// Android device.
814#[derive(Clone, PartialEq, ::prost::Message)]
815pub struct PackagesListConfig {
816    /// If not empty, emit info about only the following list of package names
817    /// (exact match, no regex). Otherwise, emit info about all packages.
818    #[prost(string, repeated, tag="1")]
819    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
820    /// If present and non-zero, the data source will periodically poll for CPU
821    /// use by packages and only emit results for those that it sees. If absent,
822    /// the data source will emit results for all packages at startup. The package
823    /// name filter applies either way.
824    #[prost(uint32, optional, tag="2")]
825    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
826}
827// End of protos/perfetto/config/android/packages_list_config.proto
828
829// Begin of protos/perfetto/config/android/pixel_modem_config.proto
830
831/// Data source that records events from the modem.
832#[derive(Clone, PartialEq, ::prost::Message)]
833pub struct PixelModemConfig {
834    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
835    pub event_group: ::core::option::Option<i32>,
836    /// If set, record only events with these hashes.
837    #[prost(int64, repeated, packed="false", tag="2")]
838    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
839    /// If set and allow_list is not set, deny events with these hashes.
840    #[prost(int64, repeated, packed="false", tag="3")]
841    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
842}
843/// Nested message and enum types in `PixelModemConfig`.
844pub mod pixel_modem_config {
845    /// Event group to record, as defined by the modem.
846    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
847    #[repr(i32)]
848    pub enum EventGroup {
849        Unknown = 0,
850        /// Events suitable for low bandwidth tracing only.
851        LowBandwidth = 1,
852        /// Events suitable for high and low bandwidth tracing.
853        HighAndLowBandwidth = 2,
854    }
855    impl EventGroup {
856        /// String value of the enum field names used in the ProtoBuf definition.
857        ///
858        /// The values are not transformed in any way and thus are considered stable
859        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
860        pub fn as_str_name(&self) -> &'static str {
861            match self {
862                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
863                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
864                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
865            }
866        }
867    }
868}
869// Begin of protos/perfetto/config/android/protolog_config.proto
870
871/// Custom configuration for the "android.protolog" data source.
872/// ProtoLog is a logging mechanism that is intented to be more efficient than
873/// logcat. This configures what logs to capture in the tracing instance.
874#[derive(Clone, PartialEq, ::prost::Message)]
875pub struct ProtoLogConfig {
876    /// Specified the configurations for each of the logging groups. If none is
877    /// specified for a group the defaults will be used.
878    #[prost(message, repeated, tag="1")]
879    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
880    /// Specified what tracing mode to use for the tracing instance.
881    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
882    pub tracing_mode: ::core::option::Option<i32>,
883    /// If set, any message with log level higher than this level (inclusive) will
884    /// be traced. Group overrides take precedence over this value.
885    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
886    pub default_log_from_level: ::core::option::Option<i32>,
887}
888/// Nested message and enum types in `ProtoLogConfig`.
889pub mod proto_log_config {
890    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
891    #[repr(i32)]
892    pub enum TracingMode {
893        /// When using the DEFAULT tracing mode, only log groups and levels specified
894        /// in the group_overrides are traced.
895        Default = 0,
896        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
897        /// traced, unless specified in the group_overrides.
898        EnableAll = 1,
899    }
900    impl TracingMode {
901        /// String value of the enum field names used in the ProtoBuf definition.
902        ///
903        /// The values are not transformed in any way and thus are considered stable
904        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
905        pub fn as_str_name(&self) -> &'static str {
906            match self {
907                TracingMode::Default => "DEFAULT",
908                TracingMode::EnableAll => "ENABLE_ALL",
909            }
910        }
911    }
912}
913#[derive(Clone, PartialEq, ::prost::Message)]
914pub struct ProtoLogGroup {
915    /// The ProtoLog group name this configuration entry applies to.
916    #[prost(string, optional, tag="1")]
917    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
918    /// Specify the level from which to start capturing protologs.
919    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
920    /// message will be traced.
921    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
922    pub log_from: ::core::option::Option<i32>,
923    /// When set to true we will collect the stacktrace for each protolog message
924    /// in this group that we are tracing.
925    #[prost(bool, optional, tag="3")]
926    pub collect_stacktrace: ::core::option::Option<bool>,
927}
928// End of protos/perfetto/config/android/protolog_config.proto
929
930// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
931
932/// Custom configuration for the "android.surfaceflinger.layers" data source.
933#[derive(Clone, PartialEq, ::prost::Message)]
934pub struct SurfaceFlingerLayersConfig {
935    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
936    pub mode: ::core::option::Option<i32>,
937    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
938    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
939}
940/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
941pub mod surface_flinger_layers_config {
942    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
943    #[repr(i32)]
944    pub enum Mode {
945        Unspecified = 0,
946        /// Trace layers snapshots. A snapshot is taken every time a layers change
947        /// occurs.
948        Active = 1,
949        /// Generate layers snapshots from the transactions kept in the
950        /// SurfaceFlinger's internal ring buffer.
951        /// The layers snapshots generation occurs when this data source is flushed.
952        Generated = 2,
953        /// Trace a single layers snapshot.
954        Dump = 3,
955        /// Default mode (applied by SurfaceFlinger if no mode is specified).
956        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
957        /// when a bugreport is taken.
958        GeneratedBugreportOnly = 4,
959    }
960    impl Mode {
961        /// String value of the enum field names used in the ProtoBuf definition.
962        ///
963        /// The values are not transformed in any way and thus are considered stable
964        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
965        pub fn as_str_name(&self) -> &'static str {
966            match self {
967                Mode::Unspecified => "MODE_UNSPECIFIED",
968                Mode::Active => "MODE_ACTIVE",
969                Mode::Generated => "MODE_GENERATED",
970                Mode::Dump => "MODE_DUMP",
971                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
972            }
973        }
974    }
975    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
976    #[repr(i32)]
977    pub enum TraceFlag {
978        Unspecified = 0,
979        Input = 2,
980        Composition = 4,
981        Extra = 8,
982        Hwc = 16,
983        Buffers = 32,
984        VirtualDisplays = 64,
985        /// INPUT | COMPOSITION | EXTRA
986        All = 14,
987    }
988    impl TraceFlag {
989        /// String value of the enum field names used in the ProtoBuf definition.
990        ///
991        /// The values are not transformed in any way and thus are considered stable
992        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
993        pub fn as_str_name(&self) -> &'static str {
994            match self {
995                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
996                TraceFlag::Input => "TRACE_FLAG_INPUT",
997                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
998                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
999                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1000                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1001                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1002                TraceFlag::All => "TRACE_FLAG_ALL",
1003            }
1004        }
1005    }
1006}
1007// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1008
1009// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1010
1011/// Custom configuration for the "android.surfaceflinger.transactions" data
1012/// source.
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct SurfaceFlingerTransactionsConfig {
1015    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1016    pub mode: ::core::option::Option<i32>,
1017}
1018/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1019pub mod surface_flinger_transactions_config {
1020    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1021    #[repr(i32)]
1022    pub enum Mode {
1023        Unspecified = 0,
1024        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1025        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1026        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1027        /// initial state and the latest transactions.
1028        Continuous = 1,
1029        /// SurfaceFlinger writes the initial state and then each incoming
1030        /// transaction until the data source is stopped.
1031        Active = 2,
1032    }
1033    impl Mode {
1034        /// String value of the enum field names used in the ProtoBuf definition.
1035        ///
1036        /// The values are not transformed in any way and thus are considered stable
1037        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1038        pub fn as_str_name(&self) -> &'static str {
1039            match self {
1040                Mode::Unspecified => "MODE_UNSPECIFIED",
1041                Mode::Continuous => "MODE_CONTINUOUS",
1042                Mode::Active => "MODE_ACTIVE",
1043            }
1044        }
1045    }
1046}
1047// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1048
1049// Begin of protos/perfetto/config/android/user_list_config.proto
1050
1051/// Data source that lists details (such as version code) about users on an
1052/// Android device.
1053#[derive(Clone, PartialEq, ::prost::Message)]
1054pub struct AndroidUserListConfig {
1055    /// An allowlist of user type strings, used to control the granularity of
1056    /// user type information emitted in the trace. Exact, case-sensitive string
1057    /// matching is used.
1058    ///
1059    /// Any user type read from the device that is NOT present in the
1060    /// effective allowlist will have its type reported as
1061    /// "android.os.usertype.FILTERED".
1062    ///
1063    /// The effective allowlist is determined as follows:
1064    ///
1065    /// 1. If this 'user_type_filter' field is provided and non-empty:
1066    ///     This list itself is the effective allowlist.
1067    ///     Example TraceConfig:
1068    ///     --------------------
1069    ///     data_sources {
1070    ///         config {
1071    ///             name: "android.user_list"
1072    ///             target_buffer: 0
1073    ///             user_list_config {
1074    ///               # Only report these specific types, others become FILTERED.
1075    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1076    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1077    ///             }
1078    ///         }
1079    ///     }
1080    ///
1081    ///
1082    /// Note: This field does not support regular expressions.
1083    #[prost(string, repeated, tag="1")]
1084    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1085}
1086// End of protos/perfetto/config/android/user_list_config.proto
1087
1088// Begin of protos/perfetto/config/android/windowmanager_config.proto
1089
1090/// Custom configuration for the "android.windowmanager" data source.
1091#[derive(Clone, PartialEq, ::prost::Message)]
1092pub struct WindowManagerConfig {
1093    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1094    pub log_frequency: ::core::option::Option<i32>,
1095    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1096    pub log_level: ::core::option::Option<i32>,
1097}
1098/// Nested message and enum types in `WindowManagerConfig`.
1099pub mod window_manager_config {
1100    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1101    #[repr(i32)]
1102    pub enum LogFrequency {
1103        Unspecified = 0,
1104        /// Trace state snapshots when a frame is committed.
1105        Frame = 1,
1106        /// Trace state snapshots every time a transaction is committed.
1107        Transaction = 2,
1108        /// Trace single state snapshots when the data source is started.
1109        SingleDump = 3,
1110    }
1111    impl LogFrequency {
1112        /// String value of the enum field names used in the ProtoBuf definition.
1113        ///
1114        /// The values are not transformed in any way and thus are considered stable
1115        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1116        pub fn as_str_name(&self) -> &'static str {
1117            match self {
1118                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1119                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1120                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1121                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1122            }
1123        }
1124    }
1125    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1126    #[repr(i32)]
1127    pub enum LogLevel {
1128        Unspecified = 0,
1129        /// Logs all elements with maximum amount of information.
1130        Verbose = 1,
1131        /// Logs all elements but doesn't write all configuration data.
1132        Debug = 2,
1133        /// Logs only visible elements, with the minimum amount of performance
1134        /// overhead
1135        Critical = 3,
1136    }
1137    impl LogLevel {
1138        /// String value of the enum field names used in the ProtoBuf definition.
1139        ///
1140        /// The values are not transformed in any way and thus are considered stable
1141        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1142        pub fn as_str_name(&self) -> &'static str {
1143            match self {
1144                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1145                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1146                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1147                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1148            }
1149        }
1150    }
1151}
1152// End of protos/perfetto/config/android/windowmanager_config.proto
1153
1154// Begin of protos/perfetto/config/chrome/chrome_config.proto
1155
1156#[derive(Clone, PartialEq, ::prost::Message)]
1157pub struct ChromeConfig {
1158    #[prost(string, optional, tag="1")]
1159    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1160    /// When enabled, the data source should only fill in fields in the output that
1161    /// are not potentially privacy sensitive.
1162    #[prost(bool, optional, tag="2")]
1163    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1164    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1165    /// JSON format. Note that the trace data will still be returned as a series of
1166    /// TracePackets, but the embedded data will be JSON instead of serialized
1167    /// protobuf.
1168    #[prost(bool, optional, tag="3")]
1169    pub convert_to_legacy_json: ::core::option::Option<bool>,
1170    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1171    pub client_priority: ::core::option::Option<i32>,
1172    /// Applicable only when using legacy JSON format.
1173    /// If |json_agent_label_filter| is not empty, only data pertaining to
1174    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1175    #[prost(string, optional, tag="5")]
1176    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1177    ///   When enabled, event names should not contain package names.
1178    #[prost(bool, optional, tag="6")]
1179    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1180}
1181/// Nested message and enum types in `ChromeConfig`.
1182pub mod chrome_config {
1183    /// Priority of the tracing session client. A higher priority session may
1184    /// preempt a lower priority one in configurations where concurrent sessions
1185    /// aren't supported.
1186    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1187    #[repr(i32)]
1188    pub enum ClientPriority {
1189        Unknown = 0,
1190        Background = 1,
1191        UserInitiated = 2,
1192    }
1193    impl ClientPriority {
1194        /// String value of the enum field names used in the ProtoBuf definition.
1195        ///
1196        /// The values are not transformed in any way and thus are considered stable
1197        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1198        pub fn as_str_name(&self) -> &'static str {
1199            match self {
1200                ClientPriority::Unknown => "UNKNOWN",
1201                ClientPriority::Background => "BACKGROUND",
1202                ClientPriority::UserInitiated => "USER_INITIATED",
1203            }
1204        }
1205    }
1206}
1207// End of protos/perfetto/config/chrome/chrome_config.proto
1208
1209// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1210
1211#[derive(Clone, PartialEq, ::prost::Message)]
1212pub struct ChromiumHistogramSamplesConfig {
1213    /// List of histograms to record. If no histogram is specified, all histograms
1214    /// are recorded.
1215    #[prost(message, repeated, tag="1")]
1216    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1217    /// Default: false (i.e. histogram names are NOT filtered out by default)
1218    /// When true, histogram_name will be filtered out.
1219    #[prost(bool, optional, tag="2")]
1220    pub filter_histogram_names: ::core::option::Option<bool>,
1221}
1222/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1223pub mod chromium_histogram_samples_config {
1224    /// Records when a value within the specified bounds [min_value, max_value] is
1225    /// emitted into a Chrome histogram.
1226    #[derive(Clone, PartialEq, ::prost::Message)]
1227    pub struct HistogramSample {
1228        #[prost(string, optional, tag="1")]
1229        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1230        #[prost(int64, optional, tag="2")]
1231        pub min_value: ::core::option::Option<i64>,
1232        #[prost(int64, optional, tag="3")]
1233        pub max_value: ::core::option::Option<i64>,
1234    }
1235}
1236// End of protos/perfetto/config/chrome/histogram_samples.proto
1237
1238// Begin of protos/perfetto/config/chrome/system_metrics.proto
1239
1240#[derive(Clone, PartialEq, ::prost::Message)]
1241pub struct ChromiumSystemMetricsConfig {
1242    /// Samples counters every X ms.
1243    #[prost(uint32, optional, tag="1")]
1244    pub sampling_interval_ms: ::core::option::Option<u32>,
1245}
1246// End of protos/perfetto/config/chrome/system_metrics.proto
1247
1248// Begin of protos/perfetto/config/chrome/v8_config.proto
1249
1250#[derive(Clone, PartialEq, ::prost::Message)]
1251pub struct V8Config {
1252    /// Whether to log the actual content of scripts (e.g. content of the JS file
1253    /// that was compiled to generate code).
1254    /// ATTENTION: This could considerably increase the size of the resuling trace
1255    ///             file.
1256    #[prost(bool, optional, tag="1")]
1257    pub log_script_sources: ::core::option::Option<bool>,
1258    /// Whether to log the generated code for jitted functions (machine code or
1259    /// bytecode).
1260    /// ATTENTION: This could considerably increase the size of the resuling trace
1261    ///             file.
1262    #[prost(bool, optional, tag="2")]
1263    pub log_instructions: ::core::option::Option<bool>,
1264}
1265// End of protos/perfetto/config/chrome/v8_config.proto
1266
1267// Begin of protos/perfetto/config/etw/etw_config.proto
1268
1269/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1270/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1271/// ns-evntrace-event_trace_properties
1272#[derive(Clone, PartialEq, ::prost::Message)]
1273pub struct EtwConfig {
1274    /// The kernel_flags determines the flags that will be used by the etw tracing
1275    /// session. These kernel flags have been built to expose the useful events
1276    /// captured from the kernel mode only.
1277    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1278    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1279    // See the list of keywords for for individual providers.
1280    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1281
1282    /// Provides events relating to the scheduler.
1283    #[prost(string, repeated, tag="2")]
1284    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1285    /// Provides events relating to the memory manager.
1286    #[prost(string, repeated, tag="3")]
1287    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1288    /// Provides events relating to file I/O.
1289    #[prost(string, repeated, tag="4")]
1290    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1291}
1292/// Nested message and enum types in `EtwConfig`.
1293pub mod etw_config {
1294    /// The KernelFlag represent list of kernel flags that we are intrested in.
1295    /// To get a more extensive list run 'xperf -providers k'.
1296    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1297    #[repr(i32)]
1298    pub enum KernelFlag {
1299        Cswitch = 0,
1300        Dispatcher = 1,
1301    }
1302    impl KernelFlag {
1303        /// String value of the enum field names used in the ProtoBuf definition.
1304        ///
1305        /// The values are not transformed in any way and thus are considered stable
1306        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1307        pub fn as_str_name(&self) -> &'static str {
1308            match self {
1309                KernelFlag::Cswitch => "CSWITCH",
1310                KernelFlag::Dispatcher => "DISPATCHER",
1311            }
1312        }
1313    }
1314}
1315// End of protos/perfetto/config/etw/etw_config.proto
1316
1317// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1318
1319#[derive(Clone, PartialEq, ::prost::Message)]
1320pub struct FrozenFtraceConfig {
1321    /// The instance name which stores the previous boot ftrace data. Required.
1322    #[prost(string, optional, tag="1")]
1323    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1324}
1325// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1326
1327// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1328
1329/// Next id: 38
1330#[derive(Clone, PartialEq, ::prost::Message)]
1331pub struct FtraceConfig {
1332    /// Ftrace events to record, example: "sched/sched_switch".
1333    #[prost(string, repeated, tag="1")]
1334    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1335    /// Android-specific event categories:
1336    #[prost(string, repeated, tag="2")]
1337    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1338    #[prost(string, repeated, tag="3")]
1339    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1340    /// Some processes can emit data through atrace or through the perfetto SDK via
1341    /// the "track_event" data source. For these categories, the SDK will be
1342    /// preferred, if possible, for this config.
1343    #[prost(string, repeated, tag="28")]
1344    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1345    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1346    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1347    /// events for convenience (and the vendor-specific events on top).
1348    /// Introduced in: perfetto v52.
1349    #[prost(bool, optional, tag="34")]
1350    pub atrace_userspace_only: ::core::option::Option<bool>,
1351    /// Size of each per-cpu kernel ftrace ring buffer.
1352    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1353    /// buffers cannot be resized without pausing recording in the kernel.
1354    #[prost(uint32, optional, tag="10")]
1355    pub buffer_size_kb: ::core::option::Option<u32>,
1356    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1357    /// implementation to choose a bigger buffer size.
1358    ///
1359    /// Most configs for perfetto v43+ should simply leave both fields unset.
1360    ///
1361    /// If you need a config compatible with a range of perfetto builds and you
1362    /// used to set a non-default buffer_size_kb, consider setting both fields.
1363    /// Example:
1364    ///    buffer_size_kb: 4096
1365    ///    buffer_size_lower_bound: true
1366    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1367    /// On v43+, buffers will be at least 4 MB.
1368    /// In both cases, neither is guaranteed if there are other concurrent
1369    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1370    /// the recording in the kernel.
1371    /// Introduced in: perfetto v43.
1372    #[prost(bool, optional, tag="27")]
1373    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1374    /// If set, specifies how often the tracing daemon reads from the kernel ring
1375    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1376    /// Leave unset unless you're fine-tuning a local config.
1377    #[prost(uint32, optional, tag="11")]
1378    pub drain_period_ms: ::core::option::Option<u32>,
1379    /// If set, the tracing daemon will read kernel ring buffers as soon as
1380    /// they're filled past this percentage of occupancy. In other words, a value
1381    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1382    /// half-full. Not guaranteed if there are multiple concurrent tracing
1383    /// sessions.
1384    /// Currently does nothing on Linux kernels below v6.9.
1385    /// Introduced in: perfetto v48.
1386    #[prost(uint32, optional, tag="29")]
1387    pub drain_buffer_percent: ::core::option::Option<u32>,
1388    #[prost(message, optional, tag="12")]
1389    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1390    #[prost(message, optional, tag="22")]
1391    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1392    /// Enables symbol name resolution against /proc/kallsyms.
1393    /// It requires that either traced_probes is running as root or that
1394    /// kptr_restrict has been manually lowered.
1395    /// It does not disclose KASLR, symbol addresses are mangled.
1396    #[prost(bool, optional, tag="13")]
1397    pub symbolize_ksyms: ::core::option::Option<bool>,
1398    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1399    pub ksyms_mem_policy: ::core::option::Option<i32>,
1400    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1401    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1402    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1403    /// The historical context for this is the following:
1404    /// - Up to Android S (12), the rss_stat was internally throttled in its
1405    ///    kernel implementation.
1406    /// - A change introduced in the kernels after S has introduced a new
1407    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1408    ///    (hence very spammy).
1409    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1410    ///    need to deal with both cases.
1411    /// For more context: go/rss-stat-throttled.
1412    #[prost(bool, optional, tag="15")]
1413    pub throttle_rss_stat: ::core::option::Option<bool>,
1414    /// If true, use self-describing proto messages when writing events not known
1415    /// at compile time (aka generic events). Each event bundle will have a set of
1416    /// serialised proto descriptors for events within that bundle.
1417    ///
1418    /// Default if unset:
1419    /// * v53+: true
1420    /// * before v53: false
1421    ///
1422    /// Added in: perfetto v50.
1423    #[prost(bool, optional, tag="32")]
1424    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1425    /// If true, avoid enabling events that aren't statically known by
1426    /// traced_probes. Otherwise, the default is to emit such events as
1427    /// GenericFtraceEvent protos.
1428    /// Prefer to keep this flag at its default. This was added for Android
1429    /// tracing, where atrace categories and/or atrace HAL requested events can
1430    /// expand to events that aren't of interest to the tracing user.
1431    /// Introduced in: Android T.
1432    #[prost(bool, optional, tag="16")]
1433    pub disable_generic_events: ::core::option::Option<bool>,
1434    /// The subset of syscalls to record. To record all syscalls, leave this unset
1435    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1436    /// * before perfetto v43, requires the config to also enable
1437    ///    raw_syscalls/sys_{enter,exit}.
1438    /// * perfetto v43+ does the right thing if you set only this field.
1439    /// Example: ["sys_read", "sys_open"].
1440    /// Introduced in: Android U.
1441    #[prost(string, repeated, tag="18")]
1442    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1443    /// If true, enable the "function_graph" kernel tracer that emits events
1444    /// whenever a kernel function is entered and exited
1445    /// (funcgraph_entry/funcgraph_exit).
1446    /// Notes on use:
1447    /// * Requires |symbolize_ksyms| for function name resolution.
1448    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1449    ///    set of functions, otherwise the event bandwidth will be too high for
1450    ///    practical use.
1451    /// * The data source might be rejected if there is already a concurrent
1452    ///    ftrace data source that does not use function graph itself, as we do not
1453    ///    support switching kernel tracers mid-trace.
1454    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1455    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1456    ///    "function_graph".
1457    /// Android:
1458    /// * Available only on debuggable builds.
1459    /// * Introduced in: Android U.
1460    #[prost(bool, optional, tag="19")]
1461    pub enable_function_graph: ::core::option::Option<bool>,
1462    /// Constrains the set of functions traced when |enable_function_graph| is
1463    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1464    /// in which case all matching functions will be traced. See kernel
1465    /// documentation on ftrace "set_ftrace_filter" file for more details.
1466    /// Android:
1467    /// * Available only on debuggable builds.
1468    /// * Introduced in: Android U.
1469    #[prost(string, repeated, tag="20")]
1470    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1471    /// If |enable_function_graph| is true, trace this set of functions *and* all
1472    /// of its callees. Supports globs. Can be set together with
1473    /// |function_filters|, in which case only callees matching the filter will be
1474    /// traced. If setting both, you most likely want all roots to also be
1475    /// included in |function_filters|.
1476    /// Android:
1477    /// * Available only on debuggable builds.
1478    /// * Introduced in: Android U.
1479    #[prost(string, repeated, tag="21")]
1480    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1481    /// If |enable_function_graph| is true, only trace the specified
1482    /// number of calls down the stack. Sets the max_graph_depth value
1483    /// in sys/kernel/tracing/
1484    ///
1485    /// Only respected for the first tracing session that enables
1486    /// function_graph tracing.
1487    ///
1488    /// Introduced in: perfetto v51.
1489    /// Supported on: Android 25Q3+.
1490    #[prost(uint32, optional, tag="33")]
1491    pub function_graph_max_depth: ::core::option::Option<u32>,
1492    /// Ftrace events to record, specific for kprobes and kretprobes
1493    #[prost(message, repeated, tag="30")]
1494    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1495    /// If true, does not clear kernel ftrace buffers when starting the trace.
1496    /// This makes sense only if this is the first ftrace data source instance
1497    /// created after the daemon has been started. Can be useful for gathering boot
1498    /// traces, if ftrace has been separately configured (e.g. via kernel
1499    /// commandline).
1500    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1501    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1502    /// anything besides ftrace. Otherwise timestamps might be skewed.
1503    #[prost(bool, optional, tag="23")]
1504    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1505    /// If true, overrides the default timestamp clock and uses a raw hardware
1506    /// based monotonic clock for getting timestamps.
1507    /// * Introduced in: Android U.
1508    #[prost(bool, optional, tag="24")]
1509    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1510    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1511    /// for event recording. Normally, this means
1512    /// `/sys/kernel/tracing/instances/$instance_name`.
1513    ///
1514    /// Names "hyp" and "hypervisor" are reserved.
1515    ///
1516    /// The instance must already exist, the tracing daemon *will not* create it
1517    /// for you as it typically doesn't have such permissions.
1518    /// Only a subset of features is guaranteed to work with non-default instances,
1519    /// at the time of writing:
1520    ///   * ftrace_events
1521    ///   * buffer_size_kb
1522    #[prost(string, optional, tag="25")]
1523    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1524    /// For perfetto developer use. If true and on a debuggable android build,
1525    /// serialise raw tracing pages that the implementation cannot parse.
1526    #[prost(bool, optional, tag="31")]
1527    pub debug_ftrace_abi: ::core::option::Option<bool>,
1528    // =================================================
1529    // Exclusive single-tenant features: HERE BE DRAGONS
1530    // =================================================
1531    // The features below are considered "advanced" and require an exclusive
1532    // tracing session (as of Android 25Q3+ and Perfetto v52).
1533    //
1534    // These features directly manipulate the kernel's global ftrace state and
1535    // are incompatible with concurrent ftrace sessions. They are only enabled
1536    // if included in the *first* ftrace data source configured. Subsequent
1537    // ftrace data sources (even those not using advanced features) will be
1538    // rejected while a session with these features is active.
1539    //
1540    // To run the session in exclusive mode, see:
1541    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1542
1543    /// Filter ftrace events by Thread ID (TID).
1544    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1545    ///
1546    /// Note: this is an exclusive feature, see:
1547    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1548    ///
1549    /// Introduced in: perfetto v52.
1550    /// Supported on: Android 25Q3+.
1551    #[prost(uint32, repeated, packed="false", tag="35")]
1552    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1553    #[prost(message, repeated, tag="36")]
1554    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1555    /// This mask restricts tracing to a specific set of CPUs using a
1556    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1557    /// 32-bit chunk of the CPU mask.
1558    ///
1559    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1560    ///    - Rightmost chunk: CPUs 0-31
1561    ///    - 2nd chunk from right: CPUs 32-63
1562    ///    - ...and so on.
1563    ///
1564    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1565    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1566    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1567    /// chunk0 to 0-31.
1568    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1569    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1570    ///
1571    /// Note: This is an exclusive feature, see:
1572    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1573    ///
1574    /// Introduced in: perfetto v52.
1575    /// Supported on: Android 25Q3+.
1576    #[prost(string, optional, tag="37")]
1577    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1578    /// No-op in perfetto v28+. Name preserved because of existing references in
1579    /// textproto configs.
1580    #[deprecated]
1581    #[prost(bool, optional, tag="14")]
1582    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1583}
1584/// Nested message and enum types in `FtraceConfig`.
1585pub mod ftrace_config {
1586    /// Configuration for compact encoding of scheduler events. When enabled (and
1587    /// recording the relevant ftrace events), specific high-volume events are
1588    /// encoded in a denser format than normal.
1589    #[derive(Clone, PartialEq, ::prost::Message)]
1590    pub struct CompactSchedConfig {
1591        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1592        /// record those events in the compact format.
1593        ///
1594        /// If the field is unset, the default is:
1595        /// * perfetto v42.0+: enabled
1596        /// * before: disabled
1597        #[prost(bool, optional, tag="1")]
1598        pub enabled: ::core::option::Option<bool>,
1599    }
1600    /// Optional filter for "ftrace/print" events.
1601    ///
1602    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1603    /// are processed in order), its `allow` field will be used as the outcome: if
1604    /// `allow` is true, the event will be included in the trace, otherwise it will
1605    /// be discarded. If an event does not match any rule, it will be allowed by
1606    /// default (a rule with an empty prefix and allow=false, disallows everything
1607    /// by default).
1608    #[derive(Clone, PartialEq, ::prost::Message)]
1609    pub struct PrintFilter {
1610        #[prost(message, repeated, tag="1")]
1611        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1612    }
1613    /// Nested message and enum types in `PrintFilter`.
1614    pub mod print_filter {
1615        #[derive(Clone, PartialEq, ::prost::Message)]
1616        pub struct Rule {
1617            #[prost(bool, optional, tag="2")]
1618            pub allow: ::core::option::Option<bool>,
1619            #[prost(oneof="rule::Match", tags="1, 3")]
1620            pub r#match: ::core::option::Option<rule::Match>,
1621        }
1622        /// Nested message and enum types in `Rule`.
1623        pub mod rule {
1624            /// Matches an atrace message of the form:
1625            /// <type>|pid|<prefix>...
1626            #[derive(Clone, PartialEq, ::prost::Message)]
1627            pub struct AtraceMessage {
1628                #[prost(string, optional, tag="1")]
1629                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1630                #[prost(string, optional, tag="2")]
1631                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1632            }
1633            #[derive(Clone, PartialEq, ::prost::Oneof)]
1634            pub enum Match {
1635                /// This rule matches if `prefix` matches exactly with the beginning of
1636                /// the "ftrace/print" "buf" field.
1637                #[prost(string, tag="1")]
1638                Prefix(::prost::alloc::string::String),
1639                /// This rule matches if the "buf" field contains an atrace-style print
1640                /// message as specified in `atrace_msg`.
1641                #[prost(message, tag="3")]
1642                AtraceMsg(AtraceMessage),
1643            }
1644        }
1645    }
1646    #[derive(Clone, PartialEq, ::prost::Message)]
1647    pub struct KprobeEvent {
1648        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1649        #[prost(string, optional, tag="1")]
1650        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1651        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1652        pub r#type: ::core::option::Option<i32>,
1653    }
1654    /// Nested message and enum types in `KprobeEvent`.
1655    pub mod kprobe_event {
1656        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1657        #[repr(i32)]
1658        pub enum KprobeType {
1659            Unknown = 0,
1660            Kprobe = 1,
1661            Kretprobe = 2,
1662            Both = 3,
1663        }
1664        impl KprobeType {
1665            /// String value of the enum field names used in the ProtoBuf definition.
1666            ///
1667            /// The values are not transformed in any way and thus are considered stable
1668            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1669            pub fn as_str_name(&self) -> &'static str {
1670                match self {
1671                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1672                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1673                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1674                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1675                }
1676            }
1677        }
1678    }
1679    /// Tracefs options to set directly in the tracefs instance. This is a very
1680    /// niche feature since almost all of the options deal with formatting textual
1681    /// output (the /trace file), which perfetto doesn't use.
1682    ///
1683    /// The options with a known use-case:
1684    /// * event-fork: when using `tids_to_trace` above, the kernel will
1685    ///    automatically add newly spawned descendant threads to the set of TIDs.
1686    ///
1687    /// Full list of options is available at
1688    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1689    ///
1690    /// Note: this is an exclusive feature, see:
1691    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1692    ///
1693    /// Introduced in: perfetto v52.
1694    /// Supported on: Android 25Q3+.
1695    #[derive(Clone, PartialEq, ::prost::Message)]
1696    pub struct TracefsOption {
1697        /// The name of the tracefs option as found in tracefs/trace_options (without
1698        /// the "no" prefix).
1699        #[prost(string, optional, tag="1")]
1700        pub name: ::core::option::Option<::prost::alloc::string::String>,
1701        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1702        pub state: ::core::option::Option<i32>,
1703    }
1704    /// Nested message and enum types in `TracefsOption`.
1705    pub mod tracefs_option {
1706        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1707        #[repr(i32)]
1708        pub enum State {
1709            Unknown = 0,
1710            Enabled = 1,
1711            Disabled = 2,
1712        }
1713        impl State {
1714            /// String value of the enum field names used in the ProtoBuf definition.
1715            ///
1716            /// The values are not transformed in any way and thus are considered stable
1717            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1718            pub fn as_str_name(&self) -> &'static str {
1719                match self {
1720                    State::Unknown => "STATE_UNKNOWN",
1721                    State::Enabled => "STATE_ENABLED",
1722                    State::Disabled => "STATE_DISABLED",
1723                }
1724            }
1725        }
1726    }
1727    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1728    /// should keep the symbol map in memory (and reuse it for future tracing
1729    /// sessions) or clear it (saving memory) and re-create it on each tracing
1730    /// session (wasting cpu and wall time).
1731    /// The tradeoff is roughly:
1732    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1733    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1734    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1735    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1736    #[repr(i32)]
1737    pub enum KsymsMemPolicy {
1738        KsymsUnspecified = 0,
1739        KsymsCleanupOnStop = 1,
1740        KsymsRetain = 2,
1741    }
1742    impl KsymsMemPolicy {
1743        /// String value of the enum field names used in the ProtoBuf definition.
1744        ///
1745        /// The values are not transformed in any way and thus are considered stable
1746        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1747        pub fn as_str_name(&self) -> &'static str {
1748            match self {
1749                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1750                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1751                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1752            }
1753        }
1754    }
1755}
1756// End of protos/perfetto/config/ftrace/ftrace_config.proto
1757
1758// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1759
1760#[derive(Clone, PartialEq, ::prost::Message)]
1761pub struct GpuCounterConfig {
1762    /// Desired sampling interval for counters.
1763    #[prost(uint64, optional, tag="1")]
1764    pub counter_period_ns: ::core::option::Option<u64>,
1765    /// List of counters to be sampled. Counter IDs correspond to the ones
1766    /// described in GpuCounterSpec in the data source descriptor.
1767    #[prost(uint32, repeated, packed="false", tag="2")]
1768    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1769    /// Sample counters by instrumenting command buffers.
1770    #[prost(bool, optional, tag="3")]
1771    pub instrumented_sampling: ::core::option::Option<bool>,
1772    /// Fix gpu clock rate during trace session.
1773    #[prost(bool, optional, tag="4")]
1774    pub fix_gpu_clock: ::core::option::Option<bool>,
1775}
1776// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1777
1778// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1779
1780#[derive(Clone, PartialEq, ::prost::Message)]
1781pub struct GpuRenderStagesConfig {
1782    /// Enable to separate the color and depth/stencil load and store stages
1783    /// into a separate stages. If disabled, the depth/stencil load and store
1784    /// stages will be combined.  Disabled by default. This option has no effect if
1785    /// Low Overhead mode is enabled.
1786    #[prost(bool, optional, tag="1")]
1787    pub full_loadstore: ::core::option::Option<bool>,
1788    /// Use the low overhead mode for traces. In this mode render stages are
1789    /// combined into a single workload stage. This provides less granular data but
1790    /// induces minimal GPU overhead. Disabled by default.
1791    #[prost(bool, optional, tag="2")]
1792    pub low_overhead: ::core::option::Option<bool>,
1793    /// Trace metrics to capture for each render stage
1794    #[prost(string, repeated, tag="3")]
1795    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1796}
1797// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1798
1799// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1800
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct VulkanMemoryConfig {
1803    /// Tracking driver memory usage events
1804    #[prost(bool, optional, tag="1")]
1805    pub track_driver_memory_usage: ::core::option::Option<bool>,
1806    /// Tracking device memory usage events
1807    #[prost(bool, optional, tag="2")]
1808    pub track_device_memory_usage: ::core::option::Option<bool>,
1809}
1810// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1811
1812// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1813
1814/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
1815/// systems.
1816#[derive(Clone, PartialEq, ::prost::Message)]
1817pub struct InodeFileConfig {
1818    /// How long to pause between batches.
1819    #[prost(uint32, optional, tag="1")]
1820    pub scan_interval_ms: ::core::option::Option<u32>,
1821    /// How long to wait before the first scan in order to accumulate inodes.
1822    #[prost(uint32, optional, tag="2")]
1823    pub scan_delay_ms: ::core::option::Option<u32>,
1824    /// How many inodes to scan in one batch.
1825    #[prost(uint32, optional, tag="3")]
1826    pub scan_batch_size: ::core::option::Option<u32>,
1827    /// Do not scan for inodes not found in the static map.
1828    #[prost(bool, optional, tag="4")]
1829    pub do_not_scan: ::core::option::Option<bool>,
1830    /// If non-empty, only scan inodes corresponding to block devices named in
1831    /// this list.
1832    #[prost(string, repeated, tag="5")]
1833    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1834    /// When encountering an inode belonging to a block device corresponding
1835    /// to one of the mount points in this map, scan its scan_roots instead.
1836    #[prost(message, repeated, tag="6")]
1837    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1838}
1839/// Nested message and enum types in `InodeFileConfig`.
1840pub mod inode_file_config {
1841    #[derive(Clone, PartialEq, ::prost::Message)]
1842    pub struct MountPointMappingEntry {
1843        #[prost(string, optional, tag="1")]
1844        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1845        #[prost(string, repeated, tag="2")]
1846        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1847    }
1848}
1849// End of protos/perfetto/config/inode_file/inode_file_config.proto
1850
1851// Begin of protos/perfetto/config/interceptors/console_config.proto
1852
1853#[derive(Clone, PartialEq, ::prost::Message)]
1854pub struct ConsoleConfig {
1855    #[prost(enumeration="console_config::Output", optional, tag="1")]
1856    pub output: ::core::option::Option<i32>,
1857    #[prost(bool, optional, tag="2")]
1858    pub enable_colors: ::core::option::Option<bool>,
1859}
1860/// Nested message and enum types in `ConsoleConfig`.
1861pub mod console_config {
1862    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1863    #[repr(i32)]
1864    pub enum Output {
1865        Unspecified = 0,
1866        Stdout = 1,
1867        Stderr = 2,
1868    }
1869    impl Output {
1870        /// String value of the enum field names used in the ProtoBuf definition.
1871        ///
1872        /// The values are not transformed in any way and thus are considered stable
1873        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1874        pub fn as_str_name(&self) -> &'static str {
1875            match self {
1876                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1877                Output::Stdout => "OUTPUT_STDOUT",
1878                Output::Stderr => "OUTPUT_STDERR",
1879            }
1880        }
1881    }
1882}
1883// End of protos/perfetto/config/interceptors/console_config.proto
1884
1885// Begin of protos/perfetto/config/interceptor_config.proto
1886
1887/// Configuration for trace packet interception. Used for diverting trace data to
1888/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1889/// Perfetto SDK.
1890#[derive(Clone, PartialEq, ::prost::Message)]
1891pub struct InterceptorConfig {
1892    /// Matches the name given to RegisterInterceptor().
1893    #[prost(string, optional, tag="1")]
1894    pub name: ::core::option::Option<::prost::alloc::string::String>,
1895    #[prost(message, optional, tag="100")]
1896    pub console_config: ::core::option::Option<ConsoleConfig>,
1897}
1898// End of protos/perfetto/config/interceptor_config.proto
1899
1900// Begin of protos/perfetto/config/power/android_power_config.proto
1901
1902#[derive(Clone, PartialEq, ::prost::Message)]
1903pub struct AndroidPowerConfig {
1904    #[prost(uint32, optional, tag="1")]
1905    pub battery_poll_ms: ::core::option::Option<u32>,
1906    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1907    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1908    /// Where available enables per-power-rail measurements.
1909    #[prost(bool, optional, tag="3")]
1910    pub collect_power_rails: ::core::option::Option<bool>,
1911    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1912    /// Available from Android S.
1913    #[prost(bool, optional, tag="4")]
1914    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1915    /// Provides a breakdown of time in state for various subsystems.
1916    /// Available from Android U.
1917    #[prost(bool, optional, tag="5")]
1918    pub collect_entity_state_residency: ::core::option::Option<bool>,
1919}
1920/// Nested message and enum types in `AndroidPowerConfig`.
1921pub mod android_power_config {
1922    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1923    #[repr(i32)]
1924    pub enum BatteryCounters {
1925        BatteryCounterUnspecified = 0,
1926        /// Coulomb counter.
1927        BatteryCounterCharge = 1,
1928        /// Charge (%).
1929        BatteryCounterCapacityPercent = 2,
1930        /// Instantaneous current.
1931        BatteryCounterCurrent = 3,
1932        /// Avg current.
1933        BatteryCounterCurrentAvg = 4,
1934        /// Instantaneous voltage.
1935        BatteryCounterVoltage = 5,
1936    }
1937    impl BatteryCounters {
1938        /// String value of the enum field names used in the ProtoBuf definition.
1939        ///
1940        /// The values are not transformed in any way and thus are considered stable
1941        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1942        pub fn as_str_name(&self) -> &'static str {
1943            match self {
1944                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1945                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1946                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1947                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1948                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1949                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1950            }
1951        }
1952    }
1953}
1954// End of protos/perfetto/config/power/android_power_config.proto
1955
1956// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
1957
1958/// Configuration that allows to boost the priority of the 'traced' or
1959/// 'traced_probs' processes, by changing the scheduler configuration.
1960/// Only supported on Linux and Android the boosted process must have
1961/// 'CAP_SYS_NICE' capability.
1962#[derive(Clone, PartialEq, ::prost::Message)]
1963pub struct PriorityBoostConfig {
1964    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
1965    pub policy: ::core::option::Option<i32>,
1966    #[prost(uint32, optional, tag="2")]
1967    pub priority: ::core::option::Option<u32>,
1968}
1969/// Nested message and enum types in `PriorityBoostConfig`.
1970pub mod priority_boost_config {
1971    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1972    #[repr(i32)]
1973    pub enum BoostPolicy {
1974        PolicyUnspecified = 0,
1975        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
1976        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
1977        /// than default 0, 20 is the highest priority.
1978        /// Note: this is the opposite semantic of the cmdline nice, and is done for
1979        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
1980        PolicySchedOther = 1,
1981        /// The Real-time policy, Priority range: [1; 99]
1982        PolicySchedFifo = 2,
1983    }
1984    impl BoostPolicy {
1985        /// String value of the enum field names used in the ProtoBuf definition.
1986        ///
1987        /// The values are not transformed in any way and thus are considered stable
1988        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1989        pub fn as_str_name(&self) -> &'static str {
1990            match self {
1991                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
1992                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
1993                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
1994            }
1995        }
1996    }
1997}
1998// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
1999
2000/// Config for polling process-related information from /proc/pid/status and
2001/// related files on Linux.
2002///
2003/// Data source name: "linux.process_stats".
2004#[derive(Clone, PartialEq, ::prost::Message)]
2005pub struct ProcessStatsConfig {
2006    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2007    pub quirks: ::prost::alloc::vec::Vec<i32>,
2008    /// If enabled all processes will be scanned and dumped when the trace starts.
2009    #[prost(bool, optional, tag="2")]
2010    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2011    /// If enabled thread names are also recoded (this is redundant if sched_switch
2012    /// is enabled).
2013    #[prost(bool, optional, tag="3")]
2014    pub record_thread_names: ::core::option::Option<bool>,
2015    /// If > 0 samples counters (see process_stats.proto) from
2016    /// /proc/pid/status and oom_score_adj every X ms.
2017    /// This is required to be > 100ms to avoid excessive CPU usage.
2018    #[prost(uint32, optional, tag="4")]
2019    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2020    // id 5 never used
2021
2022    /// Explicit caching period during which the polling won't re-emit identical
2023    /// counter values. This is required to be either = 0 or a multiple of
2024    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2025    /// rounded down to the nearest multiple.
2026    #[prost(uint32, optional, tag="6")]
2027    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2028    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2029    /// /proc/pid/smaps_rollup.
2030    ///
2031    /// Android: does NOT work with the system daemons by default, as it requires
2032    /// running the recording process (traced_probes or tracebox) as root. It is
2033    /// possible to avoid the root requirement, but the exact steps depend on the
2034    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2035    /// check, and might be further covered by the procfs "hidepid" mount option.
2036    #[prost(bool, optional, tag="10")]
2037    pub scan_smaps_rollup: ::core::option::Option<bool>,
2038    /// If true: process descriptions will include process age (starttime in
2039    /// /proc/pid/stat).
2040    /// Introduced in: perfetto v44.
2041    #[prost(bool, optional, tag="11")]
2042    pub record_process_age: ::core::option::Option<bool>,
2043    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2044    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2045    /// Introduced in: perfetto v44.
2046    #[prost(bool, optional, tag="12")]
2047    pub record_process_runtime: ::core::option::Option<bool>,
2048    /// If true obtain per-process dmabuf resident set size from
2049    /// /proc/pid/dmabuf_rss.
2050    /// This feature is not in upstream linux, and is available only on some
2051    /// Android kernels.
2052    #[prost(bool, optional, tag="13")]
2053    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2054    /// WARNING: unmaintained and deprecated. If true this will resolve file
2055    /// descriptors for each process so these can be mapped to their actual device
2056    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2057    /// or new fds opened after initially scanning a process will not be
2058    /// recognized.
2059    #[prost(bool, optional, tag="9")]
2060    pub resolve_process_fds: ::core::option::Option<bool>,
2061}
2062/// Nested message and enum types in `ProcessStatsConfig`.
2063pub mod process_stats_config {
2064    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2065    #[repr(i32)]
2066    pub enum Quirks {
2067        Unspecified = 0,
2068        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2069        /// startup is now disabled by default and can be re-enabled using the
2070        /// |scan_all_processes_on_start| arg.
2071        DisableInitialDump = 1,
2072        /// If set, disables the special interaction with "linux.ftrace" data source,
2073        /// where the process stats rescrapes any thread id seen in the ftrace
2074        /// stream.
2075        DisableOnDemand = 2,
2076    }
2077    impl Quirks {
2078        /// String value of the enum field names used in the ProtoBuf definition.
2079        ///
2080        /// The values are not transformed in any way and thus are considered stable
2081        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2082        pub fn as_str_name(&self) -> &'static str {
2083            match self {
2084                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2085                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2086                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2087            }
2088        }
2089    }
2090}
2091// End of protos/perfetto/config/process_stats/process_stats_config.proto
2092
2093// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2094
2095/// Configuration for go/heapprofd.
2096/// Next id: 28
2097#[derive(Clone, PartialEq, ::prost::Message)]
2098pub struct HeapprofdConfig {
2099    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2100    ///
2101    /// These are:
2102    /// * All heaps if heap_sampling_intervals is empty.
2103    /// * Those profiled due to all_heaps and not named in heaps if
2104    ///    heap_sampling_intervals is not empty.
2105    /// * The implicit libc.malloc heap if heaps is empty.
2106    ///
2107    /// Set to 1 for perfect accuracy.
2108    /// Otherwise, sample every sample_interval_bytes on average.
2109    ///
2110    /// See
2111    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2112    /// for more details.
2113    ///
2114    /// BUGS
2115    /// Before Android 12, setting this to 0 would crash the target process.
2116    ///
2117    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2118    /// this field or with heap_sampling_intervals), otherwise the producer will
2119    /// not start.
2120    #[prost(uint64, optional, tag="1")]
2121    pub sampling_interval_bytes: ::core::option::Option<u64>,
2122    /// If less than the given numbers of bytes are left free in the shared
2123    /// memory buffer, increase sampling interval by a factor of two.
2124    /// Adaptive sampling is disabled when set to 0.
2125    #[prost(uint64, optional, tag="24")]
2126    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2127    /// Stop doubling the sampling_interval once the sampling interval has reached
2128    /// this value.
2129    #[prost(uint64, optional, tag="25")]
2130    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2131    /// E.g. surfaceflinger, com.android.phone
2132    /// This input is normalized in the following way: if it contains slashes,
2133    /// everything up to the last slash is discarded. If it contains "@",
2134    /// everything after the first @ is discared.
2135    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2136    /// This transformation is also applied to the processes' command lines when
2137    /// matching.
2138    #[prost(string, repeated, tag="2")]
2139    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2140    /// For watermark based triggering or local debugging.
2141    #[prost(uint64, repeated, packed="false", tag="4")]
2142    pub pid: ::prost::alloc::vec::Vec<u64>,
2143    /// Only profile target if it was installed by one of the packages given.
2144    /// Special values are:
2145    /// * @system: installed on the system partition
2146    /// * @product: installed on the product partition
2147    /// * @null: sideloaded
2148    /// Supported on Android 12+.
2149    #[prost(string, repeated, tag="26")]
2150    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2151    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2152    /// "malloc".
2153    ///
2154    /// Introduced in Android 12.
2155    #[prost(string, repeated, tag="20")]
2156    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2157    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2158    /// combination with all_heaps;
2159    ///
2160    /// Introduced in Android 12.
2161    #[prost(string, repeated, tag="27")]
2162    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2163    #[prost(bool, optional, tag="23")]
2164    pub stream_allocations: ::core::option::Option<bool>,
2165    /// If given, needs to be the same length as heaps and gives the sampling
2166    /// interval for the respective entry in heaps.
2167    ///
2168    /// Otherwise, sampling_interval_bytes is used.
2169    ///
2170    /// It is recommended to set sampling_interval_bytes to a reasonable default
2171    /// value when using this, as a value of 0 for sampling_interval_bytes will
2172    /// crash the target process before Android 12.
2173    ///
2174    /// Introduced in Android 12.
2175    ///
2176    /// All values must be non-zero or the producer will not start.
2177    #[prost(uint64, repeated, packed="false", tag="22")]
2178    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2179    /// Sample all heaps registered by target process. Introduced in Android 12.
2180    #[prost(bool, optional, tag="21")]
2181    pub all_heaps: ::core::option::Option<bool>,
2182    /// Profile all processes eligible for profiling on the system.
2183    /// See
2184    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2185    /// for which processes are eligible.
2186    ///
2187    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2188    /// will crash when trying to launch a new process as it will have an
2189    /// unexpected open socket to heapprofd.
2190    ///
2191    /// heapprofd will likely be overloaded by the amount of data for low
2192    /// sampling intervals.
2193    #[prost(bool, optional, tag="5")]
2194    pub all: ::core::option::Option<bool>,
2195    /// Do not profile processes whose anon RSS + swap < given value.
2196    /// Introduced in Android 11.
2197    #[prost(uint32, optional, tag="15")]
2198    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2199    /// Stop profile if heapprofd memory usage goes beyond the given value.
2200    /// Introduced in Android 11.
2201    #[prost(uint32, optional, tag="16")]
2202    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2203    /// Stop profile if heapprofd CPU time since start of this data-source
2204    /// goes beyond given value.
2205    /// Introduced in Android 11.
2206    #[prost(uint64, optional, tag="17")]
2207    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2208    /// Do not emit function names for mappings starting with this prefix.
2209    /// E.g. /system to not emit symbols for any system libraries.
2210    #[prost(string, repeated, tag="7")]
2211    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2212    /// Dump at a predefined interval.
2213    #[prost(message, optional, tag="6")]
2214    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2215    /// Size of the shared memory buffer between the profiled processes and
2216    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2217    /// MiB.
2218    ///
2219    /// Needs to be:
2220    /// * at least 8192,
2221    /// * a power of two,
2222    /// * a multiple of 4096.
2223    #[prost(uint64, optional, tag="8")]
2224    pub shmem_size_bytes: ::core::option::Option<u64>,
2225    /// When the shmem buffer is full, block the client instead of ending the
2226    /// trace. Use with caution as this will significantly slow down the target
2227    /// process.
2228    #[prost(bool, optional, tag="9")]
2229    pub block_client: ::core::option::Option<bool>,
2230    /// If set, stop the trace session after blocking the client for this
2231    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2232    /// Introduced in Android 11.
2233    #[prost(uint32, optional, tag="14")]
2234    pub block_client_timeout_us: ::core::option::Option<u32>,
2235    /// Do not profile processes from startup, only match already running
2236    /// processes.
2237    ///
2238    /// Can not be set at the same time as no_running.
2239    /// Introduced in Android 11.
2240    #[prost(bool, optional, tag="10")]
2241    pub no_startup: ::core::option::Option<bool>,
2242    /// Do not profile running processes. Only match processes on startup.
2243    ///
2244    /// Can not be set at the same time as no_startup.
2245    /// Introduced in Android 11.
2246    #[prost(bool, optional, tag="11")]
2247    pub no_running: ::core::option::Option<bool>,
2248    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2249    /// at the point in time when the sampled heap usage of the process was at its
2250    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2251    /// self_allocated and self_freed to not be set.
2252    /// Introduced in Android 11.
2253    #[prost(bool, optional, tag="13")]
2254    pub dump_at_max: ::core::option::Option<bool>,
2255    // FEATURE FLAGS. THERE BE DRAGONS.
2256
2257    /// Escape hatch if the session is being torn down because of a forked child
2258    /// that shares memory space, but is not correctly identified as a vforked
2259    /// child.
2260    /// Introduced in Android 11.
2261    #[prost(bool, optional, tag="18")]
2262    pub disable_fork_teardown: ::core::option::Option<bool>,
2263    /// We try to automatically detect when a target applicatation vforks but then
2264    /// does a memory allocation (or free). This auto-detection can be disabled
2265    /// with this.
2266    /// Introduced in Android 11.
2267    #[prost(bool, optional, tag="19")]
2268    pub disable_vfork_detection: ::core::option::Option<bool>,
2269}
2270/// Nested message and enum types in `HeapprofdConfig`.
2271pub mod heapprofd_config {
2272    #[derive(Clone, PartialEq, ::prost::Message)]
2273    pub struct ContinuousDumpConfig {
2274        /// ms to wait before first dump.
2275        #[prost(uint32, optional, tag="5")]
2276        pub dump_phase_ms: ::core::option::Option<u32>,
2277        /// ms to wait between following dumps.
2278        #[prost(uint32, optional, tag="6")]
2279        pub dump_interval_ms: ::core::option::Option<u32>,
2280    }
2281}
2282// End of protos/perfetto/config/profiling/heapprofd_config.proto
2283
2284// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2285
2286/// Configuration for managed app heap graph snapshots.
2287#[derive(Clone, PartialEq, ::prost::Message)]
2288pub struct JavaHprofConfig {
2289    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2290    /// comm string). The semantics of this field were changed since its original
2291    /// introduction.
2292    ///
2293    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2294    /// the profiler will attempt to match it in two possible ways:
2295    /// * if the pattern starts with a '/', then it is matched against the first
2296    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2297    ///    "/bin/echo".
2298    /// * otherwise the pattern is matched against the part of argv0
2299    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2300    ///    For example "echo" would match "/bin/echo".
2301    ///
2302    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2303    /// normalized prior to an exact string comparison. Normalization is as
2304    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2305    /// the string contains forward slashes, trim everything up to and including
2306    /// the last one.
2307    ///
2308    /// Implementation note: in either case, at most 511 characters of cmdline
2309    /// are considered.
2310    #[prost(string, repeated, tag="1")]
2311    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2312    /// For watermark based triggering or local debugging.
2313    #[prost(uint64, repeated, packed="false", tag="2")]
2314    pub pid: ::prost::alloc::vec::Vec<u64>,
2315    /// Only profile target if it was installed by one of the packages given.
2316    /// Special values are:
2317    /// * @system: installed on the system partition
2318    /// * @product: installed on the product partition
2319    /// * @null: sideloaded
2320    /// Supported on Android 12+.
2321    #[prost(string, repeated, tag="7")]
2322    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2323    /// Dump at a predefined interval.
2324    #[prost(message, optional, tag="3")]
2325    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2326    /// Do not profile processes whose anon RSS + swap < given value.
2327    #[prost(uint32, optional, tag="4")]
2328    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2329    /// Include the process' /proc/self/smaps.
2330    /// This only shows maps that:
2331    /// * start with /system
2332    /// * start with /vendor
2333    /// * start with /data/app
2334    /// * contain "extracted in memory from Y", where Y matches any of the above
2335    #[prost(bool, optional, tag="5")]
2336    pub dump_smaps: ::core::option::Option<bool>,
2337    /// Exclude objects of the following types from the profile. This can be
2338    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2339    #[prost(string, repeated, tag="6")]
2340    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2341}
2342/// Nested message and enum types in `JavaHprofConfig`.
2343pub mod java_hprof_config {
2344    /// If dump_interval_ms != 0, the following configuration is used.
2345    #[derive(Clone, PartialEq, ::prost::Message)]
2346    pub struct ContinuousDumpConfig {
2347        /// ms to wait before first continuous dump.
2348        /// A dump is always created at the beginning of the trace.
2349        #[prost(uint32, optional, tag="1")]
2350        pub dump_phase_ms: ::core::option::Option<u32>,
2351        /// ms to wait between following dumps.
2352        #[prost(uint32, optional, tag="2")]
2353        pub dump_interval_ms: ::core::option::Option<u32>,
2354        /// If true, scans all the processes to find `process_cmdline` and filter by
2355        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2356        /// S-.
2357        ///
2358        /// If false, rescans all the processes to find on every dump. Default on
2359        /// Android T+.
2360        #[prost(bool, optional, tag="3")]
2361        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2362    }
2363}
2364// End of protos/perfetto/config/profiling/java_hprof_config.proto
2365
2366// Begin of protos/perfetto/common/perf_events.proto
2367
2368#[derive(Clone, PartialEq, ::prost::Message)]
2369pub struct PerfEvents {
2370}
2371/// Nested message and enum types in `PerfEvents`.
2372pub mod perf_events {
2373    /// The primary event to count. If recording multiple events, this
2374    /// counter is the "group leader".
2375    /// Commented from the perspective of its use in |PerfEventConfig|.
2376    /// Next id: 13
2377    #[derive(Clone, PartialEq, ::prost::Message)]
2378    pub struct Timebase {
2379        /// Optional modifiers for the event. Modelled after the perftool's
2380        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2381        /// Currently supported: count scoping such as :u, :k, :uk, ...
2382        /// Modifiers can differ between the timebase and followers.
2383        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2384        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2385        /// If set, samples will be timestamped with the given clock.
2386        /// If unset, the clock is chosen by the implementation.
2387        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2388        /// used for hardware events (due to interrupt safety), for which the
2389        /// recommendation is to use one of the monotonic clocks.
2390        #[prost(enumeration="PerfClock", optional, tag="11")]
2391        pub timestamp_clock: ::core::option::Option<i32>,
2392        /// Optional arbitrary name for the event, to identify it in the parsed
2393        /// trace. Does *not* affect the profiling itself. If unset, the trace
2394        /// parser will choose a suitable name.
2395        #[prost(string, optional, tag="10")]
2396        pub name: ::core::option::Option<::prost::alloc::string::String>,
2397        /// How often to snapshot the counter, along with any follower events and
2398        /// any additional sampled data such as callstacks.
2399        ///
2400        /// This choice also controls how the readings are taken:
2401        /// * With |frequency| or |period|, samples are taken by the kernel
2402        ///    into a ring buffer. Analogous to `perf record`.
2403        /// * With |poll_period_ms|, the userspace periodically snapshots
2404        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2405        /// Prefer the sampling options unless you're recording PMUs whose
2406        /// perf drivers only support the reading mode.
2407        ///
2408        /// If unset, an implementation-defined sampling default is used.
2409        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2410        pub interval: ::core::option::Option<timebase::Interval>,
2411        /// Counting event to use as the timebase.
2412        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2413        /// which is what you usually want.
2414        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2415        pub event: ::core::option::Option<timebase::Event>,
2416    }
2417    /// Nested message and enum types in `Timebase`.
2418    pub mod timebase {
2419        /// How often to snapshot the counter, along with any follower events and
2420        /// any additional sampled data such as callstacks.
2421        ///
2422        /// This choice also controls how the readings are taken:
2423        /// * With |frequency| or |period|, samples are taken by the kernel
2424        ///    into a ring buffer. Analogous to `perf record`.
2425        /// * With |poll_period_ms|, the userspace periodically snapshots
2426        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2427        /// Prefer the sampling options unless you're recording PMUs whose
2428        /// perf drivers only support the reading mode.
2429        ///
2430        /// If unset, an implementation-defined sampling default is used.
2431        #[derive(Clone, PartialEq, ::prost::Oneof)]
2432        pub enum Interval {
2433            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2434            /// same as 1/period.
2435            /// Details: the actual sampling will still be based on a period, but the
2436            /// kernel will dynamically adjust it based on the observed event rate, to
2437            /// approximate this frequency. Works best with steady-rate events like
2438            /// timers.
2439            /// Not guaranteed to be honored as the kernel can throttle the sampling
2440            /// rate if it's too high.
2441            #[prost(uint64, tag="2")]
2442            Frequency(u64),
2443            /// Per-cpu sampling will occur every |period| counts of |event|.
2444            /// Prefer |frequency| by default, as it's easier to oversample with a
2445            /// fixed period.
2446            /// Not guaranteed to be honored as the kernel can throttle the sampling
2447            /// rate if it's too high.
2448            #[prost(uint64, tag="1")]
2449            Period(u64),
2450            /// Per-cpu values are read by the userspace every interval. If using this
2451            /// mode, only follower events are supported. Options such as
2452            /// |PerfEventConfig.CallstackSampling| are incompatible.
2453            /// The period can't be guaranteed to be exact since the readings are taken
2454            /// by userspace.
2455            #[prost(uint32, tag="6")]
2456            PollPeriodMs(u32),
2457        }
2458        /// Counting event to use as the timebase.
2459        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2460        /// which is what you usually want.
2461        #[derive(Clone, PartialEq, ::prost::Oneof)]
2462        pub enum Event {
2463            #[prost(enumeration="super::Counter", tag="4")]
2464            Counter(i32),
2465            #[prost(message, tag="3")]
2466            Tracepoint(super::Tracepoint),
2467            #[prost(message, tag="5")]
2468            RawEvent(super::RawEvent),
2469        }
2470    }
2471    #[derive(Clone, PartialEq, ::prost::Message)]
2472    pub struct Tracepoint {
2473        /// Group and name for the tracepoint, acceptable forms:
2474        /// * "sched/sched_switch"
2475        /// * "sched:sched_switch"
2476        #[prost(string, optional, tag="1")]
2477        pub name: ::core::option::Option<::prost::alloc::string::String>,
2478        /// Optional field-level filter for the tracepoint. Only events matching this
2479        /// filter will be counted (and therefore contribute to the sampling period).
2480        /// Example: "prev_pid >= 42 && next_pid == 0".
2481        /// For full syntax, see kernel documentation on "Event filtering":
2482        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2483        #[prost(string, optional, tag="2")]
2484        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2485    }
2486    /// Syscall-level description of the event, propagated to the perf_event_attr
2487    /// struct. Primarily for local use-cases, since the event availability and
2488    /// encoding is hardware-specific.
2489    #[derive(Clone, PartialEq, ::prost::Message)]
2490    pub struct RawEvent {
2491        #[prost(uint32, optional, tag="1")]
2492        pub r#type: ::core::option::Option<u32>,
2493        #[prost(uint64, optional, tag="2")]
2494        pub config: ::core::option::Option<u64>,
2495        #[prost(uint64, optional, tag="3")]
2496        pub config1: ::core::option::Option<u64>,
2497        #[prost(uint64, optional, tag="4")]
2498        pub config2: ::core::option::Option<u64>,
2499    }
2500    /// Builtin counter names from the uapi header. Commented with their perf tool
2501    /// aliases.
2502    /// TODO(rsavitski): consider generating enums for cache events (should be
2503    /// finite), and generally make this list as extensive as possible. Excluding
2504    /// things like dynamic PMUs since those don't fit into a static enum.
2505    /// Next id: 21
2506    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2507    #[repr(i32)]
2508    pub enum Counter {
2509        UnknownCounter = 0,
2510        /// cpu-clock
2511        SwCpuClock = 1,
2512        /// page-faults, faults
2513        SwPageFaults = 2,
2514        /// task-clock
2515        SwTaskClock = 3,
2516        /// context-switches, cs
2517        SwContextSwitches = 4,
2518        /// cpu-migrations, migrations
2519        SwCpuMigrations = 5,
2520        /// minor-faults
2521        SwPageFaultsMin = 6,
2522        /// major-faults
2523        SwPageFaultsMaj = 7,
2524        /// alignment-faults
2525        SwAlignmentFaults = 8,
2526        /// emulation-faults
2527        SwEmulationFaults = 9,
2528        /// dummy
2529        SwDummy = 20,
2530        /// cpu-cycles, cycles
2531        HwCpuCycles = 10,
2532        /// instructions
2533        HwInstructions = 11,
2534        /// cache-references
2535        HwCacheReferences = 12,
2536        /// cache-misses
2537        HwCacheMisses = 13,
2538        /// branch-instructions, branches
2539        HwBranchInstructions = 14,
2540        /// branch-misses
2541        HwBranchMisses = 15,
2542        /// bus-cycles
2543        HwBusCycles = 16,
2544        /// stalled-cycles-frontend, idle-cycles-frontend
2545        HwStalledCyclesFrontend = 17,
2546        /// stalled-cycles-backend, idle-cycles-backend
2547        HwStalledCyclesBackend = 18,
2548        /// ref-cycles
2549        HwRefCpuCycles = 19,
2550    }
2551    impl Counter {
2552        /// String value of the enum field names used in the ProtoBuf definition.
2553        ///
2554        /// The values are not transformed in any way and thus are considered stable
2555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2556        pub fn as_str_name(&self) -> &'static str {
2557            match self {
2558                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2559                Counter::SwCpuClock => "SW_CPU_CLOCK",
2560                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2561                Counter::SwTaskClock => "SW_TASK_CLOCK",
2562                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2563                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2564                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2565                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2566                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2567                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2568                Counter::SwDummy => "SW_DUMMY",
2569                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2570                Counter::HwInstructions => "HW_INSTRUCTIONS",
2571                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2572                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2573                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2574                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2575                Counter::HwBusCycles => "HW_BUS_CYCLES",
2576                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2577                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2578                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2579            }
2580        }
2581    }
2582    /// Subset of clocks that is supported by perf timestamping.
2583    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2584    /// would require additions to the trace clock synchronisation logic.
2585    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2586    #[repr(i32)]
2587    pub enum PerfClock {
2588        UnknownPerfClock = 0,
2589        Realtime = 1,
2590        Monotonic = 2,
2591        MonotonicRaw = 3,
2592        Boottime = 4,
2593    }
2594    impl PerfClock {
2595        /// String value of the enum field names used in the ProtoBuf definition.
2596        ///
2597        /// The values are not transformed in any way and thus are considered stable
2598        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2599        pub fn as_str_name(&self) -> &'static str {
2600            match self {
2601                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2602                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2603                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2604                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2605                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2606            }
2607        }
2608    }
2609    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2610    #[repr(i32)]
2611    pub enum EventModifier {
2612        UnknownEventModifier = 0,
2613        /// count only while in userspace
2614        CountUserspace = 1,
2615        /// count only while in kernel
2616        CountKernel = 2,
2617        /// count only while in hypervisor
2618        CountHypervisor = 3,
2619    }
2620    impl EventModifier {
2621        /// String value of the enum field names used in the ProtoBuf definition.
2622        ///
2623        /// The values are not transformed in any way and thus are considered stable
2624        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2625        pub fn as_str_name(&self) -> &'static str {
2626            match self {
2627                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
2628                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
2629                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
2630                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
2631            }
2632        }
2633    }
2634}
2635/// Additional events associated with a leader.
2636/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
2637#[derive(Clone, PartialEq, ::prost::Message)]
2638pub struct FollowerEvent {
2639    /// Modifiers can differ between the timebase and followers.
2640    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
2641    pub modifiers: ::prost::alloc::vec::Vec<i32>,
2642    /// Optional arbitrary name for the event, to identify it in the parsed
2643    /// trace. Does *not* affect the profiling itself. If unset, the trace
2644    /// parser will choose a suitable name.
2645    #[prost(string, optional, tag="4")]
2646    pub name: ::core::option::Option<::prost::alloc::string::String>,
2647    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2648    pub event: ::core::option::Option<follower_event::Event>,
2649}
2650/// Nested message and enum types in `FollowerEvent`.
2651pub mod follower_event {
2652    #[derive(Clone, PartialEq, ::prost::Oneof)]
2653    pub enum Event {
2654        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2655        Counter(i32),
2656        #[prost(message, tag="2")]
2657        Tracepoint(super::perf_events::Tracepoint),
2658        #[prost(message, tag="3")]
2659        RawEvent(super::perf_events::RawEvent),
2660    }
2661}
2662// End of protos/perfetto/common/perf_events.proto
2663
2664// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2665
2666/// Configuration for the traced_perf profiler.
2667///
2668/// Example config for basic cpu profiling:
2669///    perf_event_config {
2670///      timebase {
2671///        frequency: 80
2672///      }
2673///      callstack_sampling {
2674///        scope {
2675///          target_cmdline: "surfaceflinger"
2676///          target_cmdline: "system_server"
2677///        }
2678///        kernel_frames: true
2679///      }
2680///    }
2681///
2682/// Next id: 21
2683#[derive(Clone, PartialEq, ::prost::Message)]
2684pub struct PerfEventConfig {
2685    /// What event to sample on, and how often.
2686    /// Defined in common/perf_events.proto.
2687    #[prost(message, optional, tag="15")]
2688    pub timebase: ::core::option::Option<perf_events::Timebase>,
2689    /// Other events associated with the leader described in the timebase.
2690    #[prost(message, repeated, tag="19")]
2691    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2692    /// If set, the profiler will sample userspace processes' callstacks at the
2693    /// interval specified by the |timebase|.
2694    /// If unset, the profiler will record only the event counts.
2695    #[prost(message, optional, tag="16")]
2696    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2697    /// List of cpu indices for counting. If empty, the default is all cpus.
2698    ///
2699    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2700    /// counter-only traces. A future change will likely reorganise the options,
2701    /// but this field will continue to be supported.
2702    ///
2703    /// Available since: perfetto v50.
2704    #[prost(uint32, repeated, packed="false", tag="20")]
2705    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2706    //
2707    // Kernel <-> userspace ring buffer options:
2708    //
2709
2710    /// How often the per-cpu ring buffers are read by the producer.
2711    /// If unset, an implementation-defined default is used.
2712    #[prost(uint32, optional, tag="8")]
2713    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2714    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2715    /// kernel. If set, must be a power of two.
2716    /// If unset, an implementation-defined default is used.
2717    #[prost(uint32, optional, tag="3")]
2718    pub ring_buffer_pages: ::core::option::Option<u32>,
2719    //
2720    // Daemon's resource usage limits:
2721    //
2722
2723    /// Drop samples if the heap memory held by the samples in the unwinder queue
2724    /// is above the given limit. This counts the memory across all concurrent data
2725    /// sources (not just this one's), and there is no fairness guarantee - the
2726    /// whole quota might be used up by a concurrent source.
2727    #[prost(uint64, optional, tag="17")]
2728    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2729    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2730    /// footprint exceeds this value.
2731    #[prost(uint32, optional, tag="13")]
2732    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2733    //
2734    // Niche options:
2735    //
2736
2737    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2738    /// sampled process. This is primarily for Android, where this lookup is
2739    /// asynchronous. As long as the producer is waiting, the associated samples
2740    /// will be kept enqueued (putting pressure on the capacity of the shared
2741    /// unwinding queue). Once a lookup for a process expires, all associated
2742    /// samples are discarded. However, if the lookup still succeeds after the
2743    /// timeout, future samples will be handled normally.
2744    /// If unset, an implementation-defined default is used.
2745    #[prost(uint32, optional, tag="9")]
2746    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2747    /// Optional period for clearing state cached by the userspace unwinder. This
2748    /// is a heavy operation that is only necessary for traces that target a wide
2749    /// set of processes, and require the memory footprint to be reset
2750    /// periodically. To effectively disable the cache clearing, set to a value
2751    /// greater than your trace duration.
2752    ///
2753    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2754    ///
2755    /// If zero or unset:
2756    /// * before perfetto v52: no cache clearing.
2757    /// * perfetto v52+: implementation chooses an infrequent default.
2758    #[prost(uint32, optional, tag="10")]
2759    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2760    /// If set, only profile target if it was installed by a package with one of
2761    /// these names. Special values:
2762    /// * "@system": installed on the system partition
2763    /// * "@product": installed on the product partition
2764    /// * "@null": sideloaded
2765    /// Supported on Android 12+.
2766    #[prost(string, repeated, tag="18")]
2767    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2768    //
2769    // Deprecated (superseded by options above):
2770    //
2771    // Do not set *any* of these fields in new configs.
2772    //
2773
2774    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2775    /// We rely on this to detect such configs.
2776    #[prost(bool, optional, tag="1")]
2777    pub all_cpus: ::core::option::Option<bool>,
2778    #[prost(uint32, optional, tag="2")]
2779    pub sampling_frequency: ::core::option::Option<u32>,
2780    #[prost(bool, optional, tag="12")]
2781    pub kernel_frames: ::core::option::Option<bool>,
2782    #[prost(int32, repeated, packed="false", tag="4")]
2783    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2784    #[prost(string, repeated, tag="5")]
2785    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2786    #[prost(int32, repeated, packed="false", tag="6")]
2787    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2788    #[prost(string, repeated, tag="7")]
2789    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2790    #[prost(uint32, optional, tag="11")]
2791    pub additional_cmdline_count: ::core::option::Option<u32>,
2792}
2793/// Nested message and enum types in `PerfEventConfig`.
2794pub mod perf_event_config {
2795    //
2796    // Sub-messages (nested for generated code namespacing).
2797    //
2798
2799    #[derive(Clone, PartialEq, ::prost::Message)]
2800    pub struct CallstackSampling {
2801        /// Defines a set of processes for which samples are retained/skipped. If
2802        /// unset, all samples are kept, but beware that it will be very heavy on the
2803        /// stack unwinder, which might start dropping samples due to overload.
2804        #[prost(message, optional, tag="1")]
2805        pub scope: ::core::option::Option<Scope>,
2806        /// If true, callstacks will include the kernel-space frames. Such frames can
2807        /// be identified by a magical "kernel" string as their mapping name.
2808        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2809        /// manually unrestricted. On Android, the platform should do the right thing
2810        /// on debug builds.
2811        /// This does *not* disclose KASLR, as only the function names are emitted.
2812        #[prost(bool, optional, tag="2")]
2813        pub kernel_frames: ::core::option::Option<bool>,
2814        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2815        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2816        /// as the most common default (this defaulting is only applicable if the
2817        /// outer CallstackSampling message is explicitly set).
2818        #[prost(enumeration="UnwindMode", optional, tag="3")]
2819        pub user_frames: ::core::option::Option<i32>,
2820    }
2821    #[derive(Clone, PartialEq, ::prost::Message)]
2822    pub struct Scope {
2823        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2824        /// samples will be retained. If multiple allow/deny-lists are
2825        /// specified by the config, then all of them are evaluated for each sampled
2826        /// process.
2827        #[prost(int32, repeated, packed="false", tag="1")]
2828        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2829        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2830        /// comm string). The semantics of this field were changed since its original
2831        /// introduction.
2832        ///
2833        /// On Android T+ (13+), this field can specify a single wildcard (*), and
2834        /// the profiler will attempt to match it in two possible ways:
2835        /// * if the pattern starts with a '/', then it is matched against the first
2836        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2837        ///    "/bin/echo".
2838        /// * otherwise the pattern is matched against the part of argv0
2839        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2840        ///    For example "echo" would match "/bin/echo".
2841        ///
2842        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2843        /// normalized prior to an exact string comparison. Normalization is as
2844        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2845        /// the string contains forward slashes, trim everything up to and including
2846        /// the last one.
2847        ///
2848        /// Implementation note: in either case, at most 511 characters of cmdline
2849        /// are considered.
2850        #[prost(string, repeated, tag="2")]
2851        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2852        /// List of excluded pids.
2853        #[prost(int32, repeated, packed="false", tag="3")]
2854        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2855        /// List of excluded cmdlines. See description of |target_cmdline| for how
2856        /// this is handled.
2857        #[prost(string, repeated, tag="4")]
2858        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2859        // Niche features for systemwide callstacks:
2860
2861        /// Number of additional command lines to sample. Only those which are
2862        /// neither explicitly included nor excluded will be considered. Processes
2863        /// are accepted on a first come, first served basis.
2864        #[prost(uint32, optional, tag="5")]
2865        pub additional_cmdline_count: ::core::option::Option<u32>,
2866        /// If set to N, all encountered processes will be put into one of the N
2867        /// possible bins, and only one randomly-chosen bin will be selected for
2868        /// unwinding. The binning is simply "pid % N", under the assumption that
2869        /// low-order bits of pids are roughly uniformly distributed. Other explicit
2870        /// inclusions/exclusions in this |Scope| message are still respected.
2871        ///
2872        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
2873        /// values will be queryable in trace processor under the "stats" table as
2874        /// "perf_process_shard_count" and "perf_chosen_process_shard".
2875        ///
2876        /// NB: all data sources in a config that set |process_shard_count| must set
2877        /// it to the same value. The profiler will choose one bin for all those data
2878        /// sources.
2879        #[prost(uint32, optional, tag="6")]
2880        pub process_shard_count: ::core::option::Option<u32>,
2881    }
2882    /// Userspace unwinding mode. A possible future addition is kernel-unwound
2883    /// callchains for frame pointer based systems.
2884    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2885    #[repr(i32)]
2886    pub enum UnwindMode {
2887        UnwindUnknown = 0,
2888        /// Do not unwind userspace:
2889        UnwindSkip = 1,
2890        /// Use libunwindstack (default):
2891        UnwindDwarf = 2,
2892        /// Use userspace frame pointer unwinder:
2893        UnwindFramePointer = 3,
2894    }
2895    impl UnwindMode {
2896        /// String value of the enum field names used in the ProtoBuf definition.
2897        ///
2898        /// The values are not transformed in any way and thus are considered stable
2899        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2900        pub fn as_str_name(&self) -> &'static str {
2901            match self {
2902                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
2903                UnwindMode::UnwindSkip => "UNWIND_SKIP",
2904                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
2905                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
2906            }
2907        }
2908    }
2909}
2910// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
2911
2912/// This file is named 'statsd_tracing_config.proto' rather than
2913/// 'statsd_config.proto' (which would be more consistent with the other
2914/// config protos) so it doesn't show up and confuse folks looking for
2915/// the existing statsd_config.proto for configuring statsd itself.
2916/// Same for the config proto itself.
2917#[derive(Clone, PartialEq, ::prost::Message)]
2918pub struct StatsdTracingConfig {
2919    /// This is for the common case of the atom id being known in the enum AtomId.
2920    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2921    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
2922    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
2923    /// (e.g. non-upstream atoms that don't exist in AOSP).
2924    #[prost(int32, repeated, packed="false", tag="2")]
2925    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
2926    #[prost(message, repeated, tag="3")]
2927    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
2928}
2929#[derive(Clone, PartialEq, ::prost::Message)]
2930pub struct StatsdPullAtomConfig {
2931    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2932    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2933    #[prost(int32, repeated, packed="false", tag="2")]
2934    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2935    #[prost(int32, optional, tag="3")]
2936    pub pull_frequency_ms: ::core::option::Option<i32>,
2937    #[prost(string, repeated, tag="4")]
2938    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2939}
2940// End of protos/perfetto/common/sys_stats_counters.proto
2941
2942// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
2943
2944/// This file defines the configuration for the Linux /proc poller data source,
2945/// which injects counters in the trace.
2946/// Counters that are needed in the trace must be explicitly listed in the
2947/// *_counters fields. This is to avoid spamming the trace with all counters
2948/// at all times.
2949/// The sampling rate is configurable. All polling rates (*_period_ms) need
2950/// to be integer multiples of each other.
2951/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
2952/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
2953#[derive(Clone, PartialEq, ::prost::Message)]
2954pub struct SysStatsConfig {
2955    /// Polls /proc/meminfo every X ms, if non-zero.
2956    /// This is required to be > 10ms to avoid excessive CPU usage.
2957    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
2958    #[prost(uint32, optional, tag="1")]
2959    pub meminfo_period_ms: ::core::option::Option<u32>,
2960    /// If empty all known counters are reported. Otherwise, only the counters
2961    /// specified below are reported.
2962    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
2963    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
2964    /// Polls /proc/vmstat every X ms, if non-zero.
2965    /// This is required to be > 10ms to avoid excessive CPU usage.
2966    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
2967    #[prost(uint32, optional, tag="3")]
2968    pub vmstat_period_ms: ::core::option::Option<u32>,
2969    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
2970    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
2971    /// Pols /proc/stat every X ms, if non-zero.
2972    /// This is required to be > 10ms to avoid excessive CPU usage.
2973    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
2974    #[prost(uint32, optional, tag="5")]
2975    pub stat_period_ms: ::core::option::Option<u32>,
2976    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
2977    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
2978    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
2979    /// This is required to be > 10ms to avoid excessive CPU usage.
2980    /// This option can be used to record unchanging values.
2981    /// Updates from frequency changes can come from ftrace/set_clock_rate.
2982    #[prost(uint32, optional, tag="7")]
2983    pub devfreq_period_ms: ::core::option::Option<u32>,
2984    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
2985    /// This is required to be > 10ms to avoid excessive CPU usage.
2986    #[prost(uint32, optional, tag="8")]
2987    pub cpufreq_period_ms: ::core::option::Option<u32>,
2988    /// Polls /proc/buddyinfo every X ms, if non-zero.
2989    /// This is required to be > 10ms to avoid excessive CPU usage.
2990    #[prost(uint32, optional, tag="9")]
2991    pub buddyinfo_period_ms: ::core::option::Option<u32>,
2992    /// Polls /proc/diskstats every X ms, if non-zero.
2993    /// This is required to be > 10ms to avoid excessive CPU usage.
2994    #[prost(uint32, optional, tag="10")]
2995    pub diskstat_period_ms: ::core::option::Option<u32>,
2996    /// Polls /proc/pressure/* every X ms, if non-zero.
2997    /// This is required to be > 10ms to avoid excessive CPU usage.
2998    #[prost(uint32, optional, tag="11")]
2999    pub psi_period_ms: ::core::option::Option<u32>,
3000    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3001    /// This is required to be > 10ms to avoid excessive CPU usage.
3002    #[prost(uint32, optional, tag="12")]
3003    pub thermal_period_ms: ::core::option::Option<u32>,
3004    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3005    /// This is required to be > 10ms to avoid excessive CPU usage.
3006    #[prost(uint32, optional, tag="13")]
3007    pub cpuidle_period_ms: ::core::option::Option<u32>,
3008    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3009    /// This is required to be > 10ms to avoid excessive CPU usage.
3010    #[prost(uint32, optional, tag="14")]
3011    pub gpufreq_period_ms: ::core::option::Option<u32>,
3012}
3013/// Nested message and enum types in `SysStatsConfig`.
3014pub mod sys_stats_config {
3015    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3016    #[repr(i32)]
3017    pub enum StatCounters {
3018        StatUnspecified = 0,
3019        StatCpuTimes = 1,
3020        StatIrqCounts = 2,
3021        StatSoftirqCounts = 3,
3022        StatForkCount = 4,
3023    }
3024    impl StatCounters {
3025        /// String value of the enum field names used in the ProtoBuf definition.
3026        ///
3027        /// The values are not transformed in any way and thus are considered stable
3028        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3029        pub fn as_str_name(&self) -> &'static str {
3030            match self {
3031                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3032                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3033                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3034                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3035                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3036            }
3037        }
3038    }
3039}
3040// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3041
3042// Begin of protos/perfetto/config/system_info/system_info_config.proto
3043
3044/// This data-source does a one-off recording of system information when
3045/// the trace starts.
3046/// Currently this includes:
3047/// - Values of
3048/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3049/// datasource has no configuration options at present.
3050#[derive(Clone, PartialEq, ::prost::Message)]
3051pub struct SystemInfoConfig {
3052}
3053// End of protos/perfetto/config/system_info/system_info_config.proto
3054
3055// Begin of protos/perfetto/config/test_config.proto
3056
3057/// The configuration for a fake producer used in tests.
3058#[derive(Clone, PartialEq, ::prost::Message)]
3059pub struct TestConfig {
3060    /// The number of messages the fake producer should send.
3061    #[prost(uint32, optional, tag="1")]
3062    pub message_count: ::core::option::Option<u32>,
3063    /// The maximum number of messages which should be sent each second.
3064    /// The actual obserced speed may be lower if the producer is unable to
3065    /// work fast enough.
3066    /// If this is zero or unset, the producer will send as fast as possible.
3067    #[prost(uint32, optional, tag="2")]
3068    pub max_messages_per_second: ::core::option::Option<u32>,
3069    /// The seed value for a simple multiplicative congruential pseudo-random
3070    /// number sequence.
3071    #[prost(uint32, optional, tag="3")]
3072    pub seed: ::core::option::Option<u32>,
3073    /// The size of each message in bytes. Should be greater than or equal 5 to
3074    /// account for the number of bytes needed to encode the random number and a
3075    /// null byte for the string.
3076    #[prost(uint32, optional, tag="4")]
3077    pub message_size: ::core::option::Option<u32>,
3078    /// Whether the producer should send a event batch when the data source is
3079    /// is initially registered.
3080    #[prost(bool, optional, tag="5")]
3081    pub send_batch_on_register: ::core::option::Option<bool>,
3082    #[prost(message, optional, tag="6")]
3083    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3084}
3085/// Nested message and enum types in `TestConfig`.
3086pub mod test_config {
3087    #[derive(Clone, PartialEq, ::prost::Message)]
3088    pub struct DummyFields {
3089        #[prost(uint32, optional, tag="1")]
3090        pub field_uint32: ::core::option::Option<u32>,
3091        #[prost(int32, optional, tag="2")]
3092        pub field_int32: ::core::option::Option<i32>,
3093        #[prost(uint64, optional, tag="3")]
3094        pub field_uint64: ::core::option::Option<u64>,
3095        #[prost(int64, optional, tag="4")]
3096        pub field_int64: ::core::option::Option<i64>,
3097        #[prost(fixed64, optional, tag="5")]
3098        pub field_fixed64: ::core::option::Option<u64>,
3099        #[prost(sfixed64, optional, tag="6")]
3100        pub field_sfixed64: ::core::option::Option<i64>,
3101        #[prost(fixed32, optional, tag="7")]
3102        pub field_fixed32: ::core::option::Option<u32>,
3103        #[prost(sfixed32, optional, tag="8")]
3104        pub field_sfixed32: ::core::option::Option<i32>,
3105        #[prost(double, optional, tag="9")]
3106        pub field_double: ::core::option::Option<f64>,
3107        #[prost(float, optional, tag="10")]
3108        pub field_float: ::core::option::Option<f32>,
3109        #[prost(sint64, optional, tag="11")]
3110        pub field_sint64: ::core::option::Option<i64>,
3111        #[prost(sint32, optional, tag="12")]
3112        pub field_sint32: ::core::option::Option<i32>,
3113        #[prost(string, optional, tag="13")]
3114        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3115        #[prost(bytes="vec", optional, tag="14")]
3116        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3117    }
3118}
3119// End of protos/perfetto/config/test_config.proto
3120
3121// Begin of protos/perfetto/config/track_event/track_event_config.proto
3122
3123/// The following fields define the set of enabled trace categories. Each list
3124/// item is a glob.
3125///
3126/// To determine if category is enabled, it is checked against the filters in
3127/// the following order:
3128///
3129///    1. Exact matches in enabled categories.
3130///    2. Exact matches in enabled tags.
3131///    3. Exact matches in disabled categories.
3132///    4. Exact matches in disabled tags.
3133///    5. Pattern matches in enabled categories.
3134///    6. Pattern matches in enabled tags.
3135///    7. Pattern matches in disabled categories.
3136///    8. Pattern matches in disabled tags.
3137///
3138/// If none of the steps produced a match:
3139///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3140///   default.
3141///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3142///
3143/// Examples:
3144///
3145///   - To enable all non-slow/debug categories:
3146///
3147///        enabled_categories: "*"
3148///
3149///   - To enable specific categories:
3150///
3151///        disabled_categories: "*"
3152///        enabled_categories: "my_category"
3153///        enabled_categories: "my_category2"
3154///
3155///   - To enable only categories with a specific tag:
3156///
3157///        disabled_tags: "*"
3158///        enabled_tags: "my_tag"
3159///
3160#[derive(Clone, PartialEq, ::prost::Message)]
3161pub struct TrackEventConfig {
3162    /// Default: []
3163    #[prost(string, repeated, tag="1")]
3164    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3165    /// Default: []
3166    #[prost(string, repeated, tag="2")]
3167    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3168    /// Default: ["slow", "debug"]
3169    #[prost(string, repeated, tag="3")]
3170    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3171    /// Default: []
3172    #[prost(string, repeated, tag="4")]
3173    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3174    /// Default: false (i.e. enabled by default)
3175    #[prost(bool, optional, tag="5")]
3176    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3177    /// Allows to specify a custom unit different than the default (ns).
3178    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3179    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3180    /// 3000 ns = 3 us.
3181    /// Default: 1 (if unset, it should be read as 1).
3182    #[prost(uint64, optional, tag="6")]
3183    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3184    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3185    /// When true, any debug annotations provided as arguments to the
3186    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3187    /// still be emitted even if set to true.
3188    #[prost(bool, optional, tag="7")]
3189    pub filter_debug_annotations: ::core::option::Option<bool>,
3190    /// Default: false (i.e. disabled)
3191    /// When true, the SDK samples and emits the current thread time counter value
3192    /// for each event on the current thread's track. This value represents the
3193    /// total CPU time consumed by that thread since its creation.
3194    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3195    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3196    #[prost(bool, optional, tag="8")]
3197    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3198    /// When enable_thread_time_sampling is true, and this is specified, thread
3199    /// time is sampled only if the elapsed wall time >
3200    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3201    /// Effectively, this means thread time will have a leeway of
3202    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3203    #[prost(uint64, optional, tag="10")]
3204    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3205    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3206    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3207    /// out.
3208    #[prost(bool, optional, tag="9")]
3209    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3210}
3211// End of protos/perfetto/config/track_event/track_event_config.proto
3212
3213// Begin of protos/perfetto/config/data_source_config.proto
3214
3215/// The configuration that is passed to each data source when starting tracing.
3216/// Next id: 140
3217#[derive(Clone, PartialEq, ::prost::Message)]
3218pub struct DataSourceConfig {
3219    /// Data source unique name, e.g., "linux.ftrace". This must match
3220    /// the name passed by the data source when it registers (see
3221    /// RegisterDataSource()).
3222    #[prost(string, optional, tag="1")]
3223    pub name: ::core::option::Option<::prost::alloc::string::String>,
3224    /// The index of the logging buffer where TracePacket(s) will be stored.
3225    /// This field is quite subtle as it has a double semantic:
3226    /// 1) When the config is passed, this field is a 0-based index relative to the
3227    ///     buffer array in the TraceConfig and defines the mapping between data
3228    ///     sources and config. From v54 this is optional because the user can
3229    ///     instead use target_buffer_name.
3230    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3231    ///     producer, it overwrites this field with the global buffer index (which
3232    ///     depends on other tracing sessions active). This tells the producer which
3233    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3234    ///     service always sets the resolved global id, even when using
3235    ///     `target_buffer_name`.
3236    /// In hindsight we should have used two different fields given even in v0 they
3237    /// had a different semantic. But now it's too late as this would be a major
3238    /// protocol breaking change.
3239    #[prost(uint32, optional, tag="2")]
3240    pub target_buffer: ::core::option::Option<u32>,
3241    /// Alternative to |target_buffer|. References a buffer by name (as specified
3242    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3243    /// readable and less error-prone than using buffer indices.
3244    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3245    /// refer to the same buffer, otherwise the service will reject the config.
3246    /// Using both fields allows configs to work with both old and new versions
3247    /// of the tracing service. Introduced in v54.
3248    #[prost(string, optional, tag="11")]
3249    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3250    /// Set by the service to indicate the duration of the trace.
3251    /// DO NOT SET in consumer as this will be overridden by the service.
3252    #[prost(uint32, optional, tag="3")]
3253    pub trace_duration_ms: ::core::option::Option<u32>,
3254    /// If true, |trace_duration_ms| should count also time in suspend. This
3255    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3256    #[prost(bool, optional, tag="122")]
3257    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3258    /// Set by the service to indicate how long it waits after StopDataSource.
3259    /// DO NOT SET in consumer as this will be overridden by the service.
3260    #[prost(uint32, optional, tag="7")]
3261    pub stop_timeout_ms: ::core::option::Option<u32>,
3262    /// Set by the service to indicate whether this tracing session has extra
3263    /// guardrails.
3264    /// DO NOT SET in consumer as this will be overridden by the service.
3265    #[prost(bool, optional, tag="6")]
3266    pub enable_extra_guardrails: ::core::option::Option<bool>,
3267    /// Set by the service to indicate which user initiated this trace.
3268    /// DO NOT SET in consumer as this will be overridden by the service.
3269    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3270    pub session_initiator: ::core::option::Option<i32>,
3271    /// Set by the service to indicate which tracing session the data source
3272    /// belongs to. The intended use case for this is checking if two data sources,
3273    /// one of which produces metadata for the other one, belong to the same trace
3274    /// session and hence should be linked together.
3275    /// This field was introduced in Aug 2018 after Android P.
3276    /// DO NOT SET in consumer as this will be overridden by the service.
3277    #[prost(uint64, optional, tag="4")]
3278    pub tracing_session_id: ::core::option::Option<u64>,
3279    /// How to behave when the producer runs out of space in the shared memory
3280    /// buffer. This is only honored by some data sources (in the SDK, the data
3281    /// sources registered with a configurable buffer exhausted policy).
3282    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3283    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3284    #[prost(message, optional, tag="10")]
3285    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3286    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3287    // data-sources and needs to be processed by the traced daemon.
3288
3289    // All data source config fields must be marked as \[lazy=true\]. This prevents
3290    // the proto-to-cpp generator from recursing into those when generating the
3291    // cpp classes and polluting tracing/core with data-source-specific classes.
3292    // Instead they are treated as opaque strings containing raw proto bytes.
3293
3294    /// Data source name: linux.ftrace
3295    #[prost(message, optional, tag="100")]
3296    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3297    /// Data source name: linux.inode_file_map
3298    #[prost(message, optional, tag="102")]
3299    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3300    /// Data source name: linux.process_stats
3301    #[prost(message, optional, tag="103")]
3302    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3303    /// Data source name: linux.sys_stats
3304    #[prost(message, optional, tag="104")]
3305    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3306    /// Data source name: android.heapprofd
3307    /// Introduced in Android 10.
3308    #[prost(message, optional, tag="105")]
3309    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3310    /// Data source name: android.java_hprof
3311    /// Introduced in Android 11.
3312    #[prost(message, optional, tag="110")]
3313    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3314    /// Data source name: android.power
3315    #[prost(message, optional, tag="106")]
3316    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3317    /// Data source name: android.log
3318    #[prost(message, optional, tag="107")]
3319    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3320    /// Data source name: gpu.counters
3321    #[prost(message, optional, tag="108")]
3322    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3323    /// Data source name: android.game_interventions
3324    #[prost(message, optional, tag="116")]
3325    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3326    /// Data source name: android.packages_list
3327    #[prost(message, optional, tag="109")]
3328    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3329    /// Data source name: linux.perf
3330    #[prost(message, optional, tag="111")]
3331    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3332    /// Data source name: vulkan.memory_tracker
3333    #[prost(message, optional, tag="112")]
3334    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3335    /// Data source name: track_event
3336    #[prost(message, optional, tag="113")]
3337    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3338    /// Data source name: android.polled_state
3339    #[prost(message, optional, tag="114")]
3340    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3341    /// Data source name: android.system_property
3342    #[prost(message, optional, tag="118")]
3343    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3344    /// Data source name: android.statsd
3345    #[prost(message, optional, tag="117")]
3346    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3347    /// Data source name: linux.system_info
3348    #[prost(message, optional, tag="119")]
3349    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3350    /// Data source name: linux.frozen_ftrace
3351    #[prost(message, optional, tag="136")]
3352    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3353    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3354    /// avoid proto serialization and de-serialization there because that would
3355    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3356    /// C++ class for it so it can pass around plain C++ objets.
3357    #[prost(message, optional, tag="101")]
3358    pub chrome_config: ::core::option::Option<ChromeConfig>,
3359    /// Data source name: code.v8.dev
3360    #[prost(message, optional, tag="127")]
3361    pub v8_config: ::core::option::Option<V8Config>,
3362    /// If an interceptor is specified here, packets for this data source will be
3363    /// rerouted to the interceptor instead of the main trace buffer. This can be
3364    /// used, for example, to write trace data into ETW or for logging trace points
3365    /// to the console.
3366    ///
3367    /// Note that interceptors are only supported by data sources registered
3368    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3369    /// traced_probes) may not support interception.
3370    #[prost(message, optional, tag="115")]
3371    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3372    /// Data source name: android.network_packets.
3373    /// Introduced in Android 14 (U).
3374    #[prost(message, optional, tag="120")]
3375    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3376    /// Data source name: android.surfaceflinger.layers
3377    #[prost(message, optional, tag="121")]
3378    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3379    /// Data source name: android.surfaceflinger.transactions
3380    #[prost(message, optional, tag="123")]
3381    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3382    /// Data source name: android.sdk_sysprop_guard
3383    /// Introduced in Android 14 (U) QPR1.
3384    #[prost(message, optional, tag="124")]
3385    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3386    /// Data source name: windows.etw
3387    #[prost(message, optional, tag="125")]
3388    pub etw_config: ::core::option::Option<EtwConfig>,
3389    /// Data source name: android.protolog
3390    #[prost(message, optional, tag="126")]
3391    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3392    /// Data source name: android.input.inputevent
3393    #[prost(message, optional, tag="128")]
3394    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3395    /// Data source name: android.pixel.modem
3396    #[prost(message, optional, tag="129")]
3397    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3398    /// Data source name: android.windowmanager
3399    #[prost(message, optional, tag="130")]
3400    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3401    /// Data source name: org.chromium.system_metrics
3402    #[prost(message, optional, tag="131")]
3403    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3404    /// Data source name: android.kernel_wakelocks
3405    #[prost(message, optional, tag="132")]
3406    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3407    /// Data source name: gpu.renderstages
3408    #[prost(message, optional, tag="133")]
3409    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3410    /// Data source name: org.chromium.histogram_samples
3411    #[prost(message, optional, tag="134")]
3412    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3413    /// Data source name: android.app_wakelocks
3414    #[prost(message, optional, tag="135")]
3415    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3416    /// Data source name: android.cpu_per_uid
3417    #[prost(message, optional, tag="137")]
3418    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3419    /// Data source name: android.user_list
3420    #[prost(message, optional, tag="138")]
3421    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3422    /// Data source name: android.inputmethod
3423    #[prost(message, optional, tag="139")]
3424    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
3425    /// This is a fallback mechanism to send a free-form text config to the
3426    /// producer. In theory this should never be needed. All the code that
3427    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3428    /// the trace config proto and propagate unknown fields. However, if anything
3429    /// in the pipeline (client or backend) ends up breaking this forward compat
3430    /// plan, this field will become the escape hatch to allow future data sources
3431    /// to get some meaningful configuration.
3432    #[prost(string, optional, tag="1000")]
3433    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3434    /// This field is only used for testing.
3435    #[prost(message, optional, tag="1001")]
3436    pub for_testing: ::core::option::Option<TestConfig>,
3437}
3438/// Nested message and enum types in `DataSourceConfig`.
3439pub mod data_source_config {
3440    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3441    #[repr(i32)]
3442    pub enum SessionInitiator {
3443        Unspecified = 0,
3444        /// This trace was initiated from a trusted system app has DUMP and
3445        /// USAGE_STATS permission. This system app is expected to not expose the
3446        /// trace to the user of the device.
3447        /// This is determined by checking the UID initiating the trace.
3448        TrustedSystem = 1,
3449    }
3450    impl SessionInitiator {
3451        /// String value of the enum field names used in the ProtoBuf definition.
3452        ///
3453        /// The values are not transformed in any way and thus are considered stable
3454        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3455        pub fn as_str_name(&self) -> &'static str {
3456            match self {
3457                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3458                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3459            }
3460        }
3461    }
3462    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3463    #[repr(i32)]
3464    pub enum BufferExhaustedPolicy {
3465        /// The data source will use its default buffer exhausted policy, specified
3466        /// by the code when the data source is registered.
3467        BufferExhaustedUnspecified = 0,
3468        /// The data source will drop packets when there's no space in the shared
3469        /// memory buffer.
3470        BufferExhaustedDrop = 1,
3471        /// The data source will wait when there's no space in the shared memory
3472        /// buffer. If there's still not space, after a few seconds, the whole
3473        /// producer process will be aborted.
3474        BufferExhaustedStallThenAbort = 2,
3475        /// The data source will wait when there's no space in the shared memory
3476        /// buffer.  If there's still not space, after a few seconds, the data source
3477        /// will drop packets.
3478        BufferExhaustedStallThenDrop = 3,
3479    }
3480    impl BufferExhaustedPolicy {
3481        /// String value of the enum field names used in the ProtoBuf definition.
3482        ///
3483        /// The values are not transformed in any way and thus are considered stable
3484        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3485        pub fn as_str_name(&self) -> &'static str {
3486            match self {
3487                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3488                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3489                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3490                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3491            }
3492        }
3493    }
3494}
3495// End of protos/perfetto/config/data_source_config.proto
3496
3497// Begin of protos/perfetto/config/trace_config.proto
3498
3499/// The overall config that is used when starting a new tracing session through
3500/// ProducerPort::StartTracing().
3501/// It contains the general config for the logging buffer(s) and the configs for
3502/// all the data source being enabled.
3503///
3504/// Next id: 45.
3505#[derive(Clone, PartialEq, ::prost::Message)]
3506pub struct TraceConfig {
3507    #[prost(message, repeated, tag="1")]
3508    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3509    #[prost(message, repeated, tag="2")]
3510    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3511    #[prost(message, optional, tag="20")]
3512    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3513    /// If specified, the trace will be stopped |duration_ms| after starting.
3514    /// This does *not* count the time the system is suspended, so we will run
3515    /// for duration_ms of system activity, not wall time.
3516    ///
3517    /// However in case of traces with triggers, see
3518    /// TriggerConfig.trigger_timeout_ms instead.
3519    #[prost(uint32, optional, tag="3")]
3520    pub duration_ms: ::core::option::Option<u32>,
3521    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3522    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3523    /// Linux/Android, no-op on other platforms. This is used when dealing with
3524    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3525    /// wall-time, making them more likely to hit device reboots (and hence loss).
3526    /// This option also changes consistently the semantic of
3527    /// TriggerConfig.stop_delay_ms.
3528    #[prost(bool, optional, tag="36")]
3529    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3530    /// This is set when --dropbox is passed to the Perfetto command line client
3531    /// and enables guardrails that limit resource usage for traces requested
3532    /// by statsd.
3533    #[prost(bool, optional, tag="4")]
3534    pub enable_extra_guardrails: ::core::option::Option<bool>,
3535    /// Reject producers that are not running under the same UID as the tracing
3536    /// service.
3537    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3538    pub lockdown_mode: ::core::option::Option<i32>,
3539    #[prost(message, repeated, tag="6")]
3540    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3541    /// Statsd-specific metadata.
3542    #[prost(message, optional, tag="7")]
3543    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3544    /// When true && |output_path| is empty, the EnableTracing() request must
3545    /// provide a file descriptor. The service will then periodically read packets
3546    /// out of the trace buffer and store it into the passed file.
3547    /// If |output_path| is not empty no fd should be passed, the service
3548    /// will create a new file and write into that (see comment below).
3549    #[prost(bool, optional, tag="8")]
3550    pub write_into_file: ::core::option::Option<bool>,
3551    /// This must point to a non-existing file. If the file exists the service
3552    /// will NOT overwrite and will fail instead as a security precaution.
3553    /// On Android, when this is used with the system traced, the path must be
3554    /// within /data/misc/perfetto-traces/ or the trace will fail.
3555    /// This option has been introduced in Android R. Before R write_into_file
3556    /// can be used only with the "pass a file descriptor over IPC" mode.
3557    #[prost(string, optional, tag="29")]
3558    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3559    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3560    /// enforced (i.e. smaller values are ignored).
3561    #[prost(uint32, optional, tag="9")]
3562    pub file_write_period_ms: ::core::option::Option<u32>,
3563    /// Optional. When non zero the periodic write stops once at most X bytes
3564    /// have been written into the file. Tracing is disabled when this limit is
3565    /// reached, even if |duration_ms| has not been reached yet.
3566    #[prost(uint64, optional, tag="10")]
3567    pub max_file_size_bytes: ::core::option::Option<u64>,
3568    #[prost(message, optional, tag="11")]
3569    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3570    /// When true, data sources are not started until an explicit call to
3571    /// StartTracing() on the consumer port. This is to support early
3572    /// initialization and fast trace triggering. This can be used only when the
3573    /// Consumer explicitly triggers the StartTracing() method.
3574    /// This should not be used in a remote trace config via statsd, doing so will
3575    /// result in a hung trace session.
3576    #[prost(bool, optional, tag="12")]
3577    pub deferred_start: ::core::option::Option<bool>,
3578    /// When set, it periodically issues a Flush() to all data source, forcing them
3579    /// to commit their data into the tracing service. This can be used for
3580    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3581    /// events in the trace in windows of X ms.
3582    ///
3583    /// Warning: Perfetto automatically handles periodic flushing so in most
3584    /// scenarios setting this field is not needed. High frequency flushing can
3585    /// significantly impact performance.
3586    #[prost(uint32, optional, tag="13")]
3587    pub flush_period_ms: ::core::option::Option<u32>,
3588    /// Wait for this long for producers to acknowledge flush requests.
3589    /// Default 5s.
3590    #[prost(uint32, optional, tag="14")]
3591    pub flush_timeout_ms: ::core::option::Option<u32>,
3592    /// Wait for this long for producers to acknowledge stop requests.
3593    /// Default 5s.
3594    #[prost(uint32, optional, tag="23")]
3595    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3596    /// Android-only. If set, sends an intent to the Traceur system app when the
3597    /// trace ends to notify it about the trace readiness.
3598    #[prost(bool, optional, tag="16")]
3599    pub notify_traceur: ::core::option::Option<bool>,
3600    /// This field was introduced in Android S.
3601    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3602    /// for being attached to a bugreport. This field effectively acts as a z-index
3603    /// for bugreports. When Android's dumpstate runs perfetto
3604    /// --save-for-bugreport, traced will pick the tracing session with the highest
3605    /// score (score <= 0 is ignored) and:
3606    /// On Android S, T:  will steal its contents, save the trace into
3607    ///      a known path and stop prematurely.
3608    /// On Android U+: will create a read-only snapshot and save that into a known
3609    ///      path, without stoppin the original tracing session.
3610    /// When this field is set the tracing session becomes eligible to be cloned
3611    /// by other UIDs.
3612    #[prost(int32, optional, tag="30")]
3613    pub bugreport_score: ::core::option::Option<i32>,
3614    /// When set, defines name of the file that will be saved under
3615    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3616    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3617    /// starting from the highest `bugreport_score`.
3618    /// Introduced in v42 / Android V.
3619    #[prost(string, optional, tag="38")]
3620    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3621    #[prost(message, optional, tag="17")]
3622    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3623    /// When this is non-empty the perfetto command line tool will ignore the rest
3624    /// of this TraceConfig and instead connect to the perfetto service as a
3625    /// producer and send these triggers, potentially stopping or starting traces
3626    /// that were previous configured to use a TriggerConfig.
3627    #[prost(string, repeated, tag="18")]
3628    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3629    #[prost(message, optional, tag="21")]
3630    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3631    /// No longer needed as we unconditionally allow tracing on user builds.
3632    #[deprecated]
3633    #[prost(bool, optional, tag="19")]
3634    pub allow_user_build_tracing: ::core::option::Option<bool>,
3635    /// If set the tracing service will ensure there is at most one tracing session
3636    /// with this key.
3637    #[prost(string, optional, tag="22")]
3638    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3639    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3640    pub compression_type: ::core::option::Option<i32>,
3641    #[prost(message, optional, tag="25")]
3642    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3643    /// Android-only. Not for general use. If specified, sets the logging to statsd
3644    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3645    /// this to enabled (if not explicitly set in the config) when specifying
3646    /// --upload.
3647    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3648    pub statsd_logging: ::core::option::Option<i32>,
3649    /// An identifier clients can use to tie this trace to other logging.
3650    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3651    /// Trace UUID. If this field is set, the tracing service will respect the
3652    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3653    /// gap-less snapshotting is not used.
3654    #[deprecated]
3655    #[prost(int64, optional, tag="27")]
3656    pub trace_uuid_msb: ::core::option::Option<i64>,
3657    #[deprecated]
3658    #[prost(int64, optional, tag="28")]
3659    pub trace_uuid_lsb: ::core::option::Option<i64>,
3660    #[prost(message, optional, tag="33")]
3661    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3662    #[prost(message, optional, tag="34")]
3663    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3664    #[prost(message, optional, tag="35")]
3665    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3666    #[prost(message, repeated, tag="39")]
3667    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3668    /// Priority boost to be applied to the traced process, when the session is
3669    /// running.
3670    #[prost(message, optional, tag="40")]
3671    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3672    /// When set to a value > 0, this tracing session will be started in
3673    /// "exclusive mode". This has the following semantics:
3674    /// - It can only be set by shell or root users.
3675    /// - A new exclusive session will only be started if its priority is strictly
3676    ///    higher than any other active tracing session.
3677    /// - If a new exclusive session is started, all other existing tracing
3678    ///    sessions (exclusive or not) are aborted.
3679    /// - While an exclusive session is active, any new non-exclusive session (or
3680    ///    any exclusive session with a lower or equal priority) will be rejected.
3681    ///
3682    /// Introduced in: perfetto v52.
3683    /// Supported on: Android 25Q3+.
3684    #[prost(uint32, optional, tag="41")]
3685    pub exclusive_prio: ::core::option::Option<u32>,
3686    /// Configures how the service should handle flushing data from producers
3687    /// before periodically writing the trace into the output file.
3688    /// Only applicable when |write_into_file| is true.
3689    ///
3690    /// By default, if |write_into_file| is set, the service periodically issues
3691    /// a Flush() to all data sources before writing buffers into the file.
3692    /// This ensures the file always contains the latest available data.
3693    ///
3694    /// Introduced in: perfetto v54.
3695    /// Supported on: Android 26Q1+.
3696    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
3697    pub write_flush_mode: ::core::option::Option<i32>,
3698    /// Whether to sync the output file to storage after each periodic write pass.
3699    /// Only applicable when |write_into_file| is true.
3700    ///
3701    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
3702    /// sync to storage on every write.
3703    ///
3704    /// Introduced in: perfetto v54.
3705    /// Supported on: Android 26Q1+.
3706    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
3707    pub fflush_post_write: ::core::option::Option<i32>,
3708    /// When true, data sources in remote producers (machines connected via
3709    /// traced_relay) will be matched by default. When false (the default), data
3710    /// sources only match the host machine. In either case, an explicit
3711    /// |DataSource.machine_name_filter| takes priority.
3712    ///
3713    /// NB: perfetto versions before v54 do not have this option and match across
3714    /// machines by default. To be compatible across this version boundary, either
3715    /// set this field to true, or set an explicit machine_name_filter on all data
3716    /// sources.
3717    ///
3718    /// Introduced in: perfetto v54.
3719    #[prost(bool, optional, tag="43")]
3720    pub trace_all_machines: ::core::option::Option<bool>,
3721}
3722/// Nested message and enum types in `TraceConfig`.
3723pub mod trace_config {
3724    #[derive(Clone, PartialEq, ::prost::Message)]
3725    pub struct BufferConfig {
3726        #[prost(uint32, optional, tag="1")]
3727        pub size_kb: ::core::option::Option<u32>,
3728        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3729        pub fill_policy: ::core::option::Option<i32>,
3730        /// When true the buffer is moved (rather than copied) onto the cloned
3731        /// session, and an empty buffer of the same size is allocated in the source
3732        /// tracing session. This feature will likely get deprecated in the future.
3733        /// It been introduced mainly to support the surfaceflinger snapshot dump
3734        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3735        /// that case we don't want to retain another in-memory copy of the buffer.
3736        #[prost(bool, optional, tag="5")]
3737        pub transfer_on_clone: ::core::option::Option<bool>,
3738        /// Used in conjunction with transfer_on_clone. When true the buffer is
3739        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3740        /// that if the data source took too long to write the data in a previous
3741        /// clone-related flush, we don't end up with a mixture of leftovers from
3742        /// the previous write and new data.
3743        #[prost(bool, optional, tag="6")]
3744        pub clear_before_clone: ::core::option::Option<bool>,
3745        /// Optional name for this buffer. If set, data sources can reference this
3746        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
3747        /// using the buffer index. Buffer names must be unique within a tracing
3748        /// session. This provides a more human-readable and less error-prone way to
3749        /// configure which buffer a data source writes to.
3750        #[prost(string, optional, tag="7")]
3751        pub name: ::core::option::Option<::prost::alloc::string::String>,
3752        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
3753        pub experimental_mode: ::core::option::Option<i32>,
3754    }
3755    /// Nested message and enum types in `BufferConfig`.
3756    pub mod buffer_config {
3757        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3758        #[repr(i32)]
3759        pub enum FillPolicy {
3760            Unspecified = 0,
3761            /// Default behavior. The buffer operates as a conventional ring buffer.
3762            /// If the writer is faster than the reader (or if the reader reads only
3763            /// after tracing is stopped) newly written packets will overwrite old
3764            /// packets.
3765            RingBuffer = 1,
3766            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3767            /// the reader catches up with the writer. As soon as the writer hits
3768            /// an unread chunk, it stops accepting new data in the buffer.
3769            Discard = 2,
3770        }
3771        impl FillPolicy {
3772            /// String value of the enum field names used in the ProtoBuf definition.
3773            ///
3774            /// The values are not transformed in any way and thus are considered stable
3775            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3776            pub fn as_str_name(&self) -> &'static str {
3777                match self {
3778                    FillPolicy::Unspecified => "UNSPECIFIED",
3779                    FillPolicy::RingBuffer => "RING_BUFFER",
3780                    FillPolicy::Discard => "DISCARD",
3781                }
3782            }
3783        }
3784        /// When true, uses the experimental TraceBufferV2 implementation for this
3785        /// buffer. This is for testing purposes only and may be removed in future
3786        /// versions.
3787        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3788        #[repr(i32)]
3789        pub enum ExperimentalMode {
3790            /// Use the default V1 implementation.
3791            ModeUnspecified = 0,
3792            /// Use TraceBufferV2.
3793            TraceBufferV2 = 1,
3794            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
3795            /// but only V1 data is returned. Comparison stats are reported to
3796            /// validate V2 returns equivalent data.
3797            TraceBufferV2ShadowMode = 2,
3798        }
3799        impl ExperimentalMode {
3800            /// String value of the enum field names used in the ProtoBuf definition.
3801            ///
3802            /// The values are not transformed in any way and thus are considered stable
3803            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3804            pub fn as_str_name(&self) -> &'static str {
3805                match self {
3806                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
3807                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
3808                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
3809                }
3810            }
3811        }
3812    }
3813    #[derive(Clone, PartialEq, ::prost::Message)]
3814    pub struct DataSource {
3815        /// Filters and data-source specific config. It contains also the unique name
3816        /// of the data source, the one passed in the  DataSourceDescriptor when they
3817        /// register on the service.
3818        #[prost(message, optional, tag="1")]
3819        pub config: ::core::option::Option<super::DataSourceConfig>,
3820        /// Optional. If multiple producers (~processes) expose the same data source
3821        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3822        /// the data source is enabled only for producers whose names match any of
3823        /// the filters.
3824        /// |producer_name_filter| has to be an exact match, while
3825        /// |producer_name_regex_filter| is a regular expression.
3826        /// This allows to enable a data source only for specific processes.
3827        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3828        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3829        #[prost(string, repeated, tag="2")]
3830        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3831        #[prost(string, repeated, tag="3")]
3832        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3833        /// Filter by machine names. The name of a machine is determined by the
3834        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
3835        /// variable is not set then the
3836        /// persist.traced_relay.machine_name system property is used. If the
3837        /// sysprop isn't set or not in an Android system, then the machine name by
3838        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
3839        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
3840        /// to the host machine, which is the machine running traced.
3841        #[prost(string, repeated, tag="4")]
3842        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3843    }
3844    /// Config for disabling builtin data sources in the tracing service.
3845    #[derive(Clone, PartialEq, ::prost::Message)]
3846    pub struct BuiltinDataSource {
3847        /// Disable emitting clock timestamps into the trace.
3848        #[prost(bool, optional, tag="1")]
3849        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3850        /// Disable echoing the original trace config in the trace.
3851        #[prost(bool, optional, tag="2")]
3852        pub disable_trace_config: ::core::option::Option<bool>,
3853        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3854        #[prost(bool, optional, tag="3")]
3855        pub disable_system_info: ::core::option::Option<bool>,
3856        /// Disable emitting events for data-source state changes (e.g. the marker
3857        /// for all data sources having ACKed the start of the trace).
3858        #[prost(bool, optional, tag="4")]
3859        pub disable_service_events: ::core::option::Option<bool>,
3860        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3861        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3862        /// into the trace as part of the ClockSnapshots emitted by the service.
3863        /// Trace processor will attempt to translate packet/event timestamps from
3864        /// various data sources (and their chosen clock domains) to this domain
3865        /// during import. Added in Android R.
3866        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3867        pub primary_trace_clock: ::core::option::Option<i32>,
3868        /// Time interval in between snapshotting of sync markers, clock snapshots,
3869        /// stats, and other periodic service-emitted events. Note that the service
3870        /// only keeps track of the first and the most recent snapshot until
3871        /// ReadBuffers() is called.
3872        #[prost(uint32, optional, tag="6")]
3873        pub snapshot_interval_ms: ::core::option::Option<u32>,
3874        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3875        /// clock should be used for periodic snapshots of service-emitted events.
3876        /// This means, if a snapshot *should* have happened during suspend, it will
3877        /// happen immediately after the device resumes.
3878        ///
3879        /// Choosing a clock like this is done on best-effort basis; not all
3880        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3881        /// tasks counting suspend. If such a clock is not available, the service
3882        /// falls back to the best-available alternative.
3883        ///
3884        /// Introduced in Android S.
3885        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3886        /// crashes in S.
3887        #[prost(bool, optional, tag="7")]
3888        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3889        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3890        #[prost(bool, optional, tag="8")]
3891        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3892    }
3893    #[derive(Clone, PartialEq, ::prost::Message)]
3894    pub struct ProducerConfig {
3895        /// Identifies the producer for which this config is for.
3896        #[prost(string, optional, tag="1")]
3897        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3898        /// Specifies the preferred size of the shared memory buffer. If the size is
3899        /// larger than the max size, the max will be used. If it is smaller than
3900        /// the page size or doesn't fit pages evenly into it, it will fall back to
3901        /// the size specified by the producer or finally the default shared memory
3902        /// size.
3903        #[prost(uint32, optional, tag="2")]
3904        pub shm_size_kb: ::core::option::Option<u32>,
3905        /// Specifies the preferred size of each page in the shared memory buffer.
3906        /// Must be an integer multiple of 4K.
3907        #[prost(uint32, optional, tag="3")]
3908        pub page_size_kb: ::core::option::Option<u32>,
3909    }
3910    /// Contains statsd-specific metadata about an alert associated with the trace.
3911    #[derive(Clone, PartialEq, ::prost::Message)]
3912    pub struct StatsdMetadata {
3913        /// The identifier of the alert which triggered this trace.
3914        #[prost(int64, optional, tag="1")]
3915        pub triggering_alert_id: ::core::option::Option<i64>,
3916        /// The uid which registered the triggering configuration with statsd.
3917        #[prost(int32, optional, tag="2")]
3918        pub triggering_config_uid: ::core::option::Option<i32>,
3919        /// The identifier of the config which triggered the alert.
3920        #[prost(int64, optional, tag="3")]
3921        pub triggering_config_id: ::core::option::Option<i64>,
3922        /// The identifier of the subscription which triggered this trace.
3923        #[prost(int64, optional, tag="4")]
3924        pub triggering_subscription_id: ::core::option::Option<i64>,
3925    }
3926    /// Contains flags which override the default values of the guardrails inside
3927    /// Perfetto.
3928    #[derive(Clone, PartialEq, ::prost::Message)]
3929    pub struct GuardrailOverrides {
3930        /// Override the default limit (in bytes) for uploading data to server within
3931        /// a 24 hour period.
3932        /// On R-, this override only affected userdebug builds. Since S, it also
3933        /// affects user builds.
3934        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3935        /// was removed from Perfetto.
3936        #[deprecated]
3937        #[prost(uint64, optional, tag="1")]
3938        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3939        /// Overrides the guardrail for maximum trace buffer size.
3940        /// Available on U+
3941        #[prost(uint32, optional, tag="2")]
3942        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3943    }
3944    /// Triggers allow producers to start or stop the tracing session when an event
3945    /// occurs.
3946    ///
3947    /// For example if we are tracing probabilistically, most traces will be
3948    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3949    /// those traces during which the device temperature reached a certain
3950    /// threshold. In this case the producer can activate a trigger to keep
3951    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3952    /// (START_TRACING) because it knows something is about to happen.
3953    #[derive(Clone, PartialEq, ::prost::Message)]
3954    pub struct TriggerConfig {
3955        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3956        pub trigger_mode: ::core::option::Option<i32>,
3957        /// This flag is really a workaround for b/274931668. This is needed only
3958        /// when deploying configs to different versions of the tracing service.
3959        /// When this is set to true this has the same effect of setting trigger_mode
3960        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3961        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3962        /// versions of Android and fall back to STOP_TRACING on older versions where
3963        /// CLONE_SNAPSHOT did not exist.
3964        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3965        #[prost(bool, optional, tag="5")]
3966        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3967        /// A list of triggers which are related to this configuration. If ANY
3968        /// trigger is seen then an action will be performed based on |trigger_mode|.
3969        #[prost(message, repeated, tag="2")]
3970        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3971        /// Required and must be positive if a TriggerConfig is specified. This is
3972        /// how long this TraceConfig should wait for a trigger to arrive. After this
3973        /// period of time if no trigger is seen the TracingSession will be cleaned
3974        /// up.
3975        #[prost(uint32, optional, tag="3")]
3976        pub trigger_timeout_ms: ::core::option::Option<u32>,
3977    }
3978    /// Nested message and enum types in `TriggerConfig`.
3979    pub mod trigger_config {
3980        #[derive(Clone, PartialEq, ::prost::Message)]
3981        pub struct Trigger {
3982            /// The producer must specify this name to activate the trigger.
3983            #[prost(string, optional, tag="1")]
3984            pub name: ::core::option::Option<::prost::alloc::string::String>,
3985            /// An std::regex that will match the producer that can activate this
3986            /// trigger. This is optional. If unset any producers can activate this
3987            /// trigger.
3988            #[prost(string, optional, tag="2")]
3989            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3990            /// After a trigger is received either in START_TRACING or STOP_TRACING
3991            /// mode then the trace will end |stop_delay_ms| after triggering.
3992            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3993            /// snapshot.
3994            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3995            /// based on wall-clock, counting also time in suspend.
3996            #[prost(uint32, optional, tag="3")]
3997            pub stop_delay_ms: ::core::option::Option<u32>,
3998            /// Limits the number of traces this trigger can start/stop in a rolling
3999            /// 24 hour window. If this field is unset or zero, no limit is applied and
4000            /// activiation of this trigger *always* starts/stops the trace.
4001            #[prost(uint32, optional, tag="4")]
4002            pub max_per_24_h: ::core::option::Option<u32>,
4003            /// A value between 0 and 1 which encodes the probability of skipping a
4004            /// trigger with this name. This is useful for reducing the probability
4005            /// of high-frequency triggers from dominating trace finaization. If this
4006            /// field is unset or zero, the trigger will *never* be skipped. If this
4007            /// field is greater than or equal to 1, this trigger will *always* be
4008            /// skipped i.e. it will be as if this trigger was never included in the
4009            /// first place.
4010            /// This probability check is applied *before* any other limits. For
4011            /// example, if |max_per_24_h| is also set, first we will check if the
4012            /// probability bar is met and only then will we check the |max_per_24_h|
4013            /// limit.
4014            #[prost(double, optional, tag="5")]
4015            pub skip_probability: ::core::option::Option<f64>,
4016        }
4017        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4018        #[repr(i32)]
4019        pub enum TriggerMode {
4020            Unspecified = 0,
4021            /// When this mode is chosen, data sources are not started until one of the
4022            /// |triggers| are received. This supports early initialization and fast
4023            /// starting of the tracing system. On triggering, the session will then
4024            /// record for |stop_delay_ms|. However if no trigger is seen
4025            /// after |trigger_timeout_ms| the session will be stopped and no data will
4026            /// be returned.
4027            StartTracing = 1,
4028            /// When this mode is chosen, the session will be started via the normal
4029            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4030            /// the session will be stopped after |trigger_timeout_ms| and no data will
4031            /// be returned. However if triggered the trace will stop after
4032            /// |stop_delay_ms| and any data in the buffer will be returned to the
4033            /// consumer.
4034            StopTracing = 2,
4035            /// When this mode is chosen, this causes a snapshot of the current tracing
4036            /// session to be created after |stop_delay_ms| while the current tracing
4037            /// session continues undisturbed (% an extra flush). This mode can be
4038            /// used only when the tracing session is handled by the "perfetto" cmdline
4039            /// client (which is true in 90% of cases). Part of the business logic
4040            /// necessary for this behavior, and ensuing file handling, lives in
4041            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4042            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4043            /// consumer is supposed to call CloneSession() itself after the event.
4044            /// Use use_clone_snapshot_if_available=true when targeting older versions
4045            /// of perfetto.
4046            CloneSnapshot = 4,
4047        }
4048        impl TriggerMode {
4049            /// String value of the enum field names used in the ProtoBuf definition.
4050            ///
4051            /// The values are not transformed in any way and thus are considered stable
4052            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4053            pub fn as_str_name(&self) -> &'static str {
4054                match self {
4055                    TriggerMode::Unspecified => "UNSPECIFIED",
4056                    TriggerMode::StartTracing => "START_TRACING",
4057                    TriggerMode::StopTracing => "STOP_TRACING",
4058                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4059                }
4060            }
4061        }
4062    }
4063    /// Configuration for trace contents that reference earlier trace data. For
4064    /// example, a data source might intern strings, and emit packets containing
4065    /// {interned id : string} pairs. Future packets from that data source can then
4066    /// use the interned ids instead of duplicating the raw string contents. The
4067    /// trace parser will then need to use that interning table to fully interpret
4068    /// the rest of the trace.
4069    #[derive(Clone, PartialEq, ::prost::Message)]
4070    pub struct IncrementalStateConfig {
4071        /// If nonzero, notify eligible data sources to clear their incremental state
4072        /// periodically, with the given period. The notification is sent only to
4073        /// data sources that have |handles_incremental_state_clear| set in their
4074        /// DataSourceDescriptor. The notification requests that the data source
4075        /// stops referring to past trace contents. This is particularly useful when
4076        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4077        /// trace data.
4078        ///
4079        /// Warning: this time-based global clearing is likely to be removed in the
4080        /// future, to be replaced with a smarter way of sending the notifications
4081        /// only when necessary.
4082        #[prost(uint32, optional, tag="1")]
4083        pub clear_period_ms: ::core::option::Option<u32>,
4084    }
4085    /// Android-only. Not for general use. If set, saves the trace into an
4086    /// incident. This field is read by perfetto_cmd, rather than the tracing
4087    /// service. This field must be set when passing the --upload flag to
4088    /// perfetto_cmd.
4089    ///
4090    /// In this message, either:
4091    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4092    ///     must be set.
4093    ///   * |skip_incidentd| must be explicitly set to true.
4094    #[derive(Clone, PartialEq, ::prost::Message)]
4095    pub struct IncidentReportConfig {
4096        #[prost(string, optional, tag="1")]
4097        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4098        #[prost(string, optional, tag="2")]
4099        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4100        /// Level of filtering in the requested incident. See |Destination| in
4101        /// frameworks/base/core/proto/android/privacy.proto.
4102        #[prost(int32, optional, tag="3")]
4103        pub privacy_level: ::core::option::Option<i32>,
4104        /// If true, then skips saving the trace to incidentd.
4105        ///
4106        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4107        /// or when we explicitly don't want traces to go to incidentd even when they
4108        /// usually would (e.g. configs deployed using statsd but only used for
4109        /// inclusion in bugreports using |bugreport_score|).
4110        ///
4111        /// The motivation for having this flag, instead of just not setting
4112        /// |incident_report_config|, is prevent accidents where
4113        /// |incident_report_config| is omitted by mistake.
4114        #[prost(bool, optional, tag="5")]
4115        pub skip_incidentd: ::core::option::Option<bool>,
4116        /// If true, do not write the trace into dropbox (i.e. incident only).
4117        /// Otherwise, write to both dropbox and incident.
4118        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4119        #[deprecated]
4120        #[prost(bool, optional, tag="4")]
4121        pub skip_dropbox: ::core::option::Option<bool>,
4122    }
4123    /// When set applies a post-filter to the trace contents using the filter
4124    /// provided. The filter is applied at ReadBuffers() time and works both in the
4125    /// case of IPC readback and write_into_file. This filter can be generated
4126    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4127    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4128    /// design.
4129    ///
4130    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4131    /// Android T with a different field number. Updated in Android U with a new
4132    /// bytecode version which supports string filtering.
4133    ///
4134    /// =========================
4135    /// Filter bytecode.
4136    /// =========================
4137    #[derive(Clone, PartialEq, ::prost::Message)]
4138    pub struct TraceFilter {
4139        /// The bytecode as implemented in Android T.
4140        #[prost(bytes="vec", optional, tag="1")]
4141        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4142        /// The bytecode as implemented in Android U. Adds support for string
4143        /// filtering.
4144        #[prost(bytes="vec", optional, tag="2")]
4145        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4146        #[prost(message, optional, tag="3")]
4147        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4148        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4149        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4150        /// versions ignore this field; new versions apply it.
4151        ///
4152        /// The motivation for this is that adding new opcodes in a backwards
4153        /// compatible way while also minimizing config size is hard. Instead, the
4154        /// overlay mechanism allows us to "patch" specific fields in the original
4155        /// bytecode_v2 with new semantics.
4156        ///
4157        /// See RFC 0011-subset-string-filter-rules.md for more info.
4158        ///
4159        /// Note:
4160        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4161        /// markers), this overlay uses a triplet format with explicit indices:
4162        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4163        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4164        /// Entries must be sorted by (msg_index, field_id).
4165        ///
4166        /// The parser processes bytecode_v2 and this overlay simultaneously:
4167        ///   - any field not mentioned in the overlay is parsed as usual
4168        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4169        ///     with its overlay value
4170        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4171        ///     overlay, the bytecode_v2 value is ignored.
4172        ///
4173        /// Introduced in: Perfetto v54.
4174        #[prost(bytes="vec", optional, tag="4")]
4175        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4176        /// String filter chain for Perfetto v54+. Rules in this chain either
4177        /// overwrite rules in string_filter_chain (if the name matches) or are
4178        /// appended (if the name doesn't match). This allows modifying existing
4179        /// rules (e.g., changing policy) without duplicating the entire chain.
4180        /// Rules without a name are always appended.
4181        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4182        /// Introduced in: Perfetto v54.
4183        #[prost(message, optional, tag="5")]
4184        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4185    }
4186    /// Nested message and enum types in `TraceFilter`.
4187    pub mod trace_filter {
4188        /// A rule specifies how strings should be filtered.
4189        #[derive(Clone, PartialEq, ::prost::Message)]
4190        pub struct StringFilterRule {
4191            /// The policy (i.e. algorithm) dictating how strings matching this rule
4192            /// should be handled.
4193            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4194            pub policy: ::core::option::Option<i32>,
4195            /// The regex pattern used to match against each string.
4196            #[prost(string, optional, tag="2")]
4197            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4198            /// The string which should appear after the tgid in atrace tracepoint
4199            /// strings.
4200            #[prost(string, optional, tag="3")]
4201            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4202            /// Optional name for the rule. When merging chains (e.g. via
4203            /// string_filter_chain_v54), rules with matching names in the newer chain
4204            /// will overwrite rules in the base chain. Rules without a name (empty or
4205            /// unset) are always treated as distinct and will be appended.
4206            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4207            /// Introduced in: Perfetto v54.
4208            #[prost(string, optional, tag="4")]
4209            pub name: ::core::option::Option<::prost::alloc::string::String>,
4210            /// The semantic types this rule applies to.
4211            ///
4212            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
4213            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
4214            /// - If non-empty, the rule applies only to fields whose semantic type
4215            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
4216            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
4217            ///
4218            /// Examples:
4219            ///    semantic_type: []           -> matches only UNSPECIFIED fields
4220            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
4221            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
4222            ///
4223            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4224            /// Introduced in: Perfetto v54.
4225            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
4226            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
4227        }
4228        /// A chain is a list of rules which string will be sequentially checked
4229        /// against.
4230        #[derive(Clone, PartialEq, ::prost::Message)]
4231        pub struct StringFilterChain {
4232            #[prost(message, repeated, tag="1")]
4233            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4234        }
4235        // =========================
4236        // String filtering
4237        // =========================
4238
4239        // The principles and terminology of string filtering is heavily inspired by
4240        // iptables. A "rule" decide how strings should be filtered. Each rule
4241        // contains a "policy" which indicates the algorithm to use for filtering.
4242        // A "chain" is a list of rules which will be sequentially checked against
4243        // each string.
4244        //
4245        // The first rule which applies to the string terminates filtering for that
4246        // string. If no rules apply, the string is left unchanged.
4247
4248        /// A policy specifies which algorithm should be used for filtering the
4249        /// string.
4250        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4251        #[repr(i32)]
4252        pub enum StringFilterPolicy {
4253            SfpUnspecified = 0,
4254            /// Tries to match the string field against |regex_pattern|. If it
4255            /// matches, all matching groups are "redacted" (i.e. replaced with a
4256            /// constant string) and filtering is terminated (i.e. no further rules are
4257            /// checked). If it doesn't match, the string is left unchanged and the
4258            /// next rule in chain is considered.
4259            SfpMatchRedactGroups = 1,
4260            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4261            /// checking the regex. Specifically, it tries to parse the string field as
4262            /// an atrace tracepoint and checks if the post-tgid field starts with
4263            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4264            /// this check succeeds.
4265            SfpAtraceMatchRedactGroups = 2,
4266            /// Tries to match the string field against |regex_pattern|. If it
4267            /// matches, filtering is terminated (i.e. no further rules are checked).
4268            /// If it doesn't match, the string is left unchanged and the next rule in
4269            /// chain is considered.
4270            SfpMatchBreak = 3,
4271            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4272            /// the regex. Specifically, it tries to parse the string field as an
4273            /// atrace tracepoint and checks if the post-tgid field starts with
4274            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4275            /// this check succeeds.
4276            SfpAtraceMatchBreak = 4,
4277            /// Tries to repeatedly search (i.e. find substrings of) the string field
4278            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4279            /// replaced with a constant string). Once there are no further matches,
4280            /// filtering is terminated (i.e. no further rules are checked).
4281            ///
4282            /// Note that this is policy is a "search" policy not a "match" policy
4283            /// unlike the above policies:
4284            ///   * Match policies require matching the full string i.e. there is an
4285            ///     implicit leading `^` and trailing `$`.
4286            ///   * Search policies perform repeated partial matching of the string
4287            ///     e.g.
4288            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4289            ///       - Pattern: `foo=(\d+)`
4290            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4291            ///     where P6O is the redaction string
4292            ///
4293            /// All of this is only performed after some pre-work where we try to parse
4294            /// the string field as an atrace tracepoint and check if the post-tgid
4295            /// field starts with |atrace_post_tgid_starts_with|.
4296            ///
4297            /// If there are no partial matches, the string is left unchanged and the
4298            /// next rule in chain is considered.
4299            SfpAtraceRepeatedSearchRedactGroups = 5,
4300        }
4301        impl StringFilterPolicy {
4302            /// String value of the enum field names used in the ProtoBuf definition.
4303            ///
4304            /// The values are not transformed in any way and thus are considered stable
4305            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4306            pub fn as_str_name(&self) -> &'static str {
4307                match self {
4308                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4309                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4310                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4311                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4312                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4313                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4314                }
4315            }
4316        }
4317    }
4318    /// Android-only. Not for general use. If set, reports the trace to the
4319    /// Android framework. This field is read by perfetto_cmd, rather than the
4320    /// tracing service. This field must be set when passing the --upload flag to
4321    /// perfetto_cmd.
4322    ///
4323    /// In this message, either:
4324    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4325    ///   * |skip_reporting| must be explicitly set to true.
4326    #[derive(Clone, PartialEq, ::prost::Message)]
4327    pub struct AndroidReportConfig {
4328        #[prost(string, optional, tag="1")]
4329        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4330        #[prost(string, optional, tag="2")]
4331        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4332        /// If true, then skips reporting the trace to Android framework.
4333        ///
4334        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4335        /// or when we explicitly don't want to report traces to the framework even
4336        /// when they usually would (e.g. configs deployed using statsd but only
4337        /// used for inclusion in bugreports using |bugreport_score|).
4338        ///
4339        /// The motivation for having this flag, instead of just not setting
4340        /// |framework_report_config|, is prevent accidents where
4341        /// |framework_report_config| is omitted by mistake.
4342        #[prost(bool, optional, tag="3")]
4343        pub skip_report: ::core::option::Option<bool>,
4344        /// If true, will direct the Android framework to read the data in trace
4345        /// file and pass it to the reporter class over a pipe instead of passing
4346        /// the file descriptor directly.
4347        ///
4348        /// This flag is needed because the Android test framework does not
4349        /// currently support priv-app helper apps (in terms of SELinux) and we
4350        /// really don't want to add an allow rule for untrusted_app to receive
4351        /// trace fds.
4352        ///
4353        /// Because of this, we instead will direct the framework to create a new
4354        /// pipe and pass this to the reporter process instead. As the pipe is
4355        /// created by the framework, we won't have any problems with SELinux
4356        /// (system_server is already allowed to pass pipe fds, even
4357        /// to untrusted apps).
4358        ///
4359        /// As the name suggests this option *MUST* only be used for testing.
4360        /// Note that the framework will reject (and drop) files which are too
4361        /// large both for simplicity and to be minimize the amount of data we
4362        /// pass to a non-priv app (note that the framework will still check
4363        /// manifest permissions even though SELinux permissions are worked around).
4364        #[prost(bool, optional, tag="4")]
4365        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4366    }
4367    /// If set, delays the start of tracing by a random duration. The duration is
4368    /// chosen from a uniform distribution between the specified minimum and
4369    /// maximum.
4370    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4371    /// not work if you communicate with traced directly over the consumer API.
4372    /// Introduced in Android T.
4373    #[derive(Clone, PartialEq, ::prost::Message)]
4374    pub struct CmdTraceStartDelay {
4375        #[prost(uint32, optional, tag="1")]
4376        pub min_delay_ms: ::core::option::Option<u32>,
4377        #[prost(uint32, optional, tag="2")]
4378        pub max_delay_ms: ::core::option::Option<u32>,
4379    }
4380    /// When non-empty, ensures that for a each semaphore named `name at most
4381    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4382    /// minimum of all values specified by this config or any already-running
4383    /// session) can be be running.
4384    ///
4385    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4386    /// and the tracing session will not be started (or elgible to start in
4387    /// the case of deferred sessions).
4388    ///
4389    /// This is easiest to explain with an example. Suppose the tracing service has
4390    /// the following active tracing sessions:
4391    ///    S1 = [{name=foo, max_other_session_count=2},
4392    ///          {name=bar, max_other_session_count=0}]
4393    ///    S2 = [{name=foo, max_other_session_count=1},
4394    ///          {name=baz, max_other_session_count=1}]
4395    ///
4396    /// Then, for a new session, the following would be the expected behaviour of
4397    /// EnableSession given the state of `session_semaphores`.
4398    ///    Q: session_semaphores = []
4399    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4400    ///       no matter the state of any other tracing session.
4401    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4402    ///    A: Allowed because both S2 and this config specify
4403    ///       max_other_session_count=1 for baz.
4404    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4405    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4406    ///       takes that slot.
4407    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4408    ///    A: Denied because S1 takes the the slot specified by both S1 and
4409    ///       this config.
4410    ///
4411    /// Introduced in 24Q3 (Android V).
4412    #[derive(Clone, PartialEq, ::prost::Message)]
4413    pub struct SessionSemaphore {
4414        /// The name of the semaphore. Acts as a unique identifier across all
4415        /// tracing sessions (including the one being started).
4416        #[prost(string, optional, tag="1")]
4417        pub name: ::core::option::Option<::prost::alloc::string::String>,
4418        /// The maximum number of *other* sesssions which specify the same semaphore
4419        /// which can be active. The minimum of this value across all tracing
4420        /// sessions and the value specified by the config is used when deciding
4421        /// whether the tracing session can be started.
4422        #[prost(uint64, optional, tag="2")]
4423        pub max_other_session_count: ::core::option::Option<u64>,
4424    }
4425    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4426    #[repr(i32)]
4427    pub enum LockdownModeOperation {
4428        LockdownUnchanged = 0,
4429        LockdownClear = 1,
4430        LockdownSet = 2,
4431    }
4432    impl LockdownModeOperation {
4433        /// String value of the enum field names used in the ProtoBuf definition.
4434        ///
4435        /// The values are not transformed in any way and thus are considered stable
4436        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4437        pub fn as_str_name(&self) -> &'static str {
4438            match self {
4439                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4440                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4441                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4442            }
4443        }
4444    }
4445    /// Compress trace with the given method. Best effort.
4446    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4447    #[repr(i32)]
4448    pub enum CompressionType {
4449        Unspecified = 0,
4450        Deflate = 1,
4451    }
4452    impl CompressionType {
4453        /// String value of the enum field names used in the ProtoBuf definition.
4454        ///
4455        /// The values are not transformed in any way and thus are considered stable
4456        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4457        pub fn as_str_name(&self) -> &'static str {
4458            match self {
4459                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4460                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4461            }
4462        }
4463    }
4464    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4465    #[repr(i32)]
4466    pub enum StatsdLogging {
4467        Unspecified = 0,
4468        Enabled = 1,
4469        Disabled = 2,
4470    }
4471    impl StatsdLogging {
4472        /// String value of the enum field names used in the ProtoBuf definition.
4473        ///
4474        /// The values are not transformed in any way and thus are considered stable
4475        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4476        pub fn as_str_name(&self) -> &'static str {
4477            match self {
4478                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4479                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4480                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4481            }
4482        }
4483    }
4484    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4485    #[repr(i32)]
4486    pub enum WriteFlushMode {
4487        /// Same as WRITE_FLUSH_AUTO.
4488        WriteFlushUnspecified = 0,
4489        /// Default mode. The service automatically determines the flush frequency
4490        /// to balance performance and data freshness:
4491        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
4492        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
4493        ///     issued every 5s.
4494        /// 2) If file_write_period_ms > 5s:
4495        ///     A flush is issued before every periodic write into the file.
4496        WriteFlushAuto = 1,
4497        // The following modes are intended for advanced usage and not recommended
4498        // for general use.
4499
4500        /// Do not flush buffers before periodic writes into the file.
4501        /// Use this mode if you want to minimize the performance impact of flushes
4502        /// and can tolerate potentially missing the most recent data in the trace
4503        /// file until the end of the session or an explicit flush.
4504        /// When this mode is selected, |flush_period_ms| is respected.
4505        WriteFlushDisabled = 2,
4506        /// Issue a flush before every periodic write into the file.
4507        /// This ensures that each write into the file contains the most up-to-date
4508        /// data from all data sources, but may have a higher performance overhead.
4509        WriteFlushEnabled = 3,
4510    }
4511    impl WriteFlushMode {
4512        /// String value of the enum field names used in the ProtoBuf definition.
4513        ///
4514        /// The values are not transformed in any way and thus are considered stable
4515        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4516        pub fn as_str_name(&self) -> &'static str {
4517            match self {
4518                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
4519                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
4520                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
4521                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
4522            }
4523        }
4524    }
4525    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4526    #[repr(i32)]
4527    pub enum FFlushMode {
4528        /// Default: same as FFLUSH_DISABLED.
4529        FflushUnspecified = 0,
4530        /// Do not explicitly sync the file to storage after each write pass.
4531        FflushDisabled = 1,
4532        /// Explicitly sync the file to storage (via fdatasync) after each periodic
4533        /// write pass. Increases data durability at the cost of higher disk I/O
4534        /// overhead.
4535        FflushEnabled = 2,
4536    }
4537    impl FFlushMode {
4538        /// String value of the enum field names used in the ProtoBuf definition.
4539        ///
4540        /// The values are not transformed in any way and thus are considered stable
4541        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4542        pub fn as_str_name(&self) -> &'static str {
4543            match self {
4544                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
4545                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
4546                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
4547            }
4548        }
4549    }
4550}
4551// End of protos/perfetto/config/trace_config.proto
4552
4553// Begin of protos/perfetto/common/system_info.proto
4554
4555#[derive(Clone, PartialEq, ::prost::Message)]
4556pub struct Utsname {
4557    #[prost(string, optional, tag="1")]
4558    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4559    #[prost(string, optional, tag="2")]
4560    pub version: ::core::option::Option<::prost::alloc::string::String>,
4561    #[prost(string, optional, tag="3")]
4562    pub release: ::core::option::Option<::prost::alloc::string::String>,
4563    #[prost(string, optional, tag="4")]
4564    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4565}
4566/// Next id: 17
4567#[derive(Clone, PartialEq, ::prost::Message)]
4568pub struct SystemInfo {
4569    #[prost(message, optional, tag="1")]
4570    pub utsname: ::core::option::Option<Utsname>,
4571    #[prost(string, optional, tag="2")]
4572    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4573    /// The manufacturer of the product/hardware.
4574    /// Source : "ro.product.manufacturer"
4575    /// Introduced after Android W in Nov 2024 and is not supported on older
4576    /// versions.
4577    #[prost(string, optional, tag="14")]
4578    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4579    /// The SoC model from which trace is collected
4580    #[prost(string, optional, tag="9")]
4581    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4582    /// The guest SoC model from which trace is collected in case of VMs
4583    #[prost(string, optional, tag="13")]
4584    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4585    /// The hardware reversion from android device
4586    #[prost(string, optional, tag="10")]
4587    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4588    /// The storage component from android_device. This field has been introduced
4589    /// after Android W in Aug 2024 and is not supported on older versions.
4590    #[prost(string, optional, tag="11")]
4591    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4592    /// The RAM component information from android device. This field has been
4593    /// introduced after Android W in Aug 2024 and is not supported on older
4594    /// versions.
4595    #[prost(string, optional, tag="12")]
4596    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4597    /// The serial console information from android device.
4598    #[prost(string, optional, tag="15")]
4599    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4600    /// The version of traced (the same returned by `traced --version`).
4601    /// This is a human readable string with and its format varies depending on
4602    /// the build system and the repo (standalone vs AOSP).
4603    /// This is intended for human debugging only.
4604    #[prost(string, optional, tag="4")]
4605    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4606    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4607    /// Introduced in Android T.
4608    #[prost(uint64, optional, tag="5")]
4609    pub android_sdk_version: ::core::option::Option<u64>,
4610    /// Kernel page size - sysconf(_SC_PAGESIZE).
4611    #[prost(uint32, optional, tag="6")]
4612    pub page_size: ::core::option::Option<u32>,
4613    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4614    /// Might be different to the number of online cpus.
4615    /// Introduced in perfetto v44.
4616    #[prost(uint32, optional, tag="8")]
4617    pub num_cpus: ::core::option::Option<u32>,
4618    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4619    /// Introduced in v38 / Android V.
4620    #[prost(int32, optional, tag="7")]
4621    pub timezone_off_mins: ::core::option::Option<i32>,
4622    /// Ticks per second - sysconf(_SC_CLK_TCK).
4623    /// Not serialised as of perfetto v44.
4624    #[prost(int64, optional, tag="3")]
4625    pub hz: ::core::option::Option<i64>,
4626    /// The size of the system RAM in bytes.
4627    ///
4628    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
4629    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
4630    ///
4631    /// Introduced in perfetto v54 / Android 26Q1+.
4632    #[prost(uint64, optional, tag="16")]
4633    pub system_ram_bytes: ::core::option::Option<u64>,
4634}
4635// End of protos/perfetto/common/system_info.proto
4636
4637// Begin of protos/perfetto/common/trace_stats.proto
4638
4639/// Statistics for the internals of the tracing service.
4640///
4641/// Next id: 19.
4642#[derive(Clone, PartialEq, ::prost::Message)]
4643pub struct TraceStats {
4644    /// Stats for the TraceBuffer(s) of the current trace session.
4645    #[prost(message, repeated, tag="1")]
4646    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4647    /// The thresholds of each the `writer_stats` histogram buckets. This is
4648    /// emitted only once as all WriterStats share the same bucket layout.
4649    /// This field has the same cardinality of the
4650    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4651    /// (The -1 is because the last overflow bucket is not reported in the _def).
4652    /// An array of values [10, 100, 1000] in the _def array means that there are
4653    /// four buckets (3 + the implicit overflow bucket):
4654    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4655    #[prost(int64, repeated, packed="false", tag="17")]
4656    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4657    #[prost(message, repeated, tag="18")]
4658    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4659    /// Num. producers connected (whether they are involved in the current tracing
4660    /// session or not).
4661    #[prost(uint32, optional, tag="2")]
4662    pub producers_connected: ::core::option::Option<u32>,
4663    /// Num. producers ever seen for all trace sessions since startup (it's a good
4664    /// proxy for inferring num. producers crashed / killed).
4665    #[prost(uint64, optional, tag="3")]
4666    pub producers_seen: ::core::option::Option<u64>,
4667    /// Num. data sources registered for all trace sessions.
4668    #[prost(uint32, optional, tag="4")]
4669    pub data_sources_registered: ::core::option::Option<u32>,
4670    /// Num. data sources ever seen for all trace sessions since startup.
4671    #[prost(uint64, optional, tag="5")]
4672    pub data_sources_seen: ::core::option::Option<u64>,
4673    /// Num. concurrently active tracing sessions.
4674    #[prost(uint32, optional, tag="6")]
4675    pub tracing_sessions: ::core::option::Option<u32>,
4676    /// Num. buffers for all tracing session (not just the current one). This will
4677    /// be >= buffer_stats.size(), because the latter is only about the current
4678    /// session.
4679    #[prost(uint32, optional, tag="7")]
4680    pub total_buffers: ::core::option::Option<u32>,
4681    // The fields below have been introduced in Android Q.
4682
4683    /// Num. chunks that were discarded by the service before attempting to commit
4684    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4685    #[prost(uint64, optional, tag="8")]
4686    pub chunks_discarded: ::core::option::Option<u64>,
4687    /// Num. patches that were discarded by the service before attempting to apply
4688    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4689    #[prost(uint64, optional, tag="9")]
4690    pub patches_discarded: ::core::option::Option<u64>,
4691    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4692    /// is a bug in the producer.
4693    #[prost(uint64, optional, tag="10")]
4694    pub invalid_packets: ::core::option::Option<u64>,
4695    #[prost(message, optional, tag="11")]
4696    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4697    /// Count of Flush() requests (either from the Consumer, or self-induced
4698    /// periodic flushes). The final Flush() is also included in the count.
4699    #[prost(uint64, optional, tag="12")]
4700    pub flushes_requested: ::core::option::Option<u64>,
4701    /// The count of the Flush() requests that were completed successfully.
4702    /// In a well behaving trace this should always be == `flush_requests`.
4703    #[prost(uint64, optional, tag="13")]
4704    pub flushes_succeeded: ::core::option::Option<u64>,
4705    /// The count of the Flush() requests that failed (in most timed out).
4706    /// In a well behaving trace this should always be == 0.
4707    #[prost(uint64, optional, tag="14")]
4708    pub flushes_failed: ::core::option::Option<u64>,
4709    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4710    pub final_flush_outcome: ::core::option::Option<i32>,
4711}
4712/// Nested message and enum types in `TraceStats`.
4713pub mod trace_stats {
4714    /// From TraceBuffer::Stats.
4715    ///
4716    /// Next id: 22.
4717    #[derive(Clone, PartialEq, ::prost::Message)]
4718    pub struct BufferStats {
4719        /// Size of the circular buffer in bytes.
4720        #[prost(uint64, optional, tag="12")]
4721        pub buffer_size: ::core::option::Option<u64>,
4722        /// Num. bytes written into the circular buffer, including chunk headers.
4723        #[prost(uint64, optional, tag="1")]
4724        pub bytes_written: ::core::option::Option<u64>,
4725        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4726        #[prost(uint64, optional, tag="13")]
4727        pub bytes_overwritten: ::core::option::Option<u64>,
4728        /// Total size of chunks that were fully read from the circular buffer by the
4729        /// consumer. This may not be equal to |bytes_written| either in the middle
4730        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4731        /// size of the chunks read from the buffer, including chunk headers, which
4732        /// will be different from the total size of packets returned to the
4733        /// consumer.
4734        ///
4735        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4736        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4737        /// adding the difference of |padding_bytes_written| and
4738        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4739        /// Note that this represents the total size of buffered data in the buffer,
4740        /// yet this data may be spread non-contiguously through the buffer and may
4741        /// be overridden before the utilization reaches 100%.
4742        #[prost(uint64, optional, tag="14")]
4743        pub bytes_read: ::core::option::Option<u64>,
4744        /// Num. bytes that were allocated as padding between chunks in the circular
4745        /// buffer.
4746        #[prost(uint64, optional, tag="15")]
4747        pub padding_bytes_written: ::core::option::Option<u64>,
4748        /// Num. of padding bytes that were removed from the circular buffer when
4749        /// they were overwritten.
4750        ///
4751        /// The difference between |padding_bytes_written| and
4752        /// |padding_bytes_cleared| denotes the total size of padding currently
4753        /// present in the buffer.
4754        #[prost(uint64, optional, tag="16")]
4755        pub padding_bytes_cleared: ::core::option::Option<u64>,
4756        /// Num. chunks (!= packets) written into the buffer.
4757        #[prost(uint64, optional, tag="2")]
4758        pub chunks_written: ::core::option::Option<u64>,
4759        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4760        /// the same chunk with additional packets appended to the end.
4761        #[prost(uint64, optional, tag="10")]
4762        pub chunks_rewritten: ::core::option::Option<u64>,
4763        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4764        #[prost(uint64, optional, tag="3")]
4765        pub chunks_overwritten: ::core::option::Option<u64>,
4766        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4767        /// is configured with FillPolicy == DISCARD.
4768        #[prost(uint64, optional, tag="18")]
4769        pub chunks_discarded: ::core::option::Option<u64>,
4770        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4771        /// the consumer. This may not be equal to |chunks_written| either in the
4772        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4773        #[prost(uint64, optional, tag="17")]
4774        pub chunks_read: ::core::option::Option<u64>,
4775        /// Num. chunks that were committed out of order.
4776        #[prost(uint64, optional, tag="11")]
4777        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4778        /// Num. times the ring buffer wrapped around.
4779        #[prost(uint64, optional, tag="4")]
4780        pub write_wrap_count: ::core::option::Option<u64>,
4781        /// Num. out-of-band (OOB) patches that succeeded.
4782        #[prost(uint64, optional, tag="5")]
4783        pub patches_succeeded: ::core::option::Option<u64>,
4784        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4785        #[prost(uint64, optional, tag="6")]
4786        pub patches_failed: ::core::option::Option<u64>,
4787        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4788        /// successful packet read.
4789        #[prost(uint64, optional, tag="7")]
4790        pub readaheads_succeeded: ::core::option::Option<u64>,
4791        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4792        /// Note that a small number > 0 is totally expected: occasionally, when
4793        /// issuing a read, the very last packet in a sequence might be incomplete
4794        /// (because the producer is still writing it while we read). The read will
4795        /// stop at that point, for that sequence, increasing this counter.
4796        #[prost(uint64, optional, tag="8")]
4797        pub readaheads_failed: ::core::option::Option<u64>,
4798        /// Num. of violations of the SharedMemoryABI found while writing or reading
4799        /// the buffer. This is an indication of either a bug in the producer(s) or
4800        /// malicious producer(s).
4801        #[prost(uint64, optional, tag="9")]
4802        pub abi_violations: ::core::option::Option<u64>,
4803        // The fields below have been introduced in Android R.
4804
4805        /// Num. of times the service detected packet loss on a trace writer
4806        /// sequence. This is usually caused by exhaustion of available chunks in the
4807        /// writer process's SMB. Note that this relies on the client's TraceWriter
4808        /// indicating this loss to the service -- packets lost for other reasons are
4809        /// not reflected in this stat.
4810        #[prost(uint64, optional, tag="19")]
4811        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4812        #[prost(message, optional, tag="21")]
4813        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
4814    }
4815    /// Nested message and enum types in `BufferStats`.
4816    pub mod buffer_stats {
4817        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
4818        /// Only populated when the buffer is configured with shadow mode.
4819        #[derive(Clone, PartialEq, ::prost::Message)]
4820        pub struct ShadowBufferStats {
4821            /// Total num. packets read. This is not affected by capping of the hasher
4822            /// to 32K elements.
4823            #[prost(uint64, optional, tag="1")]
4824            pub packets_seen: ::core::option::Option<u64>,
4825            // The stats below are keps only for 32k packets. After reading 32K
4826            // packets hashes are randomly evicted and that might lead to slightly
4827            // inconsistent results.
4828
4829            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
4830            #[prost(uint64, optional, tag="2")]
4831            pub packets_in_both: ::core::option::Option<u64>,
4832            /// Num. packets found only in V1 buffer but not in V2.
4833            #[prost(uint64, optional, tag="3")]
4834            pub packets_only_v1: ::core::option::Option<u64>,
4835            /// Num. packets found only in V2 buffer but not in V1.
4836            #[prost(uint64, optional, tag="4")]
4837            pub packets_only_v2: ::core::option::Option<u64>,
4838            /// Num. patch operations attempted.
4839            #[prost(uint64, optional, tag="5")]
4840            pub patches_attempted: ::core::option::Option<u64>,
4841            /// Num. patches that succeeded on V1 buffer.
4842            #[prost(uint64, optional, tag="6")]
4843            pub v1_patches_succeeded: ::core::option::Option<u64>,
4844            /// Num. patches that succeeded on V2 buffer.
4845            #[prost(uint64, optional, tag="7")]
4846            pub v2_patches_succeeded: ::core::option::Option<u64>,
4847        }
4848    }
4849    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4850    /// visible as a unique sequence ID in the trace.
4851    #[derive(Clone, PartialEq, ::prost::Message)]
4852    pub struct WriterStats {
4853        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4854        /// correlate the stats with the actual packet types.
4855        #[prost(uint64, optional, tag="1")]
4856        pub sequence_id: ::core::option::Option<u64>,
4857        /// The buffer index (0..N, as defined in the TraceConfig).
4858        #[prost(uint32, optional, tag="4")]
4859        pub buffer: ::core::option::Option<u32>,
4860        /// These two arrays have the same cardinality and match the cardinality of
4861        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4862        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4863        /// for each bucket.
4864        #[prost(uint64, repeated, tag="2")]
4865        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4866        #[prost(int64, repeated, tag="3")]
4867        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4868    }
4869    /// This is set only when the TraceConfig specifies a TraceFilter.
4870    #[derive(Clone, PartialEq, ::prost::Message)]
4871    pub struct FilterStats {
4872        #[prost(uint64, optional, tag="1")]
4873        pub input_packets: ::core::option::Option<u64>,
4874        #[prost(uint64, optional, tag="2")]
4875        pub input_bytes: ::core::option::Option<u64>,
4876        #[prost(uint64, optional, tag="3")]
4877        pub output_bytes: ::core::option::Option<u64>,
4878        #[prost(uint64, optional, tag="4")]
4879        pub errors: ::core::option::Option<u64>,
4880        #[prost(uint64, optional, tag="5")]
4881        pub time_taken_ns: ::core::option::Option<u64>,
4882        /// The number of bytes discarded by the filter (i.e. output - input).
4883        /// The array has one entry for each buffer defined in the config (unless no
4884        /// packets for that buffer were seen and hence filtered).
4885        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4886        /// (output_bytes - input_bytes) because the filter might also discard
4887        /// server-generated synthetic packets, that have no buffer index.
4888        #[prost(uint64, repeated, packed="false", tag="20")]
4889        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4890    }
4891    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4892    #[repr(i32)]
4893    pub enum FinalFlushOutcome {
4894        FinalFlushUnspecified = 0,
4895        FinalFlushSucceeded = 1,
4896        FinalFlushFailed = 2,
4897    }
4898    impl FinalFlushOutcome {
4899        /// String value of the enum field names used in the ProtoBuf definition.
4900        ///
4901        /// The values are not transformed in any way and thus are considered stable
4902        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4903        pub fn as_str_name(&self) -> &'static str {
4904            match self {
4905                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4906                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4907                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4908            }
4909        }
4910    }
4911}
4912// End of protos/perfetto/common/trace_stats.proto
4913
4914// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4915
4916#[derive(Clone, PartialEq, ::prost::Message)]
4917pub struct AndroidGameInterventionList {
4918    #[prost(message, repeated, tag="1")]
4919    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4920    /// True when at least one error occurred when parsing
4921    /// game_mode_intervention.list
4922    #[prost(bool, optional, tag="2")]
4923    pub parse_error: ::core::option::Option<bool>,
4924    /// Failed to open / read game_mode_intervention.list
4925    #[prost(bool, optional, tag="3")]
4926    pub read_error: ::core::option::Option<bool>,
4927}
4928/// Nested message and enum types in `AndroidGameInterventionList`.
4929pub mod android_game_intervention_list {
4930    #[derive(Clone, PartialEq, ::prost::Message)]
4931    pub struct GameModeInfo {
4932        #[prost(uint32, optional, tag="1")]
4933        pub mode: ::core::option::Option<u32>,
4934        #[prost(bool, optional, tag="2")]
4935        pub use_angle: ::core::option::Option<bool>,
4936        #[prost(float, optional, tag="3")]
4937        pub resolution_downscale: ::core::option::Option<f32>,
4938        #[prost(float, optional, tag="4")]
4939        pub fps: ::core::option::Option<f32>,
4940    }
4941    #[derive(Clone, PartialEq, ::prost::Message)]
4942    pub struct GamePackageInfo {
4943        #[prost(string, optional, tag="1")]
4944        pub name: ::core::option::Option<::prost::alloc::string::String>,
4945        #[prost(uint64, optional, tag="2")]
4946        pub uid: ::core::option::Option<u64>,
4947        #[prost(uint32, optional, tag="3")]
4948        pub current_mode: ::core::option::Option<u32>,
4949        #[prost(message, repeated, tag="4")]
4950        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4951    }
4952}
4953// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4954
4955// Begin of protos/perfetto/trace/android/android_log.proto
4956
4957#[derive(Clone, PartialEq, ::prost::Message)]
4958pub struct AndroidLogPacket {
4959    #[prost(message, repeated, tag="1")]
4960    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4961    #[prost(message, optional, tag="2")]
4962    pub stats: ::core::option::Option<android_log_packet::Stats>,
4963}
4964/// Nested message and enum types in `AndroidLogPacket`.
4965pub mod android_log_packet {
4966    #[derive(Clone, PartialEq, ::prost::Message)]
4967    pub struct LogEvent {
4968        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4969        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4970        pub log_id: ::core::option::Option<i32>,
4971        /// PID (TGID), TID and UID of the task that emitted the event.
4972        #[prost(int32, optional, tag="2")]
4973        pub pid: ::core::option::Option<i32>,
4974        #[prost(int32, optional, tag="3")]
4975        pub tid: ::core::option::Option<i32>,
4976        #[prost(int32, optional, tag="4")]
4977        pub uid: ::core::option::Option<i32>,
4978        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4979        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4980        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4981        #[prost(uint64, optional, tag="5")]
4982        pub timestamp: ::core::option::Option<u64>,
4983        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4984        /// the second column of /system/etc/event-log-tags. For all other events,
4985        /// |tag| is the app-specified argument passed to __android_log_write().
4986        #[prost(string, optional, tag="6")]
4987        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4988        /// Empty when log_id == LID_EVENTS.
4989        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4990        pub prio: ::core::option::Option<i32>,
4991        /// Empty when log_id == LID_EVENTS.
4992        #[prost(string, optional, tag="8")]
4993        pub message: ::core::option::Option<::prost::alloc::string::String>,
4994        /// Only populated when log_id == LID_EVENTS.
4995        #[prost(message, repeated, tag="9")]
4996        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4997    }
4998    /// Nested message and enum types in `LogEvent`.
4999    pub mod log_event {
5000        #[derive(Clone, PartialEq, ::prost::Message)]
5001        pub struct Arg {
5002            #[prost(string, optional, tag="1")]
5003            pub name: ::core::option::Option<::prost::alloc::string::String>,
5004            #[prost(oneof="arg::Value", tags="2, 3, 4")]
5005            pub value: ::core::option::Option<arg::Value>,
5006        }
5007        /// Nested message and enum types in `Arg`.
5008        pub mod arg {
5009            #[derive(Clone, PartialEq, ::prost::Oneof)]
5010            pub enum Value {
5011                #[prost(int64, tag="2")]
5012                IntValue(i64),
5013                #[prost(float, tag="3")]
5014                FloatValue(f32),
5015                #[prost(string, tag="4")]
5016                StringValue(::prost::alloc::string::String),
5017            }
5018        }
5019    }
5020    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
5021    /// absolute counters since the beginning of the lifetime of the tracing
5022    /// session and NOT relative to the previous Stats snapshot).
5023    #[derive(Clone, PartialEq, ::prost::Message)]
5024    pub struct Stats {
5025        /// Total number of log events seen, including errors and skipped entries
5026        /// (num of events stored in the trace = total - failed - skipped).
5027        #[prost(uint64, optional, tag="1")]
5028        pub num_total: ::core::option::Option<u64>,
5029        /// Parser failures.
5030        #[prost(uint64, optional, tag="2")]
5031        pub num_failed: ::core::option::Option<u64>,
5032        /// Messages skipped due to filters.
5033        #[prost(uint64, optional, tag="3")]
5034        pub num_skipped: ::core::option::Option<u64>,
5035    }
5036}
5037// End of protos/perfetto/trace/android/android_log.proto
5038
5039// Begin of protos/perfetto/trace/android/android_system_property.proto
5040
5041#[derive(Clone, PartialEq, ::prost::Message)]
5042pub struct AndroidSystemProperty {
5043    #[prost(message, repeated, tag="1")]
5044    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
5045}
5046/// Nested message and enum types in `AndroidSystemProperty`.
5047pub mod android_system_property {
5048    #[derive(Clone, PartialEq, ::prost::Message)]
5049    pub struct PropertyValue {
5050        #[prost(string, optional, tag="1")]
5051        pub name: ::core::option::Option<::prost::alloc::string::String>,
5052        #[prost(string, optional, tag="2")]
5053        pub value: ::core::option::Option<::prost::alloc::string::String>,
5054    }
5055}
5056// End of protos/perfetto/trace/android/android_system_property.proto
5057
5058// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
5059
5060/// AppWakelockInfo describes the time-independent properties of a wakelock, such
5061/// as the owning package or wakelock tag. This is interned to reduce trace size.
5062/// Event bundles refer to interned wakelock info by the iid.
5063#[derive(Clone, PartialEq, ::prost::Message)]
5064pub struct AppWakelockInfo {
5065    /// The interned id of this wakelock.
5066    #[prost(int32, optional, tag="1")]
5067    pub iid: ::core::option::Option<i32>,
5068    /// The app-provided tag of the wakelock.
5069    #[prost(string, optional, tag="2")]
5070    pub tag: ::core::option::Option<::prost::alloc::string::String>,
5071    /// The wakelock flags (such as partial vs full).
5072    #[prost(int32, optional, tag="3")]
5073    pub flags: ::core::option::Option<i32>,
5074    /// The pid that created the wakelock.
5075    #[prost(int32, optional, tag="4")]
5076    pub owner_pid: ::core::option::Option<i32>,
5077    /// The uid that created the wakelock.
5078    #[prost(int32, optional, tag="5")]
5079    pub owner_uid: ::core::option::Option<i32>,
5080    /// The uid of the work source root (if present).
5081    #[prost(int32, optional, tag="6")]
5082    pub work_uid: ::core::option::Option<i32>,
5083}
5084/// AppWakelockBundle describes one or more wakelock events. Events are written
5085/// in two paired array, such that the details for event i are in intern_id\[i\]
5086/// and encoded_ts\[i\].
5087#[derive(Clone, PartialEq, ::prost::Message)]
5088pub struct AppWakelockBundle {
5089    /// The interned id for the WakelockInfo of the event.
5090    #[prost(uint32, repeated, tag="1")]
5091    pub intern_id: ::prost::alloc::vec::Vec<u32>,
5092    /// The timestamp and event type, encoded as:
5093    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
5094    #[prost(uint64, repeated, tag="2")]
5095    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
5096    /// For writing single packets (mainly by tokenization).
5097    #[prost(message, optional, tag="3")]
5098    pub info: ::core::option::Option<AppWakelockInfo>,
5099    #[prost(bool, optional, tag="4")]
5100    pub acquired: ::core::option::Option<bool>,
5101}
5102/// Trace event for bluetooth
5103#[derive(Clone, PartialEq, ::prost::Message)]
5104pub struct BluetoothTraceEvent {
5105    /// Packet type and direction
5106    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
5107    pub packet_type: ::core::option::Option<i32>,
5108    /// Total count of the packets collected during the collection interval
5109    #[prost(uint32, optional, tag="2")]
5110    pub count: ::core::option::Option<u32>,
5111    /// Total cumulative length of the packets collected during the collection
5112    /// interval
5113    #[prost(uint32, optional, tag="3")]
5114    pub length: ::core::option::Option<u32>,
5115    /// The collection interval in nanoseconds. This is the duration between the
5116    /// first and last packets collected.
5117    #[prost(uint32, optional, tag="4")]
5118    pub duration: ::core::option::Option<u32>,
5119    /// In case of CMD type, further breakdown of the type of command
5120    #[prost(uint32, optional, tag="5")]
5121    pub op_code: ::core::option::Option<u32>,
5122    /// In the case of EVT type, further breakdown of the type of event
5123    #[prost(uint32, optional, tag="6")]
5124    pub event_code: ::core::option::Option<u32>,
5125    /// When applicable for EVT type, further breakdown of event type into specific
5126    /// subevent
5127    #[prost(uint32, optional, tag="7")]
5128    pub subevent_code: ::core::option::Option<u32>,
5129    /// Associated handle for the bluetooth packet
5130    #[prost(uint32, optional, tag="8")]
5131    pub connection_handle: ::core::option::Option<u32>,
5132}
5133// End of protos/perfetto/trace/android/bluetooth_trace.proto
5134
5135// Begin of protos/perfetto/trace/android/camera_event.proto
5136
5137/// A profiling event corresponding to a single camera frame. This message
5138/// collects important details and timestamps involved in producing a single
5139/// camera frame.
5140/// Next ID: 17
5141#[derive(Clone, PartialEq, ::prost::Message)]
5142pub struct AndroidCameraFrameEvent {
5143    /// Identifier for the CameraCaptureSession this frame originates from. See:
5144    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5145    #[prost(uint64, optional, tag="1")]
5146    pub session_id: ::core::option::Option<u64>,
5147    /// Identifier for the camera sensor that is the source of this frame. This may
5148    /// be either a physical or logical camera (up to vendor interpretation).
5149    #[prost(uint32, optional, tag="2")]
5150    pub camera_id: ::core::option::Option<u32>,
5151    /// The frame number identifying this frame on this camera.
5152    #[prost(int64, optional, tag="3")]
5153    pub frame_number: ::core::option::Option<i64>,
5154    /// Identifier for the CaptureRequest. See:
5155    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
5156    ///
5157    /// If multiple cameras are streaming simultaneously, the request_id may be
5158    /// used to identify which frames were captured in service of the same request.
5159    #[prost(int64, optional, tag="4")]
5160    pub request_id: ::core::option::Option<i64>,
5161    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
5162    /// received by the camera HAL pipeline. Note that this request may wait for
5163    /// some time before processing actually begins. See also
5164    /// request_processing_started_ns.
5165    #[prost(int64, optional, tag="5")]
5166    pub request_received_ns: ::core::option::Option<i64>,
5167    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
5168    /// processing by the camera HAL pipeline. This is the time at which the
5169    /// pipeline actually begins to work on the request.
5170    #[prost(int64, optional, tag="6")]
5171    pub request_processing_started_ns: ::core::option::Option<i64>,
5172    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
5173    #[prost(int64, optional, tag="7")]
5174    pub start_of_exposure_ns: ::core::option::Option<i64>,
5175    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
5176    /// event.
5177    #[prost(int64, optional, tag="8")]
5178    pub start_of_frame_ns: ::core::option::Option<i64>,
5179    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
5180    /// for the frame.
5181    #[prost(int64, optional, tag="9")]
5182    pub responses_all_sent_ns: ::core::option::Option<i64>,
5183    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
5184    pub capture_result_status: ::core::option::Option<i32>,
5185    /// The number of sensor frames that were skipped between this frame and the
5186    /// previous frame. Under normal operation, this should be zero. Any number
5187    /// greater than zero indicates dropped sensor frames.
5188    #[prost(int32, optional, tag="11")]
5189    pub skipped_sensor_frames: ::core::option::Option<i32>,
5190    /// The value of CONTROL_CAPTURE_INTENT. See:
5191    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
5192    #[prost(int32, optional, tag="12")]
5193    pub capture_intent: ::core::option::Option<i32>,
5194    /// The number of streams in the capture request.
5195    #[prost(int32, optional, tag="13")]
5196    pub num_streams: ::core::option::Option<i32>,
5197    #[prost(message, repeated, tag="14")]
5198    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
5199    /// These fields capture vendor-specific additions to this proto message. In
5200    /// practice `vendor_data` typically contains a serialized message of the
5201    /// vendor's design, and `vendor_data_version` is incremented each time there
5202    /// is a backwards incompatible change made to the message.
5203    #[prost(int32, optional, tag="15")]
5204    pub vendor_data_version: ::core::option::Option<i32>,
5205    #[prost(bytes="vec", optional, tag="16")]
5206    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5207}
5208/// Nested message and enum types in `AndroidCameraFrameEvent`.
5209pub mod android_camera_frame_event {
5210    /// A profiling event corresponding to a single node processing within the
5211    /// camera pipeline. Intuitively this corresponds to a single stage of
5212    /// processing to produce a camera frame. Next ID: 6
5213    #[derive(Clone, PartialEq, ::prost::Message)]
5214    pub struct CameraNodeProcessingDetails {
5215        #[prost(int64, optional, tag="1")]
5216        pub node_id: ::core::option::Option<i64>,
5217        /// The timestamp at which node processing begins to run.
5218        #[prost(int64, optional, tag="2")]
5219        pub start_processing_ns: ::core::option::Option<i64>,
5220        /// The timestamp at which node processing finishes running.
5221        #[prost(int64, optional, tag="3")]
5222        pub end_processing_ns: ::core::option::Option<i64>,
5223        /// The delay between inputs becoming ready and the node actually beginning
5224        /// to run.
5225        #[prost(int64, optional, tag="4")]
5226        pub scheduling_latency_ns: ::core::option::Option<i64>,
5227    }
5228    /// The error status, if any, reported to the camera framework. Any status
5229    /// other than STATUS_OK indicates a dropped frame.
5230    /// Next Enum: 6
5231    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5232    #[repr(i32)]
5233    pub enum CaptureResultStatus {
5234        StatusUnspecified = 0,
5235        StatusOk = 1,
5236        /// Early metadata was returned to the camera framework with an error.
5237        StatusEarlyMetadataError = 2,
5238        /// Final metadata was returned to the camera framework with an error.
5239        StatusFinalMetadataError = 3,
5240        /// One or more buffers were returned to the camera framework with an error.
5241        StatusBufferError = 4,
5242        /// The frame was dropped as a result of a flush operation.
5243        StatusFlushError = 5,
5244    }
5245    impl CaptureResultStatus {
5246        /// String value of the enum field names used in the ProtoBuf definition.
5247        ///
5248        /// The values are not transformed in any way and thus are considered stable
5249        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5250        pub fn as_str_name(&self) -> &'static str {
5251            match self {
5252                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5253                CaptureResultStatus::StatusOk => "STATUS_OK",
5254                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5255                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5256                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5257                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5258            }
5259        }
5260    }
5261}
5262/// A profiling event that may be emitted periodically (i.e., at a slower rate
5263/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5264/// session-specific values.
5265#[derive(Clone, PartialEq, ::prost::Message)]
5266pub struct AndroidCameraSessionStats {
5267    /// Identifier for the CameraCaptureSession this frame originates from. See:
5268    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5269    #[prost(uint64, optional, tag="1")]
5270    pub session_id: ::core::option::Option<u64>,
5271    #[prost(message, optional, tag="2")]
5272    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5273}
5274/// Nested message and enum types in `AndroidCameraSessionStats`.
5275pub mod android_camera_session_stats {
5276    /// Although vendor implementations may vary, camera pipeline processing is
5277    /// typically arranged into a directed graph-like structure. This message is
5278    /// used to record that graph.
5279    #[derive(Clone, PartialEq, ::prost::Message)]
5280    pub struct CameraGraph {
5281        #[prost(message, repeated, tag="1")]
5282        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5283        #[prost(message, repeated, tag="2")]
5284        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5285    }
5286    /// Nested message and enum types in `CameraGraph`.
5287    pub mod camera_graph {
5288        #[derive(Clone, PartialEq, ::prost::Message)]
5289        pub struct CameraNode {
5290            #[prost(int64, optional, tag="1")]
5291            pub node_id: ::core::option::Option<i64>,
5292            /// A list of inputs consumed by this node.
5293            #[prost(int64, repeated, packed="false", tag="2")]
5294            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5295            /// A list of outputs produced by this node.
5296            #[prost(int64, repeated, packed="false", tag="3")]
5297            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5298            /// These fields capture vendor-specific additions to this proto message.
5299            /// In practice `vendor_data` typically contains a serialized message of
5300            /// the vendor's design, and `vendor_data_version` is incremented each time
5301            /// there is a backwards incompatible change made to the message.
5302            #[prost(int32, optional, tag="4")]
5303            pub vendor_data_version: ::core::option::Option<i32>,
5304            #[prost(bytes="vec", optional, tag="5")]
5305            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5306        }
5307        /// An adjacency list describing connections between CameraNodes, mapping
5308        /// nodes and their outputs to other nodes that consume them as inputs.
5309        #[derive(Clone, PartialEq, ::prost::Message)]
5310        pub struct CameraEdge {
5311            /// The pair of IDs identifying the node and output connected by this edge.
5312            #[prost(int64, optional, tag="1")]
5313            pub output_node_id: ::core::option::Option<i64>,
5314            #[prost(int64, optional, tag="2")]
5315            pub output_id: ::core::option::Option<i64>,
5316            /// The pair of IDs identifying the node and input connected by this edge.
5317            #[prost(int64, optional, tag="3")]
5318            pub input_node_id: ::core::option::Option<i64>,
5319            #[prost(int64, optional, tag="4")]
5320            pub input_id: ::core::option::Option<i64>,
5321            /// These fields capture vendor-specific additions to this proto message.
5322            /// In practice `vendor_data` typically contains a serialized message of
5323            /// the vendor's design, and `vendor_data_version` is incremented each time
5324            /// there is a backwards incompatible change made to the message.
5325            #[prost(int32, optional, tag="5")]
5326            pub vendor_data_version: ::core::option::Option<i32>,
5327            #[prost(bytes="vec", optional, tag="6")]
5328            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5329        }
5330    }
5331}
5332// End of protos/perfetto/trace/android/camera_event.proto
5333
5334// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5335
5336#[derive(Clone, PartialEq, ::prost::Message)]
5337pub struct CpuPerUidData {
5338    /// Number of clusters in the device. This will only be filled in the first
5339    /// packet in a sequence.
5340    #[prost(uint32, optional, tag="1")]
5341    pub cluster_count: ::core::option::Option<u32>,
5342    /// The UIDs for which we have data in this packet.
5343    #[prost(uint32, repeated, tag="2")]
5344    pub uid: ::prost::alloc::vec::Vec<u32>,
5345    /// List of times for {UID, cluster} tuples. This will be cluster_count
5346    /// times as long as the UID list.
5347    ///
5348    /// Ordered like:
5349    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5350    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5351    ///
5352    /// Each value is an absolute count for the first packet in a sequence, and a
5353    /// delta thereafter. UIDs for which all clusters have a zero delta are
5354    /// omitted; a single non-zero value for any cluster for a UID will cause
5355    /// values for all clusters to be recorded.
5356    #[prost(uint64, repeated, tag="3")]
5357    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5358}
5359// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5360
5361// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5362
5363/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5364/// Used in comparing the expected timeline of a frame to the actual timeline.
5365/// Key terms:
5366///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5367///     2) SurfaceFrame - represents App's work on its frame
5368///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5369/// SurfaceFlinger composites frames from many apps together, so
5370///     One DisplayFrame can map to N SurfaceFrame(s)
5371/// This relationship can be reconstructed by using
5372///     DisplayFrame.token = SurfaceFrame.display_frame_token
5373#[derive(Clone, PartialEq, ::prost::Message)]
5374pub struct FrameTimelineEvent {
5375    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5376    pub event: ::core::option::Option<frame_timeline_event::Event>,
5377}
5378/// Nested message and enum types in `FrameTimelineEvent`.
5379pub mod frame_timeline_event {
5380    /// Indicates the start of expected timeline slice for SurfaceFrames.
5381    #[derive(Clone, PartialEq, ::prost::Message)]
5382    pub struct ExpectedSurfaceFrameStart {
5383        /// Cookie used to correlate between the start and end messages of the same
5384        /// frame. Since all values except the ts are same for start and end, cookie
5385        /// helps in preventing redundant data transmission.
5386        /// The same cookie is used only by start and end messages of a single frame
5387        /// and is otherwise unique.
5388        #[prost(int64, optional, tag="1")]
5389        pub cookie: ::core::option::Option<i64>,
5390        /// Token received by the app for its work. Can be shared between multiple
5391        /// layers of the same app (example: pip mode).
5392        #[prost(int64, optional, tag="2")]
5393        pub token: ::core::option::Option<i64>,
5394        /// The corresponding DisplayFrame token is required to link the App's work
5395        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5396        /// DisplayFrame.
5397        /// this.display_frame_token = DisplayFrame.token
5398        #[prost(int64, optional, tag="3")]
5399        pub display_frame_token: ::core::option::Option<i64>,
5400        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5401        /// the respective process track group.
5402        #[prost(int32, optional, tag="4")]
5403        pub pid: ::core::option::Option<i32>,
5404        #[prost(string, optional, tag="5")]
5405        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5406    }
5407    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5408    /// includes the jank information.
5409    #[derive(Clone, PartialEq, ::prost::Message)]
5410    pub struct ActualSurfaceFrameStart {
5411        /// Cookie used to correlate between the start and end messages of the same
5412        /// frame. Since all values except the ts are same for start and end, cookie
5413        /// helps in preventing redundant data transmission.
5414        /// The same cookie is used only by start and end messages of a single frame
5415        /// and is otherwise unique.
5416        #[prost(int64, optional, tag="1")]
5417        pub cookie: ::core::option::Option<i64>,
5418        /// Token received by the app for its work. Can be shared between multiple
5419        /// layers of the same app (example: pip mode).
5420        #[prost(int64, optional, tag="2")]
5421        pub token: ::core::option::Option<i64>,
5422        /// The corresponding DisplayFrame token is required to link the App's work
5423        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5424        /// DisplayFrame.
5425        /// this.display_frame_token = DisplayFrame.token
5426        #[prost(int64, optional, tag="3")]
5427        pub display_frame_token: ::core::option::Option<i64>,
5428        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5429        /// the respective process track group.
5430        #[prost(int32, optional, tag="4")]
5431        pub pid: ::core::option::Option<i32>,
5432        #[prost(string, optional, tag="5")]
5433        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5434        #[prost(enumeration="PresentType", optional, tag="6")]
5435        pub present_type: ::core::option::Option<i32>,
5436        #[prost(bool, optional, tag="7")]
5437        pub on_time_finish: ::core::option::Option<bool>,
5438        #[prost(bool, optional, tag="8")]
5439        pub gpu_composition: ::core::option::Option<bool>,
5440        /// A bitmask of JankType. More than one reason can be attributed to a janky
5441        /// frame.
5442        #[prost(int32, optional, tag="9")]
5443        pub jank_type: ::core::option::Option<i32>,
5444        #[prost(enumeration="PredictionType", optional, tag="10")]
5445        pub prediction_type: ::core::option::Option<i32>,
5446        #[prost(bool, optional, tag="11")]
5447        pub is_buffer: ::core::option::Option<bool>,
5448        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5449        pub jank_severity_type: ::core::option::Option<i32>,
5450        #[prost(float, optional, tag="13")]
5451        pub present_delay_millis: ::core::option::Option<f32>,
5452        #[prost(float, optional, tag="14")]
5453        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5454        #[prost(float, optional, tag="15")]
5455        pub jank_severity_score: ::core::option::Option<f32>,
5456        /// experimental value for jank_type. Do not consider in jank analysis.
5457        #[prost(int32, optional, tag="16")]
5458        pub jank_type_experimental: ::core::option::Option<i32>,
5459        /// experimental value for present_type. Do not consider in jank analysis.
5460        #[prost(enumeration="PresentType", optional, tag="17")]
5461        pub present_type_experimental: ::core::option::Option<i32>,
5462        /// jank metadata information (for debug).
5463        #[prost(float, optional, tag="18")]
5464        pub jank_debug_metadata: ::core::option::Option<f32>,
5465    }
5466    /// Indicates the start of expected timeline slice for DisplayFrames.
5467    #[derive(Clone, PartialEq, ::prost::Message)]
5468    pub struct ExpectedDisplayFrameStart {
5469        /// Cookie used to correlate between the start and end messages of the same
5470        /// frame. Since all values except the ts are same for start and end, cookie
5471        /// helps in preventing redundant data transmission.
5472        /// The same cookie is used only by start and end messages of a single frame
5473        /// and is otherwise unique.
5474        #[prost(int64, optional, tag="1")]
5475        pub cookie: ::core::option::Option<i64>,
5476        /// Token received by SurfaceFlinger for its work
5477        /// this.token = SurfaceFrame.display_frame_token
5478        #[prost(int64, optional, tag="2")]
5479        pub token: ::core::option::Option<i64>,
5480        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5481        /// inside the SurfaceFlinger process group.
5482        #[prost(int32, optional, tag="3")]
5483        pub pid: ::core::option::Option<i32>,
5484    }
5485    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5486    /// includes the jank information.
5487    #[derive(Clone, PartialEq, ::prost::Message)]
5488    pub struct ActualDisplayFrameStart {
5489        /// Cookie used to correlate between the start and end messages of the same
5490        /// frame. Since all values except the ts are same for start and end, cookie
5491        /// helps in preventing redundant data transmission.
5492        /// The same cookie is used only by start and end messages of a single frame
5493        /// and is otherwise unique.
5494        #[prost(int64, optional, tag="1")]
5495        pub cookie: ::core::option::Option<i64>,
5496        /// Token received by SurfaceFlinger for its work
5497        /// this.token = SurfaceFrame.display_frame_token
5498        #[prost(int64, optional, tag="2")]
5499        pub token: ::core::option::Option<i64>,
5500        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5501        /// inside the SurfaceFlinger process group.
5502        #[prost(int32, optional, tag="3")]
5503        pub pid: ::core::option::Option<i32>,
5504        #[prost(enumeration="PresentType", optional, tag="4")]
5505        pub present_type: ::core::option::Option<i32>,
5506        #[prost(bool, optional, tag="5")]
5507        pub on_time_finish: ::core::option::Option<bool>,
5508        #[prost(bool, optional, tag="6")]
5509        pub gpu_composition: ::core::option::Option<bool>,
5510        /// A bitmask of JankType. More than one reason can be attributed to a janky
5511        /// frame.
5512        #[prost(int32, optional, tag="7")]
5513        pub jank_type: ::core::option::Option<i32>,
5514        #[prost(enumeration="PredictionType", optional, tag="8")]
5515        pub prediction_type: ::core::option::Option<i32>,
5516        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5517        pub jank_severity_type: ::core::option::Option<i32>,
5518        #[prost(float, optional, tag="10")]
5519        pub present_delay_millis: ::core::option::Option<f32>,
5520        #[prost(float, optional, tag="11")]
5521        pub jank_severity_score: ::core::option::Option<f32>,
5522        /// experimental value for jank_type. Do not consider in jank analysis.
5523        #[prost(int32, optional, tag="12")]
5524        pub jank_type_experimental: ::core::option::Option<i32>,
5525        /// experimental value for present_type. Do not consider in jank analysis.
5526        #[prost(enumeration="PresentType", optional, tag="13")]
5527        pub present_type_experimental: ::core::option::Option<i32>,
5528        /// jank metadata information (for debug).
5529        #[prost(float, optional, tag="14")]
5530        pub jank_debug_metadata: ::core::option::Option<f32>,
5531    }
5532    /// FrameEnd just sends the cookie to indicate that the corresponding
5533    /// <display/surface>frame slice's end.
5534    #[derive(Clone, PartialEq, ::prost::Message)]
5535    pub struct FrameEnd {
5536        #[prost(int64, optional, tag="1")]
5537        pub cookie: ::core::option::Option<i64>,
5538    }
5539    /// Specifies the reason(s) most likely to have caused the jank.
5540    /// Used as a bitmask.
5541    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5542    #[repr(i32)]
5543    pub enum JankType {
5544        JankUnspecified = 0,
5545        JankNone = 1,
5546        JankSfScheduling = 2,
5547        JankPredictionError = 4,
5548        JankDisplayHal = 8,
5549        JankSfCpuDeadlineMissed = 16,
5550        JankSfGpuDeadlineMissed = 32,
5551        JankAppDeadlineMissed = 64,
5552        JankBufferStuffing = 128,
5553        JankUnknown = 256,
5554        JankSfStuffing = 512,
5555        JankDropped = 1024,
5556        JankNonAnimating = 2048,
5557        JankAppResyncedJitter = 4096,
5558        JankDisplayNotOn = 8192,
5559        JankDisplayModeChangeInProgress = 16384,
5560    }
5561    impl JankType {
5562        /// String value of the enum field names used in the ProtoBuf definition.
5563        ///
5564        /// The values are not transformed in any way and thus are considered stable
5565        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5566        pub fn as_str_name(&self) -> &'static str {
5567            match self {
5568                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5569                JankType::JankNone => "JANK_NONE",
5570                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5571                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5572                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5573                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5574                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5575                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5576                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5577                JankType::JankUnknown => "JANK_UNKNOWN",
5578                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5579                JankType::JankDropped => "JANK_DROPPED",
5580                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
5581                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
5582                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
5583                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
5584            }
5585        }
5586    }
5587    /// Specifies the severity of a jank.
5588    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5589    #[repr(i32)]
5590    pub enum JankSeverityType {
5591        SeverityUnknown = 0,
5592        SeverityNone = 1,
5593        SeverityPartial = 2,
5594        SeverityFull = 3,
5595    }
5596    impl JankSeverityType {
5597        /// String value of the enum field names used in the ProtoBuf definition.
5598        ///
5599        /// The values are not transformed in any way and thus are considered stable
5600        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5601        pub fn as_str_name(&self) -> &'static str {
5602            match self {
5603                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5604                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5605                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5606                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5607            }
5608        }
5609    }
5610    /// Specifies how a frame was presented on screen w.r.t. timing.
5611    /// Can be different for SurfaceFrame and DisplayFrame.
5612    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5613    #[repr(i32)]
5614    pub enum PresentType {
5615        PresentUnspecified = 0,
5616        PresentOnTime = 1,
5617        PresentLate = 2,
5618        PresentEarly = 3,
5619        PresentDropped = 4,
5620        PresentUnknown = 5,
5621    }
5622    impl PresentType {
5623        /// String value of the enum field names used in the ProtoBuf definition.
5624        ///
5625        /// The values are not transformed in any way and thus are considered stable
5626        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5627        pub fn as_str_name(&self) -> &'static str {
5628            match self {
5629                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5630                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5631                PresentType::PresentLate => "PRESENT_LATE",
5632                PresentType::PresentEarly => "PRESENT_EARLY",
5633                PresentType::PresentDropped => "PRESENT_DROPPED",
5634                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5635            }
5636        }
5637    }
5638    /// Specifies if the predictions for the frame are still valid, expired or
5639    /// unknown.
5640    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5641    #[repr(i32)]
5642    pub enum PredictionType {
5643        PredictionUnspecified = 0,
5644        PredictionValid = 1,
5645        PredictionExpired = 2,
5646        PredictionUnknown = 3,
5647    }
5648    impl PredictionType {
5649        /// String value of the enum field names used in the ProtoBuf definition.
5650        ///
5651        /// The values are not transformed in any way and thus are considered stable
5652        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5653        pub fn as_str_name(&self) -> &'static str {
5654            match self {
5655                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5656                PredictionType::PredictionValid => "PREDICTION_VALID",
5657                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5658                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5659            }
5660        }
5661    }
5662    #[derive(Clone, PartialEq, ::prost::Oneof)]
5663    pub enum Event {
5664        #[prost(message, tag="1")]
5665        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5666        #[prost(message, tag="2")]
5667        ActualDisplayFrameStart(ActualDisplayFrameStart),
5668        #[prost(message, tag="3")]
5669        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5670        #[prost(message, tag="4")]
5671        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5672        #[prost(message, tag="5")]
5673        FrameEnd(FrameEnd),
5674    }
5675}
5676// End of protos/perfetto/trace/android/frame_timeline_event.proto
5677
5678// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5679
5680/// Generated by Android's GpuService.
5681#[derive(Clone, PartialEq, ::prost::Message)]
5682pub struct GpuMemTotalEvent {
5683    #[prost(uint32, optional, tag="1")]
5684    pub gpu_id: ::core::option::Option<u32>,
5685    #[prost(uint32, optional, tag="2")]
5686    pub pid: ::core::option::Option<u32>,
5687    #[prost(uint64, optional, tag="3")]
5688    pub size: ::core::option::Option<u64>,
5689}
5690// End of protos/perfetto/trace/android/gpu_mem_event.proto
5691
5692// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5693
5694/// Generated by Android's SurfaceFlinger.
5695#[derive(Clone, PartialEq, ::prost::Message)]
5696pub struct GraphicsFrameEvent {
5697    #[prost(message, optional, tag="1")]
5698    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5699}
5700/// Nested message and enum types in `GraphicsFrameEvent`.
5701pub mod graphics_frame_event {
5702    #[derive(Clone, PartialEq, ::prost::Message)]
5703    pub struct BufferEvent {
5704        #[prost(uint32, optional, tag="1")]
5705        pub frame_number: ::core::option::Option<u32>,
5706        #[prost(enumeration="BufferEventType", optional, tag="2")]
5707        pub r#type: ::core::option::Option<i32>,
5708        #[prost(string, optional, tag="3")]
5709        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5710        /// If no duration is set, the event is an instant event.
5711        #[prost(uint64, optional, tag="4")]
5712        pub duration_ns: ::core::option::Option<u64>,
5713        /// Unique buffer identifier.
5714        #[prost(uint32, optional, tag="5")]
5715        pub buffer_id: ::core::option::Option<u32>,
5716    }
5717    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5718    #[repr(i32)]
5719    pub enum BufferEventType {
5720        Unspecified = 0,
5721        Dequeue = 1,
5722        Queue = 2,
5723        Post = 3,
5724        AcquireFence = 4,
5725        Latch = 5,
5726        /// HWC will compose this buffer
5727        HwcCompositionQueued = 6,
5728        /// renderEngine composition
5729        FallbackComposition = 7,
5730        PresentFence = 8,
5731        ReleaseFence = 9,
5732        Modify = 10,
5733        Detach = 11,
5734        Attach = 12,
5735        Cancel = 13,
5736    }
5737    impl BufferEventType {
5738        /// String value of the enum field names used in the ProtoBuf definition.
5739        ///
5740        /// The values are not transformed in any way and thus are considered stable
5741        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5742        pub fn as_str_name(&self) -> &'static str {
5743            match self {
5744                BufferEventType::Unspecified => "UNSPECIFIED",
5745                BufferEventType::Dequeue => "DEQUEUE",
5746                BufferEventType::Queue => "QUEUE",
5747                BufferEventType::Post => "POST",
5748                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5749                BufferEventType::Latch => "LATCH",
5750                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5751                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5752                BufferEventType::PresentFence => "PRESENT_FENCE",
5753                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5754                BufferEventType::Modify => "MODIFY",
5755                BufferEventType::Detach => "DETACH",
5756                BufferEventType::Attach => "ATTACH",
5757                BufferEventType::Cancel => "CANCEL",
5758            }
5759        }
5760    }
5761}
5762// End of protos/perfetto/trace/android/graphics_frame_event.proto
5763
5764// Begin of protos/perfetto/trace/android/initial_display_state.proto
5765
5766#[derive(Clone, PartialEq, ::prost::Message)]
5767pub struct InitialDisplayState {
5768    /// Same values as android.view.Display.STATE_*
5769    #[prost(int32, optional, tag="1")]
5770    pub display_state: ::core::option::Option<i32>,
5771    #[prost(double, optional, tag="2")]
5772    pub brightness: ::core::option::Option<f64>,
5773}
5774// End of protos/perfetto/trace/android/initial_display_state.proto
5775
5776// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
5777
5778#[derive(Clone, PartialEq, ::prost::Message)]
5779pub struct KernelWakelockData {
5780    /// This is only emitted when we encounter new wakelocks.
5781    #[prost(message, repeated, tag="1")]
5782    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
5783    /// Interning id.
5784    #[prost(uint32, repeated, tag="2")]
5785    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
5786    /// If we interned the wakelock name in this packet, this is the total time
5787    /// the wakelock has been held.
5788    /// If not, it's a delta from the last time we saw it.
5789    #[prost(uint64, repeated, tag="3")]
5790    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
5791    #[prost(uint64, optional, tag="4")]
5792    pub error_flags: ::core::option::Option<u64>,
5793}
5794/// Nested message and enum types in `KernelWakelockData`.
5795pub mod kernel_wakelock_data {
5796    #[derive(Clone, PartialEq, ::prost::Message)]
5797    pub struct Wakelock {
5798        /// Interning id.
5799        #[prost(uint32, optional, tag="1")]
5800        pub wakelock_id: ::core::option::Option<u32>,
5801        /// Name of the wakelock.
5802        #[prost(string, optional, tag="2")]
5803        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
5804        /// Type of the wakelock. We record data about both true kernel wakelocks
5805        /// and "native" wakelocks which are taken in userspace but are more
5806        /// conceptually similar to kernel wakelocks than normal userspace ones.
5807        #[prost(enumeration="wakelock::Type", optional, tag="3")]
5808        pub wakelock_type: ::core::option::Option<i32>,
5809    }
5810    /// Nested message and enum types in `Wakelock`.
5811    pub mod wakelock {
5812        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5813        #[repr(i32)]
5814        pub enum Type {
5815            WakelockTypeUnknown = 0,
5816            WakelockTypeKernel = 1,
5817            WakelockTypeNative = 2,
5818        }
5819        impl Type {
5820            /// String value of the enum field names used in the ProtoBuf definition.
5821            ///
5822            /// The values are not transformed in any way and thus are considered stable
5823            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5824            pub fn as_str_name(&self) -> &'static str {
5825                match self {
5826                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5827                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5828                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5829                }
5830            }
5831        }
5832    }
5833}
5834/// NetworkPacketEvent records the details of a single packet sent or received
5835/// on the network (in Linux kernel terminology, one sk_buff struct).
5836#[derive(Clone, PartialEq, ::prost::Message)]
5837pub struct NetworkPacketEvent {
5838    /// The direction traffic is flowing for this event.
5839    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5840    pub direction: ::core::option::Option<i32>,
5841    /// The name of the network interface if available (e.g. 'rmnet0').
5842    #[prost(string, optional, tag="2")]
5843    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
5844    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5845    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5846    /// NetworkPacketContext.
5847    #[prost(uint32, optional, tag="3")]
5848    pub length: ::core::option::Option<u32>,
5849    /// The Linux user id associated with the packet's socket.
5850    #[prost(uint32, optional, tag="4")]
5851    pub uid: ::core::option::Option<u32>,
5852    /// The Android network tag associated with the packet's socket.
5853    #[prost(uint32, optional, tag="5")]
5854    pub tag: ::core::option::Option<u32>,
5855    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5856    #[prost(uint32, optional, tag="6")]
5857    pub ip_proto: ::core::option::Option<u32>,
5858    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5859    #[prost(uint32, optional, tag="7")]
5860    pub tcp_flags: ::core::option::Option<u32>,
5861    /// The local udp/tcp port of the packet.
5862    #[prost(uint32, optional, tag="8")]
5863    pub local_port: ::core::option::Option<u32>,
5864    /// The remote udp/tcp port of the packet.
5865    #[prost(uint32, optional, tag="9")]
5866    pub remote_port: ::core::option::Option<u32>,
5867    /// The 1-byte ICMP type identifier.
5868    #[prost(uint32, optional, tag="10")]
5869    pub icmp_type: ::core::option::Option<u32>,
5870    /// The 1-byte ICMP code identifier.
5871    #[prost(uint32, optional, tag="11")]
5872    pub icmp_code: ::core::option::Option<u32>,
5873}
5874/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5875#[derive(Clone, PartialEq, ::prost::Message)]
5876pub struct NetworkPacketBundle {
5877    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5878    /// enclosing TracePacket's timestamp.
5879    #[prost(uint64, repeated, tag="3")]
5880    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5881    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5882    #[prost(uint32, repeated, tag="4")]
5883    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5884    /// Total number of packets in the bundle (when above aggregation_threshold).
5885    #[prost(uint32, optional, tag="5")]
5886    pub total_packets: ::core::option::Option<u32>,
5887    /// Duration between first and last packet (when above aggregation_threshold).
5888    #[prost(uint64, optional, tag="6")]
5889    pub total_duration: ::core::option::Option<u64>,
5890    /// Total packet length in bytes (when above aggregation_threshold).
5891    #[prost(uint64, optional, tag="7")]
5892    pub total_length: ::core::option::Option<u64>,
5893    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5894    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5895}
5896/// Nested message and enum types in `NetworkPacketBundle`.
5897pub mod network_packet_bundle {
5898    #[derive(Clone, PartialEq, ::prost::Oneof)]
5899    pub enum PacketContext {
5900        /// The intern id for looking up the associated packet context.
5901        #[prost(uint64, tag="1")]
5902        Iid(u64),
5903        /// The inlined context for events in this bundle.
5904        #[prost(message, tag="2")]
5905        Ctx(super::NetworkPacketEvent),
5906    }
5907}
5908/// An internable packet context.
5909#[derive(Clone, PartialEq, ::prost::Message)]
5910pub struct NetworkPacketContext {
5911    #[prost(uint64, optional, tag="1")]
5912    pub iid: ::core::option::Option<u64>,
5913    #[prost(message, optional, tag="2")]
5914    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5915}
5916// End of protos/perfetto/trace/android/network_trace.proto
5917
5918// Begin of protos/perfetto/trace/android/packages_list.proto
5919
5920#[derive(Clone, PartialEq, ::prost::Message)]
5921pub struct PackagesList {
5922    #[prost(message, repeated, tag="1")]
5923    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5924    /// At least one error occurred parsing the packages.list.
5925    #[prost(bool, optional, tag="2")]
5926    pub parse_error: ::core::option::Option<bool>,
5927    /// Failed to open / read packages.list.
5928    #[prost(bool, optional, tag="3")]
5929    pub read_error: ::core::option::Option<bool>,
5930}
5931/// Nested message and enum types in `PackagesList`.
5932pub mod packages_list {
5933    #[derive(Clone, PartialEq, ::prost::Message)]
5934    pub struct PackageInfo {
5935        #[prost(string, optional, tag="1")]
5936        pub name: ::core::option::Option<::prost::alloc::string::String>,
5937        #[prost(uint64, optional, tag="2")]
5938        pub uid: ::core::option::Option<u64>,
5939        #[prost(bool, optional, tag="3")]
5940        pub debuggable: ::core::option::Option<bool>,
5941        #[prost(bool, optional, tag="4")]
5942        pub profileable_from_shell: ::core::option::Option<bool>,
5943        #[prost(int64, optional, tag="5")]
5944        pub version_code: ::core::option::Option<i64>,
5945    }
5946}
5947// End of protos/perfetto/trace/android/packages_list.proto
5948
5949// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5950
5951#[derive(Clone, PartialEq, ::prost::Message)]
5952pub struct PixelModemEvents {
5953    /// Pigweed-format dehydrated events.
5954    #[prost(bytes="vec", repeated, tag="1")]
5955    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5956    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5957    /// timestamp is the absolute timestamp of the first event. Subsequent
5958    /// timestamps are deltas from the previous timestamp.
5959    /// The nth entry from `events` gets the nth entry here.
5960    #[prost(uint64, repeated, packed="false", tag="2")]
5961    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5962}
5963/// NB: this is not emitted in the trace but can be prepended later.
5964#[derive(Clone, PartialEq, ::prost::Message)]
5965pub struct PixelModemTokenDatabase {
5966    /// Pigweed-format database to allow event rehydration.
5967    #[prost(bytes="vec", optional, tag="1")]
5968    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5969}
5970// End of protos/perfetto/trace/android/pixel_modem_events.proto
5971
5972// Begin of protos/perfetto/trace/android/protolog.proto
5973
5974/// represents a single log entry 
5975#[derive(Clone, PartialEq, ::prost::Message)]
5976pub struct ProtoLogMessage {
5977    /// log statement identifier, created from message string and log level. 
5978    #[prost(fixed64, optional, tag="1")]
5979    pub message_id: ::core::option::Option<u64>,
5980    /// string parameters passed to the log call that have been interned. 
5981    #[prost(uint32, repeated, packed="false", tag="2")]
5982    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5983    /// integer parameters passed to the log call. 
5984    #[prost(sint64, repeated, packed="false", tag="3")]
5985    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5986    /// floating point parameters passed to the log call. 
5987    #[prost(double, repeated, packed="false", tag="4")]
5988    pub double_params: ::prost::alloc::vec::Vec<f64>,
5989    /// boolean parameters passed to the log call. 
5990    #[prost(int32, repeated, packed="false", tag="5")]
5991    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5992    /// id of the interned stacktrace string
5993    /// (only dumped if explicitly confuigured to do so)
5994    #[prost(uint32, optional, tag="6")]
5995    pub stacktrace_iid: ::core::option::Option<u32>,
5996}
5997/// contains all the data required to fully decode the protolog messages 
5998#[derive(Clone, PartialEq, ::prost::Message)]
5999pub struct ProtoLogViewerConfig {
6000    #[prost(message, repeated, tag="1")]
6001    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
6002    #[prost(message, repeated, tag="2")]
6003    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
6004}
6005/// Nested message and enum types in `ProtoLogViewerConfig`.
6006pub mod proto_log_viewer_config {
6007    #[derive(Clone, PartialEq, ::prost::Message)]
6008    pub struct MessageData {
6009        /// the id of the message that is logged in a ProtoLogMessage
6010        #[prost(fixed64, optional, tag="1")]
6011        pub message_id: ::core::option::Option<u64>,
6012        /// the string representation of the message
6013        #[prost(string, optional, tag="2")]
6014        pub message: ::core::option::Option<::prost::alloc::string::String>,
6015        /// the level of the message
6016        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
6017        pub level: ::core::option::Option<i32>,
6018        /// the id of the log group this message belongs to
6019        #[prost(uint32, optional, tag="4")]
6020        pub group_id: ::core::option::Option<u32>,
6021        /// path to the file where the message was logged
6022        #[prost(string, optional, tag="5")]
6023        pub location: ::core::option::Option<::prost::alloc::string::String>,
6024    }
6025    /// information about a ProtoLog log group 
6026    #[derive(Clone, PartialEq, ::prost::Message)]
6027    pub struct Group {
6028        #[prost(uint32, optional, tag="1")]
6029        pub id: ::core::option::Option<u32>,
6030        #[prost(string, optional, tag="2")]
6031        pub name: ::core::option::Option<::prost::alloc::string::String>,
6032        #[prost(string, optional, tag="3")]
6033        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6034    }
6035}
6036// End of protos/perfetto/trace/android/protolog.proto
6037
6038// Begin of protos/perfetto/trace/android/shell_transition.proto
6039
6040/// ShellTransition messages record information about the shell transitions in
6041/// the system. This is used to track the animations that are created and execute
6042/// through the shell transition system.
6043#[derive(Clone, PartialEq, ::prost::Message)]
6044pub struct ShellTransition {
6045    /// The unique identifier of the transition.
6046    #[prost(int32, optional, tag="1")]
6047    pub id: ::core::option::Option<i32>,
6048    /// The time the transition was created on the WM side
6049    /// (using SystemClock.elapsedRealtimeNanos())
6050    #[prost(int64, optional, tag="2")]
6051    pub create_time_ns: ::core::option::Option<i64>,
6052    /// The time the transition was sent from the WM side to shell
6053    /// (using SystemClock.elapsedRealtimeNanos())
6054    #[prost(int64, optional, tag="3")]
6055    pub send_time_ns: ::core::option::Option<i64>,
6056    /// The time the transition was dispatched by shell to execute
6057    /// (using SystemClock.elapsedRealtimeNanos())
6058    #[prost(int64, optional, tag="4")]
6059    pub dispatch_time_ns: ::core::option::Option<i64>,
6060    /// If the transition merge was accepted by the transition handler, this
6061    /// contains the time the transition was merged into transition with id
6062    /// `merge_target`.
6063    /// (using SystemClock.elapsedRealtimeNanos())
6064    #[prost(int64, optional, tag="5")]
6065    pub merge_time_ns: ::core::option::Option<i64>,
6066    /// The time shell proposed the transition should be merged to the transition
6067    /// handler into transition with id `merge_target`.
6068    /// (using SystemClock.elapsedRealtimeNanos()).
6069    #[prost(int64, optional, tag="6")]
6070    pub merge_request_time_ns: ::core::option::Option<i64>,
6071    /// If the transition was aborted on the shell side, this is the time that
6072    /// occurred.
6073    /// (using SystemClock.elapsedRealtimeNanos())
6074    #[prost(int64, optional, tag="7")]
6075    pub shell_abort_time_ns: ::core::option::Option<i64>,
6076    /// If the transition was aborted on the wm side, this is the time that
6077    /// occurred.
6078    /// (using SystemClock.elapsedRealtimeNanos())
6079    #[prost(int64, optional, tag="8")]
6080    pub wm_abort_time_ns: ::core::option::Option<i64>,
6081    /// The time WM considers the transition to be complete.
6082    /// (using SystemClock.elapsedRealtimeNanos())
6083    #[prost(int64, optional, tag="9")]
6084    pub finish_time_ns: ::core::option::Option<i64>,
6085    /// The id of the transaction that WM proposed to use as the starting
6086    /// transaction. It contains all the layer changes required to setup the
6087    /// transition and should be executed right at the start of the transition
6088    /// by the transition handler.
6089    #[prost(uint64, optional, tag="10")]
6090    pub start_transaction_id: ::core::option::Option<u64>,
6091    /// The if of the transaction that WM proposed to use as the finish
6092    /// transaction. It contains all the layer changes required to set the final
6093    /// state of the transition.
6094    #[prost(uint64, optional, tag="11")]
6095    pub finish_transaction_id: ::core::option::Option<u64>,
6096    /// The id of the handler that executed the transition. A HandlerMappings
6097    /// message in the trace will contain the mapping of id to a string
6098    /// representation of the handler.
6099    #[prost(int32, optional, tag="12")]
6100    pub handler: ::core::option::Option<i32>,
6101    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
6102    #[prost(int32, optional, tag="13")]
6103    pub r#type: ::core::option::Option<i32>,
6104    /// The list of targets that are part of this transition.
6105    #[prost(message, repeated, tag="14")]
6106    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
6107    /// The id of the transition we have requested to merge or have merged this
6108    /// transition into.
6109    #[prost(int32, optional, tag="15")]
6110    pub merge_target: ::core::option::Option<i32>,
6111    /// The flags set on this transition.
6112    #[prost(int32, optional, tag="16")]
6113    pub flags: ::core::option::Option<i32>,
6114    /// The time the starting window was removed. Tracked because this can
6115    /// happen after the transition finishes, but the app may not yet be visible
6116    /// until the starting window is removed. So in a sense the transition is not
6117    /// finished until the starting window is removed. (b/284302118)
6118    /// (using SystemClock.elapsedRealtimeNanos())
6119    #[prost(int64, optional, tag="17")]
6120    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
6121}
6122/// Nested message and enum types in `ShellTransition`.
6123pub mod shell_transition {
6124    /// Contains the information about the windows targeted in a transition.
6125    #[derive(Clone, PartialEq, ::prost::Message)]
6126    pub struct Target {
6127        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
6128        #[prost(int32, optional, tag="1")]
6129        pub mode: ::core::option::Option<i32>,
6130        /// The layer id of this target.
6131        #[prost(int32, optional, tag="2")]
6132        pub layer_id: ::core::option::Option<i32>,
6133        /// The window id of this target.
6134        #[prost(int32, optional, tag="3")]
6135        pub window_id: ::core::option::Option<i32>,
6136        /// The flags set on this target.
6137        #[prost(int32, optional, tag="4")]
6138        pub flags: ::core::option::Option<i32>,
6139    }
6140}
6141/// Contains mappings from handler ids to string representation of the handlers.
6142#[derive(Clone, PartialEq, ::prost::Message)]
6143pub struct ShellHandlerMappings {
6144    #[prost(message, repeated, tag="1")]
6145    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
6146}
6147#[derive(Clone, PartialEq, ::prost::Message)]
6148pub struct ShellHandlerMapping {
6149    /// The id of the handler used in the ShellTransition message.
6150    #[prost(int32, optional, tag="1")]
6151    pub id: ::core::option::Option<i32>,
6152    /// A human readable and meaningful string representation of the handler.
6153    #[prost(string, optional, tag="2")]
6154    pub name: ::core::option::Option<::prost::alloc::string::String>,
6155}
6156// End of protos/perfetto/trace/android/shell_transition.proto
6157
6158// Begin of protos/perfetto/trace/android/graphics/rect.proto
6159
6160#[derive(Clone, PartialEq, ::prost::Message)]
6161pub struct RectProto {
6162    #[prost(int32, optional, tag="1")]
6163    pub left: ::core::option::Option<i32>,
6164    #[prost(int32, optional, tag="2")]
6165    pub top: ::core::option::Option<i32>,
6166    #[prost(int32, optional, tag="3")]
6167    pub right: ::core::option::Option<i32>,
6168    #[prost(int32, optional, tag="4")]
6169    pub bottom: ::core::option::Option<i32>,
6170}
6171// End of protos/perfetto/trace/android/graphics/rect.proto
6172
6173// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
6174
6175#[derive(Clone, PartialEq, ::prost::Message)]
6176pub struct RegionProto {
6177    #[prost(message, repeated, tag="2")]
6178    pub rect: ::prost::alloc::vec::Vec<RectProto>,
6179}
6180#[derive(Clone, PartialEq, ::prost::Message)]
6181pub struct SizeProto {
6182    #[prost(int32, optional, tag="1")]
6183    pub w: ::core::option::Option<i32>,
6184    #[prost(int32, optional, tag="2")]
6185    pub h: ::core::option::Option<i32>,
6186}
6187#[derive(Clone, PartialEq, ::prost::Message)]
6188pub struct TransformProto {
6189    #[prost(float, optional, tag="1")]
6190    pub dsdx: ::core::option::Option<f32>,
6191    #[prost(float, optional, tag="2")]
6192    pub dtdx: ::core::option::Option<f32>,
6193    #[prost(float, optional, tag="3")]
6194    pub dsdy: ::core::option::Option<f32>,
6195    #[prost(float, optional, tag="4")]
6196    pub dtdy: ::core::option::Option<f32>,
6197    #[prost(int32, optional, tag="5")]
6198    pub r#type: ::core::option::Option<i32>,
6199}
6200#[derive(Clone, PartialEq, ::prost::Message)]
6201pub struct ColorProto {
6202    #[prost(float, optional, tag="1")]
6203    pub r: ::core::option::Option<f32>,
6204    #[prost(float, optional, tag="2")]
6205    pub g: ::core::option::Option<f32>,
6206    #[prost(float, optional, tag="3")]
6207    pub b: ::core::option::Option<f32>,
6208    #[prost(float, optional, tag="4")]
6209    pub a: ::core::option::Option<f32>,
6210}
6211#[derive(Clone, PartialEq, ::prost::Message)]
6212pub struct InputWindowInfoProto {
6213    #[prost(uint32, optional, tag="1")]
6214    pub layout_params_flags: ::core::option::Option<u32>,
6215    #[prost(int32, optional, tag="2")]
6216    pub layout_params_type: ::core::option::Option<i32>,
6217    #[prost(message, optional, tag="3")]
6218    pub frame: ::core::option::Option<RectProto>,
6219    #[prost(message, optional, tag="4")]
6220    pub touchable_region: ::core::option::Option<RegionProto>,
6221    #[prost(int32, optional, tag="5")]
6222    pub surface_inset: ::core::option::Option<i32>,
6223    #[prost(bool, optional, tag="6")]
6224    pub visible: ::core::option::Option<bool>,
6225    #[deprecated]
6226    #[prost(bool, optional, tag="7")]
6227    pub can_receive_keys: ::core::option::Option<bool>,
6228    #[prost(bool, optional, tag="8")]
6229    pub focusable: ::core::option::Option<bool>,
6230    #[prost(bool, optional, tag="9")]
6231    pub has_wallpaper: ::core::option::Option<bool>,
6232    #[prost(float, optional, tag="10")]
6233    pub global_scale_factor: ::core::option::Option<f32>,
6234    #[deprecated]
6235    #[prost(float, optional, tag="11")]
6236    pub window_x_scale: ::core::option::Option<f32>,
6237    #[deprecated]
6238    #[prost(float, optional, tag="12")]
6239    pub window_y_scale: ::core::option::Option<f32>,
6240    #[prost(int32, optional, tag="13")]
6241    pub crop_layer_id: ::core::option::Option<i32>,
6242    #[prost(bool, optional, tag="14")]
6243    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6244    #[prost(message, optional, tag="15")]
6245    pub touchable_region_crop: ::core::option::Option<RectProto>,
6246    #[prost(message, optional, tag="16")]
6247    pub transform: ::core::option::Option<TransformProto>,
6248    #[prost(uint32, optional, tag="17")]
6249    pub input_config: ::core::option::Option<u32>,
6250}
6251#[derive(Clone, PartialEq, ::prost::Message)]
6252pub struct BlurRegion {
6253    #[prost(uint32, optional, tag="1")]
6254    pub blur_radius: ::core::option::Option<u32>,
6255    #[deprecated]
6256    #[prost(uint32, optional, tag="2")]
6257    pub corner_radius_tl: ::core::option::Option<u32>,
6258    #[deprecated]
6259    #[prost(uint32, optional, tag="3")]
6260    pub corner_radius_tr: ::core::option::Option<u32>,
6261    #[deprecated]
6262    #[prost(uint32, optional, tag="4")]
6263    pub corner_radius_bl: ::core::option::Option<u32>,
6264    #[deprecated]
6265    #[prost(float, optional, tag="5")]
6266    pub corner_radius_br: ::core::option::Option<f32>,
6267    #[prost(float, optional, tag="11")]
6268    pub corner_radius_tlx: ::core::option::Option<f32>,
6269    #[prost(float, optional, tag="12")]
6270    pub corner_radius_tly: ::core::option::Option<f32>,
6271    #[prost(float, optional, tag="13")]
6272    pub corner_radius_trx: ::core::option::Option<f32>,
6273    #[prost(float, optional, tag="14")]
6274    pub corner_radius_try: ::core::option::Option<f32>,
6275    #[prost(float, optional, tag="15")]
6276    pub corner_radius_blx: ::core::option::Option<f32>,
6277    #[prost(float, optional, tag="16")]
6278    pub corner_radius_bly: ::core::option::Option<f32>,
6279    #[prost(float, optional, tag="17")]
6280    pub corner_radius_brx: ::core::option::Option<f32>,
6281    #[prost(float, optional, tag="18")]
6282    pub corner_radius_bry: ::core::option::Option<f32>,
6283    #[prost(float, optional, tag="6")]
6284    pub alpha: ::core::option::Option<f32>,
6285    #[prost(int32, optional, tag="7")]
6286    pub left: ::core::option::Option<i32>,
6287    #[prost(int32, optional, tag="8")]
6288    pub top: ::core::option::Option<i32>,
6289    #[prost(int32, optional, tag="9")]
6290    pub right: ::core::option::Option<i32>,
6291    #[prost(int32, optional, tag="10")]
6292    pub bottom: ::core::option::Option<i32>,
6293}
6294#[derive(Clone, PartialEq, ::prost::Message)]
6295pub struct ColorTransformProto {
6296    /// This will be a 4x4 matrix of float values
6297    #[prost(float, repeated, tag="1")]
6298    pub val: ::prost::alloc::vec::Vec<f32>,
6299}
6300#[derive(Clone, PartialEq, ::prost::Message)]
6301pub struct BoxShadowSettings {
6302    #[prost(message, repeated, tag="1")]
6303    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6304}
6305/// Nested message and enum types in `BoxShadowSettings`.
6306pub mod box_shadow_settings {
6307    #[derive(Clone, PartialEq, ::prost::Message)]
6308    pub struct BoxShadowParams {
6309        #[prost(float, optional, tag="1")]
6310        pub blur_radius: ::core::option::Option<f32>,
6311        #[prost(float, optional, tag="2")]
6312        pub spread_radius: ::core::option::Option<f32>,
6313        #[prost(int32, optional, tag="3")]
6314        pub color: ::core::option::Option<i32>,
6315        #[prost(float, optional, tag="4")]
6316        pub offset_x: ::core::option::Option<f32>,
6317        #[prost(float, optional, tag="5")]
6318        pub offset_y: ::core::option::Option<f32>,
6319    }
6320}
6321#[derive(Clone, PartialEq, ::prost::Message)]
6322pub struct BorderSettings {
6323    #[prost(float, optional, tag="1")]
6324    pub stroke_width: ::core::option::Option<f32>,
6325    #[prost(int32, optional, tag="2")]
6326    pub color: ::core::option::Option<i32>,
6327}
6328// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6329
6330/// Message used by Winscope to process legacy trace files.
6331/// Represents a file full of surface flinger trace entries.
6332/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6333/// (.LYRTRACE), such that they can be easily identified.
6334#[derive(Clone, PartialEq, ::prost::Message)]
6335pub struct LayersTraceFileProto {
6336    /// Must be the first field, set to value in MagicNumber
6337    #[prost(fixed64, optional, tag="1")]
6338    pub magic_number: ::core::option::Option<u64>,
6339    #[prost(message, repeated, tag="2")]
6340    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6341    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6342    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6343    /// systemTime(SYSTEM_TIME_MONOTONIC)
6344    #[prost(fixed64, optional, tag="3")]
6345    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6346}
6347/// Nested message and enum types in `LayersTraceFileProto`.
6348pub mod layers_trace_file_proto {
6349    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6350    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6351    /// and there's no nice way to put 64bit constants into .proto files.
6352    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6353    #[repr(i32)]
6354    pub enum MagicNumber {
6355        Invalid = 0,
6356        /// LYRT (little-endian ASCII)
6357        L = 1414682956,
6358        /// RACE (little-endian ASCII)
6359        H = 1162035538,
6360    }
6361    impl MagicNumber {
6362        /// String value of the enum field names used in the ProtoBuf definition.
6363        ///
6364        /// The values are not transformed in any way and thus are considered stable
6365        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6366        pub fn as_str_name(&self) -> &'static str {
6367            match self {
6368                MagicNumber::Invalid => "INVALID",
6369                MagicNumber::L => "MAGIC_NUMBER_L",
6370                MagicNumber::H => "MAGIC_NUMBER_H",
6371            }
6372        }
6373    }
6374}
6375#[derive(Clone, PartialEq, ::prost::Message)]
6376pub struct LayersSnapshotProto {
6377    /// elapsed realtime in nanos since boot of when this entry was logged
6378    #[prost(sfixed64, optional, tag="1")]
6379    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6380    /// SurfaceFlinger's stage where the snapshot was triggered.
6381    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6382    #[prost(string, optional, tag="2")]
6383    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6384    #[prost(message, optional, tag="3")]
6385    pub layers: ::core::option::Option<LayersProto>,
6386    /// Blob for the current HWC information for all layers, reported by dumpsys.
6387    /// Example:
6388    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6389    #[prost(string, optional, tag="4")]
6390    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6391    /// Excludes state sent during composition like visible region and composition
6392    /// type.
6393    #[prost(bool, optional, tag="5")]
6394    pub excludes_composition_state: ::core::option::Option<bool>,
6395    /// Number of missed entries since the last entry was recorded.
6396    #[prost(uint32, optional, tag="6")]
6397    pub missed_entries: ::core::option::Option<u32>,
6398    #[prost(message, repeated, tag="7")]
6399    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6400    #[prost(int64, optional, tag="8")]
6401    pub vsync_id: ::core::option::Option<i64>,
6402}
6403/// Contains a list of all layers.
6404#[derive(Clone, PartialEq, ::prost::Message)]
6405pub struct LayersProto {
6406    #[prost(message, repeated, tag="1")]
6407    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6408}
6409#[derive(Clone, PartialEq, ::prost::Message)]
6410pub struct DisplayProto {
6411    #[prost(uint64, optional, tag="1")]
6412    pub id: ::core::option::Option<u64>,
6413    /// Display descriptor, e.g. "Built-In Screen"
6414    #[prost(string, optional, tag="2")]
6415    pub name: ::core::option::Option<::prost::alloc::string::String>,
6416    #[prost(uint32, optional, tag="3")]
6417    pub layer_stack: ::core::option::Option<u32>,
6418    #[prost(message, optional, tag="4")]
6419    pub size: ::core::option::Option<SizeProto>,
6420    #[prost(message, optional, tag="5")]
6421    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6422    #[prost(message, optional, tag="6")]
6423    pub transform: ::core::option::Option<TransformProto>,
6424    #[prost(bool, optional, tag="7")]
6425    pub is_virtual: ::core::option::Option<bool>,
6426    #[prost(double, optional, tag="8")]
6427    pub dpi_x: ::core::option::Option<f64>,
6428    #[prost(double, optional, tag="9")]
6429    pub dpi_y: ::core::option::Option<f64>,
6430}
6431/// Information about each layer.
6432#[derive(Clone, PartialEq, ::prost::Message)]
6433pub struct LayerProto {
6434    /// unique id per layer.
6435    #[prost(int32, optional, tag="1")]
6436    pub id: ::core::option::Option<i32>,
6437    /// unique name per layer.
6438    /// Example: "Wallpaper".
6439    #[prost(string, optional, tag="2")]
6440    pub name: ::core::option::Option<::prost::alloc::string::String>,
6441    /// list of children this layer may have. May be empty.
6442    #[prost(int32, repeated, tag="3")]
6443    pub children: ::prost::alloc::vec::Vec<i32>,
6444    /// list of layers that are z order relative to this layer.
6445    #[prost(int32, repeated, tag="4")]
6446    pub relatives: ::prost::alloc::vec::Vec<i32>,
6447    /// The type of layer.
6448    /// Examples: "ContainerLayer", "BufferStateLayer".
6449    #[prost(string, optional, tag="5")]
6450    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6451    #[prost(message, optional, tag="6")]
6452    pub transparent_region: ::core::option::Option<RegionProto>,
6453    #[prost(message, optional, tag="7")]
6454    pub visible_region: ::core::option::Option<RegionProto>,
6455    #[prost(message, optional, tag="8")]
6456    pub damage_region: ::core::option::Option<RegionProto>,
6457    #[prost(uint32, optional, tag="9")]
6458    pub layer_stack: ::core::option::Option<u32>,
6459    /// The layer's z order. Can be z order in layer stack, relative to parent,
6460    /// or relative to another layer specified in zOrderRelative.
6461    #[prost(int32, optional, tag="10")]
6462    pub z: ::core::option::Option<i32>,
6463    /// The layer's position on the display.
6464    #[prost(message, optional, tag="11")]
6465    pub position: ::core::option::Option<PositionProto>,
6466    /// The layer's requested position.
6467    #[prost(message, optional, tag="12")]
6468    pub requested_position: ::core::option::Option<PositionProto>,
6469    /// The layer's size.
6470    #[prost(message, optional, tag="13")]
6471    pub size: ::core::option::Option<SizeProto>,
6472    /// The layer's crop in its own bounds.
6473    #[prost(message, optional, tag="14")]
6474    pub crop: ::core::option::Option<RectProto>,
6475    /// The layer's crop in its parent's bounds.
6476    #[deprecated]
6477    #[prost(message, optional, tag="15")]
6478    pub final_crop: ::core::option::Option<RectProto>,
6479    #[prost(bool, optional, tag="16")]
6480    pub is_opaque: ::core::option::Option<bool>,
6481    #[prost(bool, optional, tag="17")]
6482    pub invalidate: ::core::option::Option<bool>,
6483    /// Composition states's dataspace.
6484    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
6485    /// See full enum in
6486    /// frameworks/native/libs/nativewindow/include/android/data_space.h
6487    #[prost(string, optional, tag="18")]
6488    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
6489    /// Buffer's pixel format
6490    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
6491    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
6492    #[prost(string, optional, tag="19")]
6493    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
6494    /// The layer's actual color.
6495    #[prost(message, optional, tag="20")]
6496    pub color: ::core::option::Option<ColorProto>,
6497    /// The layer's requested color.
6498    #[prost(message, optional, tag="21")]
6499    pub requested_color: ::core::option::Option<ColorProto>,
6500    /// Can be any combination of
6501    ///     hidden = 0x01
6502    ///     opaque = 0x02,
6503    ///     secure = 0x80,
6504    #[prost(uint32, optional, tag="22")]
6505    pub flags: ::core::option::Option<u32>,
6506    /// The layer's actual transform
6507    #[prost(message, optional, tag="23")]
6508    pub transform: ::core::option::Option<TransformProto>,
6509    /// The layer's requested transform.
6510    #[prost(message, optional, tag="24")]
6511    pub requested_transform: ::core::option::Option<TransformProto>,
6512    /// The parent layer. This value can be null if there is no parent.
6513    #[prost(int32, optional, tag="25")]
6514    pub parent: ::core::option::Option<i32>,
6515    /// The layer that this layer has a z order relative to. This value can be
6516    /// null.
6517    #[prost(int32, optional, tag="26")]
6518    pub z_order_relative_of: ::core::option::Option<i32>,
6519    /// This value can be null if there's nothing to draw.
6520    #[prost(message, optional, tag="27")]
6521    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
6522    /// The number of frames available.
6523    #[prost(int32, optional, tag="28")]
6524    pub queued_frames: ::core::option::Option<i32>,
6525    #[prost(bool, optional, tag="29")]
6526    pub refresh_pending: ::core::option::Option<bool>,
6527    /// The layer's composer backend destination frame
6528    #[prost(message, optional, tag="30")]
6529    pub hwc_frame: ::core::option::Option<RectProto>,
6530    /// The layer's composer backend source crop
6531    #[prost(message, optional, tag="31")]
6532    pub hwc_crop: ::core::option::Option<FloatRectProto>,
6533    /// The layer's composer backend transform
6534    #[prost(int32, optional, tag="32")]
6535    pub hwc_transform: ::core::option::Option<i32>,
6536    #[deprecated]
6537    #[prost(int32, optional, tag="33")]
6538    pub window_type: ::core::option::Option<i32>,
6539    #[deprecated]
6540    #[prost(int32, optional, tag="34")]
6541    pub app_id: ::core::option::Option<i32>,
6542    /// The layer's composition type
6543    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6544    pub hwc_composition_type: ::core::option::Option<i32>,
6545    /// If it's a buffer layer, indicate if the content is protected
6546    #[prost(bool, optional, tag="36")]
6547    pub is_protected: ::core::option::Option<bool>,
6548    /// Current frame number being rendered.
6549    #[prost(uint64, optional, tag="37")]
6550    pub curr_frame: ::core::option::Option<u64>,
6551    /// A list of barriers that the layer is waiting to update state.
6552    #[prost(message, repeated, tag="38")]
6553    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6554    /// If active_buffer is not null, record its transform.
6555    #[prost(message, optional, tag="39")]
6556    pub buffer_transform: ::core::option::Option<TransformProto>,
6557    #[prost(int32, optional, tag="40")]
6558    pub effective_scaling_mode: ::core::option::Option<i32>,
6559    /// Layer's corner radius
6560    #[deprecated]
6561    #[prost(float, optional, tag="41")]
6562    pub corner_radius: ::core::option::Option<f32>,
6563    /// Metadata map. May be empty.
6564    #[prost(map="int32, string", tag="42")]
6565    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
6566    #[prost(message, optional, tag="43")]
6567    pub effective_transform: ::core::option::Option<TransformProto>,
6568    #[prost(message, optional, tag="44")]
6569    pub source_bounds: ::core::option::Option<FloatRectProto>,
6570    #[prost(message, optional, tag="45")]
6571    pub bounds: ::core::option::Option<FloatRectProto>,
6572    #[prost(message, optional, tag="46")]
6573    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6574    #[prost(message, optional, tag="47")]
6575    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6576    /// Crop used to draw the rounded corner.
6577    #[prost(message, optional, tag="48")]
6578    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6579    /// length of the shadow to draw around the layer, it may be set on the
6580    /// layer or set by a parent layer.
6581    #[prost(float, optional, tag="49")]
6582    pub shadow_radius: ::core::option::Option<f32>,
6583    #[prost(message, optional, tag="50")]
6584    pub color_transform: ::core::option::Option<ColorTransformProto>,
6585    #[prost(bool, optional, tag="51")]
6586    pub is_relative_of: ::core::option::Option<bool>,
6587    /// Layer's background blur radius in pixels.
6588    #[prost(int32, optional, tag="52")]
6589    pub background_blur_radius: ::core::option::Option<i32>,
6590    #[prost(uint32, optional, tag="53")]
6591    pub owner_uid: ::core::option::Option<u32>,
6592    /// Regions of a layer, where blur should be applied.
6593    #[prost(message, repeated, tag="54")]
6594    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6595    #[prost(bool, optional, tag="55")]
6596    pub is_trusted_overlay: ::core::option::Option<bool>,
6597    /// Corner radius explicitly set on layer rather than inherited
6598    #[deprecated]
6599    #[prost(float, optional, tag="56")]
6600    pub requested_corner_radius: ::core::option::Option<f32>,
6601    #[prost(message, optional, tag="57")]
6602    pub destination_frame: ::core::option::Option<RectProto>,
6603    #[prost(uint32, optional, tag="58")]
6604    pub original_id: ::core::option::Option<u32>,
6605    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6606    pub trusted_overlay: ::core::option::Option<i32>,
6607    /// Layer's scale during background blur, relative to 1.0f=100%
6608    #[prost(float, optional, tag="60")]
6609    pub background_blur_scale: ::core::option::Option<f32>,
6610    /// Layer's corner radius.
6611    #[prost(message, optional, tag="61")]
6612    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6613    /// Corner radius explicitly set on layer rather than inherited
6614    #[prost(message, optional, tag="62")]
6615    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6616    /// Corner radius explicity set as drawn by client
6617    #[prost(message, optional, tag="63")]
6618    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6619    /// Priority value of the layer set by the system.
6620    #[prost(int32, optional, tag="64")]
6621    pub system_content_priority: ::core::option::Option<i32>,
6622    /// Settings which specify how shadows should be drawn for a layer.
6623    #[prost(message, optional, tag="65")]
6624    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6625    /// Settings which specify how an outline should be drawn for a layer.
6626    #[prost(message, optional, tag="66")]
6627    pub border_settings: ::core::option::Option<BorderSettings>,
6628    /// "True" corner radii of the layer computed by SurfaceFlinger.
6629    #[prost(message, optional, tag="67")]
6630    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
6631}
6632#[derive(Clone, PartialEq, ::prost::Message)]
6633pub struct PositionProto {
6634    #[prost(float, optional, tag="1")]
6635    pub x: ::core::option::Option<f32>,
6636    #[prost(float, optional, tag="2")]
6637    pub y: ::core::option::Option<f32>,
6638}
6639#[derive(Clone, PartialEq, ::prost::Message)]
6640pub struct FloatRectProto {
6641    #[prost(float, optional, tag="1")]
6642    pub left: ::core::option::Option<f32>,
6643    #[prost(float, optional, tag="2")]
6644    pub top: ::core::option::Option<f32>,
6645    #[prost(float, optional, tag="3")]
6646    pub right: ::core::option::Option<f32>,
6647    #[prost(float, optional, tag="4")]
6648    pub bottom: ::core::option::Option<f32>,
6649}
6650#[derive(Clone, PartialEq, ::prost::Message)]
6651pub struct CornerRadiiProto {
6652    #[prost(float, optional, tag="1")]
6653    pub tl: ::core::option::Option<f32>,
6654    #[prost(float, optional, tag="2")]
6655    pub tr: ::core::option::Option<f32>,
6656    #[prost(float, optional, tag="3")]
6657    pub bl: ::core::option::Option<f32>,
6658    #[prost(float, optional, tag="4")]
6659    pub br: ::core::option::Option<f32>,
6660}
6661#[derive(Clone, PartialEq, ::prost::Message)]
6662pub struct ActiveBufferProto {
6663    #[prost(uint32, optional, tag="1")]
6664    pub width: ::core::option::Option<u32>,
6665    #[prost(uint32, optional, tag="2")]
6666    pub height: ::core::option::Option<u32>,
6667    #[prost(uint32, optional, tag="3")]
6668    pub stride: ::core::option::Option<u32>,
6669    #[prost(int32, optional, tag="4")]
6670    pub format: ::core::option::Option<i32>,
6671    #[prost(uint64, optional, tag="5")]
6672    pub usage: ::core::option::Option<u64>,
6673}
6674#[derive(Clone, PartialEq, ::prost::Message)]
6675pub struct BarrierLayerProto {
6676    /// layer id the barrier is waiting on.
6677    #[prost(int32, optional, tag="1")]
6678    pub id: ::core::option::Option<i32>,
6679    /// frame number the barrier is waiting on.
6680    #[prost(uint64, optional, tag="2")]
6681    pub frame_number: ::core::option::Option<u64>,
6682}
6683// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6684
6685// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6686
6687/// Message used by Winscope to process legacy trace files.
6688/// Represents a file full of surface flinger transactions.
6689/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6690/// (.TNXTRACE), such that they can be easily identified.
6691#[derive(Clone, PartialEq, ::prost::Message)]
6692pub struct TransactionTraceFile {
6693    /// Must be the first field, set to value in MagicNumber
6694    #[prost(fixed64, optional, tag="1")]
6695    pub magic_number: ::core::option::Option<u64>,
6696    #[prost(message, repeated, tag="2")]
6697    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6698    /// offset between real-time clock and elapsed time clock in nanoseconds.
6699    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6700    /// systemTime(SYSTEM_TIME_MONOTONIC)
6701    #[prost(fixed64, optional, tag="3")]
6702    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6703    #[prost(uint32, optional, tag="4")]
6704    pub version: ::core::option::Option<u32>,
6705}
6706/// Nested message and enum types in `TransactionTraceFile`.
6707pub mod transaction_trace_file {
6708    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6709    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6710    /// and there's no nice way to put 64bit constants into .proto files.
6711    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6712    #[repr(i32)]
6713    pub enum MagicNumber {
6714        Invalid = 0,
6715        /// TNXT (little-endian ASCII)
6716        L = 1415073364,
6717        /// RACE (little-endian ASCII)
6718        H = 1162035538,
6719    }
6720    impl MagicNumber {
6721        /// String value of the enum field names used in the ProtoBuf definition.
6722        ///
6723        /// The values are not transformed in any way and thus are considered stable
6724        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6725        pub fn as_str_name(&self) -> &'static str {
6726            match self {
6727                MagicNumber::Invalid => "INVALID",
6728                MagicNumber::L => "MAGIC_NUMBER_L",
6729                MagicNumber::H => "MAGIC_NUMBER_H",
6730            }
6731        }
6732    }
6733}
6734#[derive(Clone, PartialEq, ::prost::Message)]
6735pub struct TransactionTraceEntry {
6736    #[prost(int64, optional, tag="1")]
6737    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6738    #[prost(int64, optional, tag="2")]
6739    pub vsync_id: ::core::option::Option<i64>,
6740    #[prost(message, repeated, tag="3")]
6741    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6742    #[prost(message, repeated, tag="4")]
6743    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6744    #[prost(uint32, repeated, packed="false", tag="5")]
6745    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6746    #[prost(message, repeated, tag="6")]
6747    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6748    #[prost(int32, repeated, packed="false", tag="7")]
6749    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6750    #[prost(uint32, repeated, packed="false", tag="8")]
6751    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6752    #[prost(bool, optional, tag="9")]
6753    pub displays_changed: ::core::option::Option<bool>,
6754    #[prost(message, repeated, tag="10")]
6755    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
6756}
6757#[derive(Clone, PartialEq, ::prost::Message)]
6758pub struct DisplayInfo {
6759    #[prost(uint32, optional, tag="1")]
6760    pub layer_stack: ::core::option::Option<u32>,
6761    #[prost(int32, optional, tag="2")]
6762    pub display_id: ::core::option::Option<i32>,
6763    #[prost(int32, optional, tag="3")]
6764    pub logical_width: ::core::option::Option<i32>,
6765    #[prost(int32, optional, tag="4")]
6766    pub logical_height: ::core::option::Option<i32>,
6767    #[prost(message, optional, tag="5")]
6768    pub transform_inverse: ::core::option::Option<Transform>,
6769    #[prost(message, optional, tag="6")]
6770    pub transform: ::core::option::Option<Transform>,
6771    #[prost(bool, optional, tag="7")]
6772    pub receives_input: ::core::option::Option<bool>,
6773    #[prost(bool, optional, tag="8")]
6774    pub is_secure: ::core::option::Option<bool>,
6775    #[prost(bool, optional, tag="9")]
6776    pub is_primary: ::core::option::Option<bool>,
6777    #[prost(bool, optional, tag="10")]
6778    pub is_virtual: ::core::option::Option<bool>,
6779    #[prost(int32, optional, tag="11")]
6780    pub rotation_flags: ::core::option::Option<i32>,
6781    #[prost(int32, optional, tag="12")]
6782    pub transform_hint: ::core::option::Option<i32>,
6783}
6784#[derive(Clone, PartialEq, ::prost::Message)]
6785pub struct LayerCreationArgs {
6786    #[prost(uint32, optional, tag="1")]
6787    pub layer_id: ::core::option::Option<u32>,
6788    #[prost(string, optional, tag="2")]
6789    pub name: ::core::option::Option<::prost::alloc::string::String>,
6790    #[prost(uint32, optional, tag="3")]
6791    pub flags: ::core::option::Option<u32>,
6792    #[prost(uint32, optional, tag="4")]
6793    pub parent_id: ::core::option::Option<u32>,
6794    #[prost(uint32, optional, tag="5")]
6795    pub mirror_from_id: ::core::option::Option<u32>,
6796    #[prost(bool, optional, tag="6")]
6797    pub add_to_root: ::core::option::Option<bool>,
6798    #[prost(uint32, optional, tag="7")]
6799    pub layer_stack_to_mirror: ::core::option::Option<u32>,
6800}
6801#[derive(Clone, PartialEq, ::prost::Message)]
6802pub struct Transform {
6803    #[prost(float, optional, tag="1")]
6804    pub dsdx: ::core::option::Option<f32>,
6805    #[prost(float, optional, tag="2")]
6806    pub dtdx: ::core::option::Option<f32>,
6807    #[prost(float, optional, tag="3")]
6808    pub dtdy: ::core::option::Option<f32>,
6809    #[prost(float, optional, tag="4")]
6810    pub dsdy: ::core::option::Option<f32>,
6811    #[prost(float, optional, tag="5")]
6812    pub tx: ::core::option::Option<f32>,
6813    #[prost(float, optional, tag="6")]
6814    pub ty: ::core::option::Option<f32>,
6815}
6816#[derive(Clone, PartialEq, ::prost::Message)]
6817pub struct TransactionBarrier {
6818    #[prost(string, optional, tag="1")]
6819    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
6820    #[prost(uint32, optional, tag="2")]
6821    pub kind: ::core::option::Option<u32>,
6822}
6823#[derive(Clone, PartialEq, ::prost::Message)]
6824pub struct TransactionState {
6825    #[prost(int32, optional, tag="1")]
6826    pub pid: ::core::option::Option<i32>,
6827    #[prost(int32, optional, tag="2")]
6828    pub uid: ::core::option::Option<i32>,
6829    #[prost(int64, optional, tag="3")]
6830    pub vsync_id: ::core::option::Option<i64>,
6831    #[prost(int32, optional, tag="4")]
6832    pub input_event_id: ::core::option::Option<i32>,
6833    #[prost(int64, optional, tag="5")]
6834    pub post_time: ::core::option::Option<i64>,
6835    #[prost(uint64, optional, tag="6")]
6836    pub transaction_id: ::core::option::Option<u64>,
6837    #[prost(message, repeated, tag="7")]
6838    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
6839    #[prost(message, repeated, tag="8")]
6840    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
6841    #[prost(uint64, repeated, packed="false", tag="9")]
6842    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
6843    #[prost(uint64, optional, tag="10")]
6844    pub apply_token: ::core::option::Option<u64>,
6845    #[prost(message, repeated, tag="11")]
6846    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
6847}
6848/// Keep insync with layer_state_t
6849#[derive(Clone, PartialEq, ::prost::Message)]
6850pub struct LayerState {
6851    #[prost(uint32, optional, tag="1")]
6852    pub layer_id: ::core::option::Option<u32>,
6853    #[prost(uint64, optional, tag="2")]
6854    pub what: ::core::option::Option<u64>,
6855    #[prost(float, optional, tag="3")]
6856    pub x: ::core::option::Option<f32>,
6857    #[prost(float, optional, tag="4")]
6858    pub y: ::core::option::Option<f32>,
6859    #[prost(int32, optional, tag="5")]
6860    pub z: ::core::option::Option<i32>,
6861    #[prost(uint32, optional, tag="6")]
6862    pub w: ::core::option::Option<u32>,
6863    #[prost(uint32, optional, tag="7")]
6864    pub h: ::core::option::Option<u32>,
6865    #[prost(uint32, optional, tag="8")]
6866    pub layer_stack: ::core::option::Option<u32>,
6867    #[prost(uint32, optional, tag="9")]
6868    pub flags: ::core::option::Option<u32>,
6869    #[prost(uint32, optional, tag="10")]
6870    pub mask: ::core::option::Option<u32>,
6871    #[prost(message, optional, tag="11")]
6872    pub matrix: ::core::option::Option<layer_state::Matrix22>,
6873    #[deprecated]
6874    #[prost(float, optional, tag="12")]
6875    pub corner_radius: ::core::option::Option<f32>,
6876    #[prost(uint32, optional, tag="13")]
6877    pub background_blur_radius: ::core::option::Option<u32>,
6878    #[prost(uint32, optional, tag="14")]
6879    pub parent_id: ::core::option::Option<u32>,
6880    #[prost(uint32, optional, tag="15")]
6881    pub relative_parent_id: ::core::option::Option<u32>,
6882    #[prost(float, optional, tag="16")]
6883    pub alpha: ::core::option::Option<f32>,
6884    #[prost(message, optional, tag="17")]
6885    pub color: ::core::option::Option<layer_state::Color3>,
6886    #[prost(message, optional, tag="18")]
6887    pub transparent_region: ::core::option::Option<RegionProto>,
6888    #[prost(uint32, optional, tag="19")]
6889    pub transform: ::core::option::Option<u32>,
6890    #[prost(bool, optional, tag="20")]
6891    pub transform_to_display_inverse: ::core::option::Option<bool>,
6892    #[prost(message, optional, tag="21")]
6893    pub crop: ::core::option::Option<RectProto>,
6894    #[prost(message, optional, tag="22")]
6895    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
6896    #[prost(int32, optional, tag="23")]
6897    pub api: ::core::option::Option<i32>,
6898    #[prost(bool, optional, tag="24")]
6899    pub has_sideband_stream: ::core::option::Option<bool>,
6900    #[prost(message, optional, tag="25")]
6901    pub color_transform: ::core::option::Option<ColorTransformProto>,
6902    #[prost(message, repeated, tag="26")]
6903    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6904    #[prost(message, optional, tag="27")]
6905    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
6906    #[prost(float, optional, tag="28")]
6907    pub bg_color_alpha: ::core::option::Option<f32>,
6908    #[prost(int32, optional, tag="29")]
6909    pub bg_color_dataspace: ::core::option::Option<i32>,
6910    #[prost(bool, optional, tag="30")]
6911    pub color_space_agnostic: ::core::option::Option<bool>,
6912    #[prost(float, optional, tag="31")]
6913    pub shadow_radius: ::core::option::Option<f32>,
6914    #[prost(int32, optional, tag="32")]
6915    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6916    #[prost(float, optional, tag="33")]
6917    pub frame_rate: ::core::option::Option<f32>,
6918    #[prost(int32, optional, tag="34")]
6919    pub frame_rate_compatibility: ::core::option::Option<i32>,
6920    #[prost(int32, optional, tag="35")]
6921    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6922    #[prost(uint32, optional, tag="36")]
6923    pub fixed_transform_hint: ::core::option::Option<u32>,
6924    #[prost(uint64, optional, tag="37")]
6925    pub frame_number: ::core::option::Option<u64>,
6926    #[prost(bool, optional, tag="38")]
6927    pub auto_refresh: ::core::option::Option<bool>,
6928    /// unused
6929    #[prost(bool, optional, tag="39")]
6930    pub is_trusted_overlay: ::core::option::Option<bool>,
6931    #[prost(message, optional, tag="40")]
6932    pub buffer_crop: ::core::option::Option<RectProto>,
6933    #[prost(message, optional, tag="41")]
6934    pub destination_frame: ::core::option::Option<RectProto>,
6935    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6936    pub drop_input_mode: ::core::option::Option<i32>,
6937    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6938    pub trusted_overlay: ::core::option::Option<i32>,
6939    #[prost(float, optional, tag="44")]
6940    pub background_blur_scale: ::core::option::Option<f32>,
6941    #[prost(message, optional, tag="45")]
6942    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6943    #[prost(message, optional, tag="46")]
6944    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6945    #[prost(int32, optional, tag="47")]
6946    pub system_content_priority: ::core::option::Option<i32>,
6947    #[prost(message, optional, tag="48")]
6948    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6949    #[prost(message, optional, tag="49")]
6950    pub border_settings: ::core::option::Option<BorderSettings>,
6951}
6952/// Nested message and enum types in `LayerState`.
6953pub mod layer_state {
6954    #[derive(Clone, PartialEq, ::prost::Message)]
6955    pub struct Matrix22 {
6956        #[prost(float, optional, tag="1")]
6957        pub dsdx: ::core::option::Option<f32>,
6958        #[prost(float, optional, tag="2")]
6959        pub dtdx: ::core::option::Option<f32>,
6960        #[prost(float, optional, tag="3")]
6961        pub dtdy: ::core::option::Option<f32>,
6962        #[prost(float, optional, tag="4")]
6963        pub dsdy: ::core::option::Option<f32>,
6964    }
6965    #[derive(Clone, PartialEq, ::prost::Message)]
6966    pub struct CornerRadii {
6967        #[prost(float, optional, tag="1")]
6968        pub tl: ::core::option::Option<f32>,
6969        #[prost(float, optional, tag="2")]
6970        pub tr: ::core::option::Option<f32>,
6971        #[prost(float, optional, tag="3")]
6972        pub bl: ::core::option::Option<f32>,
6973        #[prost(float, optional, tag="4")]
6974        pub br: ::core::option::Option<f32>,
6975    }
6976    #[derive(Clone, PartialEq, ::prost::Message)]
6977    pub struct Color3 {
6978        #[prost(float, optional, tag="1")]
6979        pub r: ::core::option::Option<f32>,
6980        #[prost(float, optional, tag="2")]
6981        pub g: ::core::option::Option<f32>,
6982        #[prost(float, optional, tag="3")]
6983        pub b: ::core::option::Option<f32>,
6984    }
6985    #[derive(Clone, PartialEq, ::prost::Message)]
6986    pub struct BufferData {
6987        #[prost(uint64, optional, tag="1")]
6988        pub buffer_id: ::core::option::Option<u64>,
6989        #[prost(uint32, optional, tag="2")]
6990        pub width: ::core::option::Option<u32>,
6991        #[prost(uint32, optional, tag="3")]
6992        pub height: ::core::option::Option<u32>,
6993        #[prost(uint64, optional, tag="4")]
6994        pub frame_number: ::core::option::Option<u64>,
6995        #[prost(uint32, optional, tag="5")]
6996        pub flags: ::core::option::Option<u32>,
6997        #[prost(uint64, optional, tag="6")]
6998        pub cached_buffer_id: ::core::option::Option<u64>,
6999        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
7000        pub pixel_format: ::core::option::Option<i32>,
7001        #[prost(uint64, optional, tag="8")]
7002        pub usage: ::core::option::Option<u64>,
7003    }
7004    /// Nested message and enum types in `BufferData`.
7005    pub mod buffer_data {
7006        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7007        #[repr(i32)]
7008        pub enum BufferDataChange {
7009            None = 0,
7010            FenceChanged = 1,
7011            FrameNumberChanged = 2,
7012            CachedBufferChanged = 4,
7013        }
7014        impl BufferDataChange {
7015            /// String value of the enum field names used in the ProtoBuf definition.
7016            ///
7017            /// The values are not transformed in any way and thus are considered stable
7018            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7019            pub fn as_str_name(&self) -> &'static str {
7020                match self {
7021                    BufferDataChange::None => "BufferDataChangeNone",
7022                    BufferDataChange::FenceChanged => "fenceChanged",
7023                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
7024                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
7025                }
7026            }
7027        }
7028        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7029        #[repr(i32)]
7030        pub enum PixelFormat {
7031            Unknown = 0,
7032            Custom = -4,
7033            Translucent = -3,
7034            Transparent = -2,
7035            Opaque = -1,
7036            Rgba8888 = 1,
7037            Rgbx8888 = 2,
7038            Rgb888 = 3,
7039            Rgb565 = 4,
7040            Bgra8888 = 5,
7041            Rgba5551 = 6,
7042            Rgba4444 = 7,
7043            RgbaFp16 = 22,
7044            Rgba1010102 = 43,
7045            R8 = 56,
7046        }
7047        impl PixelFormat {
7048            /// String value of the enum field names used in the ProtoBuf definition.
7049            ///
7050            /// The values are not transformed in any way and thus are considered stable
7051            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7052            pub fn as_str_name(&self) -> &'static str {
7053                match self {
7054                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
7055                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
7056                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
7057                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
7058                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
7059                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
7060                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
7061                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
7062                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
7063                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
7064                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
7065                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
7066                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
7067                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
7068                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
7069                }
7070            }
7071        }
7072    }
7073    #[derive(Clone, PartialEq, ::prost::Message)]
7074    pub struct WindowInfo {
7075        #[prost(uint32, optional, tag="1")]
7076        pub layout_params_flags: ::core::option::Option<u32>,
7077        #[prost(int32, optional, tag="2")]
7078        pub layout_params_type: ::core::option::Option<i32>,
7079        #[prost(message, optional, tag="3")]
7080        pub touchable_region: ::core::option::Option<super::RegionProto>,
7081        #[prost(int32, optional, tag="4")]
7082        pub surface_inset: ::core::option::Option<i32>,
7083        /// unused
7084        #[prost(bool, optional, tag="5")]
7085        pub focusable: ::core::option::Option<bool>,
7086        /// unused
7087        #[prost(bool, optional, tag="6")]
7088        pub has_wallpaper: ::core::option::Option<bool>,
7089        #[prost(float, optional, tag="7")]
7090        pub global_scale_factor: ::core::option::Option<f32>,
7091        #[prost(uint32, optional, tag="8")]
7092        pub crop_layer_id: ::core::option::Option<u32>,
7093        #[prost(bool, optional, tag="9")]
7094        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
7095        #[prost(message, optional, tag="10")]
7096        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
7097        #[prost(message, optional, tag="11")]
7098        pub transform: ::core::option::Option<super::Transform>,
7099        #[prost(uint32, optional, tag="12")]
7100        pub input_config: ::core::option::Option<u32>,
7101    }
7102    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
7103    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
7104    /// enums have to be 32 bits and there's no nice way to put 64bit constants
7105    /// into .proto files.
7106    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7107    #[repr(i32)]
7108    pub enum ChangesLsb {
7109        EChangesLsbNone = 0,
7110        EPositionChanged = 1,
7111        ELayerChanged = 2,
7112        /// unused = 0x00000004;
7113        EAlphaChanged = 8,
7114        EMatrixChanged = 16,
7115        ETransparentRegionChanged = 32,
7116        EFlagsChanged = 64,
7117        ELayerStackChanged = 128,
7118        EReleaseBufferListenerChanged = 1024,
7119        EShadowRadiusChanged = 2048,
7120        EBufferCropChanged = 8192,
7121        ERelativeLayerChanged = 16384,
7122        EReparent = 32768,
7123        EColorChanged = 65536,
7124        EBufferTransformChanged = 262144,
7125        ETransformToDisplayInverseChanged = 524288,
7126        ECropChanged = 1048576,
7127        EBufferChanged = 2097152,
7128        EAcquireFenceChanged = 4194304,
7129        EDataspaceChanged = 8388608,
7130        EHdrMetadataChanged = 16777216,
7131        ESurfaceDamageRegionChanged = 33554432,
7132        EApiChanged = 67108864,
7133        ESidebandStreamChanged = 134217728,
7134        EColorTransformChanged = 268435456,
7135        EHasListenerCallbacksChanged = 536870912,
7136        EInputInfoChanged = 1073741824,
7137        /// 0x80000000; (proto stores enums as signed int)
7138        ECornerRadiusChanged = -2147483648,
7139    }
7140    impl ChangesLsb {
7141        /// String value of the enum field names used in the ProtoBuf definition.
7142        ///
7143        /// The values are not transformed in any way and thus are considered stable
7144        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7145        pub fn as_str_name(&self) -> &'static str {
7146            match self {
7147                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
7148                ChangesLsb::EPositionChanged => "ePositionChanged",
7149                ChangesLsb::ELayerChanged => "eLayerChanged",
7150                ChangesLsb::EAlphaChanged => "eAlphaChanged",
7151                ChangesLsb::EMatrixChanged => "eMatrixChanged",
7152                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
7153                ChangesLsb::EFlagsChanged => "eFlagsChanged",
7154                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
7155                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
7156                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
7157                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
7158                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
7159                ChangesLsb::EReparent => "eReparent",
7160                ChangesLsb::EColorChanged => "eColorChanged",
7161                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
7162                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
7163                ChangesLsb::ECropChanged => "eCropChanged",
7164                ChangesLsb::EBufferChanged => "eBufferChanged",
7165                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
7166                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
7167                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
7168                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
7169                ChangesLsb::EApiChanged => "eApiChanged",
7170                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
7171                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
7172                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
7173                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
7174                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
7175            }
7176        }
7177    }
7178    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7179    #[repr(i32)]
7180    pub enum ChangesMsb {
7181        EChangesMsbNone = 0,
7182        EDestinationFrameChanged = 1,
7183        ECachedBufferChanged = 2,
7184        EBackgroundColorChanged = 4,
7185        EMetadataChanged = 8,
7186        EColorSpaceAgnosticChanged = 16,
7187        EFrameRateSelectionPriority = 32,
7188        EFrameRateChanged = 64,
7189        EBackgroundBlurRadiusChanged = 128,
7190        EProducerDisconnect = 256,
7191        EFixedTransformHintChanged = 512,
7192        EFrameNumberChanged = 1024,
7193        EBlurRegionsChanged = 2048,
7194        EAutoRefreshChanged = 4096,
7195        EStretchChanged = 8192,
7196        ETrustedOverlayChanged = 16384,
7197        EDropInputModeChanged = 32768,
7198        EClientDrawnCornerRadiusChanged = 65536,
7199        ESystemContentPriorityChanged = 131072,
7200        EBoxShadowSettingsChanged = 262144,
7201        EBorderSettingsChanged = 524288,
7202    }
7203    impl ChangesMsb {
7204        /// String value of the enum field names used in the ProtoBuf definition.
7205        ///
7206        /// The values are not transformed in any way and thus are considered stable
7207        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7208        pub fn as_str_name(&self) -> &'static str {
7209            match self {
7210                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
7211                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
7212                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
7213                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
7214                ChangesMsb::EMetadataChanged => "eMetadataChanged",
7215                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
7216                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
7217                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
7218                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
7219                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
7220                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
7221                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
7222                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
7223                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
7224                ChangesMsb::EStretchChanged => "eStretchChanged",
7225                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
7226                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
7227                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
7228                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
7229                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
7230                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
7231            }
7232        }
7233    }
7234    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7235    #[repr(i32)]
7236    pub enum Flags {
7237        EFlagsNone = 0,
7238        ELayerHidden = 1,
7239        ELayerOpaque = 2,
7240        ELayerSkipScreenshot = 64,
7241        ELayerSecure = 128,
7242        EEnableBackpressure = 256,
7243        ELayerIsDisplayDecoration = 512,
7244    }
7245    impl Flags {
7246        /// String value of the enum field names used in the ProtoBuf definition.
7247        ///
7248        /// The values are not transformed in any way and thus are considered stable
7249        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7250        pub fn as_str_name(&self) -> &'static str {
7251            match self {
7252                Flags::EFlagsNone => "eFlagsNone",
7253                Flags::ELayerHidden => "eLayerHidden",
7254                Flags::ELayerOpaque => "eLayerOpaque",
7255                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
7256                Flags::ELayerSecure => "eLayerSecure",
7257                Flags::EEnableBackpressure => "eEnableBackpressure",
7258                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7259            }
7260        }
7261    }
7262    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7263    #[repr(i32)]
7264    pub enum DropInputMode {
7265        None = 0,
7266        All = 1,
7267        Obscured = 2,
7268    }
7269    impl DropInputMode {
7270        /// String value of the enum field names used in the ProtoBuf definition.
7271        ///
7272        /// The values are not transformed in any way and thus are considered stable
7273        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7274        pub fn as_str_name(&self) -> &'static str {
7275            match self {
7276                DropInputMode::None => "NONE",
7277                DropInputMode::All => "ALL",
7278                DropInputMode::Obscured => "OBSCURED",
7279            }
7280        }
7281    }
7282}
7283#[derive(Clone, PartialEq, ::prost::Message)]
7284pub struct DisplayState {
7285    #[prost(int32, optional, tag="1")]
7286    pub id: ::core::option::Option<i32>,
7287    #[prost(uint32, optional, tag="2")]
7288    pub what: ::core::option::Option<u32>,
7289    #[prost(uint32, optional, tag="3")]
7290    pub flags: ::core::option::Option<u32>,
7291    #[prost(uint32, optional, tag="4")]
7292    pub layer_stack: ::core::option::Option<u32>,
7293    #[prost(uint32, optional, tag="5")]
7294    pub orientation: ::core::option::Option<u32>,
7295    #[prost(message, optional, tag="6")]
7296    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7297    #[prost(message, optional, tag="7")]
7298    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7299    #[prost(uint32, optional, tag="8")]
7300    pub width: ::core::option::Option<u32>,
7301    #[prost(uint32, optional, tag="9")]
7302    pub height: ::core::option::Option<u32>,
7303}
7304/// Nested message and enum types in `DisplayState`.
7305pub mod display_state {
7306    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7307    #[repr(i32)]
7308    pub enum Changes {
7309        EChangesNone = 0,
7310        ESurfaceChanged = 1,
7311        ELayerStackChanged = 2,
7312        EDisplayProjectionChanged = 4,
7313        EDisplaySizeChanged = 8,
7314        EFlagsChanged = 16,
7315    }
7316    impl Changes {
7317        /// String value of the enum field names used in the ProtoBuf definition.
7318        ///
7319        /// The values are not transformed in any way and thus are considered stable
7320        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7321        pub fn as_str_name(&self) -> &'static str {
7322            match self {
7323                Changes::EChangesNone => "eChangesNone",
7324                Changes::ESurfaceChanged => "eSurfaceChanged",
7325                Changes::ELayerStackChanged => "eLayerStackChanged",
7326                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7327                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7328                Changes::EFlagsChanged => "eFlagsChanged",
7329            }
7330        }
7331    }
7332}
7333// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7334
7335// Begin of protos/perfetto/trace/android/user_list.proto
7336
7337#[derive(Clone, PartialEq, ::prost::Message)]
7338pub struct AndroidUserList {
7339    #[prost(message, repeated, tag="1")]
7340    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7341    /// Error number
7342    #[prost(int32, optional, tag="2")]
7343    pub error: ::core::option::Option<i32>,
7344}
7345/// Nested message and enum types in `AndroidUserList`.
7346pub mod android_user_list {
7347    #[derive(Clone, PartialEq, ::prost::Message)]
7348    pub struct UserInfo {
7349        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7350        #[prost(string, optional, tag="1")]
7351        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7352        #[prost(int32, optional, tag="2")]
7353        pub uid: ::core::option::Option<i32>,
7354    }
7355}
7356// End of protos/perfetto/trace/android/user_list.proto
7357
7358// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7359
7360#[derive(Clone, PartialEq, ::prost::Message)]
7361pub struct WinscopeExtensions {
7362}
7363// End of protos/perfetto/trace/android/winscope_extensions.proto
7364
7365// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7366
7367/// This message is not intended to be written by the chrome on the device.
7368/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7369/// part of the trace that's written by the telemetry tracing agent).
7370#[derive(Clone, PartialEq, ::prost::Message)]
7371pub struct ChromeBenchmarkMetadata {
7372    /// Time when the benchmark execution started (host unixtime in microseconds).
7373    #[prost(int64, optional, tag="1")]
7374    pub benchmark_start_time_us: ::core::option::Option<i64>,
7375    /// Time when this particular story was run (host unixtime in microseconds).
7376    #[prost(int64, optional, tag="2")]
7377    pub story_run_time_us: ::core::option::Option<i64>,
7378    /// Name of benchmark.
7379    #[prost(string, optional, tag="3")]
7380    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7381    /// Description of benchmark.
7382    #[prost(string, optional, tag="4")]
7383    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7384    /// Optional label.
7385    #[prost(string, optional, tag="5")]
7386    pub label: ::core::option::Option<::prost::alloc::string::String>,
7387    /// Name of story.
7388    #[prost(string, optional, tag="6")]
7389    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7390    /// List of story tags.
7391    #[prost(string, repeated, tag="7")]
7392    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7393    /// Index of the story run (>0 if the same story was run several times).
7394    #[prost(int32, optional, tag="8")]
7395    pub story_run_index: ::core::option::Option<i32>,
7396    /// Whether this run failed.
7397    #[prost(bool, optional, tag="9")]
7398    pub had_failures: ::core::option::Option<bool>,
7399}
7400// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7401
7402// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7403
7404/// Metadata for chrome traces.
7405#[derive(Clone, PartialEq, ::prost::Message)]
7406pub struct ChromeMetadataPacket {
7407    #[prost(message, optional, tag="1")]
7408    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7409    /// Version code of Chrome used by Android's Play Store. This field is only set
7410    /// on Android.
7411    #[prost(int32, optional, tag="2")]
7412    pub chrome_version_code: ::core::option::Option<i32>,
7413    /// Comma separated list of enabled categories for tracing. The list of
7414    /// possible category strings are listed in code
7415    /// base/trace_event/builtin_categories.h.
7416    #[prost(string, optional, tag="3")]
7417    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7418    /// List of Finch study/groups that apply to this trace.
7419    #[prost(message, repeated, tag="4")]
7420    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7421}
7422/// Nested message and enum types in `ChromeMetadataPacket`.
7423pub mod chrome_metadata_packet {
7424    /// Finch name and group based on the ActiveGroupId.
7425    #[derive(Clone, PartialEq, ::prost::Message)]
7426    pub struct FinchHash {
7427        #[prost(uint32, optional, tag="1")]
7428        pub name: ::core::option::Option<u32>,
7429        #[prost(uint32, optional, tag="2")]
7430        pub group: ::core::option::Option<u32>,
7431    }
7432}
7433/// Metadata related to background tracing scenarios, states and triggers.
7434#[derive(Clone, PartialEq, ::prost::Message)]
7435pub struct BackgroundTracingMetadata {
7436    /// Specifies the rule that caused the trace to be uploaded.
7437    #[prost(message, optional, tag="1")]
7438    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7439    /// List of all active triggers in current session, when trace was triggered.
7440    #[prost(message, repeated, tag="2")]
7441    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7442    /// Hash of the scenario name.
7443    #[prost(fixed32, optional, tag="3")]
7444    pub scenario_name_hash: ::core::option::Option<u32>,
7445}
7446/// Nested message and enum types in `BackgroundTracingMetadata`.
7447pub mod background_tracing_metadata {
7448    /// Information about a trigger rule defined in the experiment config.
7449    #[derive(Clone, PartialEq, ::prost::Message)]
7450    pub struct TriggerRule {
7451        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
7452        pub trigger_type: ::core::option::Option<i32>,
7453        #[prost(message, optional, tag="2")]
7454        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7455        #[prost(message, optional, tag="3")]
7456        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7457        /// Hash of the rule name.
7458        #[prost(fixed32, optional, tag="4")]
7459        pub name_hash: ::core::option::Option<u32>,
7460    }
7461    /// Nested message and enum types in `TriggerRule`.
7462    pub mod trigger_rule {
7463        /// Configuration of histogram trigger.
7464        #[derive(Clone, PartialEq, ::prost::Message)]
7465        pub struct HistogramRule {
7466            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7467            #[prost(fixed64, optional, tag="1")]
7468            pub histogram_name_hash: ::core::option::Option<u64>,
7469            /// Range of values of the histogram that activates trigger.
7470            #[prost(int64, optional, tag="2")]
7471            pub histogram_min_trigger: ::core::option::Option<i64>,
7472            #[prost(int64, optional, tag="3")]
7473            pub histogram_max_trigger: ::core::option::Option<i64>,
7474        }
7475        /// Configuration of named trigger.
7476        #[derive(Clone, PartialEq, ::prost::Message)]
7477        pub struct NamedRule {
7478            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7479            pub event_type: ::core::option::Option<i32>,
7480            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7481            /// content-trigger that actually fired.
7482            #[prost(fixed64, optional, tag="2")]
7483            pub content_trigger_name_hash: ::core::option::Option<u64>,
7484        }
7485        /// Nested message and enum types in `NamedRule`.
7486        pub mod named_rule {
7487            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7488            #[repr(i32)]
7489            pub enum EventType {
7490                Unspecified = 0,
7491                SessionRestore = 1,
7492                Navigation = 2,
7493                Startup = 3,
7494                ReachedCode = 4,
7495                ContentTrigger = 5,
7496                TestRule = 1000,
7497            }
7498            impl EventType {
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                        EventType::Unspecified => "UNSPECIFIED",
7506                        EventType::SessionRestore => "SESSION_RESTORE",
7507                        EventType::Navigation => "NAVIGATION",
7508                        EventType::Startup => "STARTUP",
7509                        EventType::ReachedCode => "REACHED_CODE",
7510                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7511                        EventType::TestRule => "TEST_RULE",
7512                    }
7513                }
7514            }
7515        }
7516        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7517        #[repr(i32)]
7518        pub enum TriggerType {
7519            TriggerUnspecified = 0,
7520            /// Traces are triggered by specific range of values of an UMA histogram.
7521            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7522            /// Traces are triggered by specific named events in chromium codebase,
7523            /// like "second-update-failure".
7524            MonitorAndDumpWhenTriggerNamed = 2,
7525        }
7526        impl TriggerType {
7527            /// String value of the enum field names used in the ProtoBuf definition.
7528            ///
7529            /// The values are not transformed in any way and thus are considered stable
7530            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7531            pub fn as_str_name(&self) -> &'static str {
7532                match self {
7533                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7534                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7535                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7536                }
7537            }
7538        }
7539    }
7540}
7541// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7542
7543// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7544
7545#[derive(Clone, PartialEq, ::prost::Message)]
7546pub struct ChromeTracedValue {
7547    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7548    pub nested_type: ::core::option::Option<i32>,
7549    #[prost(string, repeated, tag="2")]
7550    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7551    #[prost(message, repeated, tag="3")]
7552    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7553    #[prost(message, repeated, tag="4")]
7554    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7555    #[prost(int32, optional, tag="5")]
7556    pub int_value: ::core::option::Option<i32>,
7557    #[prost(double, optional, tag="6")]
7558    pub double_value: ::core::option::Option<f64>,
7559    #[prost(bool, optional, tag="7")]
7560    pub bool_value: ::core::option::Option<bool>,
7561    #[prost(string, optional, tag="8")]
7562    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7563}
7564/// Nested message and enum types in `ChromeTracedValue`.
7565pub mod chrome_traced_value {
7566    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7567    #[repr(i32)]
7568    pub enum NestedType {
7569        Dict = 0,
7570        Array = 1,
7571    }
7572    impl NestedType {
7573        /// String value of the enum field names used in the ProtoBuf definition.
7574        ///
7575        /// The values are not transformed in any way and thus are considered stable
7576        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7577        pub fn as_str_name(&self) -> &'static str {
7578            match self {
7579                NestedType::Dict => "DICT",
7580                NestedType::Array => "ARRAY",
7581            }
7582        }
7583    }
7584}
7585#[derive(Clone, PartialEq, ::prost::Message)]
7586pub struct ChromeStringTableEntry {
7587    #[prost(string, optional, tag="1")]
7588    pub value: ::core::option::Option<::prost::alloc::string::String>,
7589    #[prost(int32, optional, tag="2")]
7590    pub index: ::core::option::Option<i32>,
7591}
7592/// Deprecated, use TrackEvent protos instead.
7593#[derive(Clone, PartialEq, ::prost::Message)]
7594pub struct ChromeTraceEvent {
7595    #[prost(string, optional, tag="1")]
7596    pub name: ::core::option::Option<::prost::alloc::string::String>,
7597    #[prost(int64, optional, tag="2")]
7598    pub timestamp: ::core::option::Option<i64>,
7599    #[prost(int32, optional, tag="3")]
7600    pub phase: ::core::option::Option<i32>,
7601    #[prost(int32, optional, tag="4")]
7602    pub thread_id: ::core::option::Option<i32>,
7603    #[prost(int64, optional, tag="5")]
7604    pub duration: ::core::option::Option<i64>,
7605    #[prost(int64, optional, tag="6")]
7606    pub thread_duration: ::core::option::Option<i64>,
7607    #[prost(string, optional, tag="7")]
7608    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7609    #[prost(uint64, optional, tag="8")]
7610    pub id: ::core::option::Option<u64>,
7611    #[prost(uint32, optional, tag="9")]
7612    pub flags: ::core::option::Option<u32>,
7613    #[prost(string, optional, tag="10")]
7614    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7615    #[prost(int32, optional, tag="11")]
7616    pub process_id: ::core::option::Option<i32>,
7617    #[prost(int64, optional, tag="12")]
7618    pub thread_timestamp: ::core::option::Option<i64>,
7619    #[prost(uint64, optional, tag="13")]
7620    pub bind_id: ::core::option::Option<u64>,
7621    #[prost(message, repeated, tag="14")]
7622    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7623    /// Takes precedence over respectively |name| and
7624    /// |category_group_name_index| if set,
7625    /// and are indices into |string_table|.
7626    #[prost(uint32, optional, tag="15")]
7627    pub name_index: ::core::option::Option<u32>,
7628    #[prost(uint32, optional, tag="16")]
7629    pub category_group_name_index: ::core::option::Option<u32>,
7630}
7631/// Nested message and enum types in `ChromeTraceEvent`.
7632pub mod chrome_trace_event {
7633    #[derive(Clone, PartialEq, ::prost::Message)]
7634    pub struct Arg {
7635        #[prost(string, optional, tag="1")]
7636        pub name: ::core::option::Option<::prost::alloc::string::String>,
7637        /// Takes precedence over |name| if set,
7638        /// and is an index into |string_table|.
7639        #[prost(uint32, optional, tag="9")]
7640        pub name_index: ::core::option::Option<u32>,
7641        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7642        pub value: ::core::option::Option<arg::Value>,
7643    }
7644    /// Nested message and enum types in `Arg`.
7645    pub mod arg {
7646        #[derive(Clone, PartialEq, ::prost::Oneof)]
7647        pub enum Value {
7648            #[prost(bool, tag="2")]
7649            BoolValue(bool),
7650            #[prost(uint64, tag="3")]
7651            UintValue(u64),
7652            #[prost(int64, tag="4")]
7653            IntValue(i64),
7654            #[prost(double, tag="5")]
7655            DoubleValue(f64),
7656            #[prost(string, tag="6")]
7657            StringValue(::prost::alloc::string::String),
7658            /// Pointers are stored in a separate type as the JSON output treats them
7659            /// differently from other uint64 values.
7660            #[prost(uint64, tag="7")]
7661            PointerValue(u64),
7662            #[prost(string, tag="8")]
7663            JsonValue(::prost::alloc::string::String),
7664            #[prost(message, tag="10")]
7665            TracedValue(super::super::ChromeTracedValue),
7666        }
7667    }
7668}
7669#[derive(Clone, PartialEq, ::prost::Message)]
7670pub struct ChromeMetadata {
7671    #[prost(string, optional, tag="1")]
7672    pub name: ::core::option::Option<::prost::alloc::string::String>,
7673    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7674    pub value: ::core::option::Option<chrome_metadata::Value>,
7675}
7676/// Nested message and enum types in `ChromeMetadata`.
7677pub mod chrome_metadata {
7678    #[derive(Clone, PartialEq, ::prost::Oneof)]
7679    pub enum Value {
7680        #[prost(string, tag="2")]
7681        StringValue(::prost::alloc::string::String),
7682        #[prost(bool, tag="3")]
7683        BoolValue(bool),
7684        #[prost(int64, tag="4")]
7685        IntValue(i64),
7686        #[prost(string, tag="5")]
7687        JsonValue(::prost::alloc::string::String),
7688    }
7689}
7690/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7691/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7692/// TODO(eseckler): Update these agents to become perfetto producers.
7693#[derive(Clone, PartialEq, ::prost::Message)]
7694pub struct ChromeLegacyJsonTrace {
7695    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7696    pub r#type: ::core::option::Option<i32>,
7697    #[prost(string, optional, tag="2")]
7698    pub data: ::core::option::Option<::prost::alloc::string::String>,
7699}
7700/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7701pub mod chrome_legacy_json_trace {
7702    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7703    #[repr(i32)]
7704    pub enum TraceType {
7705        UserTrace = 0,
7706        /// Deprecated.
7707        SystemTrace = 1,
7708    }
7709    impl TraceType {
7710        /// String value of the enum field names used in the ProtoBuf definition.
7711        ///
7712        /// The values are not transformed in any way and thus are considered stable
7713        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7714        pub fn as_str_name(&self) -> &'static str {
7715            match self {
7716                TraceType::UserTrace => "USER_TRACE",
7717                TraceType::SystemTrace => "SYSTEM_TRACE",
7718            }
7719        }
7720    }
7721}
7722#[derive(Clone, PartialEq, ::prost::Message)]
7723pub struct ChromeEventBundle {
7724    /// Deprecated, use TrackEvent protos instead.
7725    #[deprecated]
7726    #[prost(message, repeated, tag="1")]
7727    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7728    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7729    /// which contains typed fields.
7730    #[prost(message, repeated, tag="2")]
7731    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7732    /// ftrace output from CrOS and Cast system tracing agents.
7733    /// TODO(eseckler): Replace system traces with native perfetto service.
7734    #[prost(string, repeated, tag="4")]
7735    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7736    #[prost(message, repeated, tag="5")]
7737    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7738    /// Contents of a string table that's valid for
7739    /// the whole ChromeEventBundle entry.
7740    #[deprecated]
7741    #[prost(message, repeated, tag="3")]
7742    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7743}
7744// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7745
7746// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7747
7748/// Information about a specific trigger during a background tracing scenario
7749/// Associated packet timestamps are useful to delimitate a scenario range in a
7750/// trace. Triggers are also useful for filtering traces.
7751#[derive(Clone, PartialEq, ::prost::Message)]
7752pub struct ChromeTrigger {
7753    /// Name of the trigger which was received.
7754    #[prost(string, optional, tag="1")]
7755    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7756    /// SHA1 hash of the trigger name.
7757    #[prost(fixed32, optional, tag="2")]
7758    pub trigger_name_hash: ::core::option::Option<u32>,
7759    /// Flow id which should terminate on this trigger.
7760    #[prost(fixed64, optional, tag="3")]
7761    pub flow_id: ::core::option::Option<u64>,
7762}
7763// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7764
7765// Begin of protos/perfetto/trace/chrome/v8.proto
7766
7767// These are the protos for the V8 data source.
7768//
7769// All events are associated to a V8 isolate instance. There can be multiple
7770// instances associated to a given thread, although this is rare.
7771//
7772// Generated code in V8 is allocated in the V8 heap (in a special executeable
7773// section), this means that code can be garbage collected (when no longer used)
7774// or can be moved around (e.g. during heap compactation). This means that a
7775// given callsite might correspond to function `A` at one point in time and to
7776// function `B` later on.
7777// In addition V8 code has various levels of optimization, so a function might
7778// have multiple associated code snippets.
7779//
7780// V8 does not track code deletion, so we have to indirectly infer it by
7781// detecting code overlaps, if a newer code creation event overlaps with older
7782// code we need to asume that the old code was deleted. Code moves are logged,
7783// and there is an event to track those.
7784
7785/// Strings used by V8 can have different encodings, instead of coverting to a
7786/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7787/// "raw" string and do the convestion at trace ingestion time.
7788///
7789/// ATTENTION: There is some overhead in using a message (as opossed to having
7790/// the `oneof encoded_string`` direcly embedded in the message), so use this
7791/// message in places were these extra bytes don't matter that much.
7792/// Next id: 5
7793#[derive(Clone, PartialEq, ::prost::Message)]
7794pub struct V8String {
7795    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7796    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7797}
7798/// Nested message and enum types in `V8String`.
7799pub mod v8_string {
7800    #[derive(Clone, PartialEq, ::prost::Oneof)]
7801    pub enum EncodedString {
7802        /// ISO/IEC 8859-1:1998 encoding aka latin1
7803        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7804        #[prost(bytes, tag="1")]
7805        Latin1(::prost::alloc::vec::Vec<u8>),
7806        /// UTF-16 Little Endian Encoding
7807        #[prost(bytes, tag="2")]
7808        Utf16Le(::prost::alloc::vec::Vec<u8>),
7809        /// UTF-16 Big Endian Encoding
7810        #[prost(bytes, tag="3")]
7811        Utf16Be(::prost::alloc::vec::Vec<u8>),
7812    }
7813}
7814/// Interned version of V8String
7815#[derive(Clone, PartialEq, ::prost::Message)]
7816pub struct InternedV8String {
7817    #[prost(uint64, optional, tag="1")]
7818    pub iid: ::core::option::Option<u64>,
7819    /// We inline the fields in V8String here to save some bytes in the serialized
7820    /// proto format. Interning is about saving bytes so this makes sense here.
7821    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7822    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7823}
7824/// Nested message and enum types in `InternedV8String`.
7825pub mod interned_v8_string {
7826    /// We inline the fields in V8String here to save some bytes in the serialized
7827    /// proto format. Interning is about saving bytes so this makes sense here.
7828    #[derive(Clone, PartialEq, ::prost::Oneof)]
7829    pub enum EncodedString {
7830        /// ISO/IEC 8859-1:1998 encoding aka latin1
7831        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7832        #[prost(bytes, tag="2")]
7833        Latin1(::prost::alloc::vec::Vec<u8>),
7834        /// UTF-16 Little Endian Encoding
7835        #[prost(bytes, tag="3")]
7836        Utf16Le(::prost::alloc::vec::Vec<u8>),
7837        /// UTF-16 Big Endian Encoding
7838        #[prost(bytes, tag="4")]
7839        Utf16Be(::prost::alloc::vec::Vec<u8>),
7840    }
7841}
7842/// Represents a script that was compiled to generate code. Some V8 code is
7843/// generated out of scripts and will reference a V8Script other types of code
7844/// will not (e.g. builtins).
7845#[derive(Clone, PartialEq, ::prost::Message)]
7846pub struct InternedV8JsScript {
7847    #[prost(uint64, optional, tag="1")]
7848    pub iid: ::core::option::Option<u64>,
7849    /// Unique in a given isolate
7850    #[prost(int32, optional, tag="2")]
7851    pub script_id: ::core::option::Option<i32>,
7852    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7853    pub r#type: ::core::option::Option<i32>,
7854    #[prost(message, optional, tag="4")]
7855    pub name: ::core::option::Option<V8String>,
7856    /// Actual source of the script
7857    #[prost(message, optional, tag="5")]
7858    pub source: ::core::option::Option<V8String>,
7859}
7860/// Nested message and enum types in `InternedV8JsScript`.
7861pub mod interned_v8_js_script {
7862    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7863    #[repr(i32)]
7864    pub enum Type {
7865        Unknown = 0,
7866        Normal = 1,
7867        Eval = 2,
7868        Module = 3,
7869        Native = 4,
7870        Extension = 5,
7871        Inspector = 6,
7872    }
7873    impl Type {
7874        /// String value of the enum field names used in the ProtoBuf definition.
7875        ///
7876        /// The values are not transformed in any way and thus are considered stable
7877        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7878        pub fn as_str_name(&self) -> &'static str {
7879            match self {
7880                Type::Unknown => "TYPE_UNKNOWN",
7881                Type::Normal => "TYPE_NORMAL",
7882                Type::Eval => "TYPE_EVAL",
7883                Type::Module => "TYPE_MODULE",
7884                Type::Native => "TYPE_NATIVE",
7885                Type::Extension => "TYPE_EXTENSION",
7886                Type::Inspector => "TYPE_INSPECTOR",
7887            }
7888        }
7889    }
7890}
7891#[derive(Clone, PartialEq, ::prost::Message)]
7892pub struct InternedV8WasmScript {
7893    #[prost(uint64, optional, tag="1")]
7894    pub iid: ::core::option::Option<u64>,
7895    /// Unique in a given isolate
7896    #[prost(int32, optional, tag="2")]
7897    pub script_id: ::core::option::Option<i32>,
7898    #[prost(string, optional, tag="3")]
7899    pub url: ::core::option::Option<::prost::alloc::string::String>,
7900    /// Raw transferred wasm native module wire bytes.
7901    #[prost(bytes="vec", optional, tag="4")]
7902    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7903}
7904#[derive(Clone, PartialEq, ::prost::Message)]
7905pub struct InternedV8JsFunction {
7906    #[prost(uint64, optional, tag="1")]
7907    pub iid: ::core::option::Option<u64>,
7908    #[prost(uint64, optional, tag="2")]
7909    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7910    #[prost(uint64, optional, tag="3")]
7911    pub v8_js_script_iid: ::core::option::Option<u64>,
7912    #[prost(bool, optional, tag="4")]
7913    pub is_toplevel: ::core::option::Option<bool>,
7914    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7915    pub kind: ::core::option::Option<i32>,
7916    /// Where in the script source this function is defined. This is counted in
7917    /// bytes not characters.
7918    #[prost(uint32, optional, tag="6")]
7919    pub byte_offset: ::core::option::Option<u32>,
7920    #[prost(uint32, optional, tag="7")]
7921    pub line: ::core::option::Option<u32>,
7922    #[prost(uint32, optional, tag="8")]
7923    pub column: ::core::option::Option<u32>,
7924}
7925/// Nested message and enum types in `InternedV8JsFunction`.
7926pub mod interned_v8_js_function {
7927    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7928    #[repr(i32)]
7929    pub enum Kind {
7930        Unknown = 0,
7931        NormalFunction = 1,
7932        Module = 2,
7933        AsyncModule = 3,
7934        BaseConstructor = 4,
7935        DefaultBaseConstructor = 5,
7936        DefaultDerivedConstructor = 6,
7937        DerivedConstructor = 7,
7938        GetterFunction = 8,
7939        StaticGetterFunction = 9,
7940        SetterFunction = 10,
7941        StaticSetterFunction = 11,
7942        ArrowFunction = 12,
7943        AsyncArrowFunction = 13,
7944        AsyncFunction = 14,
7945        AsyncConciseMethod = 15,
7946        StaticAsyncConciseMethod = 16,
7947        AsyncConciseGeneratorMethod = 17,
7948        StaticAsyncConciseGeneratorMethod = 18,
7949        AsyncGeneratorFunction = 19,
7950        GeneratorFunction = 20,
7951        ConciseGeneratorMethod = 21,
7952        StaticConciseGeneratorMethod = 22,
7953        ConciseMethod = 23,
7954        StaticConciseMethod = 24,
7955        ClassMembersInitializerFunction = 25,
7956        ClassStaticInitializerFunction = 26,
7957        Invalid = 27,
7958    }
7959    impl Kind {
7960        /// String value of the enum field names used in the ProtoBuf definition.
7961        ///
7962        /// The values are not transformed in any way and thus are considered stable
7963        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7964        pub fn as_str_name(&self) -> &'static str {
7965            match self {
7966                Kind::Unknown => "KIND_UNKNOWN",
7967                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7968                Kind::Module => "KIND_MODULE",
7969                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7970                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7971                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7972                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7973                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7974                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7975                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7976                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7977                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7978                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7979                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7980                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7981                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7982                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7983                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7984                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7985                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7986                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7987                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7988                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7989                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7990                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7991                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7992                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7993                Kind::Invalid => "KIND_INVALID",
7994            }
7995        }
7996    }
7997}
7998/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7999/// engine.
8000#[derive(Clone, PartialEq, ::prost::Message)]
8001pub struct InternedV8Isolate {
8002    #[prost(uint64, optional, tag="1")]
8003    pub iid: ::core::option::Option<u64>,
8004    #[prost(uint32, optional, tag="2")]
8005    pub pid: ::core::option::Option<u32>,
8006    /// Process unique isolate id.
8007    #[prost(int32, optional, tag="3")]
8008    pub isolate_id: ::core::option::Option<i32>,
8009    #[prost(message, optional, tag="4")]
8010    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8011    /// The embedded blob holds code for built in functions that are precompiled in
8012    /// the V8 library.
8013    #[prost(uint64, optional, tag="5")]
8014    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8015    #[prost(uint64, optional, tag="6")]
8016    pub embedded_blob_code_size: ::core::option::Option<u64>,
8017}
8018/// Nested message and enum types in `InternedV8Isolate`.
8019pub mod interned_v8_isolate {
8020    /// A code range is a virtual memory cage that may contain executable code.
8021    /// Depending on the Isolate settings the Isolate might have one or not.
8022    /// See:
8023    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8024    /// If the isolate defines code range this will be tracked here.
8025    #[derive(Clone, PartialEq, ::prost::Message)]
8026    pub struct CodeRange {
8027        #[prost(uint64, optional, tag="1")]
8028        pub base_address: ::core::option::Option<u64>,
8029        #[prost(uint64, optional, tag="2")]
8030        pub size: ::core::option::Option<u64>,
8031        /// Used when short builtin calls are enabled, where embedded builtins are
8032        /// copied into the CodeRange so calls can be nearer.
8033        #[prost(uint64, optional, tag="3")]
8034        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8035        /// Whether this code range is shared with other Isolates in the same process
8036        #[prost(bool, optional, tag="4")]
8037        pub is_process_wide: ::core::option::Option<bool>,
8038    }
8039}
8040#[derive(Clone, PartialEq, ::prost::Message)]
8041pub struct V8JsCode {
8042    #[prost(uint64, optional, tag="1")]
8043    pub v8_isolate_iid: ::core::option::Option<u64>,
8044    #[prost(uint32, optional, tag="2")]
8045    pub tid: ::core::option::Option<u32>,
8046    #[prost(uint64, optional, tag="3")]
8047    pub v8_js_function_iid: ::core::option::Option<u64>,
8048    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
8049    pub tier: ::core::option::Option<i32>,
8050    #[prost(uint64, optional, tag="5")]
8051    pub instruction_start: ::core::option::Option<u64>,
8052    #[prost(uint64, optional, tag="6")]
8053    pub instruction_size_bytes: ::core::option::Option<u64>,
8054    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
8055    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8056}
8057/// Nested message and enum types in `V8JsCode`.
8058pub mod v8_js_code {
8059    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8060    #[repr(i32)]
8061    pub enum Tier {
8062        Unknown = 0,
8063        Ignition = 1,
8064        Sparkplug = 2,
8065        Maglev = 3,
8066        Turboshaft = 4,
8067        Turbofan = 5,
8068    }
8069    impl Tier {
8070        /// String value of the enum field names used in the ProtoBuf definition.
8071        ///
8072        /// The values are not transformed in any way and thus are considered stable
8073        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8074        pub fn as_str_name(&self) -> &'static str {
8075            match self {
8076                Tier::Unknown => "TIER_UNKNOWN",
8077                Tier::Ignition => "TIER_IGNITION",
8078                Tier::Sparkplug => "TIER_SPARKPLUG",
8079                Tier::Maglev => "TIER_MAGLEV",
8080                Tier::Turboshaft => "TIER_TURBOSHAFT",
8081                Tier::Turbofan => "TIER_TURBOFAN",
8082            }
8083        }
8084    }
8085    #[derive(Clone, PartialEq, ::prost::Oneof)]
8086    pub enum Instructions {
8087        #[prost(bytes, tag="7")]
8088        MachineCode(::prost::alloc::vec::Vec<u8>),
8089        #[prost(bytes, tag="8")]
8090        Bytecode(::prost::alloc::vec::Vec<u8>),
8091    }
8092}
8093#[derive(Clone, PartialEq, ::prost::Message)]
8094pub struct V8InternalCode {
8095    #[prost(uint64, optional, tag="1")]
8096    pub v8_isolate_iid: ::core::option::Option<u64>,
8097    #[prost(uint32, optional, tag="2")]
8098    pub tid: ::core::option::Option<u32>,
8099    #[prost(string, optional, tag="3")]
8100    pub name: ::core::option::Option<::prost::alloc::string::String>,
8101    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
8102    pub r#type: ::core::option::Option<i32>,
8103    #[prost(int32, optional, tag="5")]
8104    pub builtin_id: ::core::option::Option<i32>,
8105    #[prost(uint64, optional, tag="6")]
8106    pub instruction_start: ::core::option::Option<u64>,
8107    #[prost(uint64, optional, tag="7")]
8108    pub instruction_size_bytes: ::core::option::Option<u64>,
8109    #[prost(bytes="vec", optional, tag="8")]
8110    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8111}
8112/// Nested message and enum types in `V8InternalCode`.
8113pub mod v8_internal_code {
8114    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8115    #[repr(i32)]
8116    pub enum Type {
8117        Unknown = 0,
8118        BytecodeHandler = 1,
8119        ForTesting = 2,
8120        Builtin = 3,
8121        WasmFunction = 4,
8122        WasmToCapiFunction = 5,
8123        WasmToJsFunction = 6,
8124        JsToWasmFunction = 7,
8125        JsToJsFunction = 8,
8126        CWasmEntry = 9,
8127    }
8128    impl Type {
8129        /// String value of the enum field names used in the ProtoBuf definition.
8130        ///
8131        /// The values are not transformed in any way and thus are considered stable
8132        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8133        pub fn as_str_name(&self) -> &'static str {
8134            match self {
8135                Type::Unknown => "TYPE_UNKNOWN",
8136                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8137                Type::ForTesting => "TYPE_FOR_TESTING",
8138                Type::Builtin => "TYPE_BUILTIN",
8139                Type::WasmFunction => "TYPE_WASM_FUNCTION",
8140                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8141                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8142                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8143                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8144                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
8145            }
8146        }
8147    }
8148}
8149#[derive(Clone, PartialEq, ::prost::Message)]
8150pub struct V8WasmCode {
8151    #[prost(uint64, optional, tag="1")]
8152    pub v8_isolate_iid: ::core::option::Option<u64>,
8153    #[prost(uint32, optional, tag="2")]
8154    pub tid: ::core::option::Option<u32>,
8155    #[prost(uint64, optional, tag="3")]
8156    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8157    #[prost(string, optional, tag="4")]
8158    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8159    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
8160    pub tier: ::core::option::Option<i32>,
8161    #[prost(int32, optional, tag="6")]
8162    pub code_offset_in_module: ::core::option::Option<i32>,
8163    #[prost(uint64, optional, tag="7")]
8164    pub instruction_start: ::core::option::Option<u64>,
8165    #[prost(uint64, optional, tag="8")]
8166    pub instruction_size_bytes: ::core::option::Option<u64>,
8167    #[prost(bytes="vec", optional, tag="9")]
8168    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8169}
8170/// Nested message and enum types in `V8WasmCode`.
8171pub mod v8_wasm_code {
8172    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8173    #[repr(i32)]
8174    pub enum Tier {
8175        Unknown = 0,
8176        Liftoff = 1,
8177        Turbofan = 2,
8178    }
8179    impl Tier {
8180        /// String value of the enum field names used in the ProtoBuf definition.
8181        ///
8182        /// The values are not transformed in any way and thus are considered stable
8183        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8184        pub fn as_str_name(&self) -> &'static str {
8185            match self {
8186                Tier::Unknown => "TIER_UNKNOWN",
8187                Tier::Liftoff => "TIER_LIFTOFF",
8188                Tier::Turbofan => "TIER_TURBOFAN",
8189            }
8190        }
8191    }
8192}
8193#[derive(Clone, PartialEq, ::prost::Message)]
8194pub struct V8RegExpCode {
8195    #[prost(uint64, optional, tag="1")]
8196    pub v8_isolate_iid: ::core::option::Option<u64>,
8197    #[prost(uint32, optional, tag="2")]
8198    pub tid: ::core::option::Option<u32>,
8199    #[prost(message, optional, tag="3")]
8200    pub pattern: ::core::option::Option<V8String>,
8201    #[prost(uint64, optional, tag="4")]
8202    pub instruction_start: ::core::option::Option<u64>,
8203    #[prost(uint64, optional, tag="5")]
8204    pub instruction_size_bytes: ::core::option::Option<u64>,
8205    #[prost(bytes="vec", optional, tag="6")]
8206    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8207}
8208/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8209/// memory by V8's GC.
8210#[derive(Clone, PartialEq, ::prost::Message)]
8211pub struct V8CodeMove {
8212    #[prost(uint64, optional, tag="1")]
8213    pub isolate_iid: ::core::option::Option<u64>,
8214    #[prost(uint32, optional, tag="2")]
8215    pub tid: ::core::option::Option<u32>,
8216    #[prost(uint64, optional, tag="3")]
8217    pub from_instruction_start_address: ::core::option::Option<u64>,
8218    #[prost(uint64, optional, tag="4")]
8219    pub to_instruction_start_address: ::core::option::Option<u64>,
8220    #[prost(uint64, optional, tag="5")]
8221    pub instruction_size_bytes: ::core::option::Option<u64>,
8222    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
8223    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8224}
8225/// Nested message and enum types in `V8CodeMove`.
8226pub mod v8_code_move {
8227    #[derive(Clone, PartialEq, ::prost::Oneof)]
8228    pub enum ToInstructions {
8229        #[prost(bytes, tag="6")]
8230        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8231        #[prost(bytes, tag="7")]
8232        ToBytecode(::prost::alloc::vec::Vec<u8>),
8233    }
8234}
8235#[derive(Clone, PartialEq, ::prost::Message)]
8236pub struct V8CodeDefaults {
8237    #[prost(uint32, optional, tag="1")]
8238    pub tid: ::core::option::Option<u32>,
8239}
8240// End of protos/perfetto/trace/chrome/v8.proto
8241
8242// Begin of protos/perfetto/trace/clock_snapshot.proto
8243
8244/// A snapshot of clock readings to allow for trace alignment.
8245#[derive(Clone, PartialEq, ::prost::Message)]
8246pub struct ClockSnapshot {
8247    #[prost(message, repeated, tag="1")]
8248    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8249    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
8250    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
8251    /// attempt to translate packet/event timestamps from various data sources (and
8252    /// their chosen clock domains) to this domain during import.
8253    #[prost(enumeration="BuiltinClock", optional, tag="2")]
8254    pub primary_trace_clock: ::core::option::Option<i32>,
8255}
8256/// Nested message and enum types in `ClockSnapshot`.
8257pub mod clock_snapshot {
8258    #[derive(Clone, PartialEq, ::prost::Message)]
8259    pub struct Clock {
8260        /// Clock IDs have the following semantic:
8261        /// [1, 63]:    Builtin types, see BuiltinClock from
8262        ///              ../common/builtin_clock.proto.
8263        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8264        ///              are only valid within the same |trusted_packet_sequence_id|
8265        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8266        ///              that emitted the clock snapshot).
8267        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8268        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8269        #[prost(uint32, optional, tag="1")]
8270        pub clock_id: ::core::option::Option<u32>,
8271        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8272        /// unit_multiplier_ns field below.
8273        #[prost(uint64, optional, tag="2")]
8274        pub timestamp: ::core::option::Option<u64>,
8275        /// When true each TracePacket's timestamp should be interpreted as a delta
8276        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8277        /// the same packet_sequence_id. Should only be used for user-defined
8278        /// sequence-local clocks. The first packet timestamp after each
8279        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8280        /// the ClockSnapshot.
8281        #[prost(bool, optional, tag="3")]
8282        pub is_incremental: ::core::option::Option<bool>,
8283        /// Allows to specify a custom unit different than the default (ns) for this
8284        /// clock domain.
8285        ///
8286        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8287        ///    as 3000 ns = 3 us.
8288        /// * All snapshots for the same clock within a trace need to use the same
8289        ///    unit.
8290        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8291        #[prost(uint64, optional, tag="4")]
8292        pub unit_multiplier_ns: ::core::option::Option<u64>,
8293    }
8294    /// Nested message and enum types in `Clock`.
8295    pub mod clock {
8296        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8297        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8298        #[repr(i32)]
8299        pub enum BuiltinClocks {
8300            Unknown = 0,
8301            Realtime = 1,
8302            RealtimeCoarse = 2,
8303            Monotonic = 3,
8304            MonotonicCoarse = 4,
8305            MonotonicRaw = 5,
8306            Boottime = 6,
8307            BuiltinClockMaxId = 63,
8308        }
8309        impl BuiltinClocks {
8310            /// String value of the enum field names used in the ProtoBuf definition.
8311            ///
8312            /// The values are not transformed in any way and thus are considered stable
8313            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8314            pub fn as_str_name(&self) -> &'static str {
8315                match self {
8316                    BuiltinClocks::Unknown => "UNKNOWN",
8317                    BuiltinClocks::Realtime => "REALTIME",
8318                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8319                    BuiltinClocks::Monotonic => "MONOTONIC",
8320                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8321                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8322                    BuiltinClocks::Boottime => "BOOTTIME",
8323                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8324                }
8325            }
8326        }
8327    }
8328}
8329// End of protos/perfetto/trace/clock_snapshot.proto
8330
8331// Begin of protos/perfetto/trace/etw/etw.proto
8332
8333/// Proto definition based on the Thread_v2 CSwitch class definition
8334/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8335#[derive(Clone, PartialEq, ::prost::Message)]
8336pub struct CSwitchEtwEvent {
8337    /// New thread ID after the switch.
8338    #[prost(uint32, optional, tag="1")]
8339    pub new_thread_id: ::core::option::Option<u32>,
8340    /// Previous thread ID.
8341    #[prost(uint32, optional, tag="2")]
8342    pub old_thread_id: ::core::option::Option<u32>,
8343    /// Thread priority of the new thread.
8344    #[prost(sint32, optional, tag="3")]
8345    pub new_thread_priority: ::core::option::Option<i32>,
8346    /// Thread priority of the previous thread.
8347    #[prost(sint32, optional, tag="4")]
8348    pub old_thread_priority: ::core::option::Option<i32>,
8349    /// The index of the C-state that was last used by the processor. A value of 0
8350    /// represents the lightest idle state with higher values representing deeper
8351    /// C-states.
8352    #[prost(uint32, optional, tag="5")]
8353    pub previous_c_state: ::core::option::Option<u32>,
8354    /// Ideal wait time of the previous thread.
8355    #[prost(sint32, optional, tag="9")]
8356    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8357    /// Wait time for the new thread.
8358    #[prost(uint32, optional, tag="10")]
8359    pub new_thread_wait_time: ::core::option::Option<u32>,
8360    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8361    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8362    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8363    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8364    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8365    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8366}
8367/// Nested message and enum types in `CSwitchEtwEvent`.
8368pub mod c_switch_etw_event {
8369    /// Wait reason for the previous thread. The ordering is important as based on
8370    /// the OldThreadWaitReason definition from the link above. The following are
8371    /// the possible values:
8372    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8373    #[repr(i32)]
8374    pub enum OldThreadWaitReason {
8375        Executive = 0,
8376        FreePage = 1,
8377        PageIn = 2,
8378        PoolAllocation = 3,
8379        DelayExecution = 4,
8380        Suspend = 5,
8381        UserRequest = 6,
8382        WrExecutive = 7,
8383        WrFreePage = 8,
8384        WrPageIn = 9,
8385        WrPoolAllocation = 10,
8386        WrDelayExecution = 11,
8387        WrSuspended = 12,
8388        WrUserRequest = 13,
8389        WrEventPair = 14,
8390        WrQueue = 15,
8391        WrLpcReceiver = 16,
8392        WrLpcReply = 17,
8393        WrVirtualMemory = 18,
8394        WrPageOut = 19,
8395        WrRendezVous = 20,
8396        WrKeyedEvent = 21,
8397        WrTerminated = 22,
8398        WrProcessInSwap = 23,
8399        WrCpuRateControl = 24,
8400        WrCalloutStack = 25,
8401        WrKernel = 26,
8402        WrResource = 27,
8403        WrPushLock = 28,
8404        WrMutex = 29,
8405        WrQuantumEnd = 30,
8406        WrDispatchInt = 31,
8407        WrPreempted = 32,
8408        WrYieldExecution = 33,
8409        WrFastMutex = 34,
8410        WrGuardMutex = 35,
8411        WrRundown = 36,
8412        MaximumWaitReason = 37,
8413    }
8414    impl OldThreadWaitReason {
8415        /// String value of the enum field names used in the ProtoBuf definition.
8416        ///
8417        /// The values are not transformed in any way and thus are considered stable
8418        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8419        pub fn as_str_name(&self) -> &'static str {
8420            match self {
8421                OldThreadWaitReason::Executive => "EXECUTIVE",
8422                OldThreadWaitReason::FreePage => "FREE_PAGE",
8423                OldThreadWaitReason::PageIn => "PAGE_IN",
8424                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
8425                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
8426                OldThreadWaitReason::Suspend => "SUSPEND",
8427                OldThreadWaitReason::UserRequest => "USER_REQUEST",
8428                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
8429                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
8430                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
8431                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
8432                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
8433                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
8434                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
8435                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
8436                OldThreadWaitReason::WrQueue => "WR_QUEUE",
8437                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
8438                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
8439                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8440                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
8441                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
8442                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
8443                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
8444                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8445                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8446                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
8447                OldThreadWaitReason::WrKernel => "WR_KERNEL",
8448                OldThreadWaitReason::WrResource => "WR_RESOURCE",
8449                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
8450                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8451                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8452                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8453                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8454                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8455                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8456                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8457                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8458                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8459            }
8460        }
8461    }
8462    /// Wait mode for the previous thread. The ordering is important as based on
8463    /// the OldThreadWaitMode definition from the link above. The following are the
8464    /// possible values:
8465    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8466    #[repr(i32)]
8467    pub enum OldThreadWaitMode {
8468        KernelMode = 0,
8469        UserMode = 1,
8470    }
8471    impl OldThreadWaitMode {
8472        /// String value of the enum field names used in the ProtoBuf definition.
8473        ///
8474        /// The values are not transformed in any way and thus are considered stable
8475        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8476        pub fn as_str_name(&self) -> &'static str {
8477            match self {
8478                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8479                OldThreadWaitMode::UserMode => "USER_MODE",
8480            }
8481        }
8482    }
8483    /// State of the previous thread. The ordering is important as based on the
8484    /// OldThreadState definition from the link above. The following are the
8485    /// possible state values:
8486    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8487    #[repr(i32)]
8488    pub enum OldThreadState {
8489        Initialized = 0,
8490        Ready = 1,
8491        Running = 2,
8492        Standby = 3,
8493        Terminated = 4,
8494        Waiting = 5,
8495        Transition = 6,
8496        DeferredReady = 7,
8497    }
8498    impl OldThreadState {
8499        /// String value of the enum field names used in the ProtoBuf definition.
8500        ///
8501        /// The values are not transformed in any way and thus are considered stable
8502        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8503        pub fn as_str_name(&self) -> &'static str {
8504            match self {
8505                OldThreadState::Initialized => "INITIALIZED",
8506                OldThreadState::Ready => "READY",
8507                OldThreadState::Running => "RUNNING",
8508                OldThreadState::Standby => "STANDBY",
8509                OldThreadState::Terminated => "TERMINATED",
8510                OldThreadState::Waiting => "WAITING",
8511                OldThreadState::Transition => "TRANSITION",
8512                OldThreadState::DeferredReady => "DEFERRED_READY",
8513            }
8514        }
8515    }
8516    #[derive(Clone, PartialEq, ::prost::Oneof)]
8517    pub enum OldThreadWaitReasonEnumOrInt {
8518        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8519        OldThreadWaitReason(i32),
8520        #[prost(int32, tag="11")]
8521        OldThreadWaitReasonInt(i32),
8522    }
8523    #[derive(Clone, PartialEq, ::prost::Oneof)]
8524    pub enum OldThreadWaitModeEnumOrInt {
8525        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8526        OldThreadWaitMode(i32),
8527        #[prost(int32, tag="12")]
8528        OldThreadWaitModeInt(i32),
8529    }
8530    #[derive(Clone, PartialEq, ::prost::Oneof)]
8531    pub enum OldThreadStateEnumOrInt {
8532        #[prost(enumeration="OldThreadState", tag="8")]
8533        OldThreadState(i32),
8534        #[prost(sint32, tag="13")]
8535        OldThreadStateInt(i32),
8536    }
8537}
8538/// Proto definition based on the Thread_v2 CSwitch class definition
8539/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8540#[derive(Clone, PartialEq, ::prost::Message)]
8541pub struct ReadyThreadEtwEvent {
8542    /// The thread identifier of the thread being readied for execution.
8543    #[prost(uint32, optional, tag="1")]
8544    pub t_thread_id: ::core::option::Option<u32>,
8545    ///   The value by which the priority is being adjusted.
8546    #[prost(sint32, optional, tag="3")]
8547    pub adjust_increment: ::core::option::Option<i32>,
8548    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8549    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8550    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8551    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8552}
8553/// Nested message and enum types in `ReadyThreadEtwEvent`.
8554pub mod ready_thread_etw_event {
8555    /// The reason for the priority boost. The ordering is important as based on
8556    /// the AdjustReason definition from the link above.
8557    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8558    #[repr(i32)]
8559    pub enum AdjustReason {
8560        IgnoreTheIncrement = 0,
8561        /// Apply the increment, which will decay incrementally at the end of each
8562        /// quantum.
8563        ApplyIncrement = 1,
8564        /// Apply the increment as a boost that will decay in its entirety at quantum
8565        /// (typically for priority donation).
8566        ApplyIncrementBoost = 2,
8567    }
8568    impl AdjustReason {
8569        /// String value of the enum field names used in the ProtoBuf definition.
8570        ///
8571        /// The values are not transformed in any way and thus are considered stable
8572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8573        pub fn as_str_name(&self) -> &'static str {
8574            match self {
8575                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8576                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8577                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8578            }
8579        }
8580    }
8581    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8582    #[repr(i32)]
8583    pub enum TraceFlag {
8584        Unspecified = 0,
8585        /// The thread has been readied from DPC (deferred procedure call).
8586        ThreadReadied = 1,
8587        /// The kernel stack is currently swapped out.
8588        KernelStackSwappedOut = 2,
8589        /// The process address space is swapped out.
8590        ProcessAddressSwappedOut = 4,
8591    }
8592    impl TraceFlag {
8593        /// String value of the enum field names used in the ProtoBuf definition.
8594        ///
8595        /// The values are not transformed in any way and thus are considered stable
8596        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8597        pub fn as_str_name(&self) -> &'static str {
8598            match self {
8599                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8600                TraceFlag::ThreadReadied => "THREAD_READIED",
8601                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8602                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8603            }
8604        }
8605    }
8606    #[derive(Clone, PartialEq, ::prost::Oneof)]
8607    pub enum AdjustReasonEnumOrInt {
8608        #[prost(enumeration="AdjustReason", tag="2")]
8609        AdjustReason(i32),
8610        #[prost(int32, tag="5")]
8611        AdjustReasonInt(i32),
8612    }
8613    #[derive(Clone, PartialEq, ::prost::Oneof)]
8614    pub enum FlagEnumOrInt {
8615        #[prost(enumeration="TraceFlag", tag="4")]
8616        Flag(i32),
8617        #[prost(int32, tag="6")]
8618        FlagInt(i32),
8619    }
8620}
8621/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8622/// on local traces using tracerpt:
8623/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8624#[derive(Clone, PartialEq, ::prost::Message)]
8625pub struct MemInfoEtwEvent {
8626    /// Number of memory priorities on the system.
8627    #[prost(uint32, optional, tag="1")]
8628    pub priority_levels: ::core::option::Option<u32>,
8629    /// Number of pages in the zero list.
8630    #[prost(uint64, optional, tag="2")]
8631    pub zero_page_count: ::core::option::Option<u64>,
8632    /// Number of pages in the free list.
8633    #[prost(uint64, optional, tag="3")]
8634    pub free_page_count: ::core::option::Option<u64>,
8635    /// Number of pages in the modified list.
8636    #[prost(uint64, optional, tag="4")]
8637    pub modified_page_count: ::core::option::Option<u64>,
8638    /// Number of modified non-paged pool pages.
8639    #[prost(uint64, optional, tag="5")]
8640    pub modified_no_write_page_count: ::core::option::Option<u64>,
8641    /// Number of bad pages.
8642    #[prost(uint64, optional, tag="6")]
8643    pub bad_page_count: ::core::option::Option<u64>,
8644    /// Number of standby pages by memory priority.
8645    #[prost(uint64, repeated, packed="false", tag="7")]
8646    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8647    /// Number of repurposed pages by memory priority.
8648    #[prost(uint64, repeated, packed="false", tag="8")]
8649    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8650    /// Modified paged pages.
8651    #[prost(uint64, optional, tag="9")]
8652    pub modified_page_count_page_file: ::core::option::Option<u64>,
8653    /// Pool page counts.
8654    #[prost(uint64, optional, tag="10")]
8655    pub paged_pool_page_count: ::core::option::Option<u64>,
8656    #[prost(uint64, optional, tag="11")]
8657    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8658    /// Memory Descriptor List page count.
8659    #[prost(uint64, optional, tag="12")]
8660    pub mdl_page_count: ::core::option::Option<u64>,
8661    /// Commit weight.
8662    #[prost(uint64, optional, tag="13")]
8663    pub commit_page_count: ::core::option::Option<u64>,
8664}
8665/// Proto definition based on the `FileIo_Create` class definition.
8666#[derive(Clone, PartialEq, ::prost::Message)]
8667pub struct FileIoCreateEtwEvent {
8668    #[prost(uint64, optional, tag="1")]
8669    pub irp_ptr: ::core::option::Option<u64>,
8670    #[prost(uint64, optional, tag="2")]
8671    pub file_object: ::core::option::Option<u64>,
8672    #[prost(uint32, optional, tag="3")]
8673    pub ttid: ::core::option::Option<u32>,
8674    #[prost(uint32, optional, tag="4")]
8675    pub create_options: ::core::option::Option<u32>,
8676    #[prost(uint32, optional, tag="5")]
8677    pub file_attributes: ::core::option::Option<u32>,
8678    #[prost(uint32, optional, tag="6")]
8679    pub share_access: ::core::option::Option<u32>,
8680    #[prost(string, optional, tag="7")]
8681    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8682}
8683/// Proto definition based on the `FileIo_DirEnum` class definition.
8684#[derive(Clone, PartialEq, ::prost::Message)]
8685pub struct FileIoDirEnumEtwEvent {
8686    #[prost(uint64, optional, tag="1")]
8687    pub irp_ptr: ::core::option::Option<u64>,
8688    #[prost(uint64, optional, tag="2")]
8689    pub file_object: ::core::option::Option<u64>,
8690    #[prost(uint64, optional, tag="3")]
8691    pub file_key: ::core::option::Option<u64>,
8692    #[prost(uint32, optional, tag="4")]
8693    pub ttid: ::core::option::Option<u32>,
8694    #[prost(uint32, optional, tag="5")]
8695    pub length: ::core::option::Option<u32>,
8696    #[prost(uint32, optional, tag="6")]
8697    pub info_class: ::core::option::Option<u32>,
8698    #[prost(uint32, optional, tag="7")]
8699    pub file_index: ::core::option::Option<u32>,
8700    #[prost(string, optional, tag="8")]
8701    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8702    #[prost(uint32, optional, tag="9")]
8703    pub opcode: ::core::option::Option<u32>,
8704}
8705/// Proto definition based on the `FileIo_Info` class definition.
8706#[derive(Clone, PartialEq, ::prost::Message)]
8707pub struct FileIoInfoEtwEvent {
8708    #[prost(uint64, optional, tag="1")]
8709    pub irp_ptr: ::core::option::Option<u64>,
8710    #[prost(uint64, optional, tag="2")]
8711    pub file_object: ::core::option::Option<u64>,
8712    #[prost(uint64, optional, tag="3")]
8713    pub file_key: ::core::option::Option<u64>,
8714    #[prost(uint64, optional, tag="4")]
8715    pub extra_info: ::core::option::Option<u64>,
8716    #[prost(uint32, optional, tag="5")]
8717    pub ttid: ::core::option::Option<u32>,
8718    #[prost(uint32, optional, tag="6")]
8719    pub info_class: ::core::option::Option<u32>,
8720    #[prost(uint32, optional, tag="7")]
8721    pub opcode: ::core::option::Option<u32>,
8722}
8723/// Proto definition based on the `FileIo_ReadWrite` class definition.
8724#[derive(Clone, PartialEq, ::prost::Message)]
8725pub struct FileIoReadWriteEtwEvent {
8726    #[prost(uint64, optional, tag="1")]
8727    pub offset: ::core::option::Option<u64>,
8728    #[prost(uint64, optional, tag="2")]
8729    pub irp_ptr: ::core::option::Option<u64>,
8730    #[prost(uint64, optional, tag="3")]
8731    pub file_object: ::core::option::Option<u64>,
8732    #[prost(uint64, optional, tag="4")]
8733    pub file_key: ::core::option::Option<u64>,
8734    #[prost(uint32, optional, tag="5")]
8735    pub ttid: ::core::option::Option<u32>,
8736    #[prost(uint32, optional, tag="6")]
8737    pub io_size: ::core::option::Option<u32>,
8738    #[prost(uint32, optional, tag="7")]
8739    pub io_flags: ::core::option::Option<u32>,
8740    #[prost(uint32, optional, tag="8")]
8741    pub opcode: ::core::option::Option<u32>,
8742}
8743/// Proto definition based on the `FileIo_SimpleOp` class definition.
8744#[derive(Clone, PartialEq, ::prost::Message)]
8745pub struct FileIoSimpleOpEtwEvent {
8746    #[prost(uint64, optional, tag="1")]
8747    pub irp_ptr: ::core::option::Option<u64>,
8748    #[prost(uint64, optional, tag="2")]
8749    pub file_object: ::core::option::Option<u64>,
8750    #[prost(uint64, optional, tag="3")]
8751    pub file_key: ::core::option::Option<u64>,
8752    #[prost(uint32, optional, tag="4")]
8753    pub ttid: ::core::option::Option<u32>,
8754    #[prost(uint32, optional, tag="5")]
8755    pub opcode: ::core::option::Option<u32>,
8756}
8757/// Proto definition based on the `FileIo_OpEnd` class definition.
8758#[derive(Clone, PartialEq, ::prost::Message)]
8759pub struct FileIoOpEndEtwEvent {
8760    #[prost(uint64, optional, tag="1")]
8761    pub irp_ptr: ::core::option::Option<u64>,
8762    #[prost(uint64, optional, tag="2")]
8763    pub extra_info: ::core::option::Option<u64>,
8764    #[prost(uint32, optional, tag="3")]
8765    pub nt_status: ::core::option::Option<u32>,
8766}
8767// End of protos/perfetto/trace/etw/etw.proto
8768
8769// Begin of protos/perfetto/trace/etw/etw_event.proto
8770
8771#[derive(Clone, PartialEq, ::prost::Message)]
8772pub struct EtwTraceEvent {
8773    #[prost(uint64, optional, tag="1")]
8774    pub timestamp: ::core::option::Option<u64>,
8775    #[prost(uint32, optional, tag="4")]
8776    pub cpu: ::core::option::Option<u32>,
8777    #[prost(uint32, optional, tag="5")]
8778    pub thread_id: ::core::option::Option<u32>,
8779    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
8780    pub event: ::core::option::Option<etw_trace_event::Event>,
8781}
8782/// Nested message and enum types in `EtwTraceEvent`.
8783pub mod etw_trace_event {
8784    #[derive(Clone, PartialEq, ::prost::Oneof)]
8785    pub enum Event {
8786        #[prost(message, tag="2")]
8787        CSwitch(super::CSwitchEtwEvent),
8788        #[prost(message, tag="3")]
8789        ReadyThread(super::ReadyThreadEtwEvent),
8790        #[prost(message, tag="6")]
8791        MemInfo(super::MemInfoEtwEvent),
8792        #[prost(message, tag="7")]
8793        FileIoCreate(super::FileIoCreateEtwEvent),
8794        #[prost(message, tag="8")]
8795        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
8796        #[prost(message, tag="9")]
8797        FileIoInfo(super::FileIoInfoEtwEvent),
8798        #[prost(message, tag="10")]
8799        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
8800        #[prost(message, tag="11")]
8801        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
8802        #[prost(message, tag="12")]
8803        FileIoOpEnd(super::FileIoOpEndEtwEvent),
8804    }
8805}
8806// End of protos/perfetto/trace/etw/etw_event.proto
8807
8808// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
8809
8810/// The result of tracing one or more etw event uses per-processor buffers where
8811/// an in-use buffer is assigned to each processor at all times. Therefore,
8812/// collecting multiple events they should already be synchronized.
8813#[derive(Clone, PartialEq, ::prost::Message)]
8814pub struct EtwTraceEventBundle {
8815    #[prost(uint32, optional, tag="1")]
8816    pub cpu: ::core::option::Option<u32>,
8817    #[prost(message, repeated, tag="2")]
8818    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
8819}
8820// Begin of protos/perfetto/trace/evdev.proto
8821
8822/// Records an event in the evdev protocol, as used by Linux and some other *nix
8823/// kernels to report events from human interface devices.
8824///
8825/// Next ID: 3
8826#[derive(Clone, PartialEq, ::prost::Message)]
8827pub struct EvdevEvent {
8828    /// The device's unique ID number. This need not be the number of its
8829    /// /dev/input/event node.
8830    #[prost(uint32, optional, tag="1")]
8831    pub device_id: ::core::option::Option<u32>,
8832    #[prost(oneof="evdev_event::Event", tags="2")]
8833    pub event: ::core::option::Option<evdev_event::Event>,
8834}
8835/// Nested message and enum types in `EvdevEvent`.
8836pub mod evdev_event {
8837    /// Proto version of Linux's struct input_event. The meaning of types and codes
8838    /// are described in the Linux kernel documentation at
8839    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
8840    ///
8841    /// Next ID: 5
8842    #[derive(Clone, PartialEq, ::prost::Message)]
8843    pub struct InputEvent {
8844        /// The monotonic timestamp at which the event occurred, as reported by the
8845        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
8846        /// since the previous event.
8847        #[prost(uint64, optional, tag="1")]
8848        pub kernel_timestamp: ::core::option::Option<u64>,
8849        /// The code grouping for this event, used to distinguish signals, absolute
8850        /// and relative axis changes, and other types of event.
8851        #[prost(uint32, optional, tag="2")]
8852        pub r#type: ::core::option::Option<u32>,
8853        /// The precise type of the event, such as the axis code for absolute and
8854        /// relative events.
8855        #[prost(uint32, optional, tag="3")]
8856        pub code: ::core::option::Option<u32>,
8857        /// The new value of the axis described by type and code.
8858        #[prost(sint32, optional, tag="4")]
8859        pub value: ::core::option::Option<i32>,
8860    }
8861    #[derive(Clone, PartialEq, ::prost::Oneof)]
8862    pub enum Event {
8863        #[prost(message, tag="2")]
8864        InputEvent(InputEvent),
8865    }
8866}
8867// End of protos/perfetto/trace/evdev.proto
8868
8869// Begin of protos/perfetto/common/descriptor.proto
8870
8871/// The protocol compiler can output a FileDescriptorSet containing the .proto
8872/// files it parses.
8873#[derive(Clone, PartialEq, ::prost::Message)]
8874pub struct FileDescriptorSet {
8875    #[prost(message, repeated, tag="1")]
8876    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
8877}
8878/// Describes a complete .proto file.
8879#[derive(Clone, PartialEq, ::prost::Message)]
8880pub struct FileDescriptorProto {
8881    /// file name, relative to root of source tree
8882    #[prost(string, optional, tag="1")]
8883    pub name: ::core::option::Option<::prost::alloc::string::String>,
8884    /// e.g. "foo", "foo.bar", etc.
8885    #[prost(string, optional, tag="2")]
8886    pub package: ::core::option::Option<::prost::alloc::string::String>,
8887    /// Names of files imported by this file.
8888    #[prost(string, repeated, tag="3")]
8889    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8890    /// Indexes of the public imported files in the dependency list above.
8891    #[prost(int32, repeated, packed="false", tag="10")]
8892    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
8893    /// Indexes of the weak imported files in the dependency list.
8894    /// For Google-internal migration only. Do not use.
8895    #[prost(int32, repeated, packed="false", tag="11")]
8896    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8897    /// All top-level definitions in this file.
8898    #[prost(message, repeated, tag="4")]
8899    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8900    #[prost(message, repeated, tag="5")]
8901    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8902    #[prost(message, repeated, tag="7")]
8903    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8904}
8905/// Describes a message type.
8906#[derive(Clone, PartialEq, ::prost::Message)]
8907pub struct DescriptorProto {
8908    #[prost(string, optional, tag="1")]
8909    pub name: ::core::option::Option<::prost::alloc::string::String>,
8910    #[prost(message, repeated, tag="2")]
8911    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8912    #[prost(message, repeated, tag="6")]
8913    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8914    #[prost(message, repeated, tag="3")]
8915    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8916    #[prost(message, repeated, tag="4")]
8917    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8918    #[prost(message, repeated, tag="8")]
8919    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8920    #[prost(message, repeated, tag="9")]
8921    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8922    /// Reserved field names, which may not be used by fields in the same message.
8923    /// A given name may only be reserved once.
8924    #[prost(string, repeated, tag="10")]
8925    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8926}
8927/// Nested message and enum types in `DescriptorProto`.
8928pub mod descriptor_proto {
8929    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8930    /// fields or extension ranges in the same message. Reserved ranges may
8931    /// not overlap.
8932    #[derive(Clone, PartialEq, ::prost::Message)]
8933    pub struct ReservedRange {
8934        /// Inclusive.
8935        #[prost(int32, optional, tag="1")]
8936        pub start: ::core::option::Option<i32>,
8937        /// Exclusive.
8938        #[prost(int32, optional, tag="2")]
8939        pub end: ::core::option::Option<i32>,
8940    }
8941}
8942/// A message representing a option the parser does not recognize. This only
8943/// appears in options protos created by the compiler::Parser class.
8944/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8945/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8946/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8947/// in them.
8948#[derive(Clone, PartialEq, ::prost::Message)]
8949pub struct UninterpretedOption {
8950    #[prost(message, repeated, tag="2")]
8951    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8952    /// The value of the uninterpreted option, in whatever type the tokenizer
8953    /// identified it as during parsing. Exactly one of these should be set.
8954    #[prost(string, optional, tag="3")]
8955    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8956    #[prost(uint64, optional, tag="4")]
8957    pub positive_int_value: ::core::option::Option<u64>,
8958    #[prost(int64, optional, tag="5")]
8959    pub negative_int_value: ::core::option::Option<i64>,
8960    #[prost(double, optional, tag="6")]
8961    pub double_value: ::core::option::Option<f64>,
8962    #[prost(bytes="vec", optional, tag="7")]
8963    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8964    #[prost(string, optional, tag="8")]
8965    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8966}
8967/// Nested message and enum types in `UninterpretedOption`.
8968pub mod uninterpreted_option {
8969    /// The name of the uninterpreted option.  Each string represents a segment in
8970    /// a dot-separated name.  is_extension is true iff a segment represents an
8971    /// extension (denoted with parentheses in options specs in .proto files).
8972    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8973    /// "foo.(bar.baz).moo".
8974    #[derive(Clone, PartialEq, ::prost::Message)]
8975    pub struct NamePart {
8976        #[prost(string, optional, tag="1")]
8977        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8978        #[prost(bool, optional, tag="2")]
8979        pub is_extension: ::core::option::Option<bool>,
8980    }
8981}
8982#[derive(Clone, PartialEq, ::prost::Message)]
8983pub struct FieldOptions {
8984    /// The packed option can be enabled for repeated primitive fields to enable
8985    /// a more efficient representation on the wire. Rather than repeatedly
8986    /// writing the tag and type for each element, the entire array is encoded as
8987    /// a single length-delimited blob. In proto3, only explicit setting it to
8988    /// false will avoid using packed encoding.
8989    #[prost(bool, optional, tag="2")]
8990    pub packed: ::core::option::Option<bool>,
8991    /// The parser stores options it doesn't recognize here. See above.
8992    #[prost(message, repeated, tag="999")]
8993    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8994}
8995/// Describes a field within a message.
8996#[derive(Clone, PartialEq, ::prost::Message)]
8997pub struct FieldDescriptorProto {
8998    #[prost(string, optional, tag="1")]
8999    pub name: ::core::option::Option<::prost::alloc::string::String>,
9000    #[prost(int32, optional, tag="3")]
9001    pub number: ::core::option::Option<i32>,
9002    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
9003    pub label: ::core::option::Option<i32>,
9004    /// If type_name is set, this need not be set.  If both this and type_name
9005    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9006    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
9007    pub r#type: ::core::option::Option<i32>,
9008    /// For message and enum types, this is the name of the type.  If the name
9009    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9010    /// rules are used to find the type (i.e. first the nested types within this
9011    /// message are searched, then within the parent, on up to the root
9012    /// namespace).
9013    #[prost(string, optional, tag="6")]
9014    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9015    /// For extensions, this is the name of the type being extended.  It is
9016    /// resolved in the same manner as type_name.
9017    #[prost(string, optional, tag="2")]
9018    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9019    /// For numeric types, contains the original text representation of the value.
9020    /// For booleans, "true" or "false".
9021    /// For strings, contains the default text contents (not escaped in any way).
9022    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9023    /// TODO(kenton):  Base-64 encode?
9024    #[prost(string, optional, tag="7")]
9025    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9026    #[prost(message, optional, tag="8")]
9027    pub options: ::core::option::Option<FieldOptions>,
9028    /// If set, gives the index of a oneof in the containing type's oneof_decl
9029    /// list.  This field is a member of that oneof.
9030    #[prost(int32, optional, tag="9")]
9031    pub oneof_index: ::core::option::Option<i32>,
9032}
9033/// Nested message and enum types in `FieldDescriptorProto`.
9034pub mod field_descriptor_proto {
9035    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9036    #[repr(i32)]
9037    pub enum Type {
9038        /// 0 is reserved for errors.
9039        /// Order is weird for historical reasons.
9040        Double = 1,
9041        Float = 2,
9042        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9043        /// negative values are likely.
9044        Int64 = 3,
9045        Uint64 = 4,
9046        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9047        /// negative values are likely.
9048        Int32 = 5,
9049        Fixed64 = 6,
9050        Fixed32 = 7,
9051        Bool = 8,
9052        String = 9,
9053        /// Tag-delimited aggregate.
9054        /// Group type is deprecated and not supported in proto3. However, Proto3
9055        /// implementations should still be able to parse the group wire format and
9056        /// treat group fields as unknown fields.
9057        Group = 10,
9058        /// Length-delimited aggregate.
9059        Message = 11,
9060        /// New in version 2.
9061        Bytes = 12,
9062        Uint32 = 13,
9063        Enum = 14,
9064        Sfixed32 = 15,
9065        Sfixed64 = 16,
9066        /// Uses ZigZag encoding.
9067        Sint32 = 17,
9068        /// Uses ZigZag encoding.
9069        Sint64 = 18,
9070    }
9071    impl Type {
9072        /// String value of the enum field names used in the ProtoBuf definition.
9073        ///
9074        /// The values are not transformed in any way and thus are considered stable
9075        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9076        pub fn as_str_name(&self) -> &'static str {
9077            match self {
9078                Type::Double => "TYPE_DOUBLE",
9079                Type::Float => "TYPE_FLOAT",
9080                Type::Int64 => "TYPE_INT64",
9081                Type::Uint64 => "TYPE_UINT64",
9082                Type::Int32 => "TYPE_INT32",
9083                Type::Fixed64 => "TYPE_FIXED64",
9084                Type::Fixed32 => "TYPE_FIXED32",
9085                Type::Bool => "TYPE_BOOL",
9086                Type::String => "TYPE_STRING",
9087                Type::Group => "TYPE_GROUP",
9088                Type::Message => "TYPE_MESSAGE",
9089                Type::Bytes => "TYPE_BYTES",
9090                Type::Uint32 => "TYPE_UINT32",
9091                Type::Enum => "TYPE_ENUM",
9092                Type::Sfixed32 => "TYPE_SFIXED32",
9093                Type::Sfixed64 => "TYPE_SFIXED64",
9094                Type::Sint32 => "TYPE_SINT32",
9095                Type::Sint64 => "TYPE_SINT64",
9096            }
9097        }
9098    }
9099    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9100    #[repr(i32)]
9101    pub enum Label {
9102        /// 0 is reserved for errors
9103        Optional = 1,
9104        Required = 2,
9105        Repeated = 3,
9106    }
9107    impl Label {
9108        /// String value of the enum field names used in the ProtoBuf definition.
9109        ///
9110        /// The values are not transformed in any way and thus are considered stable
9111        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9112        pub fn as_str_name(&self) -> &'static str {
9113            match self {
9114                Label::Optional => "LABEL_OPTIONAL",
9115                Label::Required => "LABEL_REQUIRED",
9116                Label::Repeated => "LABEL_REPEATED",
9117            }
9118        }
9119    }
9120}
9121/// Describes a oneof.
9122#[derive(Clone, PartialEq, ::prost::Message)]
9123pub struct OneofDescriptorProto {
9124    #[prost(string, optional, tag="1")]
9125    pub name: ::core::option::Option<::prost::alloc::string::String>,
9126    #[prost(message, optional, tag="2")]
9127    pub options: ::core::option::Option<OneofOptions>,
9128}
9129/// Describes an enum type.
9130#[derive(Clone, PartialEq, ::prost::Message)]
9131pub struct EnumDescriptorProto {
9132    #[prost(string, optional, tag="1")]
9133    pub name: ::core::option::Option<::prost::alloc::string::String>,
9134    #[prost(message, repeated, tag="2")]
9135    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9136    /// Reserved enum value names, which may not be reused. A given name may only
9137    /// be reserved once.
9138    #[prost(string, repeated, tag="5")]
9139    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9140}
9141/// Describes a value within an enum.
9142#[derive(Clone, PartialEq, ::prost::Message)]
9143pub struct EnumValueDescriptorProto {
9144    #[prost(string, optional, tag="1")]
9145    pub name: ::core::option::Option<::prost::alloc::string::String>,
9146    #[prost(int32, optional, tag="2")]
9147    pub number: ::core::option::Option<i32>,
9148}
9149#[derive(Clone, PartialEq, ::prost::Message)]
9150pub struct OneofOptions {
9151}
9152// End of protos/perfetto/common/descriptor.proto
9153
9154// Begin of protos/perfetto/trace/extension_descriptor.proto
9155
9156/// This message contains descriptors used to parse extension fields of
9157/// TrackEvent.
9158///
9159/// See docs/design-docs/extensions.md for more details.
9160#[derive(Clone, PartialEq, ::prost::Message)]
9161pub struct ExtensionDescriptor {
9162    #[prost(message, optional, tag="1")]
9163    pub extension_set: ::core::option::Option<FileDescriptorSet>,
9164}
9165// End of protos/perfetto/trace/extension_descriptor.proto
9166
9167// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
9168
9169/// Represents the mapping between inode numbers in a block device and their path
9170/// on the filesystem
9171#[derive(Clone, PartialEq, ::prost::Message)]
9172pub struct InodeFileMap {
9173    #[prost(uint64, optional, tag="1")]
9174    pub block_device_id: ::core::option::Option<u64>,
9175    /// The mount points of the block device, e.g. \["system"\].
9176    #[prost(string, repeated, tag="2")]
9177    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9178    /// The list of all the entries from the block device
9179    #[prost(message, repeated, tag="3")]
9180    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9181}
9182/// Nested message and enum types in `InodeFileMap`.
9183pub mod inode_file_map {
9184    /// Representation of Entry
9185    #[derive(Clone, PartialEq, ::prost::Message)]
9186    pub struct Entry {
9187        #[prost(uint64, optional, tag="1")]
9188        pub inode_number: ::core::option::Option<u64>,
9189        /// The path to the file, e.g. "etc/file.xml"
9190        /// List of strings for multiple hardlinks
9191        #[prost(string, repeated, tag="2")]
9192        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9193        #[prost(enumeration="entry::Type", optional, tag="3")]
9194        pub r#type: ::core::option::Option<i32>,
9195    }
9196    /// Nested message and enum types in `Entry`.
9197    pub mod entry {
9198        /// The file type
9199        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9200        #[repr(i32)]
9201        pub enum Type {
9202            Unknown = 0,
9203            File = 1,
9204            Directory = 2,
9205        }
9206        impl Type {
9207            /// String value of the enum field names used in the ProtoBuf definition.
9208            ///
9209            /// The values are not transformed in any way and thus are considered stable
9210            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9211            pub fn as_str_name(&self) -> &'static str {
9212                match self {
9213                    Type::Unknown => "UNKNOWN",
9214                    Type::File => "FILE",
9215                    Type::Directory => "DIRECTORY",
9216                }
9217            }
9218        }
9219    }
9220}
9221// End of protos/perfetto/trace/filesystem/inode_file_map.proto
9222
9223// Begin of protos/perfetto/trace/ftrace/android_fs.proto
9224
9225#[derive(Clone, PartialEq, ::prost::Message)]
9226pub struct AndroidFsDatareadEndFtraceEvent {
9227    #[prost(int32, optional, tag="1")]
9228    pub bytes: ::core::option::Option<i32>,
9229    #[prost(uint64, optional, tag="2")]
9230    pub ino: ::core::option::Option<u64>,
9231    #[prost(int64, optional, tag="3")]
9232    pub offset: ::core::option::Option<i64>,
9233}
9234#[derive(Clone, PartialEq, ::prost::Message)]
9235pub struct AndroidFsDatareadStartFtraceEvent {
9236    #[prost(int32, optional, tag="1")]
9237    pub bytes: ::core::option::Option<i32>,
9238    #[prost(string, optional, tag="2")]
9239    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9240    #[prost(int64, optional, tag="3")]
9241    pub i_size: ::core::option::Option<i64>,
9242    #[prost(uint64, optional, tag="4")]
9243    pub ino: ::core::option::Option<u64>,
9244    #[prost(int64, optional, tag="5")]
9245    pub offset: ::core::option::Option<i64>,
9246    #[prost(string, optional, tag="6")]
9247    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9248    #[prost(int32, optional, tag="7")]
9249    pub pid: ::core::option::Option<i32>,
9250}
9251#[derive(Clone, PartialEq, ::prost::Message)]
9252pub struct AndroidFsDatawriteEndFtraceEvent {
9253    #[prost(int32, optional, tag="1")]
9254    pub bytes: ::core::option::Option<i32>,
9255    #[prost(uint64, optional, tag="2")]
9256    pub ino: ::core::option::Option<u64>,
9257    #[prost(int64, optional, tag="3")]
9258    pub offset: ::core::option::Option<i64>,
9259}
9260#[derive(Clone, PartialEq, ::prost::Message)]
9261pub struct AndroidFsDatawriteStartFtraceEvent {
9262    #[prost(int32, optional, tag="1")]
9263    pub bytes: ::core::option::Option<i32>,
9264    #[prost(string, optional, tag="2")]
9265    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9266    #[prost(int64, optional, tag="3")]
9267    pub i_size: ::core::option::Option<i64>,
9268    #[prost(uint64, optional, tag="4")]
9269    pub ino: ::core::option::Option<u64>,
9270    #[prost(int64, optional, tag="5")]
9271    pub offset: ::core::option::Option<i64>,
9272    #[prost(string, optional, tag="6")]
9273    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9274    #[prost(int32, optional, tag="7")]
9275    pub pid: ::core::option::Option<i32>,
9276}
9277#[derive(Clone, PartialEq, ::prost::Message)]
9278pub struct AndroidFsFsyncEndFtraceEvent {
9279    #[prost(int32, optional, tag="1")]
9280    pub bytes: ::core::option::Option<i32>,
9281    #[prost(uint64, optional, tag="2")]
9282    pub ino: ::core::option::Option<u64>,
9283    #[prost(int64, optional, tag="3")]
9284    pub offset: ::core::option::Option<i64>,
9285}
9286#[derive(Clone, PartialEq, ::prost::Message)]
9287pub struct AndroidFsFsyncStartFtraceEvent {
9288    #[prost(string, optional, tag="1")]
9289    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9290    #[prost(int64, optional, tag="2")]
9291    pub i_size: ::core::option::Option<i64>,
9292    #[prost(uint64, optional, tag="3")]
9293    pub ino: ::core::option::Option<u64>,
9294    #[prost(string, optional, tag="4")]
9295    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9296    #[prost(int32, optional, tag="5")]
9297    pub pid: ::core::option::Option<i32>,
9298}
9299// End of protos/perfetto/trace/ftrace/android_fs.proto
9300
9301// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9302
9303#[derive(Clone, PartialEq, ::prost::Message)]
9304pub struct BclIrqTriggerFtraceEvent {
9305    #[prost(int32, optional, tag="1")]
9306    pub id: ::core::option::Option<i32>,
9307    #[prost(int32, optional, tag="2")]
9308    pub throttle: ::core::option::Option<i32>,
9309    #[prost(int32, optional, tag="3")]
9310    pub cpu0_limit: ::core::option::Option<i32>,
9311    #[prost(int32, optional, tag="4")]
9312    pub cpu1_limit: ::core::option::Option<i32>,
9313    #[prost(int32, optional, tag="5")]
9314    pub cpu2_limit: ::core::option::Option<i32>,
9315    #[prost(int32, optional, tag="6")]
9316    pub tpu_limit: ::core::option::Option<i32>,
9317    #[prost(int32, optional, tag="7")]
9318    pub gpu_limit: ::core::option::Option<i32>,
9319    #[prost(int32, optional, tag="8")]
9320    pub voltage: ::core::option::Option<i32>,
9321    #[prost(int32, optional, tag="9")]
9322    pub capacity: ::core::option::Option<i32>,
9323}
9324// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9325
9326// Begin of protos/perfetto/trace/ftrace/binder.proto
9327
9328#[derive(Clone, PartialEq, ::prost::Message)]
9329pub struct BinderTransactionFtraceEvent {
9330    #[prost(int32, optional, tag="1")]
9331    pub debug_id: ::core::option::Option<i32>,
9332    #[prost(int32, optional, tag="2")]
9333    pub target_node: ::core::option::Option<i32>,
9334    #[prost(int32, optional, tag="3")]
9335    pub to_proc: ::core::option::Option<i32>,
9336    #[prost(int32, optional, tag="4")]
9337    pub to_thread: ::core::option::Option<i32>,
9338    #[prost(int32, optional, tag="5")]
9339    pub reply: ::core::option::Option<i32>,
9340    #[prost(uint32, optional, tag="6")]
9341    pub code: ::core::option::Option<u32>,
9342    #[prost(uint32, optional, tag="7")]
9343    pub flags: ::core::option::Option<u32>,
9344}
9345#[derive(Clone, PartialEq, ::prost::Message)]
9346pub struct BinderTransactionReceivedFtraceEvent {
9347    #[prost(int32, optional, tag="1")]
9348    pub debug_id: ::core::option::Option<i32>,
9349}
9350#[derive(Clone, PartialEq, ::prost::Message)]
9351pub struct BinderSetPriorityFtraceEvent {
9352    #[prost(int32, optional, tag="1")]
9353    pub proc: ::core::option::Option<i32>,
9354    #[prost(int32, optional, tag="2")]
9355    pub thread: ::core::option::Option<i32>,
9356    #[prost(uint32, optional, tag="3")]
9357    pub old_prio: ::core::option::Option<u32>,
9358    #[prost(uint32, optional, tag="4")]
9359    pub new_prio: ::core::option::Option<u32>,
9360    #[prost(uint32, optional, tag="5")]
9361    pub desired_prio: ::core::option::Option<u32>,
9362}
9363#[derive(Clone, PartialEq, ::prost::Message)]
9364pub struct BinderLockFtraceEvent {
9365    #[prost(string, optional, tag="1")]
9366    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9367}
9368#[derive(Clone, PartialEq, ::prost::Message)]
9369pub struct BinderLockedFtraceEvent {
9370    #[prost(string, optional, tag="1")]
9371    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9372}
9373#[derive(Clone, PartialEq, ::prost::Message)]
9374pub struct BinderUnlockFtraceEvent {
9375    #[prost(string, optional, tag="1")]
9376    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9377}
9378#[derive(Clone, PartialEq, ::prost::Message)]
9379pub struct BinderTransactionAllocBufFtraceEvent {
9380    #[prost(uint64, optional, tag="1")]
9381    pub data_size: ::core::option::Option<u64>,
9382    #[prost(int32, optional, tag="2")]
9383    pub debug_id: ::core::option::Option<i32>,
9384    #[prost(uint64, optional, tag="3")]
9385    pub offsets_size: ::core::option::Option<u64>,
9386    #[prost(uint64, optional, tag="4")]
9387    pub extra_buffers_size: ::core::option::Option<u64>,
9388}
9389#[derive(Clone, PartialEq, ::prost::Message)]
9390pub struct BinderCommandFtraceEvent {
9391    #[prost(uint32, optional, tag="1")]
9392    pub cmd: ::core::option::Option<u32>,
9393}
9394#[derive(Clone, PartialEq, ::prost::Message)]
9395pub struct BinderReturnFtraceEvent {
9396    #[prost(uint32, optional, tag="1")]
9397    pub cmd: ::core::option::Option<u32>,
9398}
9399// End of protos/perfetto/trace/ftrace/binder.proto
9400
9401// Begin of protos/perfetto/trace/ftrace/block.proto
9402
9403#[derive(Clone, PartialEq, ::prost::Message)]
9404pub struct BlockRqIssueFtraceEvent {
9405    #[prost(uint64, optional, tag="1")]
9406    pub dev: ::core::option::Option<u64>,
9407    #[prost(uint64, optional, tag="2")]
9408    pub sector: ::core::option::Option<u64>,
9409    #[prost(uint32, optional, tag="3")]
9410    pub nr_sector: ::core::option::Option<u32>,
9411    #[prost(uint32, optional, tag="4")]
9412    pub bytes: ::core::option::Option<u32>,
9413    #[prost(string, optional, tag="5")]
9414    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9415    #[prost(string, optional, tag="6")]
9416    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9417    #[prost(string, optional, tag="7")]
9418    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9419}
9420#[derive(Clone, PartialEq, ::prost::Message)]
9421pub struct BlockBioBackmergeFtraceEvent {
9422    #[prost(uint64, optional, tag="1")]
9423    pub dev: ::core::option::Option<u64>,
9424    #[prost(uint64, optional, tag="2")]
9425    pub sector: ::core::option::Option<u64>,
9426    #[prost(uint32, optional, tag="3")]
9427    pub nr_sector: ::core::option::Option<u32>,
9428    #[prost(string, optional, tag="4")]
9429    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9430    #[prost(string, optional, tag="5")]
9431    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9432}
9433#[derive(Clone, PartialEq, ::prost::Message)]
9434pub struct BlockBioBounceFtraceEvent {
9435    #[prost(uint64, optional, tag="1")]
9436    pub dev: ::core::option::Option<u64>,
9437    #[prost(uint64, optional, tag="2")]
9438    pub sector: ::core::option::Option<u64>,
9439    #[prost(uint32, optional, tag="3")]
9440    pub nr_sector: ::core::option::Option<u32>,
9441    #[prost(string, optional, tag="4")]
9442    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9443    #[prost(string, optional, tag="5")]
9444    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9445}
9446#[derive(Clone, PartialEq, ::prost::Message)]
9447pub struct BlockBioCompleteFtraceEvent {
9448    #[prost(uint64, optional, tag="1")]
9449    pub dev: ::core::option::Option<u64>,
9450    #[prost(uint64, optional, tag="2")]
9451    pub sector: ::core::option::Option<u64>,
9452    #[prost(uint32, optional, tag="3")]
9453    pub nr_sector: ::core::option::Option<u32>,
9454    #[prost(int32, optional, tag="4")]
9455    pub error: ::core::option::Option<i32>,
9456    #[prost(string, optional, tag="5")]
9457    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9458}
9459#[derive(Clone, PartialEq, ::prost::Message)]
9460pub struct BlockBioFrontmergeFtraceEvent {
9461    #[prost(uint64, optional, tag="1")]
9462    pub dev: ::core::option::Option<u64>,
9463    #[prost(uint64, optional, tag="2")]
9464    pub sector: ::core::option::Option<u64>,
9465    #[prost(uint32, optional, tag="3")]
9466    pub nr_sector: ::core::option::Option<u32>,
9467    #[prost(string, optional, tag="4")]
9468    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9469    #[prost(string, optional, tag="5")]
9470    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9471}
9472#[derive(Clone, PartialEq, ::prost::Message)]
9473pub struct BlockBioQueueFtraceEvent {
9474    #[prost(uint64, optional, tag="1")]
9475    pub dev: ::core::option::Option<u64>,
9476    #[prost(uint64, optional, tag="2")]
9477    pub sector: ::core::option::Option<u64>,
9478    #[prost(uint32, optional, tag="3")]
9479    pub nr_sector: ::core::option::Option<u32>,
9480    #[prost(string, optional, tag="4")]
9481    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9482    #[prost(string, optional, tag="5")]
9483    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9484}
9485#[derive(Clone, PartialEq, ::prost::Message)]
9486pub struct BlockBioRemapFtraceEvent {
9487    #[prost(uint64, optional, tag="1")]
9488    pub dev: ::core::option::Option<u64>,
9489    #[prost(uint64, optional, tag="2")]
9490    pub sector: ::core::option::Option<u64>,
9491    #[prost(uint32, optional, tag="3")]
9492    pub nr_sector: ::core::option::Option<u32>,
9493    #[prost(uint64, optional, tag="4")]
9494    pub old_dev: ::core::option::Option<u64>,
9495    #[prost(uint64, optional, tag="5")]
9496    pub old_sector: ::core::option::Option<u64>,
9497    #[prost(string, optional, tag="6")]
9498    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9499}
9500#[derive(Clone, PartialEq, ::prost::Message)]
9501pub struct BlockDirtyBufferFtraceEvent {
9502    #[prost(uint64, optional, tag="1")]
9503    pub dev: ::core::option::Option<u64>,
9504    #[prost(uint64, optional, tag="2")]
9505    pub sector: ::core::option::Option<u64>,
9506    #[prost(uint64, optional, tag="3")]
9507    pub size: ::core::option::Option<u64>,
9508}
9509#[derive(Clone, PartialEq, ::prost::Message)]
9510pub struct BlockGetrqFtraceEvent {
9511    #[prost(uint64, optional, tag="1")]
9512    pub dev: ::core::option::Option<u64>,
9513    #[prost(uint64, optional, tag="2")]
9514    pub sector: ::core::option::Option<u64>,
9515    #[prost(uint32, optional, tag="3")]
9516    pub nr_sector: ::core::option::Option<u32>,
9517    #[prost(string, optional, tag="4")]
9518    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9519    #[prost(string, optional, tag="5")]
9520    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9521}
9522#[derive(Clone, PartialEq, ::prost::Message)]
9523pub struct BlockPlugFtraceEvent {
9524    #[prost(string, optional, tag="1")]
9525    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9526}
9527#[derive(Clone, PartialEq, ::prost::Message)]
9528pub struct BlockRqAbortFtraceEvent {
9529    #[prost(uint64, optional, tag="1")]
9530    pub dev: ::core::option::Option<u64>,
9531    #[prost(uint64, optional, tag="2")]
9532    pub sector: ::core::option::Option<u64>,
9533    #[prost(uint32, optional, tag="3")]
9534    pub nr_sector: ::core::option::Option<u32>,
9535    #[prost(int32, optional, tag="4")]
9536    pub errors: ::core::option::Option<i32>,
9537    #[prost(string, optional, tag="5")]
9538    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9539    #[prost(string, optional, tag="6")]
9540    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9541}
9542#[derive(Clone, PartialEq, ::prost::Message)]
9543pub struct BlockRqCompleteFtraceEvent {
9544    #[prost(uint64, optional, tag="1")]
9545    pub dev: ::core::option::Option<u64>,
9546    #[prost(uint64, optional, tag="2")]
9547    pub sector: ::core::option::Option<u64>,
9548    #[prost(uint32, optional, tag="3")]
9549    pub nr_sector: ::core::option::Option<u32>,
9550    #[prost(int32, optional, tag="4")]
9551    pub errors: ::core::option::Option<i32>,
9552    #[prost(string, optional, tag="5")]
9553    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9554    #[prost(string, optional, tag="6")]
9555    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9556    #[prost(int32, optional, tag="7")]
9557    pub error: ::core::option::Option<i32>,
9558}
9559#[derive(Clone, PartialEq, ::prost::Message)]
9560pub struct BlockRqInsertFtraceEvent {
9561    #[prost(uint64, optional, tag="1")]
9562    pub dev: ::core::option::Option<u64>,
9563    #[prost(uint64, optional, tag="2")]
9564    pub sector: ::core::option::Option<u64>,
9565    #[prost(uint32, optional, tag="3")]
9566    pub nr_sector: ::core::option::Option<u32>,
9567    #[prost(uint32, optional, tag="4")]
9568    pub bytes: ::core::option::Option<u32>,
9569    #[prost(string, optional, tag="5")]
9570    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9571    #[prost(string, optional, tag="6")]
9572    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9573    #[prost(string, optional, tag="7")]
9574    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9575}
9576#[derive(Clone, PartialEq, ::prost::Message)]
9577pub struct BlockRqRemapFtraceEvent {
9578    #[prost(uint64, optional, tag="1")]
9579    pub dev: ::core::option::Option<u64>,
9580    #[prost(uint64, optional, tag="2")]
9581    pub sector: ::core::option::Option<u64>,
9582    #[prost(uint32, optional, tag="3")]
9583    pub nr_sector: ::core::option::Option<u32>,
9584    #[prost(uint64, optional, tag="4")]
9585    pub old_dev: ::core::option::Option<u64>,
9586    #[prost(uint64, optional, tag="5")]
9587    pub old_sector: ::core::option::Option<u64>,
9588    #[prost(uint32, optional, tag="6")]
9589    pub nr_bios: ::core::option::Option<u32>,
9590    #[prost(string, optional, tag="7")]
9591    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9592}
9593#[derive(Clone, PartialEq, ::prost::Message)]
9594pub struct BlockRqRequeueFtraceEvent {
9595    #[prost(uint64, optional, tag="1")]
9596    pub dev: ::core::option::Option<u64>,
9597    #[prost(uint64, optional, tag="2")]
9598    pub sector: ::core::option::Option<u64>,
9599    #[prost(uint32, optional, tag="3")]
9600    pub nr_sector: ::core::option::Option<u32>,
9601    #[prost(int32, optional, tag="4")]
9602    pub errors: ::core::option::Option<i32>,
9603    #[prost(string, optional, tag="5")]
9604    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9605    #[prost(string, optional, tag="6")]
9606    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9607}
9608#[derive(Clone, PartialEq, ::prost::Message)]
9609pub struct BlockSleeprqFtraceEvent {
9610    #[prost(uint64, optional, tag="1")]
9611    pub dev: ::core::option::Option<u64>,
9612    #[prost(uint64, optional, tag="2")]
9613    pub sector: ::core::option::Option<u64>,
9614    #[prost(uint32, optional, tag="3")]
9615    pub nr_sector: ::core::option::Option<u32>,
9616    #[prost(string, optional, tag="4")]
9617    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9618    #[prost(string, optional, tag="5")]
9619    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9620}
9621#[derive(Clone, PartialEq, ::prost::Message)]
9622pub struct BlockSplitFtraceEvent {
9623    #[prost(uint64, optional, tag="1")]
9624    pub dev: ::core::option::Option<u64>,
9625    #[prost(uint64, optional, tag="2")]
9626    pub sector: ::core::option::Option<u64>,
9627    #[prost(uint64, optional, tag="3")]
9628    pub new_sector: ::core::option::Option<u64>,
9629    #[prost(string, optional, tag="4")]
9630    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9631    #[prost(string, optional, tag="5")]
9632    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9633}
9634#[derive(Clone, PartialEq, ::prost::Message)]
9635pub struct BlockTouchBufferFtraceEvent {
9636    #[prost(uint64, optional, tag="1")]
9637    pub dev: ::core::option::Option<u64>,
9638    #[prost(uint64, optional, tag="2")]
9639    pub sector: ::core::option::Option<u64>,
9640    #[prost(uint64, optional, tag="3")]
9641    pub size: ::core::option::Option<u64>,
9642}
9643#[derive(Clone, PartialEq, ::prost::Message)]
9644pub struct BlockUnplugFtraceEvent {
9645    #[prost(int32, optional, tag="1")]
9646    pub nr_rq: ::core::option::Option<i32>,
9647    #[prost(string, optional, tag="2")]
9648    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9649}
9650#[derive(Clone, PartialEq, ::prost::Message)]
9651pub struct BlockIoStartFtraceEvent {
9652    #[prost(uint64, optional, tag="1")]
9653    pub dev: ::core::option::Option<u64>,
9654    #[prost(uint64, optional, tag="2")]
9655    pub sector: ::core::option::Option<u64>,
9656    #[prost(uint32, optional, tag="3")]
9657    pub nr_sector: ::core::option::Option<u32>,
9658    #[prost(uint32, optional, tag="4")]
9659    pub bytes: ::core::option::Option<u32>,
9660    #[prost(uint32, optional, tag="5")]
9661    pub ioprio: ::core::option::Option<u32>,
9662    #[prost(string, optional, tag="6")]
9663    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9664    #[prost(string, optional, tag="7")]
9665    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9666    #[prost(string, optional, tag="8")]
9667    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9668}
9669#[derive(Clone, PartialEq, ::prost::Message)]
9670pub struct BlockIoDoneFtraceEvent {
9671    #[prost(uint64, optional, tag="1")]
9672    pub dev: ::core::option::Option<u64>,
9673    #[prost(uint64, optional, tag="2")]
9674    pub sector: ::core::option::Option<u64>,
9675    #[prost(uint32, optional, tag="3")]
9676    pub nr_sector: ::core::option::Option<u32>,
9677    #[prost(uint32, optional, tag="4")]
9678    pub bytes: ::core::option::Option<u32>,
9679    #[prost(uint32, optional, tag="5")]
9680    pub ioprio: ::core::option::Option<u32>,
9681    #[prost(string, optional, tag="6")]
9682    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9683    #[prost(string, optional, tag="7")]
9684    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9685    #[prost(string, optional, tag="8")]
9686    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9687}
9688// End of protos/perfetto/trace/ftrace/block.proto
9689
9690// Begin of protos/perfetto/trace/ftrace/cgroup.proto
9691
9692#[derive(Clone, PartialEq, ::prost::Message)]
9693pub struct CgroupAttachTaskFtraceEvent {
9694    #[prost(int32, optional, tag="1")]
9695    pub dst_root: ::core::option::Option<i32>,
9696    #[prost(int32, optional, tag="2")]
9697    pub dst_id: ::core::option::Option<i32>,
9698    #[prost(int32, optional, tag="3")]
9699    pub pid: ::core::option::Option<i32>,
9700    #[prost(string, optional, tag="4")]
9701    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9702    #[prost(string, optional, tag="5")]
9703    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9704    #[prost(int32, optional, tag="6")]
9705    pub dst_level: ::core::option::Option<i32>,
9706    #[prost(string, optional, tag="7")]
9707    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9708}
9709#[derive(Clone, PartialEq, ::prost::Message)]
9710pub struct CgroupMkdirFtraceEvent {
9711    #[prost(int32, optional, tag="1")]
9712    pub root: ::core::option::Option<i32>,
9713    #[prost(int32, optional, tag="2")]
9714    pub id: ::core::option::Option<i32>,
9715    #[prost(string, optional, tag="3")]
9716    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9717    #[prost(int32, optional, tag="4")]
9718    pub level: ::core::option::Option<i32>,
9719    #[prost(string, optional, tag="5")]
9720    pub path: ::core::option::Option<::prost::alloc::string::String>,
9721}
9722#[derive(Clone, PartialEq, ::prost::Message)]
9723pub struct CgroupRemountFtraceEvent {
9724    #[prost(int32, optional, tag="1")]
9725    pub root: ::core::option::Option<i32>,
9726    #[prost(uint32, optional, tag="2")]
9727    pub ss_mask: ::core::option::Option<u32>,
9728    #[prost(string, optional, tag="3")]
9729    pub name: ::core::option::Option<::prost::alloc::string::String>,
9730}
9731#[derive(Clone, PartialEq, ::prost::Message)]
9732pub struct CgroupRmdirFtraceEvent {
9733    #[prost(int32, optional, tag="1")]
9734    pub root: ::core::option::Option<i32>,
9735    #[prost(int32, optional, tag="2")]
9736    pub id: ::core::option::Option<i32>,
9737    #[prost(string, optional, tag="3")]
9738    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9739    #[prost(int32, optional, tag="4")]
9740    pub level: ::core::option::Option<i32>,
9741    #[prost(string, optional, tag="5")]
9742    pub path: ::core::option::Option<::prost::alloc::string::String>,
9743}
9744#[derive(Clone, PartialEq, ::prost::Message)]
9745pub struct CgroupTransferTasksFtraceEvent {
9746    #[prost(int32, optional, tag="1")]
9747    pub dst_root: ::core::option::Option<i32>,
9748    #[prost(int32, optional, tag="2")]
9749    pub dst_id: ::core::option::Option<i32>,
9750    #[prost(int32, optional, tag="3")]
9751    pub pid: ::core::option::Option<i32>,
9752    #[prost(string, optional, tag="4")]
9753    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9754    #[prost(string, optional, tag="5")]
9755    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9756    #[prost(int32, optional, tag="6")]
9757    pub dst_level: ::core::option::Option<i32>,
9758    #[prost(string, optional, tag="7")]
9759    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9760}
9761#[derive(Clone, PartialEq, ::prost::Message)]
9762pub struct CgroupDestroyRootFtraceEvent {
9763    #[prost(int32, optional, tag="1")]
9764    pub root: ::core::option::Option<i32>,
9765    #[prost(uint32, optional, tag="2")]
9766    pub ss_mask: ::core::option::Option<u32>,
9767    #[prost(string, optional, tag="3")]
9768    pub name: ::core::option::Option<::prost::alloc::string::String>,
9769}
9770#[derive(Clone, PartialEq, ::prost::Message)]
9771pub struct CgroupReleaseFtraceEvent {
9772    #[prost(int32, optional, tag="1")]
9773    pub root: ::core::option::Option<i32>,
9774    #[prost(int32, optional, tag="2")]
9775    pub id: ::core::option::Option<i32>,
9776    #[prost(string, optional, tag="3")]
9777    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9778    #[prost(int32, optional, tag="4")]
9779    pub level: ::core::option::Option<i32>,
9780    #[prost(string, optional, tag="5")]
9781    pub path: ::core::option::Option<::prost::alloc::string::String>,
9782}
9783#[derive(Clone, PartialEq, ::prost::Message)]
9784pub struct CgroupRenameFtraceEvent {
9785    #[prost(int32, optional, tag="1")]
9786    pub root: ::core::option::Option<i32>,
9787    #[prost(int32, optional, tag="2")]
9788    pub id: ::core::option::Option<i32>,
9789    #[prost(string, optional, tag="3")]
9790    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9791    #[prost(int32, optional, tag="4")]
9792    pub level: ::core::option::Option<i32>,
9793    #[prost(string, optional, tag="5")]
9794    pub path: ::core::option::Option<::prost::alloc::string::String>,
9795}
9796#[derive(Clone, PartialEq, ::prost::Message)]
9797pub struct CgroupSetupRootFtraceEvent {
9798    #[prost(int32, optional, tag="1")]
9799    pub root: ::core::option::Option<i32>,
9800    #[prost(uint32, optional, tag="2")]
9801    pub ss_mask: ::core::option::Option<u32>,
9802    #[prost(string, optional, tag="3")]
9803    pub name: ::core::option::Option<::prost::alloc::string::String>,
9804}
9805// End of protos/perfetto/trace/ftrace/cgroup.proto
9806
9807// Begin of protos/perfetto/trace/ftrace/clk.proto
9808
9809#[derive(Clone, PartialEq, ::prost::Message)]
9810pub struct ClkEnableFtraceEvent {
9811    #[prost(string, optional, tag="1")]
9812    pub name: ::core::option::Option<::prost::alloc::string::String>,
9813}
9814#[derive(Clone, PartialEq, ::prost::Message)]
9815pub struct ClkDisableFtraceEvent {
9816    #[prost(string, optional, tag="1")]
9817    pub name: ::core::option::Option<::prost::alloc::string::String>,
9818}
9819#[derive(Clone, PartialEq, ::prost::Message)]
9820pub struct ClkSetRateFtraceEvent {
9821    #[prost(string, optional, tag="1")]
9822    pub name: ::core::option::Option<::prost::alloc::string::String>,
9823    #[prost(uint64, optional, tag="2")]
9824    pub rate: ::core::option::Option<u64>,
9825}
9826// End of protos/perfetto/trace/ftrace/clk.proto
9827
9828// Begin of protos/perfetto/trace/ftrace/cma.proto
9829
9830#[derive(Clone, PartialEq, ::prost::Message)]
9831pub struct CmaAllocStartFtraceEvent {
9832    #[prost(uint32, optional, tag="1")]
9833    pub align: ::core::option::Option<u32>,
9834    #[prost(uint32, optional, tag="2")]
9835    pub count: ::core::option::Option<u32>,
9836    #[prost(string, optional, tag="3")]
9837    pub name: ::core::option::Option<::prost::alloc::string::String>,
9838}
9839#[derive(Clone, PartialEq, ::prost::Message)]
9840pub struct CmaAllocInfoFtraceEvent {
9841    #[prost(uint32, optional, tag="1")]
9842    pub align: ::core::option::Option<u32>,
9843    #[prost(uint32, optional, tag="2")]
9844    pub count: ::core::option::Option<u32>,
9845    #[prost(uint32, optional, tag="3")]
9846    pub err_iso: ::core::option::Option<u32>,
9847    #[prost(uint32, optional, tag="4")]
9848    pub err_mig: ::core::option::Option<u32>,
9849    #[prost(uint32, optional, tag="5")]
9850    pub err_test: ::core::option::Option<u32>,
9851    #[prost(string, optional, tag="6")]
9852    pub name: ::core::option::Option<::prost::alloc::string::String>,
9853    #[prost(uint64, optional, tag="7")]
9854    pub nr_mapped: ::core::option::Option<u64>,
9855    #[prost(uint64, optional, tag="8")]
9856    pub nr_migrated: ::core::option::Option<u64>,
9857    #[prost(uint64, optional, tag="9")]
9858    pub nr_reclaimed: ::core::option::Option<u64>,
9859    #[prost(uint64, optional, tag="10")]
9860    pub pfn: ::core::option::Option<u64>,
9861}
9862#[derive(Clone, PartialEq, ::prost::Message)]
9863pub struct CmaAllocFinishFtraceEvent {
9864    #[prost(string, optional, tag="1")]
9865    pub name: ::core::option::Option<::prost::alloc::string::String>,
9866    #[prost(uint64, optional, tag="2")]
9867    pub pfn: ::core::option::Option<u64>,
9868    #[prost(uint64, optional, tag="3")]
9869    pub page: ::core::option::Option<u64>,
9870    #[prost(uint64, optional, tag="4")]
9871    pub count: ::core::option::Option<u64>,
9872    #[prost(uint32, optional, tag="5")]
9873    pub align: ::core::option::Option<u32>,
9874    #[prost(int32, optional, tag="6")]
9875    pub errorno: ::core::option::Option<i32>,
9876}
9877// End of protos/perfetto/trace/ftrace/cma.proto
9878
9879// Begin of protos/perfetto/trace/ftrace/compaction.proto
9880
9881#[derive(Clone, PartialEq, ::prost::Message)]
9882pub struct MmCompactionBeginFtraceEvent {
9883    #[prost(uint64, optional, tag="1")]
9884    pub zone_start: ::core::option::Option<u64>,
9885    #[prost(uint64, optional, tag="2")]
9886    pub migrate_pfn: ::core::option::Option<u64>,
9887    #[prost(uint64, optional, tag="3")]
9888    pub free_pfn: ::core::option::Option<u64>,
9889    #[prost(uint64, optional, tag="4")]
9890    pub zone_end: ::core::option::Option<u64>,
9891    #[prost(uint32, optional, tag="5")]
9892    pub sync: ::core::option::Option<u32>,
9893}
9894#[derive(Clone, PartialEq, ::prost::Message)]
9895pub struct MmCompactionDeferCompactionFtraceEvent {
9896    #[prost(int32, optional, tag="1")]
9897    pub nid: ::core::option::Option<i32>,
9898    #[prost(uint32, optional, tag="2")]
9899    pub idx: ::core::option::Option<u32>,
9900    #[prost(int32, optional, tag="3")]
9901    pub order: ::core::option::Option<i32>,
9902    #[prost(uint32, optional, tag="4")]
9903    pub considered: ::core::option::Option<u32>,
9904    #[prost(uint32, optional, tag="5")]
9905    pub defer_shift: ::core::option::Option<u32>,
9906    #[prost(int32, optional, tag="6")]
9907    pub order_failed: ::core::option::Option<i32>,
9908}
9909#[derive(Clone, PartialEq, ::prost::Message)]
9910pub struct MmCompactionDeferredFtraceEvent {
9911    #[prost(int32, optional, tag="1")]
9912    pub nid: ::core::option::Option<i32>,
9913    #[prost(uint32, optional, tag="2")]
9914    pub idx: ::core::option::Option<u32>,
9915    #[prost(int32, optional, tag="3")]
9916    pub order: ::core::option::Option<i32>,
9917    #[prost(uint32, optional, tag="4")]
9918    pub considered: ::core::option::Option<u32>,
9919    #[prost(uint32, optional, tag="5")]
9920    pub defer_shift: ::core::option::Option<u32>,
9921    #[prost(int32, optional, tag="6")]
9922    pub order_failed: ::core::option::Option<i32>,
9923}
9924#[derive(Clone, PartialEq, ::prost::Message)]
9925pub struct MmCompactionDeferResetFtraceEvent {
9926    #[prost(int32, optional, tag="1")]
9927    pub nid: ::core::option::Option<i32>,
9928    #[prost(uint32, optional, tag="2")]
9929    pub idx: ::core::option::Option<u32>,
9930    #[prost(int32, optional, tag="3")]
9931    pub order: ::core::option::Option<i32>,
9932    #[prost(uint32, optional, tag="4")]
9933    pub considered: ::core::option::Option<u32>,
9934    #[prost(uint32, optional, tag="5")]
9935    pub defer_shift: ::core::option::Option<u32>,
9936    #[prost(int32, optional, tag="6")]
9937    pub order_failed: ::core::option::Option<i32>,
9938}
9939#[derive(Clone, PartialEq, ::prost::Message)]
9940pub struct MmCompactionEndFtraceEvent {
9941    #[prost(uint64, optional, tag="1")]
9942    pub zone_start: ::core::option::Option<u64>,
9943    #[prost(uint64, optional, tag="2")]
9944    pub migrate_pfn: ::core::option::Option<u64>,
9945    #[prost(uint64, optional, tag="3")]
9946    pub free_pfn: ::core::option::Option<u64>,
9947    #[prost(uint64, optional, tag="4")]
9948    pub zone_end: ::core::option::Option<u64>,
9949    #[prost(uint32, optional, tag="5")]
9950    pub sync: ::core::option::Option<u32>,
9951    #[prost(int32, optional, tag="6")]
9952    pub status: ::core::option::Option<i32>,
9953}
9954#[derive(Clone, PartialEq, ::prost::Message)]
9955pub struct MmCompactionFinishedFtraceEvent {
9956    #[prost(int32, optional, tag="1")]
9957    pub nid: ::core::option::Option<i32>,
9958    #[prost(uint32, optional, tag="2")]
9959    pub idx: ::core::option::Option<u32>,
9960    #[prost(int32, optional, tag="3")]
9961    pub order: ::core::option::Option<i32>,
9962    #[prost(int32, optional, tag="4")]
9963    pub ret: ::core::option::Option<i32>,
9964}
9965#[derive(Clone, PartialEq, ::prost::Message)]
9966pub struct MmCompactionIsolateFreepagesFtraceEvent {
9967    #[prost(uint64, optional, tag="1")]
9968    pub start_pfn: ::core::option::Option<u64>,
9969    #[prost(uint64, optional, tag="2")]
9970    pub end_pfn: ::core::option::Option<u64>,
9971    #[prost(uint64, optional, tag="3")]
9972    pub nr_scanned: ::core::option::Option<u64>,
9973    #[prost(uint64, optional, tag="4")]
9974    pub nr_taken: ::core::option::Option<u64>,
9975}
9976#[derive(Clone, PartialEq, ::prost::Message)]
9977pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9978    #[prost(uint64, optional, tag="1")]
9979    pub start_pfn: ::core::option::Option<u64>,
9980    #[prost(uint64, optional, tag="2")]
9981    pub end_pfn: ::core::option::Option<u64>,
9982    #[prost(uint64, optional, tag="3")]
9983    pub nr_scanned: ::core::option::Option<u64>,
9984    #[prost(uint64, optional, tag="4")]
9985    pub nr_taken: ::core::option::Option<u64>,
9986}
9987#[derive(Clone, PartialEq, ::prost::Message)]
9988pub struct MmCompactionKcompactdSleepFtraceEvent {
9989    #[prost(int32, optional, tag="1")]
9990    pub nid: ::core::option::Option<i32>,
9991}
9992#[derive(Clone, PartialEq, ::prost::Message)]
9993pub struct MmCompactionKcompactdWakeFtraceEvent {
9994    #[prost(int32, optional, tag="1")]
9995    pub nid: ::core::option::Option<i32>,
9996    #[prost(int32, optional, tag="2")]
9997    pub order: ::core::option::Option<i32>,
9998    #[prost(uint32, optional, tag="3")]
9999    pub classzone_idx: ::core::option::Option<u32>,
10000    #[prost(uint32, optional, tag="4")]
10001    pub highest_zoneidx: ::core::option::Option<u32>,
10002}
10003#[derive(Clone, PartialEq, ::prost::Message)]
10004pub struct MmCompactionMigratepagesFtraceEvent {
10005    #[prost(uint64, optional, tag="1")]
10006    pub nr_migrated: ::core::option::Option<u64>,
10007    #[prost(uint64, optional, tag="2")]
10008    pub nr_failed: ::core::option::Option<u64>,
10009}
10010#[derive(Clone, PartialEq, ::prost::Message)]
10011pub struct MmCompactionSuitableFtraceEvent {
10012    #[prost(int32, optional, tag="1")]
10013    pub nid: ::core::option::Option<i32>,
10014    #[prost(uint32, optional, tag="2")]
10015    pub idx: ::core::option::Option<u32>,
10016    #[prost(int32, optional, tag="3")]
10017    pub order: ::core::option::Option<i32>,
10018    #[prost(int32, optional, tag="4")]
10019    pub ret: ::core::option::Option<i32>,
10020}
10021#[derive(Clone, PartialEq, ::prost::Message)]
10022pub struct MmCompactionTryToCompactPagesFtraceEvent {
10023    #[prost(int32, optional, tag="1")]
10024    pub order: ::core::option::Option<i32>,
10025    #[prost(uint32, optional, tag="2")]
10026    pub gfp_mask: ::core::option::Option<u32>,
10027    #[prost(uint32, optional, tag="3")]
10028    pub mode: ::core::option::Option<u32>,
10029    #[prost(int32, optional, tag="4")]
10030    pub prio: ::core::option::Option<i32>,
10031}
10032#[derive(Clone, PartialEq, ::prost::Message)]
10033pub struct MmCompactionWakeupKcompactdFtraceEvent {
10034    #[prost(int32, optional, tag="1")]
10035    pub nid: ::core::option::Option<i32>,
10036    #[prost(int32, optional, tag="2")]
10037    pub order: ::core::option::Option<i32>,
10038    #[prost(uint32, optional, tag="3")]
10039    pub classzone_idx: ::core::option::Option<u32>,
10040    #[prost(uint32, optional, tag="4")]
10041    pub highest_zoneidx: ::core::option::Option<u32>,
10042}
10043// End of protos/perfetto/trace/ftrace/compaction.proto
10044
10045// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
10046
10047#[derive(Clone, PartialEq, ::prost::Message)]
10048pub struct ParamSetValueCpmFtraceEvent {
10049    #[prost(string, optional, tag="1")]
10050    pub body: ::core::option::Option<::prost::alloc::string::String>,
10051    #[prost(uint32, optional, tag="2")]
10052    pub value: ::core::option::Option<u32>,
10053    #[prost(int64, optional, tag="3")]
10054    pub timestamp: ::core::option::Option<i64>,
10055}
10056// End of protos/perfetto/trace/ftrace/cpm_trace.proto
10057
10058// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
10059
10060#[derive(Clone, PartialEq, ::prost::Message)]
10061pub struct CpuhpExitFtraceEvent {
10062    #[prost(uint32, optional, tag="1")]
10063    pub cpu: ::core::option::Option<u32>,
10064    #[prost(int32, optional, tag="2")]
10065    pub idx: ::core::option::Option<i32>,
10066    #[prost(int32, optional, tag="3")]
10067    pub ret: ::core::option::Option<i32>,
10068    #[prost(int32, optional, tag="4")]
10069    pub state: ::core::option::Option<i32>,
10070}
10071#[derive(Clone, PartialEq, ::prost::Message)]
10072pub struct CpuhpMultiEnterFtraceEvent {
10073    #[prost(uint32, optional, tag="1")]
10074    pub cpu: ::core::option::Option<u32>,
10075    #[prost(uint64, optional, tag="2")]
10076    pub fun: ::core::option::Option<u64>,
10077    #[prost(int32, optional, tag="3")]
10078    pub idx: ::core::option::Option<i32>,
10079    #[prost(int32, optional, tag="4")]
10080    pub target: ::core::option::Option<i32>,
10081}
10082#[derive(Clone, PartialEq, ::prost::Message)]
10083pub struct CpuhpEnterFtraceEvent {
10084    #[prost(uint32, optional, tag="1")]
10085    pub cpu: ::core::option::Option<u32>,
10086    #[prost(uint64, optional, tag="2")]
10087    pub fun: ::core::option::Option<u64>,
10088    #[prost(int32, optional, tag="3")]
10089    pub idx: ::core::option::Option<i32>,
10090    #[prost(int32, optional, tag="4")]
10091    pub target: ::core::option::Option<i32>,
10092}
10093#[derive(Clone, PartialEq, ::prost::Message)]
10094pub struct CpuhpLatencyFtraceEvent {
10095    #[prost(uint32, optional, tag="1")]
10096    pub cpu: ::core::option::Option<u32>,
10097    #[prost(int32, optional, tag="2")]
10098    pub ret: ::core::option::Option<i32>,
10099    #[prost(uint32, optional, tag="3")]
10100    pub state: ::core::option::Option<u32>,
10101    #[prost(uint64, optional, tag="4")]
10102    pub time: ::core::option::Option<u64>,
10103}
10104#[derive(Clone, PartialEq, ::prost::Message)]
10105pub struct CpuhpPauseFtraceEvent {
10106    #[prost(uint32, optional, tag="1")]
10107    pub active_cpus: ::core::option::Option<u32>,
10108    #[prost(uint32, optional, tag="2")]
10109    pub cpus: ::core::option::Option<u32>,
10110    #[prost(uint32, optional, tag="3")]
10111    pub pause: ::core::option::Option<u32>,
10112    #[prost(uint32, optional, tag="4")]
10113    pub time: ::core::option::Option<u32>,
10114}
10115// End of protos/perfetto/trace/ftrace/cpuhp.proto
10116
10117// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
10118
10119#[derive(Clone, PartialEq, ::prost::Message)]
10120pub struct CrosEcSensorhubDataFtraceEvent {
10121    #[prost(int64, optional, tag="1")]
10122    pub current_time: ::core::option::Option<i64>,
10123    #[prost(int64, optional, tag="2")]
10124    pub current_timestamp: ::core::option::Option<i64>,
10125    #[prost(int64, optional, tag="3")]
10126    pub delta: ::core::option::Option<i64>,
10127    #[prost(uint32, optional, tag="4")]
10128    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10129    #[prost(uint32, optional, tag="5")]
10130    pub ec_sensor_num: ::core::option::Option<u32>,
10131    #[prost(int64, optional, tag="6")]
10132    pub fifo_timestamp: ::core::option::Option<i64>,
10133}
10134// End of protos/perfetto/trace/ftrace/cros_ec.proto
10135
10136// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
10137
10138#[derive(Clone, PartialEq, ::prost::Message)]
10139pub struct DcvshFreqFtraceEvent {
10140    #[prost(uint64, optional, tag="1")]
10141    pub cpu: ::core::option::Option<u64>,
10142    #[prost(uint64, optional, tag="2")]
10143    pub freq: ::core::option::Option<u64>,
10144}
10145// End of protos/perfetto/trace/ftrace/dcvsh.proto
10146
10147// Begin of protos/perfetto/trace/ftrace/devfreq.proto
10148
10149#[derive(Clone, PartialEq, ::prost::Message)]
10150pub struct DevfreqFrequencyFtraceEvent {
10151    #[prost(string, optional, tag="1")]
10152    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10153    #[prost(uint64, optional, tag="2")]
10154    pub freq: ::core::option::Option<u64>,
10155    #[prost(uint64, optional, tag="3")]
10156    pub prev_freq: ::core::option::Option<u64>,
10157    #[prost(uint64, optional, tag="4")]
10158    pub busy_time: ::core::option::Option<u64>,
10159    #[prost(uint64, optional, tag="5")]
10160    pub total_time: ::core::option::Option<u64>,
10161}
10162// End of protos/perfetto/trace/ftrace/devfreq.proto
10163
10164// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
10165
10166#[derive(Clone, PartialEq, ::prost::Message)]
10167pub struct DmaFenceInitFtraceEvent {
10168    #[prost(uint32, optional, tag="1")]
10169    pub context: ::core::option::Option<u32>,
10170    #[prost(string, optional, tag="2")]
10171    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10172    #[prost(uint32, optional, tag="3")]
10173    pub seqno: ::core::option::Option<u32>,
10174    #[prost(string, optional, tag="4")]
10175    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10176}
10177#[derive(Clone, PartialEq, ::prost::Message)]
10178pub struct DmaFenceEmitFtraceEvent {
10179    #[prost(uint32, optional, tag="1")]
10180    pub context: ::core::option::Option<u32>,
10181    #[prost(string, optional, tag="2")]
10182    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10183    #[prost(uint32, optional, tag="3")]
10184    pub seqno: ::core::option::Option<u32>,
10185    #[prost(string, optional, tag="4")]
10186    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10187}
10188#[derive(Clone, PartialEq, ::prost::Message)]
10189pub struct DmaFenceSignaledFtraceEvent {
10190    #[prost(uint32, optional, tag="1")]
10191    pub context: ::core::option::Option<u32>,
10192    #[prost(string, optional, tag="2")]
10193    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10194    #[prost(uint32, optional, tag="3")]
10195    pub seqno: ::core::option::Option<u32>,
10196    #[prost(string, optional, tag="4")]
10197    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10198}
10199#[derive(Clone, PartialEq, ::prost::Message)]
10200pub struct DmaFenceWaitStartFtraceEvent {
10201    #[prost(uint32, optional, tag="1")]
10202    pub context: ::core::option::Option<u32>,
10203    #[prost(string, optional, tag="2")]
10204    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10205    #[prost(uint32, optional, tag="3")]
10206    pub seqno: ::core::option::Option<u32>,
10207    #[prost(string, optional, tag="4")]
10208    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10209}
10210#[derive(Clone, PartialEq, ::prost::Message)]
10211pub struct DmaFenceWaitEndFtraceEvent {
10212    #[prost(uint32, optional, tag="1")]
10213    pub context: ::core::option::Option<u32>,
10214    #[prost(string, optional, tag="2")]
10215    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10216    #[prost(uint32, optional, tag="3")]
10217    pub seqno: ::core::option::Option<u32>,
10218    #[prost(string, optional, tag="4")]
10219    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10220}
10221// End of protos/perfetto/trace/ftrace/dma_fence.proto
10222
10223// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10224
10225#[derive(Clone, PartialEq, ::prost::Message)]
10226pub struct DmaHeapStatFtraceEvent {
10227    #[prost(uint64, optional, tag="1")]
10228    pub inode: ::core::option::Option<u64>,
10229    #[prost(int64, optional, tag="2")]
10230    pub len: ::core::option::Option<i64>,
10231    #[prost(uint64, optional, tag="3")]
10232    pub total_allocated: ::core::option::Option<u64>,
10233}
10234// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10235
10236// Begin of protos/perfetto/trace/ftrace/dpu.proto
10237
10238#[derive(Clone, PartialEq, ::prost::Message)]
10239pub struct DpuTracingMarkWriteFtraceEvent {
10240    #[prost(int32, optional, tag="1")]
10241    pub pid: ::core::option::Option<i32>,
10242    #[prost(string, optional, tag="2")]
10243    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10244    #[prost(uint32, optional, tag="3")]
10245    pub trace_begin: ::core::option::Option<u32>,
10246    #[prost(string, optional, tag="4")]
10247    pub name: ::core::option::Option<::prost::alloc::string::String>,
10248    #[prost(uint32, optional, tag="5")]
10249    pub r#type: ::core::option::Option<u32>,
10250    #[prost(int32, optional, tag="6")]
10251    pub value: ::core::option::Option<i32>,
10252}
10253#[derive(Clone, PartialEq, ::prost::Message)]
10254pub struct DpuDsiCmdFifoStatusFtraceEvent {
10255    #[prost(uint32, optional, tag="1")]
10256    pub header: ::core::option::Option<u32>,
10257    #[prost(uint32, optional, tag="2")]
10258    pub payload: ::core::option::Option<u32>,
10259}
10260#[derive(Clone, PartialEq, ::prost::Message)]
10261pub struct DpuDsiRxFtraceEvent {
10262    #[prost(uint32, optional, tag="1")]
10263    pub cmd: ::core::option::Option<u32>,
10264    #[prost(bytes="vec", optional, tag="3")]
10265    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10266}
10267#[derive(Clone, PartialEq, ::prost::Message)]
10268pub struct DpuDsiTxFtraceEvent {
10269    #[prost(uint32, optional, tag="1")]
10270    pub r#type: ::core::option::Option<u32>,
10271    #[prost(uint32, optional, tag="3")]
10272    pub last: ::core::option::Option<u32>,
10273    #[prost(uint32, optional, tag="4")]
10274    pub delay_ms: ::core::option::Option<u32>,
10275    #[prost(bytes="vec", optional, tag="5")]
10276    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10277}
10278#[derive(Clone, PartialEq, ::prost::Message)]
10279pub struct DpuDispDpuUnderrunFtraceEvent {
10280    #[prost(int32, optional, tag="1")]
10281    pub id: ::core::option::Option<i32>,
10282    #[prost(int32, optional, tag="2")]
10283    pub frames_pending: ::core::option::Option<i32>,
10284    #[prost(int32, optional, tag="3")]
10285    pub vsync_count: ::core::option::Option<i32>,
10286}
10287#[derive(Clone, PartialEq, ::prost::Message)]
10288pub struct DpuDispVblankIrqEnableFtraceEvent {
10289    #[prost(int32, optional, tag="1")]
10290    pub id: ::core::option::Option<i32>,
10291    #[prost(int32, optional, tag="2")]
10292    pub output_id: ::core::option::Option<i32>,
10293    #[prost(int32, optional, tag="3")]
10294    pub enable: ::core::option::Option<i32>,
10295}
10296// End of protos/perfetto/trace/ftrace/dpu.proto
10297
10298// Begin of protos/perfetto/trace/ftrace/drm.proto
10299
10300#[derive(Clone, PartialEq, ::prost::Message)]
10301pub struct DrmVblankEventFtraceEvent {
10302    #[prost(int32, optional, tag="1")]
10303    pub crtc: ::core::option::Option<i32>,
10304    #[prost(uint32, optional, tag="2")]
10305    pub high_prec: ::core::option::Option<u32>,
10306    #[prost(uint32, optional, tag="3")]
10307    pub seq: ::core::option::Option<u32>,
10308    #[prost(int64, optional, tag="4")]
10309    pub time: ::core::option::Option<i64>,
10310}
10311#[derive(Clone, PartialEq, ::prost::Message)]
10312pub struct DrmVblankEventDeliveredFtraceEvent {
10313    #[prost(int32, optional, tag="1")]
10314    pub crtc: ::core::option::Option<i32>,
10315    #[prost(uint64, optional, tag="2")]
10316    pub file: ::core::option::Option<u64>,
10317    #[prost(uint32, optional, tag="3")]
10318    pub seq: ::core::option::Option<u32>,
10319}
10320// End of protos/perfetto/trace/ftrace/drm.proto
10321
10322// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10323
10324#[derive(Clone, PartialEq, ::prost::Message)]
10325pub struct Dwc3AllocRequestFtraceEvent {
10326    #[prost(string, optional, tag="1")]
10327    pub name: ::core::option::Option<::prost::alloc::string::String>,
10328    #[prost(uint64, optional, tag="2")]
10329    pub req: ::core::option::Option<u64>,
10330    #[prost(uint32, optional, tag="3")]
10331    pub actual: ::core::option::Option<u32>,
10332    #[prost(uint32, optional, tag="4")]
10333    pub length: ::core::option::Option<u32>,
10334    #[prost(int32, optional, tag="5")]
10335    pub status: ::core::option::Option<i32>,
10336    #[prost(int32, optional, tag="6")]
10337    pub zero: ::core::option::Option<i32>,
10338    #[prost(int32, optional, tag="7")]
10339    pub short_not_ok: ::core::option::Option<i32>,
10340    #[prost(int32, optional, tag="8")]
10341    pub no_interrupt: ::core::option::Option<i32>,
10342}
10343#[derive(Clone, PartialEq, ::prost::Message)]
10344pub struct Dwc3CompleteTrbFtraceEvent {
10345    #[prost(string, optional, tag="1")]
10346    pub name: ::core::option::Option<::prost::alloc::string::String>,
10347    #[prost(uint64, optional, tag="2")]
10348    pub trb: ::core::option::Option<u64>,
10349    #[prost(uint32, optional, tag="3")]
10350    pub allocated: ::core::option::Option<u32>,
10351    #[prost(uint32, optional, tag="4")]
10352    pub queued: ::core::option::Option<u32>,
10353    #[prost(uint32, optional, tag="5")]
10354    pub bpl: ::core::option::Option<u32>,
10355    #[prost(uint32, optional, tag="6")]
10356    pub bph: ::core::option::Option<u32>,
10357    #[prost(uint32, optional, tag="7")]
10358    pub size: ::core::option::Option<u32>,
10359    #[prost(uint32, optional, tag="8")]
10360    pub ctrl: ::core::option::Option<u32>,
10361    #[prost(uint32, optional, tag="9")]
10362    pub r#type: ::core::option::Option<u32>,
10363    #[prost(uint32, optional, tag="10")]
10364    pub enqueue: ::core::option::Option<u32>,
10365    #[prost(uint32, optional, tag="11")]
10366    pub dequeue: ::core::option::Option<u32>,
10367}
10368#[derive(Clone, PartialEq, ::prost::Message)]
10369pub struct Dwc3CtrlReqFtraceEvent {
10370    #[prost(uint32, optional, tag="1")]
10371    pub b_request_type: ::core::option::Option<u32>,
10372    #[prost(uint32, optional, tag="2")]
10373    pub b_request: ::core::option::Option<u32>,
10374    #[prost(uint32, optional, tag="3")]
10375    pub w_value: ::core::option::Option<u32>,
10376    #[prost(uint32, optional, tag="4")]
10377    pub w_index: ::core::option::Option<u32>,
10378    #[prost(uint32, optional, tag="5")]
10379    pub w_length: ::core::option::Option<u32>,
10380    #[prost(string, optional, tag="6")]
10381    pub str: ::core::option::Option<::prost::alloc::string::String>,
10382}
10383#[derive(Clone, PartialEq, ::prost::Message)]
10384pub struct Dwc3EpDequeueFtraceEvent {
10385    #[prost(string, optional, tag="1")]
10386    pub name: ::core::option::Option<::prost::alloc::string::String>,
10387    #[prost(uint64, optional, tag="2")]
10388    pub req: ::core::option::Option<u64>,
10389    #[prost(uint32, optional, tag="3")]
10390    pub actual: ::core::option::Option<u32>,
10391    #[prost(uint32, optional, tag="4")]
10392    pub length: ::core::option::Option<u32>,
10393    #[prost(int32, optional, tag="5")]
10394    pub status: ::core::option::Option<i32>,
10395    #[prost(int32, optional, tag="6")]
10396    pub zero: ::core::option::Option<i32>,
10397    #[prost(int32, optional, tag="7")]
10398    pub short_not_ok: ::core::option::Option<i32>,
10399    #[prost(int32, optional, tag="8")]
10400    pub no_interrupt: ::core::option::Option<i32>,
10401}
10402#[derive(Clone, PartialEq, ::prost::Message)]
10403pub struct Dwc3EpQueueFtraceEvent {
10404    #[prost(string, optional, tag="1")]
10405    pub name: ::core::option::Option<::prost::alloc::string::String>,
10406    #[prost(uint64, optional, tag="2")]
10407    pub req: ::core::option::Option<u64>,
10408    #[prost(uint32, optional, tag="3")]
10409    pub actual: ::core::option::Option<u32>,
10410    #[prost(uint32, optional, tag="4")]
10411    pub length: ::core::option::Option<u32>,
10412    #[prost(int32, optional, tag="5")]
10413    pub status: ::core::option::Option<i32>,
10414    #[prost(int32, optional, tag="6")]
10415    pub zero: ::core::option::Option<i32>,
10416    #[prost(int32, optional, tag="7")]
10417    pub short_not_ok: ::core::option::Option<i32>,
10418    #[prost(int32, optional, tag="8")]
10419    pub no_interrupt: ::core::option::Option<i32>,
10420}
10421#[derive(Clone, PartialEq, ::prost::Message)]
10422pub struct Dwc3EventFtraceEvent {
10423    #[prost(uint32, optional, tag="1")]
10424    pub event: ::core::option::Option<u32>,
10425    #[prost(uint32, optional, tag="2")]
10426    pub ep0state: ::core::option::Option<u32>,
10427    #[prost(string, optional, tag="3")]
10428    pub str: ::core::option::Option<::prost::alloc::string::String>,
10429}
10430#[derive(Clone, PartialEq, ::prost::Message)]
10431pub struct Dwc3FreeRequestFtraceEvent {
10432    #[prost(string, optional, tag="1")]
10433    pub name: ::core::option::Option<::prost::alloc::string::String>,
10434    #[prost(uint64, optional, tag="2")]
10435    pub req: ::core::option::Option<u64>,
10436    #[prost(uint32, optional, tag="3")]
10437    pub actual: ::core::option::Option<u32>,
10438    #[prost(uint32, optional, tag="4")]
10439    pub length: ::core::option::Option<u32>,
10440    #[prost(int32, optional, tag="5")]
10441    pub status: ::core::option::Option<i32>,
10442    #[prost(int32, optional, tag="6")]
10443    pub zero: ::core::option::Option<i32>,
10444    #[prost(int32, optional, tag="7")]
10445    pub short_not_ok: ::core::option::Option<i32>,
10446    #[prost(int32, optional, tag="8")]
10447    pub no_interrupt: ::core::option::Option<i32>,
10448}
10449#[derive(Clone, PartialEq, ::prost::Message)]
10450pub struct Dwc3GadgetEpCmdFtraceEvent {
10451    #[prost(string, optional, tag="1")]
10452    pub name: ::core::option::Option<::prost::alloc::string::String>,
10453    #[prost(uint32, optional, tag="2")]
10454    pub cmd: ::core::option::Option<u32>,
10455    #[prost(uint32, optional, tag="3")]
10456    pub param0: ::core::option::Option<u32>,
10457    #[prost(uint32, optional, tag="4")]
10458    pub param1: ::core::option::Option<u32>,
10459    #[prost(uint32, optional, tag="5")]
10460    pub param2: ::core::option::Option<u32>,
10461    #[prost(int32, optional, tag="6")]
10462    pub cmd_status: ::core::option::Option<i32>,
10463}
10464#[derive(Clone, PartialEq, ::prost::Message)]
10465pub struct Dwc3GadgetEpDisableFtraceEvent {
10466    #[prost(string, optional, tag="1")]
10467    pub name: ::core::option::Option<::prost::alloc::string::String>,
10468    #[prost(uint32, optional, tag="2")]
10469    pub maxpacket: ::core::option::Option<u32>,
10470    #[prost(uint32, optional, tag="3")]
10471    pub maxpacket_limit: ::core::option::Option<u32>,
10472    #[prost(uint32, optional, tag="4")]
10473    pub max_streams: ::core::option::Option<u32>,
10474    #[prost(uint32, optional, tag="5")]
10475    pub maxburst: ::core::option::Option<u32>,
10476    #[prost(uint32, optional, tag="6")]
10477    pub flags: ::core::option::Option<u32>,
10478    #[prost(uint32, optional, tag="7")]
10479    pub direction: ::core::option::Option<u32>,
10480    #[prost(uint32, optional, tag="8")]
10481    pub trb_enqueue: ::core::option::Option<u32>,
10482    #[prost(uint32, optional, tag="9")]
10483    pub trb_dequeue: ::core::option::Option<u32>,
10484}
10485#[derive(Clone, PartialEq, ::prost::Message)]
10486pub struct Dwc3GadgetEpEnableFtraceEvent {
10487    #[prost(string, optional, tag="1")]
10488    pub name: ::core::option::Option<::prost::alloc::string::String>,
10489    #[prost(uint32, optional, tag="2")]
10490    pub maxpacket: ::core::option::Option<u32>,
10491    #[prost(uint32, optional, tag="3")]
10492    pub maxpacket_limit: ::core::option::Option<u32>,
10493    #[prost(uint32, optional, tag="4")]
10494    pub max_streams: ::core::option::Option<u32>,
10495    #[prost(uint32, optional, tag="5")]
10496    pub maxburst: ::core::option::Option<u32>,
10497    #[prost(uint32, optional, tag="6")]
10498    pub flags: ::core::option::Option<u32>,
10499    #[prost(uint32, optional, tag="7")]
10500    pub direction: ::core::option::Option<u32>,
10501    #[prost(uint32, optional, tag="8")]
10502    pub trb_enqueue: ::core::option::Option<u32>,
10503    #[prost(uint32, optional, tag="9")]
10504    pub trb_dequeue: ::core::option::Option<u32>,
10505}
10506#[derive(Clone, PartialEq, ::prost::Message)]
10507pub struct Dwc3GadgetGenericCmdFtraceEvent {
10508    #[prost(uint32, optional, tag="1")]
10509    pub cmd: ::core::option::Option<u32>,
10510    #[prost(uint32, optional, tag="2")]
10511    pub param: ::core::option::Option<u32>,
10512    #[prost(int32, optional, tag="3")]
10513    pub status: ::core::option::Option<i32>,
10514}
10515#[derive(Clone, PartialEq, ::prost::Message)]
10516pub struct Dwc3GadgetGivebackFtraceEvent {
10517    #[prost(string, optional, tag="1")]
10518    pub name: ::core::option::Option<::prost::alloc::string::String>,
10519    #[prost(uint64, optional, tag="2")]
10520    pub req: ::core::option::Option<u64>,
10521    #[prost(uint32, optional, tag="3")]
10522    pub actual: ::core::option::Option<u32>,
10523    #[prost(uint32, optional, tag="4")]
10524    pub length: ::core::option::Option<u32>,
10525    #[prost(int32, optional, tag="5")]
10526    pub status: ::core::option::Option<i32>,
10527    #[prost(int32, optional, tag="6")]
10528    pub zero: ::core::option::Option<i32>,
10529    #[prost(int32, optional, tag="7")]
10530    pub short_not_ok: ::core::option::Option<i32>,
10531    #[prost(int32, optional, tag="8")]
10532    pub no_interrupt: ::core::option::Option<i32>,
10533}
10534#[derive(Clone, PartialEq, ::prost::Message)]
10535pub struct Dwc3PrepareTrbFtraceEvent {
10536    #[prost(string, optional, tag="1")]
10537    pub name: ::core::option::Option<::prost::alloc::string::String>,
10538    #[prost(uint64, optional, tag="2")]
10539    pub trb: ::core::option::Option<u64>,
10540    #[prost(uint32, optional, tag="3")]
10541    pub allocated: ::core::option::Option<u32>,
10542    #[prost(uint32, optional, tag="4")]
10543    pub queued: ::core::option::Option<u32>,
10544    #[prost(uint32, optional, tag="5")]
10545    pub bpl: ::core::option::Option<u32>,
10546    #[prost(uint32, optional, tag="6")]
10547    pub bph: ::core::option::Option<u32>,
10548    #[prost(uint32, optional, tag="7")]
10549    pub size: ::core::option::Option<u32>,
10550    #[prost(uint32, optional, tag="8")]
10551    pub ctrl: ::core::option::Option<u32>,
10552    #[prost(uint32, optional, tag="9")]
10553    pub r#type: ::core::option::Option<u32>,
10554    #[prost(uint32, optional, tag="10")]
10555    pub enqueue: ::core::option::Option<u32>,
10556    #[prost(uint32, optional, tag="11")]
10557    pub dequeue: ::core::option::Option<u32>,
10558}
10559#[derive(Clone, PartialEq, ::prost::Message)]
10560pub struct Dwc3ReadlFtraceEvent {
10561    #[prost(uint64, optional, tag="1")]
10562    pub base: ::core::option::Option<u64>,
10563    #[prost(uint32, optional, tag="2")]
10564    pub offset: ::core::option::Option<u32>,
10565    #[prost(uint32, optional, tag="3")]
10566    pub value: ::core::option::Option<u32>,
10567    #[prost(string, optional, tag="4")]
10568    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10569}
10570#[derive(Clone, PartialEq, ::prost::Message)]
10571pub struct Dwc3WritelFtraceEvent {
10572    #[prost(uint64, optional, tag="1")]
10573    pub base: ::core::option::Option<u64>,
10574    #[prost(uint32, optional, tag="2")]
10575    pub offset: ::core::option::Option<u32>,
10576    #[prost(uint32, optional, tag="3")]
10577    pub value: ::core::option::Option<u32>,
10578    #[prost(string, optional, tag="4")]
10579    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10580}
10581// End of protos/perfetto/trace/ftrace/dwc3.proto
10582
10583// Begin of protos/perfetto/trace/ftrace/ext4.proto
10584
10585#[derive(Clone, PartialEq, ::prost::Message)]
10586pub struct Ext4DaWriteBeginFtraceEvent {
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(int64, optional, tag="3")]
10592    pub pos: ::core::option::Option<i64>,
10593    #[prost(uint32, optional, tag="4")]
10594    pub len: ::core::option::Option<u32>,
10595    #[prost(uint32, optional, tag="5")]
10596    pub flags: ::core::option::Option<u32>,
10597}
10598#[derive(Clone, PartialEq, ::prost::Message)]
10599pub struct Ext4DaWriteEndFtraceEvent {
10600    #[prost(uint64, optional, tag="1")]
10601    pub dev: ::core::option::Option<u64>,
10602    #[prost(uint64, optional, tag="2")]
10603    pub ino: ::core::option::Option<u64>,
10604    #[prost(int64, optional, tag="3")]
10605    pub pos: ::core::option::Option<i64>,
10606    #[prost(uint32, optional, tag="4")]
10607    pub len: ::core::option::Option<u32>,
10608    #[prost(uint32, optional, tag="5")]
10609    pub copied: ::core::option::Option<u32>,
10610}
10611#[derive(Clone, PartialEq, ::prost::Message)]
10612pub struct Ext4SyncFileEnterFtraceEvent {
10613    #[prost(uint64, optional, tag="1")]
10614    pub dev: ::core::option::Option<u64>,
10615    #[prost(uint64, optional, tag="2")]
10616    pub ino: ::core::option::Option<u64>,
10617    #[prost(uint64, optional, tag="3")]
10618    pub parent: ::core::option::Option<u64>,
10619    #[prost(int32, optional, tag="4")]
10620    pub datasync: ::core::option::Option<i32>,
10621}
10622#[derive(Clone, PartialEq, ::prost::Message)]
10623pub struct Ext4SyncFileExitFtraceEvent {
10624    #[prost(uint64, optional, tag="1")]
10625    pub dev: ::core::option::Option<u64>,
10626    #[prost(uint64, optional, tag="2")]
10627    pub ino: ::core::option::Option<u64>,
10628    #[prost(int32, optional, tag="3")]
10629    pub ret: ::core::option::Option<i32>,
10630}
10631#[derive(Clone, PartialEq, ::prost::Message)]
10632pub struct Ext4AllocDaBlocksFtraceEvent {
10633    #[prost(uint64, optional, tag="1")]
10634    pub dev: ::core::option::Option<u64>,
10635    #[prost(uint64, optional, tag="2")]
10636    pub ino: ::core::option::Option<u64>,
10637    #[prost(uint32, optional, tag="3")]
10638    pub data_blocks: ::core::option::Option<u32>,
10639    #[prost(uint32, optional, tag="4")]
10640    pub meta_blocks: ::core::option::Option<u32>,
10641}
10642#[derive(Clone, PartialEq, ::prost::Message)]
10643pub struct Ext4AllocateBlocksFtraceEvent {
10644    #[prost(uint64, optional, tag="1")]
10645    pub dev: ::core::option::Option<u64>,
10646    #[prost(uint64, optional, tag="2")]
10647    pub ino: ::core::option::Option<u64>,
10648    #[prost(uint64, optional, tag="3")]
10649    pub block: ::core::option::Option<u64>,
10650    #[prost(uint32, optional, tag="4")]
10651    pub len: ::core::option::Option<u32>,
10652    #[prost(uint32, optional, tag="5")]
10653    pub logical: ::core::option::Option<u32>,
10654    #[prost(uint32, optional, tag="6")]
10655    pub lleft: ::core::option::Option<u32>,
10656    #[prost(uint32, optional, tag="7")]
10657    pub lright: ::core::option::Option<u32>,
10658    #[prost(uint64, optional, tag="8")]
10659    pub goal: ::core::option::Option<u64>,
10660    #[prost(uint64, optional, tag="9")]
10661    pub pleft: ::core::option::Option<u64>,
10662    #[prost(uint64, optional, tag="10")]
10663    pub pright: ::core::option::Option<u64>,
10664    #[prost(uint32, optional, tag="11")]
10665    pub flags: ::core::option::Option<u32>,
10666}
10667#[derive(Clone, PartialEq, ::prost::Message)]
10668pub struct Ext4AllocateInodeFtraceEvent {
10669    #[prost(uint64, optional, tag="1")]
10670    pub dev: ::core::option::Option<u64>,
10671    #[prost(uint64, optional, tag="2")]
10672    pub ino: ::core::option::Option<u64>,
10673    #[prost(uint64, optional, tag="3")]
10674    pub dir: ::core::option::Option<u64>,
10675    #[prost(uint32, optional, tag="4")]
10676    pub mode: ::core::option::Option<u32>,
10677}
10678#[derive(Clone, PartialEq, ::prost::Message)]
10679pub struct Ext4BeginOrderedTruncateFtraceEvent {
10680    #[prost(uint64, optional, tag="1")]
10681    pub dev: ::core::option::Option<u64>,
10682    #[prost(uint64, optional, tag="2")]
10683    pub ino: ::core::option::Option<u64>,
10684    #[prost(int64, optional, tag="3")]
10685    pub new_size: ::core::option::Option<i64>,
10686}
10687#[derive(Clone, PartialEq, ::prost::Message)]
10688pub struct Ext4CollapseRangeFtraceEvent {
10689    #[prost(uint64, optional, tag="1")]
10690    pub dev: ::core::option::Option<u64>,
10691    #[prost(uint64, optional, tag="2")]
10692    pub ino: ::core::option::Option<u64>,
10693    #[prost(int64, optional, tag="3")]
10694    pub offset: ::core::option::Option<i64>,
10695    #[prost(int64, optional, tag="4")]
10696    pub len: ::core::option::Option<i64>,
10697}
10698#[derive(Clone, PartialEq, ::prost::Message)]
10699pub struct Ext4DaReleaseSpaceFtraceEvent {
10700    #[prost(uint64, optional, tag="1")]
10701    pub dev: ::core::option::Option<u64>,
10702    #[prost(uint64, optional, tag="2")]
10703    pub ino: ::core::option::Option<u64>,
10704    #[prost(uint64, optional, tag="3")]
10705    pub i_blocks: ::core::option::Option<u64>,
10706    #[prost(int32, optional, tag="4")]
10707    pub freed_blocks: ::core::option::Option<i32>,
10708    #[prost(int32, optional, tag="5")]
10709    pub reserved_data_blocks: ::core::option::Option<i32>,
10710    #[prost(int32, optional, tag="6")]
10711    pub reserved_meta_blocks: ::core::option::Option<i32>,
10712    #[prost(int32, optional, tag="7")]
10713    pub allocated_meta_blocks: ::core::option::Option<i32>,
10714    #[prost(uint32, optional, tag="8")]
10715    pub mode: ::core::option::Option<u32>,
10716}
10717#[derive(Clone, PartialEq, ::prost::Message)]
10718pub struct Ext4DaReserveSpaceFtraceEvent {
10719    #[prost(uint64, optional, tag="1")]
10720    pub dev: ::core::option::Option<u64>,
10721    #[prost(uint64, optional, tag="2")]
10722    pub ino: ::core::option::Option<u64>,
10723    #[prost(uint64, optional, tag="3")]
10724    pub i_blocks: ::core::option::Option<u64>,
10725    #[prost(int32, optional, tag="4")]
10726    pub reserved_data_blocks: ::core::option::Option<i32>,
10727    #[prost(int32, optional, tag="5")]
10728    pub reserved_meta_blocks: ::core::option::Option<i32>,
10729    #[prost(uint32, optional, tag="6")]
10730    pub mode: ::core::option::Option<u32>,
10731    #[prost(int32, optional, tag="7")]
10732    pub md_needed: ::core::option::Option<i32>,
10733}
10734#[derive(Clone, PartialEq, ::prost::Message)]
10735pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
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 i_blocks: ::core::option::Option<u64>,
10742    #[prost(int32, optional, tag="4")]
10743    pub used_blocks: ::core::option::Option<i32>,
10744    #[prost(int32, optional, tag="5")]
10745    pub reserved_data_blocks: ::core::option::Option<i32>,
10746    #[prost(int32, optional, tag="6")]
10747    pub reserved_meta_blocks: ::core::option::Option<i32>,
10748    #[prost(int32, optional, tag="7")]
10749    pub allocated_meta_blocks: ::core::option::Option<i32>,
10750    #[prost(int32, optional, tag="8")]
10751    pub quota_claim: ::core::option::Option<i32>,
10752    #[prost(uint32, optional, tag="9")]
10753    pub mode: ::core::option::Option<u32>,
10754}
10755#[derive(Clone, PartialEq, ::prost::Message)]
10756pub struct Ext4DaWritePagesFtraceEvent {
10757    #[prost(uint64, optional, tag="1")]
10758    pub dev: ::core::option::Option<u64>,
10759    #[prost(uint64, optional, tag="2")]
10760    pub ino: ::core::option::Option<u64>,
10761    #[prost(uint64, optional, tag="3")]
10762    pub first_page: ::core::option::Option<u64>,
10763    #[prost(int64, optional, tag="4")]
10764    pub nr_to_write: ::core::option::Option<i64>,
10765    #[prost(int32, optional, tag="5")]
10766    pub sync_mode: ::core::option::Option<i32>,
10767    #[prost(uint64, optional, tag="6")]
10768    pub b_blocknr: ::core::option::Option<u64>,
10769    #[prost(uint32, optional, tag="7")]
10770    pub b_size: ::core::option::Option<u32>,
10771    #[prost(uint32, optional, tag="8")]
10772    pub b_state: ::core::option::Option<u32>,
10773    #[prost(int32, optional, tag="9")]
10774    pub io_done: ::core::option::Option<i32>,
10775    #[prost(int32, optional, tag="10")]
10776    pub pages_written: ::core::option::Option<i32>,
10777}
10778#[derive(Clone, PartialEq, ::prost::Message)]
10779pub struct Ext4DaWritePagesExtentFtraceEvent {
10780    #[prost(uint64, optional, tag="1")]
10781    pub dev: ::core::option::Option<u64>,
10782    #[prost(uint64, optional, tag="2")]
10783    pub ino: ::core::option::Option<u64>,
10784    #[prost(uint64, optional, tag="3")]
10785    pub lblk: ::core::option::Option<u64>,
10786    #[prost(uint32, optional, tag="4")]
10787    pub len: ::core::option::Option<u32>,
10788    #[prost(uint32, optional, tag="5")]
10789    pub flags: ::core::option::Option<u32>,
10790}
10791#[derive(Clone, PartialEq, ::prost::Message)]
10792pub struct Ext4DirectIoEnterFtraceEvent {
10793    #[prost(uint64, optional, tag="1")]
10794    pub dev: ::core::option::Option<u64>,
10795    #[prost(uint64, optional, tag="2")]
10796    pub ino: ::core::option::Option<u64>,
10797    #[prost(int64, optional, tag="3")]
10798    pub pos: ::core::option::Option<i64>,
10799    #[prost(uint64, optional, tag="4")]
10800    pub len: ::core::option::Option<u64>,
10801    #[prost(int32, optional, tag="5")]
10802    pub rw: ::core::option::Option<i32>,
10803}
10804#[derive(Clone, PartialEq, ::prost::Message)]
10805pub struct Ext4DirectIoExitFtraceEvent {
10806    #[prost(uint64, optional, tag="1")]
10807    pub dev: ::core::option::Option<u64>,
10808    #[prost(uint64, optional, tag="2")]
10809    pub ino: ::core::option::Option<u64>,
10810    #[prost(int64, optional, tag="3")]
10811    pub pos: ::core::option::Option<i64>,
10812    #[prost(uint64, optional, tag="4")]
10813    pub len: ::core::option::Option<u64>,
10814    #[prost(int32, optional, tag="5")]
10815    pub rw: ::core::option::Option<i32>,
10816    #[prost(int32, optional, tag="6")]
10817    pub ret: ::core::option::Option<i32>,
10818}
10819#[derive(Clone, PartialEq, ::prost::Message)]
10820pub struct Ext4DiscardBlocksFtraceEvent {
10821    #[prost(uint64, optional, tag="1")]
10822    pub dev: ::core::option::Option<u64>,
10823    #[prost(uint64, optional, tag="2")]
10824    pub blk: ::core::option::Option<u64>,
10825    #[prost(uint64, optional, tag="3")]
10826    pub count: ::core::option::Option<u64>,
10827}
10828#[derive(Clone, PartialEq, ::prost::Message)]
10829pub struct Ext4DiscardPreallocationsFtraceEvent {
10830    #[prost(uint64, optional, tag="1")]
10831    pub dev: ::core::option::Option<u64>,
10832    #[prost(uint64, optional, tag="2")]
10833    pub ino: ::core::option::Option<u64>,
10834    #[prost(uint32, optional, tag="3")]
10835    pub len: ::core::option::Option<u32>,
10836    #[prost(uint32, optional, tag="4")]
10837    pub needed: ::core::option::Option<u32>,
10838}
10839#[derive(Clone, PartialEq, ::prost::Message)]
10840pub struct Ext4DropInodeFtraceEvent {
10841    #[prost(uint64, optional, tag="1")]
10842    pub dev: ::core::option::Option<u64>,
10843    #[prost(uint64, optional, tag="2")]
10844    pub ino: ::core::option::Option<u64>,
10845    #[prost(int32, optional, tag="3")]
10846    pub drop: ::core::option::Option<i32>,
10847}
10848#[derive(Clone, PartialEq, ::prost::Message)]
10849pub struct Ext4EsCacheExtentFtraceEvent {
10850    #[prost(uint64, optional, tag="1")]
10851    pub dev: ::core::option::Option<u64>,
10852    #[prost(uint64, optional, tag="2")]
10853    pub ino: ::core::option::Option<u64>,
10854    #[prost(uint32, optional, tag="3")]
10855    pub lblk: ::core::option::Option<u32>,
10856    #[prost(uint32, optional, tag="4")]
10857    pub len: ::core::option::Option<u32>,
10858    #[prost(uint64, optional, tag="5")]
10859    pub pblk: ::core::option::Option<u64>,
10860    #[prost(uint32, optional, tag="6")]
10861    pub status: ::core::option::Option<u32>,
10862}
10863#[derive(Clone, PartialEq, ::prost::Message)]
10864pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
10865    #[prost(uint64, optional, tag="1")]
10866    pub dev: ::core::option::Option<u64>,
10867    #[prost(uint64, optional, tag="2")]
10868    pub ino: ::core::option::Option<u64>,
10869    #[prost(uint32, optional, tag="3")]
10870    pub lblk: ::core::option::Option<u32>,
10871}
10872#[derive(Clone, PartialEq, ::prost::Message)]
10873pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
10874    #[prost(uint64, optional, tag="1")]
10875    pub dev: ::core::option::Option<u64>,
10876    #[prost(uint64, optional, tag="2")]
10877    pub ino: ::core::option::Option<u64>,
10878    #[prost(uint32, optional, tag="3")]
10879    pub lblk: ::core::option::Option<u32>,
10880    #[prost(uint32, optional, tag="4")]
10881    pub len: ::core::option::Option<u32>,
10882    #[prost(uint64, optional, tag="5")]
10883    pub pblk: ::core::option::Option<u64>,
10884    #[prost(uint64, optional, tag="6")]
10885    pub status: ::core::option::Option<u64>,
10886}
10887#[derive(Clone, PartialEq, ::prost::Message)]
10888pub struct Ext4EsInsertExtentFtraceEvent {
10889    #[prost(uint64, optional, tag="1")]
10890    pub dev: ::core::option::Option<u64>,
10891    #[prost(uint64, optional, tag="2")]
10892    pub ino: ::core::option::Option<u64>,
10893    #[prost(uint32, optional, tag="3")]
10894    pub lblk: ::core::option::Option<u32>,
10895    #[prost(uint32, optional, tag="4")]
10896    pub len: ::core::option::Option<u32>,
10897    #[prost(uint64, optional, tag="5")]
10898    pub pblk: ::core::option::Option<u64>,
10899    #[prost(uint64, optional, tag="6")]
10900    pub status: ::core::option::Option<u64>,
10901}
10902#[derive(Clone, PartialEq, ::prost::Message)]
10903pub struct Ext4EsLookupExtentEnterFtraceEvent {
10904    #[prost(uint64, optional, tag="1")]
10905    pub dev: ::core::option::Option<u64>,
10906    #[prost(uint64, optional, tag="2")]
10907    pub ino: ::core::option::Option<u64>,
10908    #[prost(uint32, optional, tag="3")]
10909    pub lblk: ::core::option::Option<u32>,
10910}
10911#[derive(Clone, PartialEq, ::prost::Message)]
10912pub struct Ext4EsLookupExtentExitFtraceEvent {
10913    #[prost(uint64, optional, tag="1")]
10914    pub dev: ::core::option::Option<u64>,
10915    #[prost(uint64, optional, tag="2")]
10916    pub ino: ::core::option::Option<u64>,
10917    #[prost(uint32, optional, tag="3")]
10918    pub lblk: ::core::option::Option<u32>,
10919    #[prost(uint32, optional, tag="4")]
10920    pub len: ::core::option::Option<u32>,
10921    #[prost(uint64, optional, tag="5")]
10922    pub pblk: ::core::option::Option<u64>,
10923    #[prost(uint64, optional, tag="6")]
10924    pub status: ::core::option::Option<u64>,
10925    #[prost(int32, optional, tag="7")]
10926    pub found: ::core::option::Option<i32>,
10927}
10928#[derive(Clone, PartialEq, ::prost::Message)]
10929pub struct Ext4EsRemoveExtentFtraceEvent {
10930    #[prost(uint64, optional, tag="1")]
10931    pub dev: ::core::option::Option<u64>,
10932    #[prost(uint64, optional, tag="2")]
10933    pub ino: ::core::option::Option<u64>,
10934    #[prost(int64, optional, tag="3")]
10935    pub lblk: ::core::option::Option<i64>,
10936    #[prost(int64, optional, tag="4")]
10937    pub len: ::core::option::Option<i64>,
10938}
10939#[derive(Clone, PartialEq, ::prost::Message)]
10940pub struct Ext4EsShrinkFtraceEvent {
10941    #[prost(uint64, optional, tag="1")]
10942    pub dev: ::core::option::Option<u64>,
10943    #[prost(int32, optional, tag="2")]
10944    pub nr_shrunk: ::core::option::Option<i32>,
10945    #[prost(uint64, optional, tag="3")]
10946    pub scan_time: ::core::option::Option<u64>,
10947    #[prost(int32, optional, tag="4")]
10948    pub nr_skipped: ::core::option::Option<i32>,
10949    #[prost(int32, optional, tag="5")]
10950    pub retried: ::core::option::Option<i32>,
10951}
10952#[derive(Clone, PartialEq, ::prost::Message)]
10953pub struct Ext4EsShrinkCountFtraceEvent {
10954    #[prost(uint64, optional, tag="1")]
10955    pub dev: ::core::option::Option<u64>,
10956    #[prost(int32, optional, tag="2")]
10957    pub nr_to_scan: ::core::option::Option<i32>,
10958    #[prost(int32, optional, tag="3")]
10959    pub cache_cnt: ::core::option::Option<i32>,
10960}
10961#[derive(Clone, PartialEq, ::prost::Message)]
10962pub struct Ext4EsShrinkScanEnterFtraceEvent {
10963    #[prost(uint64, optional, tag="1")]
10964    pub dev: ::core::option::Option<u64>,
10965    #[prost(int32, optional, tag="2")]
10966    pub nr_to_scan: ::core::option::Option<i32>,
10967    #[prost(int32, optional, tag="3")]
10968    pub cache_cnt: ::core::option::Option<i32>,
10969}
10970#[derive(Clone, PartialEq, ::prost::Message)]
10971pub struct Ext4EsShrinkScanExitFtraceEvent {
10972    #[prost(uint64, optional, tag="1")]
10973    pub dev: ::core::option::Option<u64>,
10974    #[prost(int32, optional, tag="2")]
10975    pub nr_shrunk: ::core::option::Option<i32>,
10976    #[prost(int32, optional, tag="3")]
10977    pub cache_cnt: ::core::option::Option<i32>,
10978}
10979#[derive(Clone, PartialEq, ::prost::Message)]
10980pub struct Ext4EvictInodeFtraceEvent {
10981    #[prost(uint64, optional, tag="1")]
10982    pub dev: ::core::option::Option<u64>,
10983    #[prost(uint64, optional, tag="2")]
10984    pub ino: ::core::option::Option<u64>,
10985    #[prost(int32, optional, tag="3")]
10986    pub nlink: ::core::option::Option<i32>,
10987}
10988#[derive(Clone, PartialEq, ::prost::Message)]
10989pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10990    #[prost(uint64, optional, tag="1")]
10991    pub dev: ::core::option::Option<u64>,
10992    #[prost(uint64, optional, tag="2")]
10993    pub ino: ::core::option::Option<u64>,
10994    #[prost(uint32, optional, tag="3")]
10995    pub m_lblk: ::core::option::Option<u32>,
10996    #[prost(uint32, optional, tag="4")]
10997    pub m_len: ::core::option::Option<u32>,
10998    #[prost(uint32, optional, tag="5")]
10999    pub u_lblk: ::core::option::Option<u32>,
11000    #[prost(uint32, optional, tag="6")]
11001    pub u_len: ::core::option::Option<u32>,
11002    #[prost(uint64, optional, tag="7")]
11003    pub u_pblk: ::core::option::Option<u64>,
11004}
11005#[derive(Clone, PartialEq, ::prost::Message)]
11006pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11007    #[prost(uint64, optional, tag="1")]
11008    pub dev: ::core::option::Option<u64>,
11009    #[prost(uint64, optional, tag="2")]
11010    pub ino: ::core::option::Option<u64>,
11011    #[prost(uint32, optional, tag="3")]
11012    pub m_lblk: ::core::option::Option<u32>,
11013    #[prost(uint32, optional, tag="4")]
11014    pub m_len: ::core::option::Option<u32>,
11015    #[prost(uint32, optional, tag="5")]
11016    pub u_lblk: ::core::option::Option<u32>,
11017    #[prost(uint32, optional, tag="6")]
11018    pub u_len: ::core::option::Option<u32>,
11019    #[prost(uint64, optional, tag="7")]
11020    pub u_pblk: ::core::option::Option<u64>,
11021    #[prost(uint32, optional, tag="8")]
11022    pub i_lblk: ::core::option::Option<u32>,
11023    #[prost(uint32, optional, tag="9")]
11024    pub i_len: ::core::option::Option<u32>,
11025    #[prost(uint64, optional, tag="10")]
11026    pub i_pblk: ::core::option::Option<u64>,
11027}
11028#[derive(Clone, PartialEq, ::prost::Message)]
11029pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11030    #[prost(uint64, optional, tag="1")]
11031    pub dev: ::core::option::Option<u64>,
11032    #[prost(uint64, optional, tag="2")]
11033    pub ino: ::core::option::Option<u64>,
11034    #[prost(int32, optional, tag="3")]
11035    pub flags: ::core::option::Option<i32>,
11036    #[prost(uint32, optional, tag="4")]
11037    pub lblk: ::core::option::Option<u32>,
11038    #[prost(uint64, optional, tag="5")]
11039    pub pblk: ::core::option::Option<u64>,
11040    #[prost(uint32, optional, tag="6")]
11041    pub len: ::core::option::Option<u32>,
11042    #[prost(uint32, optional, tag="7")]
11043    pub allocated: ::core::option::Option<u32>,
11044    #[prost(uint64, optional, tag="8")]
11045    pub newblk: ::core::option::Option<u64>,
11046}
11047#[derive(Clone, PartialEq, ::prost::Message)]
11048pub struct Ext4ExtInCacheFtraceEvent {
11049    #[prost(uint64, optional, tag="1")]
11050    pub dev: ::core::option::Option<u64>,
11051    #[prost(uint64, optional, tag="2")]
11052    pub ino: ::core::option::Option<u64>,
11053    #[prost(uint32, optional, tag="3")]
11054    pub lblk: ::core::option::Option<u32>,
11055    #[prost(int32, optional, tag="4")]
11056    pub ret: ::core::option::Option<i32>,
11057}
11058#[derive(Clone, PartialEq, ::prost::Message)]
11059pub struct Ext4ExtLoadExtentFtraceEvent {
11060    #[prost(uint64, optional, tag="1")]
11061    pub dev: ::core::option::Option<u64>,
11062    #[prost(uint64, optional, tag="2")]
11063    pub ino: ::core::option::Option<u64>,
11064    #[prost(uint64, optional, tag="3")]
11065    pub pblk: ::core::option::Option<u64>,
11066    #[prost(uint32, optional, tag="4")]
11067    pub lblk: ::core::option::Option<u32>,
11068}
11069#[derive(Clone, PartialEq, ::prost::Message)]
11070pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11071    #[prost(uint64, optional, tag="1")]
11072    pub dev: ::core::option::Option<u64>,
11073    #[prost(uint64, optional, tag="2")]
11074    pub ino: ::core::option::Option<u64>,
11075    #[prost(uint32, optional, tag="3")]
11076    pub lblk: ::core::option::Option<u32>,
11077    #[prost(uint32, optional, tag="4")]
11078    pub len: ::core::option::Option<u32>,
11079    #[prost(uint32, optional, tag="5")]
11080    pub flags: ::core::option::Option<u32>,
11081}
11082#[derive(Clone, PartialEq, ::prost::Message)]
11083pub struct Ext4ExtMapBlocksExitFtraceEvent {
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(uint32, optional, tag="3")]
11089    pub flags: ::core::option::Option<u32>,
11090    #[prost(uint64, optional, tag="4")]
11091    pub pblk: ::core::option::Option<u64>,
11092    #[prost(uint32, optional, tag="5")]
11093    pub lblk: ::core::option::Option<u32>,
11094    #[prost(uint32, optional, tag="6")]
11095    pub len: ::core::option::Option<u32>,
11096    #[prost(uint32, optional, tag="7")]
11097    pub mflags: ::core::option::Option<u32>,
11098    #[prost(int32, optional, tag="8")]
11099    pub ret: ::core::option::Option<i32>,
11100}
11101#[derive(Clone, PartialEq, ::prost::Message)]
11102pub struct Ext4ExtPutInCacheFtraceEvent {
11103    #[prost(uint64, optional, tag="1")]
11104    pub dev: ::core::option::Option<u64>,
11105    #[prost(uint64, optional, tag="2")]
11106    pub ino: ::core::option::Option<u64>,
11107    #[prost(uint32, optional, tag="3")]
11108    pub lblk: ::core::option::Option<u32>,
11109    #[prost(uint32, optional, tag="4")]
11110    pub len: ::core::option::Option<u32>,
11111    #[prost(uint64, optional, tag="5")]
11112    pub start: ::core::option::Option<u64>,
11113}
11114#[derive(Clone, PartialEq, ::prost::Message)]
11115pub struct Ext4ExtRemoveSpaceFtraceEvent {
11116    #[prost(uint64, optional, tag="1")]
11117    pub dev: ::core::option::Option<u64>,
11118    #[prost(uint64, optional, tag="2")]
11119    pub ino: ::core::option::Option<u64>,
11120    #[prost(uint32, optional, tag="3")]
11121    pub start: ::core::option::Option<u32>,
11122    #[prost(uint32, optional, tag="4")]
11123    pub end: ::core::option::Option<u32>,
11124    #[prost(int32, optional, tag="5")]
11125    pub depth: ::core::option::Option<i32>,
11126}
11127#[derive(Clone, PartialEq, ::prost::Message)]
11128pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11129    #[prost(uint64, optional, tag="1")]
11130    pub dev: ::core::option::Option<u64>,
11131    #[prost(uint64, optional, tag="2")]
11132    pub ino: ::core::option::Option<u64>,
11133    #[prost(uint32, optional, tag="3")]
11134    pub start: ::core::option::Option<u32>,
11135    #[prost(uint32, optional, tag="4")]
11136    pub end: ::core::option::Option<u32>,
11137    #[prost(int32, optional, tag="5")]
11138    pub depth: ::core::option::Option<i32>,
11139    #[prost(int64, optional, tag="6")]
11140    pub partial: ::core::option::Option<i64>,
11141    #[prost(uint32, optional, tag="7")]
11142    pub eh_entries: ::core::option::Option<u32>,
11143    #[prost(uint32, optional, tag="8")]
11144    pub pc_lblk: ::core::option::Option<u32>,
11145    #[prost(uint64, optional, tag="9")]
11146    pub pc_pclu: ::core::option::Option<u64>,
11147    #[prost(int32, optional, tag="10")]
11148    pub pc_state: ::core::option::Option<i32>,
11149}
11150#[derive(Clone, PartialEq, ::prost::Message)]
11151pub struct Ext4ExtRmIdxFtraceEvent {
11152    #[prost(uint64, optional, tag="1")]
11153    pub dev: ::core::option::Option<u64>,
11154    #[prost(uint64, optional, tag="2")]
11155    pub ino: ::core::option::Option<u64>,
11156    #[prost(uint64, optional, tag="3")]
11157    pub pblk: ::core::option::Option<u64>,
11158}
11159#[derive(Clone, PartialEq, ::prost::Message)]
11160pub struct Ext4ExtRmLeafFtraceEvent {
11161    #[prost(uint64, optional, tag="1")]
11162    pub dev: ::core::option::Option<u64>,
11163    #[prost(uint64, optional, tag="2")]
11164    pub ino: ::core::option::Option<u64>,
11165    #[prost(int64, optional, tag="3")]
11166    pub partial: ::core::option::Option<i64>,
11167    #[prost(uint32, optional, tag="4")]
11168    pub start: ::core::option::Option<u32>,
11169    #[prost(uint32, optional, tag="5")]
11170    pub ee_lblk: ::core::option::Option<u32>,
11171    #[prost(uint64, optional, tag="6")]
11172    pub ee_pblk: ::core::option::Option<u64>,
11173    #[prost(int32, optional, tag="7")]
11174    pub ee_len: ::core::option::Option<i32>,
11175    #[prost(uint32, optional, tag="8")]
11176    pub pc_lblk: ::core::option::Option<u32>,
11177    #[prost(uint64, optional, tag="9")]
11178    pub pc_pclu: ::core::option::Option<u64>,
11179    #[prost(int32, optional, tag="10")]
11180    pub pc_state: ::core::option::Option<i32>,
11181}
11182#[derive(Clone, PartialEq, ::prost::Message)]
11183pub struct Ext4ExtShowExtentFtraceEvent {
11184    #[prost(uint64, optional, tag="1")]
11185    pub dev: ::core::option::Option<u64>,
11186    #[prost(uint64, optional, tag="2")]
11187    pub ino: ::core::option::Option<u64>,
11188    #[prost(uint64, optional, tag="3")]
11189    pub pblk: ::core::option::Option<u64>,
11190    #[prost(uint32, optional, tag="4")]
11191    pub lblk: ::core::option::Option<u32>,
11192    #[prost(uint32, optional, tag="5")]
11193    pub len: ::core::option::Option<u32>,
11194}
11195#[derive(Clone, PartialEq, ::prost::Message)]
11196pub struct Ext4FallocateEnterFtraceEvent {
11197    #[prost(uint64, optional, tag="1")]
11198    pub dev: ::core::option::Option<u64>,
11199    #[prost(uint64, optional, tag="2")]
11200    pub ino: ::core::option::Option<u64>,
11201    #[prost(int64, optional, tag="3")]
11202    pub offset: ::core::option::Option<i64>,
11203    #[prost(int64, optional, tag="4")]
11204    pub len: ::core::option::Option<i64>,
11205    #[prost(int32, optional, tag="5")]
11206    pub mode: ::core::option::Option<i32>,
11207    #[prost(int64, optional, tag="6")]
11208    pub pos: ::core::option::Option<i64>,
11209}
11210#[derive(Clone, PartialEq, ::prost::Message)]
11211pub struct Ext4FallocateExitFtraceEvent {
11212    #[prost(uint64, optional, tag="1")]
11213    pub dev: ::core::option::Option<u64>,
11214    #[prost(uint64, optional, tag="2")]
11215    pub ino: ::core::option::Option<u64>,
11216    #[prost(int64, optional, tag="3")]
11217    pub pos: ::core::option::Option<i64>,
11218    #[prost(uint32, optional, tag="4")]
11219    pub blocks: ::core::option::Option<u32>,
11220    #[prost(int32, optional, tag="5")]
11221    pub ret: ::core::option::Option<i32>,
11222}
11223#[derive(Clone, PartialEq, ::prost::Message)]
11224pub struct Ext4FindDelallocRangeFtraceEvent {
11225    #[prost(uint64, optional, tag="1")]
11226    pub dev: ::core::option::Option<u64>,
11227    #[prost(uint64, optional, tag="2")]
11228    pub ino: ::core::option::Option<u64>,
11229    #[prost(uint32, optional, tag="3")]
11230    pub from: ::core::option::Option<u32>,
11231    #[prost(uint32, optional, tag="4")]
11232    pub to: ::core::option::Option<u32>,
11233    #[prost(int32, optional, tag="5")]
11234    pub reverse: ::core::option::Option<i32>,
11235    #[prost(int32, optional, tag="6")]
11236    pub found: ::core::option::Option<i32>,
11237    #[prost(uint32, optional, tag="7")]
11238    pub found_blk: ::core::option::Option<u32>,
11239}
11240#[derive(Clone, PartialEq, ::prost::Message)]
11241pub struct Ext4ForgetFtraceEvent {
11242    #[prost(uint64, optional, tag="1")]
11243    pub dev: ::core::option::Option<u64>,
11244    #[prost(uint64, optional, tag="2")]
11245    pub ino: ::core::option::Option<u64>,
11246    #[prost(uint64, optional, tag="3")]
11247    pub block: ::core::option::Option<u64>,
11248    #[prost(int32, optional, tag="4")]
11249    pub is_metadata: ::core::option::Option<i32>,
11250    #[prost(uint32, optional, tag="5")]
11251    pub mode: ::core::option::Option<u32>,
11252}
11253#[derive(Clone, PartialEq, ::prost::Message)]
11254pub struct Ext4FreeBlocksFtraceEvent {
11255    #[prost(uint64, optional, tag="1")]
11256    pub dev: ::core::option::Option<u64>,
11257    #[prost(uint64, optional, tag="2")]
11258    pub ino: ::core::option::Option<u64>,
11259    #[prost(uint64, optional, tag="3")]
11260    pub block: ::core::option::Option<u64>,
11261    #[prost(uint64, optional, tag="4")]
11262    pub count: ::core::option::Option<u64>,
11263    #[prost(int32, optional, tag="5")]
11264    pub flags: ::core::option::Option<i32>,
11265    #[prost(uint32, optional, tag="6")]
11266    pub mode: ::core::option::Option<u32>,
11267}
11268#[derive(Clone, PartialEq, ::prost::Message)]
11269pub struct Ext4FreeInodeFtraceEvent {
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 uid: ::core::option::Option<u32>,
11276    #[prost(uint32, optional, tag="4")]
11277    pub gid: ::core::option::Option<u32>,
11278    #[prost(uint64, optional, tag="5")]
11279    pub blocks: ::core::option::Option<u64>,
11280    #[prost(uint32, optional, tag="6")]
11281    pub mode: ::core::option::Option<u32>,
11282}
11283#[derive(Clone, PartialEq, ::prost::Message)]
11284pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11285    #[prost(uint64, optional, tag="1")]
11286    pub dev: ::core::option::Option<u64>,
11287    #[prost(uint32, optional, tag="2")]
11288    pub flags: ::core::option::Option<u32>,
11289    #[prost(uint32, optional, tag="3")]
11290    pub lblk: ::core::option::Option<u32>,
11291    #[prost(uint64, optional, tag="4")]
11292    pub pblk: ::core::option::Option<u64>,
11293    #[prost(uint32, optional, tag="5")]
11294    pub len: ::core::option::Option<u32>,
11295    #[prost(int32, optional, tag="6")]
11296    pub ret: ::core::option::Option<i32>,
11297}
11298#[derive(Clone, PartialEq, ::prost::Message)]
11299pub struct Ext4GetReservedClusterAllocFtraceEvent {
11300    #[prost(uint64, optional, tag="1")]
11301    pub dev: ::core::option::Option<u64>,
11302    #[prost(uint64, optional, tag="2")]
11303    pub ino: ::core::option::Option<u64>,
11304    #[prost(uint32, optional, tag="3")]
11305    pub lblk: ::core::option::Option<u32>,
11306    #[prost(uint32, optional, tag="4")]
11307    pub len: ::core::option::Option<u32>,
11308}
11309#[derive(Clone, PartialEq, ::prost::Message)]
11310pub struct Ext4IndMapBlocksEnterFtraceEvent {
11311    #[prost(uint64, optional, tag="1")]
11312    pub dev: ::core::option::Option<u64>,
11313    #[prost(uint64, optional, tag="2")]
11314    pub ino: ::core::option::Option<u64>,
11315    #[prost(uint32, optional, tag="3")]
11316    pub lblk: ::core::option::Option<u32>,
11317    #[prost(uint32, optional, tag="4")]
11318    pub len: ::core::option::Option<u32>,
11319    #[prost(uint32, optional, tag="5")]
11320    pub flags: ::core::option::Option<u32>,
11321}
11322#[derive(Clone, PartialEq, ::prost::Message)]
11323pub struct Ext4IndMapBlocksExitFtraceEvent {
11324    #[prost(uint64, optional, tag="1")]
11325    pub dev: ::core::option::Option<u64>,
11326    #[prost(uint64, optional, tag="2")]
11327    pub ino: ::core::option::Option<u64>,
11328    #[prost(uint32, optional, tag="3")]
11329    pub flags: ::core::option::Option<u32>,
11330    #[prost(uint64, optional, tag="4")]
11331    pub pblk: ::core::option::Option<u64>,
11332    #[prost(uint32, optional, tag="5")]
11333    pub lblk: ::core::option::Option<u32>,
11334    #[prost(uint32, optional, tag="6")]
11335    pub len: ::core::option::Option<u32>,
11336    #[prost(uint32, optional, tag="7")]
11337    pub mflags: ::core::option::Option<u32>,
11338    #[prost(int32, optional, tag="8")]
11339    pub ret: ::core::option::Option<i32>,
11340}
11341#[derive(Clone, PartialEq, ::prost::Message)]
11342pub struct Ext4InsertRangeFtraceEvent {
11343    #[prost(uint64, optional, tag="1")]
11344    pub dev: ::core::option::Option<u64>,
11345    #[prost(uint64, optional, tag="2")]
11346    pub ino: ::core::option::Option<u64>,
11347    #[prost(int64, optional, tag="3")]
11348    pub offset: ::core::option::Option<i64>,
11349    #[prost(int64, optional, tag="4")]
11350    pub len: ::core::option::Option<i64>,
11351}
11352#[derive(Clone, PartialEq, ::prost::Message)]
11353pub struct Ext4InvalidatepageFtraceEvent {
11354    #[prost(uint64, optional, tag="1")]
11355    pub dev: ::core::option::Option<u64>,
11356    #[prost(uint64, optional, tag="2")]
11357    pub ino: ::core::option::Option<u64>,
11358    #[prost(uint64, optional, tag="3")]
11359    pub index: ::core::option::Option<u64>,
11360    #[prost(uint64, optional, tag="4")]
11361    pub offset: ::core::option::Option<u64>,
11362    #[prost(uint32, optional, tag="5")]
11363    pub length: ::core::option::Option<u32>,
11364}
11365#[derive(Clone, PartialEq, ::prost::Message)]
11366pub struct Ext4JournalStartFtraceEvent {
11367    #[prost(uint64, optional, tag="1")]
11368    pub dev: ::core::option::Option<u64>,
11369    #[prost(uint64, optional, tag="2")]
11370    pub ip: ::core::option::Option<u64>,
11371    #[prost(int32, optional, tag="3")]
11372    pub blocks: ::core::option::Option<i32>,
11373    #[prost(int32, optional, tag="4")]
11374    pub rsv_blocks: ::core::option::Option<i32>,
11375    #[prost(int32, optional, tag="5")]
11376    pub nblocks: ::core::option::Option<i32>,
11377    #[prost(int32, optional, tag="6")]
11378    pub revoke_creds: ::core::option::Option<i32>,
11379}
11380#[derive(Clone, PartialEq, ::prost::Message)]
11381pub struct Ext4JournalStartReservedFtraceEvent {
11382    #[prost(uint64, optional, tag="1")]
11383    pub dev: ::core::option::Option<u64>,
11384    #[prost(uint64, optional, tag="2")]
11385    pub ip: ::core::option::Option<u64>,
11386    #[prost(int32, optional, tag="3")]
11387    pub blocks: ::core::option::Option<i32>,
11388}
11389#[derive(Clone, PartialEq, ::prost::Message)]
11390pub struct Ext4JournalledInvalidatepageFtraceEvent {
11391    #[prost(uint64, optional, tag="1")]
11392    pub dev: ::core::option::Option<u64>,
11393    #[prost(uint64, optional, tag="2")]
11394    pub ino: ::core::option::Option<u64>,
11395    #[prost(uint64, optional, tag="3")]
11396    pub index: ::core::option::Option<u64>,
11397    #[prost(uint64, optional, tag="4")]
11398    pub offset: ::core::option::Option<u64>,
11399    #[prost(uint32, optional, tag="5")]
11400    pub length: ::core::option::Option<u32>,
11401}
11402#[derive(Clone, PartialEq, ::prost::Message)]
11403pub struct Ext4JournalledWriteEndFtraceEvent {
11404    #[prost(uint64, optional, tag="1")]
11405    pub dev: ::core::option::Option<u64>,
11406    #[prost(uint64, optional, tag="2")]
11407    pub ino: ::core::option::Option<u64>,
11408    #[prost(int64, optional, tag="3")]
11409    pub pos: ::core::option::Option<i64>,
11410    #[prost(uint32, optional, tag="4")]
11411    pub len: ::core::option::Option<u32>,
11412    #[prost(uint32, optional, tag="5")]
11413    pub copied: ::core::option::Option<u32>,
11414}
11415#[derive(Clone, PartialEq, ::prost::Message)]
11416pub struct Ext4LoadInodeFtraceEvent {
11417    #[prost(uint64, optional, tag="1")]
11418    pub dev: ::core::option::Option<u64>,
11419    #[prost(uint64, optional, tag="2")]
11420    pub ino: ::core::option::Option<u64>,
11421}
11422#[derive(Clone, PartialEq, ::prost::Message)]
11423pub struct Ext4LoadInodeBitmapFtraceEvent {
11424    #[prost(uint64, optional, tag="1")]
11425    pub dev: ::core::option::Option<u64>,
11426    #[prost(uint32, optional, tag="2")]
11427    pub group: ::core::option::Option<u32>,
11428}
11429#[derive(Clone, PartialEq, ::prost::Message)]
11430pub struct Ext4MarkInodeDirtyFtraceEvent {
11431    #[prost(uint64, optional, tag="1")]
11432    pub dev: ::core::option::Option<u64>,
11433    #[prost(uint64, optional, tag="2")]
11434    pub ino: ::core::option::Option<u64>,
11435    #[prost(uint64, optional, tag="3")]
11436    pub ip: ::core::option::Option<u64>,
11437}
11438#[derive(Clone, PartialEq, ::prost::Message)]
11439pub struct Ext4MbBitmapLoadFtraceEvent {
11440    #[prost(uint64, optional, tag="1")]
11441    pub dev: ::core::option::Option<u64>,
11442    #[prost(uint32, optional, tag="2")]
11443    pub group: ::core::option::Option<u32>,
11444}
11445#[derive(Clone, PartialEq, ::prost::Message)]
11446pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11447    #[prost(uint64, optional, tag="1")]
11448    pub dev: ::core::option::Option<u64>,
11449    #[prost(uint32, optional, tag="2")]
11450    pub group: ::core::option::Option<u32>,
11451}
11452#[derive(Clone, PartialEq, ::prost::Message)]
11453pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11454    #[prost(uint64, optional, tag="1")]
11455    pub dev: ::core::option::Option<u64>,
11456    #[prost(int32, optional, tag="2")]
11457    pub needed: ::core::option::Option<i32>,
11458}
11459#[derive(Clone, PartialEq, ::prost::Message)]
11460pub struct Ext4MbNewGroupPaFtraceEvent {
11461    #[prost(uint64, optional, tag="1")]
11462    pub dev: ::core::option::Option<u64>,
11463    #[prost(uint64, optional, tag="2")]
11464    pub ino: ::core::option::Option<u64>,
11465    #[prost(uint64, optional, tag="3")]
11466    pub pa_pstart: ::core::option::Option<u64>,
11467    #[prost(uint64, optional, tag="4")]
11468    pub pa_lstart: ::core::option::Option<u64>,
11469    #[prost(uint32, optional, tag="5")]
11470    pub pa_len: ::core::option::Option<u32>,
11471}
11472#[derive(Clone, PartialEq, ::prost::Message)]
11473pub struct Ext4MbNewInodePaFtraceEvent {
11474    #[prost(uint64, optional, tag="1")]
11475    pub dev: ::core::option::Option<u64>,
11476    #[prost(uint64, optional, tag="2")]
11477    pub ino: ::core::option::Option<u64>,
11478    #[prost(uint64, optional, tag="3")]
11479    pub pa_pstart: ::core::option::Option<u64>,
11480    #[prost(uint64, optional, tag="4")]
11481    pub pa_lstart: ::core::option::Option<u64>,
11482    #[prost(uint32, optional, tag="5")]
11483    pub pa_len: ::core::option::Option<u32>,
11484}
11485#[derive(Clone, PartialEq, ::prost::Message)]
11486pub struct Ext4MbReleaseGroupPaFtraceEvent {
11487    #[prost(uint64, optional, tag="1")]
11488    pub dev: ::core::option::Option<u64>,
11489    #[prost(uint64, optional, tag="2")]
11490    pub pa_pstart: ::core::option::Option<u64>,
11491    #[prost(uint32, optional, tag="3")]
11492    pub pa_len: ::core::option::Option<u32>,
11493}
11494#[derive(Clone, PartialEq, ::prost::Message)]
11495pub struct Ext4MbReleaseInodePaFtraceEvent {
11496    #[prost(uint64, optional, tag="1")]
11497    pub dev: ::core::option::Option<u64>,
11498    #[prost(uint64, optional, tag="2")]
11499    pub ino: ::core::option::Option<u64>,
11500    #[prost(uint64, optional, tag="3")]
11501    pub block: ::core::option::Option<u64>,
11502    #[prost(uint32, optional, tag="4")]
11503    pub count: ::core::option::Option<u32>,
11504}
11505#[derive(Clone, PartialEq, ::prost::Message)]
11506pub struct Ext4MballocAllocFtraceEvent {
11507    #[prost(uint64, optional, tag="1")]
11508    pub dev: ::core::option::Option<u64>,
11509    #[prost(uint64, optional, tag="2")]
11510    pub ino: ::core::option::Option<u64>,
11511    #[prost(uint32, optional, tag="3")]
11512    pub orig_logical: ::core::option::Option<u32>,
11513    #[prost(int32, optional, tag="4")]
11514    pub orig_start: ::core::option::Option<i32>,
11515    #[prost(uint32, optional, tag="5")]
11516    pub orig_group: ::core::option::Option<u32>,
11517    #[prost(int32, optional, tag="6")]
11518    pub orig_len: ::core::option::Option<i32>,
11519    #[prost(uint32, optional, tag="7")]
11520    pub goal_logical: ::core::option::Option<u32>,
11521    #[prost(int32, optional, tag="8")]
11522    pub goal_start: ::core::option::Option<i32>,
11523    #[prost(uint32, optional, tag="9")]
11524    pub goal_group: ::core::option::Option<u32>,
11525    #[prost(int32, optional, tag="10")]
11526    pub goal_len: ::core::option::Option<i32>,
11527    #[prost(uint32, optional, tag="11")]
11528    pub result_logical: ::core::option::Option<u32>,
11529    #[prost(int32, optional, tag="12")]
11530    pub result_start: ::core::option::Option<i32>,
11531    #[prost(uint32, optional, tag="13")]
11532    pub result_group: ::core::option::Option<u32>,
11533    #[prost(int32, optional, tag="14")]
11534    pub result_len: ::core::option::Option<i32>,
11535    #[prost(uint32, optional, tag="15")]
11536    pub found: ::core::option::Option<u32>,
11537    #[prost(uint32, optional, tag="16")]
11538    pub groups: ::core::option::Option<u32>,
11539    #[prost(uint32, optional, tag="17")]
11540    pub buddy: ::core::option::Option<u32>,
11541    #[prost(uint32, optional, tag="18")]
11542    pub flags: ::core::option::Option<u32>,
11543    #[prost(uint32, optional, tag="19")]
11544    pub tail: ::core::option::Option<u32>,
11545    #[prost(uint32, optional, tag="20")]
11546    pub cr: ::core::option::Option<u32>,
11547}
11548#[derive(Clone, PartialEq, ::prost::Message)]
11549pub struct Ext4MballocDiscardFtraceEvent {
11550    #[prost(uint64, optional, tag="1")]
11551    pub dev: ::core::option::Option<u64>,
11552    #[prost(uint64, optional, tag="2")]
11553    pub ino: ::core::option::Option<u64>,
11554    #[prost(int32, optional, tag="3")]
11555    pub result_start: ::core::option::Option<i32>,
11556    #[prost(uint32, optional, tag="4")]
11557    pub result_group: ::core::option::Option<u32>,
11558    #[prost(int32, optional, tag="5")]
11559    pub result_len: ::core::option::Option<i32>,
11560}
11561#[derive(Clone, PartialEq, ::prost::Message)]
11562pub struct Ext4MballocFreeFtraceEvent {
11563    #[prost(uint64, optional, tag="1")]
11564    pub dev: ::core::option::Option<u64>,
11565    #[prost(uint64, optional, tag="2")]
11566    pub ino: ::core::option::Option<u64>,
11567    #[prost(int32, optional, tag="3")]
11568    pub result_start: ::core::option::Option<i32>,
11569    #[prost(uint32, optional, tag="4")]
11570    pub result_group: ::core::option::Option<u32>,
11571    #[prost(int32, optional, tag="5")]
11572    pub result_len: ::core::option::Option<i32>,
11573}
11574#[derive(Clone, PartialEq, ::prost::Message)]
11575pub struct Ext4MballocPreallocFtraceEvent {
11576    #[prost(uint64, optional, tag="1")]
11577    pub dev: ::core::option::Option<u64>,
11578    #[prost(uint64, optional, tag="2")]
11579    pub ino: ::core::option::Option<u64>,
11580    #[prost(uint32, optional, tag="3")]
11581    pub orig_logical: ::core::option::Option<u32>,
11582    #[prost(int32, optional, tag="4")]
11583    pub orig_start: ::core::option::Option<i32>,
11584    #[prost(uint32, optional, tag="5")]
11585    pub orig_group: ::core::option::Option<u32>,
11586    #[prost(int32, optional, tag="6")]
11587    pub orig_len: ::core::option::Option<i32>,
11588    #[prost(uint32, optional, tag="7")]
11589    pub result_logical: ::core::option::Option<u32>,
11590    #[prost(int32, optional, tag="8")]
11591    pub result_start: ::core::option::Option<i32>,
11592    #[prost(uint32, optional, tag="9")]
11593    pub result_group: ::core::option::Option<u32>,
11594    #[prost(int32, optional, tag="10")]
11595    pub result_len: ::core::option::Option<i32>,
11596}
11597#[derive(Clone, PartialEq, ::prost::Message)]
11598pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
11599    #[prost(uint64, optional, tag="1")]
11600    pub dev: ::core::option::Option<u64>,
11601    #[prost(uint64, optional, tag="2")]
11602    pub ino: ::core::option::Option<u64>,
11603    #[prost(uint64, optional, tag="3")]
11604    pub orig_ino: ::core::option::Option<u64>,
11605    #[prost(uint32, optional, tag="4")]
11606    pub uid: ::core::option::Option<u32>,
11607    #[prost(uint32, optional, tag="5")]
11608    pub gid: ::core::option::Option<u32>,
11609    #[prost(uint32, optional, tag="6")]
11610    pub mode: ::core::option::Option<u32>,
11611}
11612#[derive(Clone, PartialEq, ::prost::Message)]
11613pub struct Ext4PunchHoleFtraceEvent {
11614    #[prost(uint64, optional, tag="1")]
11615    pub dev: ::core::option::Option<u64>,
11616    #[prost(uint64, optional, tag="2")]
11617    pub ino: ::core::option::Option<u64>,
11618    #[prost(int64, optional, tag="3")]
11619    pub offset: ::core::option::Option<i64>,
11620    #[prost(int64, optional, tag="4")]
11621    pub len: ::core::option::Option<i64>,
11622    #[prost(int32, optional, tag="5")]
11623    pub mode: ::core::option::Option<i32>,
11624}
11625#[derive(Clone, PartialEq, ::prost::Message)]
11626pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
11627    #[prost(uint64, optional, tag="1")]
11628    pub dev: ::core::option::Option<u64>,
11629    #[prost(uint32, optional, tag="2")]
11630    pub group: ::core::option::Option<u32>,
11631    #[prost(uint32, optional, tag="3")]
11632    pub prefetch: ::core::option::Option<u32>,
11633}
11634#[derive(Clone, PartialEq, ::prost::Message)]
11635pub struct Ext4ReadpageFtraceEvent {
11636    #[prost(uint64, optional, tag="1")]
11637    pub dev: ::core::option::Option<u64>,
11638    #[prost(uint64, optional, tag="2")]
11639    pub ino: ::core::option::Option<u64>,
11640    #[prost(uint64, optional, tag="3")]
11641    pub index: ::core::option::Option<u64>,
11642}
11643#[derive(Clone, PartialEq, ::prost::Message)]
11644pub struct Ext4ReleasepageFtraceEvent {
11645    #[prost(uint64, optional, tag="1")]
11646    pub dev: ::core::option::Option<u64>,
11647    #[prost(uint64, optional, tag="2")]
11648    pub ino: ::core::option::Option<u64>,
11649    #[prost(uint64, optional, tag="3")]
11650    pub index: ::core::option::Option<u64>,
11651}
11652#[derive(Clone, PartialEq, ::prost::Message)]
11653pub struct Ext4RemoveBlocksFtraceEvent {
11654    #[prost(uint64, optional, tag="1")]
11655    pub dev: ::core::option::Option<u64>,
11656    #[prost(uint64, optional, tag="2")]
11657    pub ino: ::core::option::Option<u64>,
11658    #[prost(uint32, optional, tag="3")]
11659    pub from: ::core::option::Option<u32>,
11660    #[prost(uint32, optional, tag="4")]
11661    pub to: ::core::option::Option<u32>,
11662    #[prost(int64, optional, tag="5")]
11663    pub partial: ::core::option::Option<i64>,
11664    #[prost(uint64, optional, tag="6")]
11665    pub ee_pblk: ::core::option::Option<u64>,
11666    #[prost(uint32, optional, tag="7")]
11667    pub ee_lblk: ::core::option::Option<u32>,
11668    #[prost(uint32, optional, tag="8")]
11669    pub ee_len: ::core::option::Option<u32>,
11670    #[prost(uint32, optional, tag="9")]
11671    pub pc_lblk: ::core::option::Option<u32>,
11672    #[prost(uint64, optional, tag="10")]
11673    pub pc_pclu: ::core::option::Option<u64>,
11674    #[prost(int32, optional, tag="11")]
11675    pub pc_state: ::core::option::Option<i32>,
11676}
11677#[derive(Clone, PartialEq, ::prost::Message)]
11678pub struct Ext4RequestBlocksFtraceEvent {
11679    #[prost(uint64, optional, tag="1")]
11680    pub dev: ::core::option::Option<u64>,
11681    #[prost(uint64, optional, tag="2")]
11682    pub ino: ::core::option::Option<u64>,
11683    #[prost(uint32, optional, tag="3")]
11684    pub len: ::core::option::Option<u32>,
11685    #[prost(uint32, optional, tag="4")]
11686    pub logical: ::core::option::Option<u32>,
11687    #[prost(uint32, optional, tag="5")]
11688    pub lleft: ::core::option::Option<u32>,
11689    #[prost(uint32, optional, tag="6")]
11690    pub lright: ::core::option::Option<u32>,
11691    #[prost(uint64, optional, tag="7")]
11692    pub goal: ::core::option::Option<u64>,
11693    #[prost(uint64, optional, tag="8")]
11694    pub pleft: ::core::option::Option<u64>,
11695    #[prost(uint64, optional, tag="9")]
11696    pub pright: ::core::option::Option<u64>,
11697    #[prost(uint32, optional, tag="10")]
11698    pub flags: ::core::option::Option<u32>,
11699}
11700#[derive(Clone, PartialEq, ::prost::Message)]
11701pub struct Ext4RequestInodeFtraceEvent {
11702    #[prost(uint64, optional, tag="1")]
11703    pub dev: ::core::option::Option<u64>,
11704    #[prost(uint64, optional, tag="2")]
11705    pub dir: ::core::option::Option<u64>,
11706    #[prost(uint32, optional, tag="3")]
11707    pub mode: ::core::option::Option<u32>,
11708}
11709#[derive(Clone, PartialEq, ::prost::Message)]
11710pub struct Ext4SyncFsFtraceEvent {
11711    #[prost(uint64, optional, tag="1")]
11712    pub dev: ::core::option::Option<u64>,
11713    #[prost(int32, optional, tag="2")]
11714    pub wait: ::core::option::Option<i32>,
11715}
11716#[derive(Clone, PartialEq, ::prost::Message)]
11717pub struct Ext4TrimAllFreeFtraceEvent {
11718    #[prost(int32, optional, tag="1")]
11719    pub dev_major: ::core::option::Option<i32>,
11720    #[prost(int32, optional, tag="2")]
11721    pub dev_minor: ::core::option::Option<i32>,
11722    #[prost(uint32, optional, tag="3")]
11723    pub group: ::core::option::Option<u32>,
11724    #[prost(int32, optional, tag="4")]
11725    pub start: ::core::option::Option<i32>,
11726    #[prost(int32, optional, tag="5")]
11727    pub len: ::core::option::Option<i32>,
11728}
11729#[derive(Clone, PartialEq, ::prost::Message)]
11730pub struct Ext4TrimExtentFtraceEvent {
11731    #[prost(int32, optional, tag="1")]
11732    pub dev_major: ::core::option::Option<i32>,
11733    #[prost(int32, optional, tag="2")]
11734    pub dev_minor: ::core::option::Option<i32>,
11735    #[prost(uint32, optional, tag="3")]
11736    pub group: ::core::option::Option<u32>,
11737    #[prost(int32, optional, tag="4")]
11738    pub start: ::core::option::Option<i32>,
11739    #[prost(int32, optional, tag="5")]
11740    pub len: ::core::option::Option<i32>,
11741}
11742#[derive(Clone, PartialEq, ::prost::Message)]
11743pub struct Ext4TruncateEnterFtraceEvent {
11744    #[prost(uint64, optional, tag="1")]
11745    pub dev: ::core::option::Option<u64>,
11746    #[prost(uint64, optional, tag="2")]
11747    pub ino: ::core::option::Option<u64>,
11748    #[prost(uint64, optional, tag="3")]
11749    pub blocks: ::core::option::Option<u64>,
11750}
11751#[derive(Clone, PartialEq, ::prost::Message)]
11752pub struct Ext4TruncateExitFtraceEvent {
11753    #[prost(uint64, optional, tag="1")]
11754    pub dev: ::core::option::Option<u64>,
11755    #[prost(uint64, optional, tag="2")]
11756    pub ino: ::core::option::Option<u64>,
11757    #[prost(uint64, optional, tag="3")]
11758    pub blocks: ::core::option::Option<u64>,
11759}
11760#[derive(Clone, PartialEq, ::prost::Message)]
11761pub struct Ext4UnlinkEnterFtraceEvent {
11762    #[prost(uint64, optional, tag="1")]
11763    pub dev: ::core::option::Option<u64>,
11764    #[prost(uint64, optional, tag="2")]
11765    pub ino: ::core::option::Option<u64>,
11766    #[prost(uint64, optional, tag="3")]
11767    pub parent: ::core::option::Option<u64>,
11768    #[prost(int64, optional, tag="4")]
11769    pub size: ::core::option::Option<i64>,
11770}
11771#[derive(Clone, PartialEq, ::prost::Message)]
11772pub struct Ext4UnlinkExitFtraceEvent {
11773    #[prost(uint64, optional, tag="1")]
11774    pub dev: ::core::option::Option<u64>,
11775    #[prost(uint64, optional, tag="2")]
11776    pub ino: ::core::option::Option<u64>,
11777    #[prost(int32, optional, tag="3")]
11778    pub ret: ::core::option::Option<i32>,
11779}
11780#[derive(Clone, PartialEq, ::prost::Message)]
11781pub struct Ext4WriteBeginFtraceEvent {
11782    #[prost(uint64, optional, tag="1")]
11783    pub dev: ::core::option::Option<u64>,
11784    #[prost(uint64, optional, tag="2")]
11785    pub ino: ::core::option::Option<u64>,
11786    #[prost(int64, optional, tag="3")]
11787    pub pos: ::core::option::Option<i64>,
11788    #[prost(uint32, optional, tag="4")]
11789    pub len: ::core::option::Option<u32>,
11790    #[prost(uint32, optional, tag="5")]
11791    pub flags: ::core::option::Option<u32>,
11792}
11793#[derive(Clone, PartialEq, ::prost::Message)]
11794pub struct Ext4WriteEndFtraceEvent {
11795    #[prost(uint64, optional, tag="1")]
11796    pub dev: ::core::option::Option<u64>,
11797    #[prost(uint64, optional, tag="2")]
11798    pub ino: ::core::option::Option<u64>,
11799    #[prost(int64, optional, tag="3")]
11800    pub pos: ::core::option::Option<i64>,
11801    #[prost(uint32, optional, tag="4")]
11802    pub len: ::core::option::Option<u32>,
11803    #[prost(uint32, optional, tag="5")]
11804    pub copied: ::core::option::Option<u32>,
11805}
11806#[derive(Clone, PartialEq, ::prost::Message)]
11807pub struct Ext4WritepageFtraceEvent {
11808    #[prost(uint64, optional, tag="1")]
11809    pub dev: ::core::option::Option<u64>,
11810    #[prost(uint64, optional, tag="2")]
11811    pub ino: ::core::option::Option<u64>,
11812    #[prost(uint64, optional, tag="3")]
11813    pub index: ::core::option::Option<u64>,
11814}
11815#[derive(Clone, PartialEq, ::prost::Message)]
11816pub struct Ext4WritepagesFtraceEvent {
11817    #[prost(uint64, optional, tag="1")]
11818    pub dev: ::core::option::Option<u64>,
11819    #[prost(uint64, optional, tag="2")]
11820    pub ino: ::core::option::Option<u64>,
11821    #[prost(int64, optional, tag="3")]
11822    pub nr_to_write: ::core::option::Option<i64>,
11823    #[prost(int64, optional, tag="4")]
11824    pub pages_skipped: ::core::option::Option<i64>,
11825    #[prost(int64, optional, tag="5")]
11826    pub range_start: ::core::option::Option<i64>,
11827    #[prost(int64, optional, tag="6")]
11828    pub range_end: ::core::option::Option<i64>,
11829    #[prost(uint64, optional, tag="7")]
11830    pub writeback_index: ::core::option::Option<u64>,
11831    #[prost(int32, optional, tag="8")]
11832    pub sync_mode: ::core::option::Option<i32>,
11833    #[prost(uint32, optional, tag="9")]
11834    pub for_kupdate: ::core::option::Option<u32>,
11835    #[prost(uint32, optional, tag="10")]
11836    pub range_cyclic: ::core::option::Option<u32>,
11837}
11838#[derive(Clone, PartialEq, ::prost::Message)]
11839pub struct Ext4WritepagesResultFtraceEvent {
11840    #[prost(uint64, optional, tag="1")]
11841    pub dev: ::core::option::Option<u64>,
11842    #[prost(uint64, optional, tag="2")]
11843    pub ino: ::core::option::Option<u64>,
11844    #[prost(int32, optional, tag="3")]
11845    pub ret: ::core::option::Option<i32>,
11846    #[prost(int32, optional, tag="4")]
11847    pub pages_written: ::core::option::Option<i32>,
11848    #[prost(int64, optional, tag="5")]
11849    pub pages_skipped: ::core::option::Option<i64>,
11850    #[prost(uint64, optional, tag="6")]
11851    pub writeback_index: ::core::option::Option<u64>,
11852    #[prost(int32, optional, tag="7")]
11853    pub sync_mode: ::core::option::Option<i32>,
11854}
11855#[derive(Clone, PartialEq, ::prost::Message)]
11856pub struct Ext4ZeroRangeFtraceEvent {
11857    #[prost(uint64, optional, tag="1")]
11858    pub dev: ::core::option::Option<u64>,
11859    #[prost(uint64, optional, tag="2")]
11860    pub ino: ::core::option::Option<u64>,
11861    #[prost(int64, optional, tag="3")]
11862    pub offset: ::core::option::Option<i64>,
11863    #[prost(int64, optional, tag="4")]
11864    pub len: ::core::option::Option<i64>,
11865    #[prost(int32, optional, tag="5")]
11866    pub mode: ::core::option::Option<i32>,
11867}
11868// End of protos/perfetto/trace/ftrace/ext4.proto
11869
11870// Begin of protos/perfetto/trace/ftrace/f2fs.proto
11871
11872#[derive(Clone, PartialEq, ::prost::Message)]
11873pub struct F2fsDoSubmitBioFtraceEvent {
11874    #[prost(uint64, optional, tag="1")]
11875    pub dev: ::core::option::Option<u64>,
11876    #[prost(int32, optional, tag="2")]
11877    pub btype: ::core::option::Option<i32>,
11878    #[prost(uint32, optional, tag="3")]
11879    pub sync: ::core::option::Option<u32>,
11880    #[prost(uint64, optional, tag="4")]
11881    pub sector: ::core::option::Option<u64>,
11882    #[prost(uint32, optional, tag="5")]
11883    pub size: ::core::option::Option<u32>,
11884}
11885#[derive(Clone, PartialEq, ::prost::Message)]
11886pub struct F2fsEvictInodeFtraceEvent {
11887    #[prost(uint64, optional, tag="1")]
11888    pub dev: ::core::option::Option<u64>,
11889    #[prost(uint64, optional, tag="2")]
11890    pub ino: ::core::option::Option<u64>,
11891    #[prost(uint64, optional, tag="3")]
11892    pub pino: ::core::option::Option<u64>,
11893    #[prost(uint32, optional, tag="4")]
11894    pub mode: ::core::option::Option<u32>,
11895    #[prost(int64, optional, tag="5")]
11896    pub size: ::core::option::Option<i64>,
11897    #[prost(uint32, optional, tag="6")]
11898    pub nlink: ::core::option::Option<u32>,
11899    #[prost(uint64, optional, tag="7")]
11900    pub blocks: ::core::option::Option<u64>,
11901    #[prost(uint32, optional, tag="8")]
11902    pub advise: ::core::option::Option<u32>,
11903}
11904#[derive(Clone, PartialEq, ::prost::Message)]
11905pub struct F2fsFallocateFtraceEvent {
11906    #[prost(uint64, optional, tag="1")]
11907    pub dev: ::core::option::Option<u64>,
11908    #[prost(uint64, optional, tag="2")]
11909    pub ino: ::core::option::Option<u64>,
11910    #[prost(int32, optional, tag="3")]
11911    pub mode: ::core::option::Option<i32>,
11912    #[prost(int64, optional, tag="4")]
11913    pub offset: ::core::option::Option<i64>,
11914    #[prost(int64, optional, tag="5")]
11915    pub len: ::core::option::Option<i64>,
11916    #[prost(int64, optional, tag="6")]
11917    pub size: ::core::option::Option<i64>,
11918    #[prost(uint64, optional, tag="7")]
11919    pub blocks: ::core::option::Option<u64>,
11920    #[prost(int32, optional, tag="8")]
11921    pub ret: ::core::option::Option<i32>,
11922}
11923#[derive(Clone, PartialEq, ::prost::Message)]
11924pub struct F2fsGetDataBlockFtraceEvent {
11925    #[prost(uint64, optional, tag="1")]
11926    pub dev: ::core::option::Option<u64>,
11927    #[prost(uint64, optional, tag="2")]
11928    pub ino: ::core::option::Option<u64>,
11929    #[prost(uint64, optional, tag="3")]
11930    pub iblock: ::core::option::Option<u64>,
11931    #[prost(uint64, optional, tag="4")]
11932    pub bh_start: ::core::option::Option<u64>,
11933    #[prost(uint64, optional, tag="5")]
11934    pub bh_size: ::core::option::Option<u64>,
11935    #[prost(int32, optional, tag="6")]
11936    pub ret: ::core::option::Option<i32>,
11937}
11938#[derive(Clone, PartialEq, ::prost::Message)]
11939pub struct F2fsGetVictimFtraceEvent {
11940    #[prost(uint64, optional, tag="1")]
11941    pub dev: ::core::option::Option<u64>,
11942    #[prost(int32, optional, tag="2")]
11943    pub r#type: ::core::option::Option<i32>,
11944    #[prost(int32, optional, tag="3")]
11945    pub gc_type: ::core::option::Option<i32>,
11946    #[prost(int32, optional, tag="4")]
11947    pub alloc_mode: ::core::option::Option<i32>,
11948    #[prost(int32, optional, tag="5")]
11949    pub gc_mode: ::core::option::Option<i32>,
11950    #[prost(uint32, optional, tag="6")]
11951    pub victim: ::core::option::Option<u32>,
11952    #[prost(uint32, optional, tag="7")]
11953    pub ofs_unit: ::core::option::Option<u32>,
11954    #[prost(uint32, optional, tag="8")]
11955    pub pre_victim: ::core::option::Option<u32>,
11956    #[prost(uint32, optional, tag="9")]
11957    pub prefree: ::core::option::Option<u32>,
11958    #[prost(uint32, optional, tag="10")]
11959    pub free: ::core::option::Option<u32>,
11960    #[prost(uint32, optional, tag="11")]
11961    pub cost: ::core::option::Option<u32>,
11962}
11963#[derive(Clone, PartialEq, ::prost::Message)]
11964pub struct F2fsIgetFtraceEvent {
11965    #[prost(uint64, optional, tag="1")]
11966    pub dev: ::core::option::Option<u64>,
11967    #[prost(uint64, optional, tag="2")]
11968    pub ino: ::core::option::Option<u64>,
11969    #[prost(uint64, optional, tag="3")]
11970    pub pino: ::core::option::Option<u64>,
11971    #[prost(uint32, optional, tag="4")]
11972    pub mode: ::core::option::Option<u32>,
11973    #[prost(int64, optional, tag="5")]
11974    pub size: ::core::option::Option<i64>,
11975    #[prost(uint32, optional, tag="6")]
11976    pub nlink: ::core::option::Option<u32>,
11977    #[prost(uint64, optional, tag="7")]
11978    pub blocks: ::core::option::Option<u64>,
11979    #[prost(uint32, optional, tag="8")]
11980    pub advise: ::core::option::Option<u32>,
11981}
11982#[derive(Clone, PartialEq, ::prost::Message)]
11983pub struct F2fsIgetExitFtraceEvent {
11984    #[prost(uint64, optional, tag="1")]
11985    pub dev: ::core::option::Option<u64>,
11986    #[prost(uint64, optional, tag="2")]
11987    pub ino: ::core::option::Option<u64>,
11988    #[prost(int32, optional, tag="3")]
11989    pub ret: ::core::option::Option<i32>,
11990}
11991#[derive(Clone, PartialEq, ::prost::Message)]
11992pub struct F2fsNewInodeFtraceEvent {
11993    #[prost(uint64, optional, tag="1")]
11994    pub dev: ::core::option::Option<u64>,
11995    #[prost(uint64, optional, tag="2")]
11996    pub ino: ::core::option::Option<u64>,
11997    #[prost(int32, optional, tag="3")]
11998    pub ret: ::core::option::Option<i32>,
11999}
12000#[derive(Clone, PartialEq, ::prost::Message)]
12001pub struct F2fsReadpageFtraceEvent {
12002    #[prost(uint64, optional, tag="1")]
12003    pub dev: ::core::option::Option<u64>,
12004    #[prost(uint64, optional, tag="2")]
12005    pub ino: ::core::option::Option<u64>,
12006    #[prost(uint64, optional, tag="3")]
12007    pub index: ::core::option::Option<u64>,
12008    #[prost(uint64, optional, tag="4")]
12009    pub blkaddr: ::core::option::Option<u64>,
12010    #[prost(int32, optional, tag="5")]
12011    pub r#type: ::core::option::Option<i32>,
12012    #[prost(int32, optional, tag="6")]
12013    pub dir: ::core::option::Option<i32>,
12014    #[prost(int32, optional, tag="7")]
12015    pub dirty: ::core::option::Option<i32>,
12016    #[prost(int32, optional, tag="8")]
12017    pub uptodate: ::core::option::Option<i32>,
12018}
12019#[derive(Clone, PartialEq, ::prost::Message)]
12020pub struct F2fsReserveNewBlockFtraceEvent {
12021    #[prost(uint64, optional, tag="1")]
12022    pub dev: ::core::option::Option<u64>,
12023    #[prost(uint32, optional, tag="2")]
12024    pub nid: ::core::option::Option<u32>,
12025    #[prost(uint32, optional, tag="3")]
12026    pub ofs_in_node: ::core::option::Option<u32>,
12027}
12028#[derive(Clone, PartialEq, ::prost::Message)]
12029pub struct F2fsSetPageDirtyFtraceEvent {
12030    #[prost(uint64, optional, tag="1")]
12031    pub dev: ::core::option::Option<u64>,
12032    #[prost(uint64, optional, tag="2")]
12033    pub ino: ::core::option::Option<u64>,
12034    #[prost(int32, optional, tag="3")]
12035    pub r#type: ::core::option::Option<i32>,
12036    #[prost(int32, optional, tag="4")]
12037    pub dir: ::core::option::Option<i32>,
12038    #[prost(uint64, optional, tag="5")]
12039    pub index: ::core::option::Option<u64>,
12040    #[prost(int32, optional, tag="6")]
12041    pub dirty: ::core::option::Option<i32>,
12042    #[prost(int32, optional, tag="7")]
12043    pub uptodate: ::core::option::Option<i32>,
12044}
12045#[derive(Clone, PartialEq, ::prost::Message)]
12046pub struct F2fsSubmitWritePageFtraceEvent {
12047    #[prost(uint64, optional, tag="1")]
12048    pub dev: ::core::option::Option<u64>,
12049    #[prost(uint64, optional, tag="2")]
12050    pub ino: ::core::option::Option<u64>,
12051    #[prost(int32, optional, tag="3")]
12052    pub r#type: ::core::option::Option<i32>,
12053    #[prost(uint64, optional, tag="4")]
12054    pub index: ::core::option::Option<u64>,
12055    #[prost(uint32, optional, tag="5")]
12056    pub block: ::core::option::Option<u32>,
12057}
12058#[derive(Clone, PartialEq, ::prost::Message)]
12059pub struct F2fsSyncFileEnterFtraceEvent {
12060    #[prost(uint64, optional, tag="1")]
12061    pub dev: ::core::option::Option<u64>,
12062    #[prost(uint64, optional, tag="2")]
12063    pub ino: ::core::option::Option<u64>,
12064    #[prost(uint64, optional, tag="3")]
12065    pub pino: ::core::option::Option<u64>,
12066    #[prost(uint32, optional, tag="4")]
12067    pub mode: ::core::option::Option<u32>,
12068    #[prost(int64, optional, tag="5")]
12069    pub size: ::core::option::Option<i64>,
12070    #[prost(uint32, optional, tag="6")]
12071    pub nlink: ::core::option::Option<u32>,
12072    #[prost(uint64, optional, tag="7")]
12073    pub blocks: ::core::option::Option<u64>,
12074    #[prost(uint32, optional, tag="8")]
12075    pub advise: ::core::option::Option<u32>,
12076}
12077#[derive(Clone, PartialEq, ::prost::Message)]
12078pub struct F2fsSyncFileExitFtraceEvent {
12079    #[prost(uint64, optional, tag="1")]
12080    pub dev: ::core::option::Option<u64>,
12081    #[prost(uint64, optional, tag="2")]
12082    pub ino: ::core::option::Option<u64>,
12083    #[prost(uint32, optional, tag="3")]
12084    pub need_cp: ::core::option::Option<u32>,
12085    #[prost(int32, optional, tag="4")]
12086    pub datasync: ::core::option::Option<i32>,
12087    #[prost(int32, optional, tag="5")]
12088    pub ret: ::core::option::Option<i32>,
12089    #[prost(int32, optional, tag="6")]
12090    pub cp_reason: ::core::option::Option<i32>,
12091}
12092#[derive(Clone, PartialEq, ::prost::Message)]
12093pub struct F2fsSyncFsFtraceEvent {
12094    #[prost(uint64, optional, tag="1")]
12095    pub dev: ::core::option::Option<u64>,
12096    #[prost(int32, optional, tag="2")]
12097    pub dirty: ::core::option::Option<i32>,
12098    #[prost(int32, optional, tag="3")]
12099    pub wait: ::core::option::Option<i32>,
12100}
12101#[derive(Clone, PartialEq, ::prost::Message)]
12102pub struct F2fsTruncateFtraceEvent {
12103    #[prost(uint64, optional, tag="1")]
12104    pub dev: ::core::option::Option<u64>,
12105    #[prost(uint64, optional, tag="2")]
12106    pub ino: ::core::option::Option<u64>,
12107    #[prost(uint64, optional, tag="3")]
12108    pub pino: ::core::option::Option<u64>,
12109    #[prost(uint32, optional, tag="4")]
12110    pub mode: ::core::option::Option<u32>,
12111    #[prost(int64, optional, tag="5")]
12112    pub size: ::core::option::Option<i64>,
12113    #[prost(uint32, optional, tag="6")]
12114    pub nlink: ::core::option::Option<u32>,
12115    #[prost(uint64, optional, tag="7")]
12116    pub blocks: ::core::option::Option<u64>,
12117    #[prost(uint32, optional, tag="8")]
12118    pub advise: ::core::option::Option<u32>,
12119}
12120#[derive(Clone, PartialEq, ::prost::Message)]
12121pub struct F2fsTruncateBlocksEnterFtraceEvent {
12122    #[prost(uint64, optional, tag="1")]
12123    pub dev: ::core::option::Option<u64>,
12124    #[prost(uint64, optional, tag="2")]
12125    pub ino: ::core::option::Option<u64>,
12126    #[prost(int64, optional, tag="3")]
12127    pub size: ::core::option::Option<i64>,
12128    #[prost(uint64, optional, tag="4")]
12129    pub blocks: ::core::option::Option<u64>,
12130    #[prost(uint64, optional, tag="5")]
12131    pub from: ::core::option::Option<u64>,
12132}
12133#[derive(Clone, PartialEq, ::prost::Message)]
12134pub struct F2fsTruncateBlocksExitFtraceEvent {
12135    #[prost(uint64, optional, tag="1")]
12136    pub dev: ::core::option::Option<u64>,
12137    #[prost(uint64, optional, tag="2")]
12138    pub ino: ::core::option::Option<u64>,
12139    #[prost(int32, optional, tag="3")]
12140    pub ret: ::core::option::Option<i32>,
12141}
12142#[derive(Clone, PartialEq, ::prost::Message)]
12143pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12144    #[prost(uint64, optional, tag="1")]
12145    pub dev: ::core::option::Option<u64>,
12146    #[prost(uint64, optional, tag="2")]
12147    pub ino: ::core::option::Option<u64>,
12148    #[prost(uint32, optional, tag="3")]
12149    pub nid: ::core::option::Option<u32>,
12150    #[prost(uint32, optional, tag="4")]
12151    pub ofs: ::core::option::Option<u32>,
12152    #[prost(int32, optional, tag="5")]
12153    pub free: ::core::option::Option<i32>,
12154}
12155#[derive(Clone, PartialEq, ::prost::Message)]
12156pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12157    #[prost(uint64, optional, tag="1")]
12158    pub dev: ::core::option::Option<u64>,
12159    #[prost(uint64, optional, tag="2")]
12160    pub ino: ::core::option::Option<u64>,
12161    #[prost(int64, optional, tag="3")]
12162    pub size: ::core::option::Option<i64>,
12163    #[prost(uint64, optional, tag="4")]
12164    pub blocks: ::core::option::Option<u64>,
12165    #[prost(uint64, optional, tag="5")]
12166    pub from: ::core::option::Option<u64>,
12167}
12168#[derive(Clone, PartialEq, ::prost::Message)]
12169pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12170    #[prost(uint64, optional, tag="1")]
12171    pub dev: ::core::option::Option<u64>,
12172    #[prost(uint64, optional, tag="2")]
12173    pub ino: ::core::option::Option<u64>,
12174    #[prost(int32, optional, tag="3")]
12175    pub ret: ::core::option::Option<i32>,
12176}
12177#[derive(Clone, PartialEq, ::prost::Message)]
12178pub struct F2fsTruncateNodeFtraceEvent {
12179    #[prost(uint64, optional, tag="1")]
12180    pub dev: ::core::option::Option<u64>,
12181    #[prost(uint64, optional, tag="2")]
12182    pub ino: ::core::option::Option<u64>,
12183    #[prost(uint32, optional, tag="3")]
12184    pub nid: ::core::option::Option<u32>,
12185    #[prost(uint32, optional, tag="4")]
12186    pub blk_addr: ::core::option::Option<u32>,
12187}
12188#[derive(Clone, PartialEq, ::prost::Message)]
12189pub struct F2fsTruncateNodesEnterFtraceEvent {
12190    #[prost(uint64, optional, tag="1")]
12191    pub dev: ::core::option::Option<u64>,
12192    #[prost(uint64, optional, tag="2")]
12193    pub ino: ::core::option::Option<u64>,
12194    #[prost(uint32, optional, tag="3")]
12195    pub nid: ::core::option::Option<u32>,
12196    #[prost(uint32, optional, tag="4")]
12197    pub blk_addr: ::core::option::Option<u32>,
12198}
12199#[derive(Clone, PartialEq, ::prost::Message)]
12200pub struct F2fsTruncateNodesExitFtraceEvent {
12201    #[prost(uint64, optional, tag="1")]
12202    pub dev: ::core::option::Option<u64>,
12203    #[prost(uint64, optional, tag="2")]
12204    pub ino: ::core::option::Option<u64>,
12205    #[prost(int32, optional, tag="3")]
12206    pub ret: ::core::option::Option<i32>,
12207}
12208#[derive(Clone, PartialEq, ::prost::Message)]
12209pub struct F2fsTruncatePartialNodesFtraceEvent {
12210    #[prost(uint64, optional, tag="1")]
12211    pub dev: ::core::option::Option<u64>,
12212    #[prost(uint64, optional, tag="2")]
12213    pub ino: ::core::option::Option<u64>,
12214    #[prost(uint32, optional, tag="3")]
12215    pub nid: ::core::option::Option<u32>,
12216    #[prost(int32, optional, tag="4")]
12217    pub depth: ::core::option::Option<i32>,
12218    #[prost(int32, optional, tag="5")]
12219    pub err: ::core::option::Option<i32>,
12220}
12221#[derive(Clone, PartialEq, ::prost::Message)]
12222pub struct F2fsUnlinkEnterFtraceEvent {
12223    #[prost(uint64, optional, tag="1")]
12224    pub dev: ::core::option::Option<u64>,
12225    #[prost(uint64, optional, tag="2")]
12226    pub ino: ::core::option::Option<u64>,
12227    #[prost(int64, optional, tag="3")]
12228    pub size: ::core::option::Option<i64>,
12229    #[prost(uint64, optional, tag="4")]
12230    pub blocks: ::core::option::Option<u64>,
12231    #[prost(string, optional, tag="5")]
12232    pub name: ::core::option::Option<::prost::alloc::string::String>,
12233}
12234#[derive(Clone, PartialEq, ::prost::Message)]
12235pub struct F2fsUnlinkExitFtraceEvent {
12236    #[prost(uint64, optional, tag="1")]
12237    pub dev: ::core::option::Option<u64>,
12238    #[prost(uint64, optional, tag="2")]
12239    pub ino: ::core::option::Option<u64>,
12240    #[prost(int32, optional, tag="3")]
12241    pub ret: ::core::option::Option<i32>,
12242}
12243#[derive(Clone, PartialEq, ::prost::Message)]
12244pub struct F2fsVmPageMkwriteFtraceEvent {
12245    #[prost(uint64, optional, tag="1")]
12246    pub dev: ::core::option::Option<u64>,
12247    #[prost(uint64, optional, tag="2")]
12248    pub ino: ::core::option::Option<u64>,
12249    #[prost(int32, optional, tag="3")]
12250    pub r#type: ::core::option::Option<i32>,
12251    #[prost(int32, optional, tag="4")]
12252    pub dir: ::core::option::Option<i32>,
12253    #[prost(uint64, optional, tag="5")]
12254    pub index: ::core::option::Option<u64>,
12255    #[prost(int32, optional, tag="6")]
12256    pub dirty: ::core::option::Option<i32>,
12257    #[prost(int32, optional, tag="7")]
12258    pub uptodate: ::core::option::Option<i32>,
12259}
12260#[derive(Clone, PartialEq, ::prost::Message)]
12261pub struct F2fsWriteBeginFtraceEvent {
12262    #[prost(uint64, optional, tag="1")]
12263    pub dev: ::core::option::Option<u64>,
12264    #[prost(uint64, optional, tag="2")]
12265    pub ino: ::core::option::Option<u64>,
12266    #[prost(int64, optional, tag="3")]
12267    pub pos: ::core::option::Option<i64>,
12268    #[prost(uint32, optional, tag="4")]
12269    pub len: ::core::option::Option<u32>,
12270    #[prost(uint32, optional, tag="5")]
12271    pub flags: ::core::option::Option<u32>,
12272}
12273#[derive(Clone, PartialEq, ::prost::Message)]
12274pub struct F2fsWriteCheckpointFtraceEvent {
12275    #[prost(uint64, optional, tag="1")]
12276    pub dev: ::core::option::Option<u64>,
12277    #[prost(uint32, optional, tag="2")]
12278    pub is_umount: ::core::option::Option<u32>,
12279    #[prost(string, optional, tag="3")]
12280    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12281    #[prost(int32, optional, tag="4")]
12282    pub reason: ::core::option::Option<i32>,
12283    #[prost(uint32, optional, tag="5")]
12284    pub phase: ::core::option::Option<u32>,
12285}
12286#[derive(Clone, PartialEq, ::prost::Message)]
12287pub struct F2fsWriteEndFtraceEvent {
12288    #[prost(uint64, optional, tag="1")]
12289    pub dev: ::core::option::Option<u64>,
12290    #[prost(uint64, optional, tag="2")]
12291    pub ino: ::core::option::Option<u64>,
12292    #[prost(int64, optional, tag="3")]
12293    pub pos: ::core::option::Option<i64>,
12294    #[prost(uint32, optional, tag="4")]
12295    pub len: ::core::option::Option<u32>,
12296    #[prost(uint32, optional, tag="5")]
12297    pub copied: ::core::option::Option<u32>,
12298}
12299#[derive(Clone, PartialEq, ::prost::Message)]
12300pub struct F2fsIostatFtraceEvent {
12301    #[prost(uint64, optional, tag="1")]
12302    pub app_bio: ::core::option::Option<u64>,
12303    #[prost(uint64, optional, tag="2")]
12304    pub app_brio: ::core::option::Option<u64>,
12305    #[prost(uint64, optional, tag="3")]
12306    pub app_dio: ::core::option::Option<u64>,
12307    #[prost(uint64, optional, tag="4")]
12308    pub app_drio: ::core::option::Option<u64>,
12309    #[prost(uint64, optional, tag="5")]
12310    pub app_mio: ::core::option::Option<u64>,
12311    #[prost(uint64, optional, tag="6")]
12312    pub app_mrio: ::core::option::Option<u64>,
12313    #[prost(uint64, optional, tag="7")]
12314    pub app_rio: ::core::option::Option<u64>,
12315    #[prost(uint64, optional, tag="8")]
12316    pub app_wio: ::core::option::Option<u64>,
12317    #[prost(uint64, optional, tag="9")]
12318    pub dev: ::core::option::Option<u64>,
12319    #[prost(uint64, optional, tag="10")]
12320    pub fs_cdrio: ::core::option::Option<u64>,
12321    #[prost(uint64, optional, tag="11")]
12322    pub fs_cp_dio: ::core::option::Option<u64>,
12323    #[prost(uint64, optional, tag="12")]
12324    pub fs_cp_mio: ::core::option::Option<u64>,
12325    #[prost(uint64, optional, tag="13")]
12326    pub fs_cp_nio: ::core::option::Option<u64>,
12327    #[prost(uint64, optional, tag="14")]
12328    pub fs_dio: ::core::option::Option<u64>,
12329    #[prost(uint64, optional, tag="15")]
12330    pub fs_discard: ::core::option::Option<u64>,
12331    #[prost(uint64, optional, tag="16")]
12332    pub fs_drio: ::core::option::Option<u64>,
12333    #[prost(uint64, optional, tag="17")]
12334    pub fs_gc_dio: ::core::option::Option<u64>,
12335    #[prost(uint64, optional, tag="18")]
12336    pub fs_gc_nio: ::core::option::Option<u64>,
12337    #[prost(uint64, optional, tag="19")]
12338    pub fs_gdrio: ::core::option::Option<u64>,
12339    #[prost(uint64, optional, tag="20")]
12340    pub fs_mio: ::core::option::Option<u64>,
12341    #[prost(uint64, optional, tag="21")]
12342    pub fs_mrio: ::core::option::Option<u64>,
12343    #[prost(uint64, optional, tag="22")]
12344    pub fs_nio: ::core::option::Option<u64>,
12345    #[prost(uint64, optional, tag="23")]
12346    pub fs_nrio: ::core::option::Option<u64>,
12347}
12348#[derive(Clone, PartialEq, ::prost::Message)]
12349pub struct F2fsIostatLatencyFtraceEvent {
12350    #[prost(uint32, optional, tag="1")]
12351    pub d_rd_avg: ::core::option::Option<u32>,
12352    #[prost(uint32, optional, tag="2")]
12353    pub d_rd_cnt: ::core::option::Option<u32>,
12354    #[prost(uint32, optional, tag="3")]
12355    pub d_rd_peak: ::core::option::Option<u32>,
12356    #[prost(uint32, optional, tag="4")]
12357    pub d_wr_as_avg: ::core::option::Option<u32>,
12358    #[prost(uint32, optional, tag="5")]
12359    pub d_wr_as_cnt: ::core::option::Option<u32>,
12360    #[prost(uint32, optional, tag="6")]
12361    pub d_wr_as_peak: ::core::option::Option<u32>,
12362    #[prost(uint32, optional, tag="7")]
12363    pub d_wr_s_avg: ::core::option::Option<u32>,
12364    #[prost(uint32, optional, tag="8")]
12365    pub d_wr_s_cnt: ::core::option::Option<u32>,
12366    #[prost(uint32, optional, tag="9")]
12367    pub d_wr_s_peak: ::core::option::Option<u32>,
12368    #[prost(uint64, optional, tag="10")]
12369    pub dev: ::core::option::Option<u64>,
12370    #[prost(uint32, optional, tag="11")]
12371    pub m_rd_avg: ::core::option::Option<u32>,
12372    #[prost(uint32, optional, tag="12")]
12373    pub m_rd_cnt: ::core::option::Option<u32>,
12374    #[prost(uint32, optional, tag="13")]
12375    pub m_rd_peak: ::core::option::Option<u32>,
12376    #[prost(uint32, optional, tag="14")]
12377    pub m_wr_as_avg: ::core::option::Option<u32>,
12378    #[prost(uint32, optional, tag="15")]
12379    pub m_wr_as_cnt: ::core::option::Option<u32>,
12380    #[prost(uint32, optional, tag="16")]
12381    pub m_wr_as_peak: ::core::option::Option<u32>,
12382    #[prost(uint32, optional, tag="17")]
12383    pub m_wr_s_avg: ::core::option::Option<u32>,
12384    #[prost(uint32, optional, tag="18")]
12385    pub m_wr_s_cnt: ::core::option::Option<u32>,
12386    #[prost(uint32, optional, tag="19")]
12387    pub m_wr_s_peak: ::core::option::Option<u32>,
12388    #[prost(uint32, optional, tag="20")]
12389    pub n_rd_avg: ::core::option::Option<u32>,
12390    #[prost(uint32, optional, tag="21")]
12391    pub n_rd_cnt: ::core::option::Option<u32>,
12392    #[prost(uint32, optional, tag="22")]
12393    pub n_rd_peak: ::core::option::Option<u32>,
12394    #[prost(uint32, optional, tag="23")]
12395    pub n_wr_as_avg: ::core::option::Option<u32>,
12396    #[prost(uint32, optional, tag="24")]
12397    pub n_wr_as_cnt: ::core::option::Option<u32>,
12398    #[prost(uint32, optional, tag="25")]
12399    pub n_wr_as_peak: ::core::option::Option<u32>,
12400    #[prost(uint32, optional, tag="26")]
12401    pub n_wr_s_avg: ::core::option::Option<u32>,
12402    #[prost(uint32, optional, tag="27")]
12403    pub n_wr_s_cnt: ::core::option::Option<u32>,
12404    #[prost(uint32, optional, tag="28")]
12405    pub n_wr_s_peak: ::core::option::Option<u32>,
12406}
12407#[derive(Clone, PartialEq, ::prost::Message)]
12408pub struct F2fsBackgroundGcFtraceEvent {
12409    #[prost(uint64, optional, tag="1")]
12410    pub dev: ::core::option::Option<u64>,
12411    #[prost(uint32, optional, tag="2")]
12412    pub wait_ms: ::core::option::Option<u32>,
12413    #[prost(uint32, optional, tag="3")]
12414    pub prefree: ::core::option::Option<u32>,
12415    #[prost(uint32, optional, tag="4")]
12416    pub free: ::core::option::Option<u32>,
12417}
12418#[derive(Clone, PartialEq, ::prost::Message)]
12419pub struct F2fsGcBeginFtraceEvent {
12420    #[prost(uint64, optional, tag="1")]
12421    pub dev: ::core::option::Option<u64>,
12422    #[prost(uint32, optional, tag="2")]
12423    pub sync: ::core::option::Option<u32>,
12424    #[prost(uint32, optional, tag="3")]
12425    pub background: ::core::option::Option<u32>,
12426    #[prost(int64, optional, tag="4")]
12427    pub dirty_nodes: ::core::option::Option<i64>,
12428    #[prost(int64, optional, tag="5")]
12429    pub dirty_dents: ::core::option::Option<i64>,
12430    #[prost(int64, optional, tag="6")]
12431    pub dirty_imeta: ::core::option::Option<i64>,
12432    #[prost(uint32, optional, tag="7")]
12433    pub free_sec: ::core::option::Option<u32>,
12434    #[prost(uint32, optional, tag="8")]
12435    pub free_seg: ::core::option::Option<u32>,
12436    #[prost(int32, optional, tag="9")]
12437    pub reserved_seg: ::core::option::Option<i32>,
12438    #[prost(uint32, optional, tag="10")]
12439    pub prefree_seg: ::core::option::Option<u32>,
12440    #[prost(int32, optional, tag="11")]
12441    pub gc_type: ::core::option::Option<i32>,
12442    #[prost(uint32, optional, tag="12")]
12443    pub no_bg_gc: ::core::option::Option<u32>,
12444    #[prost(uint32, optional, tag="13")]
12445    pub nr_free_secs: ::core::option::Option<u32>,
12446}
12447#[derive(Clone, PartialEq, ::prost::Message)]
12448pub struct F2fsGcEndFtraceEvent {
12449    #[prost(uint64, optional, tag="1")]
12450    pub dev: ::core::option::Option<u64>,
12451    #[prost(int32, optional, tag="2")]
12452    pub ret: ::core::option::Option<i32>,
12453    #[prost(int32, optional, tag="3")]
12454    pub seg_freed: ::core::option::Option<i32>,
12455    #[prost(int32, optional, tag="4")]
12456    pub sec_freed: ::core::option::Option<i32>,
12457    #[prost(int64, optional, tag="5")]
12458    pub dirty_nodes: ::core::option::Option<i64>,
12459    #[prost(int64, optional, tag="6")]
12460    pub dirty_dents: ::core::option::Option<i64>,
12461    #[prost(int64, optional, tag="7")]
12462    pub dirty_imeta: ::core::option::Option<i64>,
12463    #[prost(uint32, optional, tag="8")]
12464    pub free_sec: ::core::option::Option<u32>,
12465    #[prost(uint32, optional, tag="9")]
12466    pub free_seg: ::core::option::Option<u32>,
12467    #[prost(int32, optional, tag="10")]
12468    pub reserved_seg: ::core::option::Option<i32>,
12469    #[prost(uint32, optional, tag="11")]
12470    pub prefree_seg: ::core::option::Option<u32>,
12471}
12472// End of protos/perfetto/trace/ftrace/f2fs.proto
12473
12474// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
12475
12476#[derive(Clone, PartialEq, ::prost::Message)]
12477pub struct FastrpcDmaStatFtraceEvent {
12478    #[prost(int32, optional, tag="1")]
12479    pub cid: ::core::option::Option<i32>,
12480    #[prost(int64, optional, tag="2")]
12481    pub len: ::core::option::Option<i64>,
12482    #[prost(uint64, optional, tag="3")]
12483    pub total_allocated: ::core::option::Option<u64>,
12484}
12485#[derive(Clone, PartialEq, ::prost::Message)]
12486pub struct FastrpcDmaFreeFtraceEvent {
12487    #[prost(int32, optional, tag="1")]
12488    pub cid: ::core::option::Option<i32>,
12489    #[prost(uint64, optional, tag="2")]
12490    pub phys: ::core::option::Option<u64>,
12491    #[prost(uint64, optional, tag="3")]
12492    pub size: ::core::option::Option<u64>,
12493}
12494#[derive(Clone, PartialEq, ::prost::Message)]
12495pub struct FastrpcDmaAllocFtraceEvent {
12496    #[prost(int32, optional, tag="1")]
12497    pub cid: ::core::option::Option<i32>,
12498    #[prost(uint64, optional, tag="2")]
12499    pub phys: ::core::option::Option<u64>,
12500    #[prost(uint64, optional, tag="3")]
12501    pub size: ::core::option::Option<u64>,
12502    #[prost(uint64, optional, tag="4")]
12503    pub attr: ::core::option::Option<u64>,
12504    #[prost(int32, optional, tag="5")]
12505    pub mflags: ::core::option::Option<i32>,
12506}
12507#[derive(Clone, PartialEq, ::prost::Message)]
12508pub struct FastrpcDmaUnmapFtraceEvent {
12509    #[prost(int32, optional, tag="1")]
12510    pub cid: ::core::option::Option<i32>,
12511    #[prost(uint64, optional, tag="2")]
12512    pub phys: ::core::option::Option<u64>,
12513    #[prost(uint64, optional, tag="3")]
12514    pub size: ::core::option::Option<u64>,
12515}
12516#[derive(Clone, PartialEq, ::prost::Message)]
12517pub struct FastrpcDmaMapFtraceEvent {
12518    #[prost(int32, optional, tag="1")]
12519    pub cid: ::core::option::Option<i32>,
12520    #[prost(int32, optional, tag="2")]
12521    pub fd: ::core::option::Option<i32>,
12522    #[prost(uint64, optional, tag="3")]
12523    pub phys: ::core::option::Option<u64>,
12524    #[prost(uint64, optional, tag="4")]
12525    pub size: ::core::option::Option<u64>,
12526    #[prost(uint64, optional, tag="5")]
12527    pub len: ::core::option::Option<u64>,
12528    #[prost(uint32, optional, tag="6")]
12529    pub attr: ::core::option::Option<u32>,
12530    #[prost(int32, optional, tag="7")]
12531    pub mflags: ::core::option::Option<i32>,
12532}
12533// End of protos/perfetto/trace/ftrace/fastrpc.proto
12534
12535// Begin of protos/perfetto/trace/ftrace/fence.proto
12536
12537#[derive(Clone, PartialEq, ::prost::Message)]
12538pub struct FenceInitFtraceEvent {
12539    #[prost(uint32, optional, tag="1")]
12540    pub context: ::core::option::Option<u32>,
12541    #[prost(string, optional, tag="2")]
12542    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12543    #[prost(uint32, optional, tag="3")]
12544    pub seqno: ::core::option::Option<u32>,
12545    #[prost(string, optional, tag="4")]
12546    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12547}
12548#[derive(Clone, PartialEq, ::prost::Message)]
12549pub struct FenceDestroyFtraceEvent {
12550    #[prost(uint32, optional, tag="1")]
12551    pub context: ::core::option::Option<u32>,
12552    #[prost(string, optional, tag="2")]
12553    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12554    #[prost(uint32, optional, tag="3")]
12555    pub seqno: ::core::option::Option<u32>,
12556    #[prost(string, optional, tag="4")]
12557    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12558}
12559#[derive(Clone, PartialEq, ::prost::Message)]
12560pub struct FenceEnableSignalFtraceEvent {
12561    #[prost(uint32, optional, tag="1")]
12562    pub context: ::core::option::Option<u32>,
12563    #[prost(string, optional, tag="2")]
12564    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12565    #[prost(uint32, optional, tag="3")]
12566    pub seqno: ::core::option::Option<u32>,
12567    #[prost(string, optional, tag="4")]
12568    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12569}
12570#[derive(Clone, PartialEq, ::prost::Message)]
12571pub struct FenceSignaledFtraceEvent {
12572    #[prost(uint32, optional, tag="1")]
12573    pub context: ::core::option::Option<u32>,
12574    #[prost(string, optional, tag="2")]
12575    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12576    #[prost(uint32, optional, tag="3")]
12577    pub seqno: ::core::option::Option<u32>,
12578    #[prost(string, optional, tag="4")]
12579    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12580}
12581// End of protos/perfetto/trace/ftrace/fence.proto
12582
12583// Begin of protos/perfetto/trace/ftrace/filemap.proto
12584
12585#[derive(Clone, PartialEq, ::prost::Message)]
12586pub struct MmFilemapAddToPageCacheFtraceEvent {
12587    #[prost(uint64, optional, tag="1")]
12588    pub pfn: ::core::option::Option<u64>,
12589    #[prost(uint64, optional, tag="2")]
12590    pub i_ino: ::core::option::Option<u64>,
12591    #[prost(uint64, optional, tag="3")]
12592    pub index: ::core::option::Option<u64>,
12593    #[prost(uint64, optional, tag="4")]
12594    pub s_dev: ::core::option::Option<u64>,
12595    #[prost(uint64, optional, tag="5")]
12596    pub page: ::core::option::Option<u64>,
12597}
12598#[derive(Clone, PartialEq, ::prost::Message)]
12599pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
12600    #[prost(uint64, optional, tag="1")]
12601    pub pfn: ::core::option::Option<u64>,
12602    #[prost(uint64, optional, tag="2")]
12603    pub i_ino: ::core::option::Option<u64>,
12604    #[prost(uint64, optional, tag="3")]
12605    pub index: ::core::option::Option<u64>,
12606    #[prost(uint64, optional, tag="4")]
12607    pub s_dev: ::core::option::Option<u64>,
12608    #[prost(uint64, optional, tag="5")]
12609    pub page: ::core::option::Option<u64>,
12610}
12611// End of protos/perfetto/trace/ftrace/filemap.proto
12612
12613// Begin of protos/perfetto/trace/ftrace/fs.proto
12614
12615#[derive(Clone, PartialEq, ::prost::Message)]
12616pub struct DoSysOpenFtraceEvent {
12617    #[prost(string, optional, tag="1")]
12618    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12619    #[prost(int32, optional, tag="2")]
12620    pub flags: ::core::option::Option<i32>,
12621    #[prost(int32, optional, tag="3")]
12622    pub mode: ::core::option::Option<i32>,
12623}
12624#[derive(Clone, PartialEq, ::prost::Message)]
12625pub struct OpenExecFtraceEvent {
12626    #[prost(string, optional, tag="1")]
12627    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12628}
12629// End of protos/perfetto/trace/ftrace/fs.proto
12630
12631// Begin of protos/perfetto/trace/ftrace/ftrace.proto
12632
12633#[derive(Clone, PartialEq, ::prost::Message)]
12634pub struct PrintFtraceEvent {
12635    #[prost(uint64, optional, tag="1")]
12636    pub ip: ::core::option::Option<u64>,
12637    #[prost(string, optional, tag="2")]
12638    pub buf: ::core::option::Option<::prost::alloc::string::String>,
12639}
12640#[derive(Clone, PartialEq, ::prost::Message)]
12641pub struct FuncgraphEntryFtraceEvent {
12642    #[prost(int32, optional, tag="1")]
12643    pub depth: ::core::option::Option<i32>,
12644    #[prost(uint64, optional, tag="2")]
12645    pub func: ::core::option::Option<u64>,
12646}
12647#[derive(Clone, PartialEq, ::prost::Message)]
12648pub struct FuncgraphExitFtraceEvent {
12649    #[prost(uint64, optional, tag="1")]
12650    pub calltime: ::core::option::Option<u64>,
12651    #[prost(int32, optional, tag="2")]
12652    pub depth: ::core::option::Option<i32>,
12653    #[prost(uint64, optional, tag="3")]
12654    pub func: ::core::option::Option<u64>,
12655    #[prost(uint64, optional, tag="4")]
12656    pub overrun: ::core::option::Option<u64>,
12657    #[prost(uint64, optional, tag="5")]
12658    pub rettime: ::core::option::Option<u64>,
12659}
12660// End of protos/perfetto/trace/ftrace/ftrace.proto
12661
12662// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12663
12664#[derive(Clone, PartialEq, ::prost::Message)]
12665pub struct FwtpPerfettoCounterFtraceEvent {
12666    #[prost(uint64, optional, tag="1")]
12667    pub timestamp: ::core::option::Option<u64>,
12668    #[prost(uint32, optional, tag="2")]
12669    pub track_id: ::core::option::Option<u32>,
12670    #[prost(string, optional, tag="3")]
12671    pub category: ::core::option::Option<::prost::alloc::string::String>,
12672    #[prost(string, optional, tag="4")]
12673    pub name: ::core::option::Option<::prost::alloc::string::String>,
12674    #[prost(uint32, optional, tag="5")]
12675    pub value: ::core::option::Option<u32>,
12676}
12677#[derive(Clone, PartialEq, ::prost::Message)]
12678pub struct FwtpPerfettoSliceFtraceEvent {
12679    #[prost(uint64, optional, tag="1")]
12680    pub timestamp: ::core::option::Option<u64>,
12681    #[prost(uint32, optional, tag="2")]
12682    pub track_id: ::core::option::Option<u32>,
12683    #[prost(string, optional, tag="3")]
12684    pub category: ::core::option::Option<::prost::alloc::string::String>,
12685    #[prost(string, optional, tag="4")]
12686    pub name: ::core::option::Option<::prost::alloc::string::String>,
12687    #[prost(uint32, optional, tag="5")]
12688    pub begin: ::core::option::Option<u32>,
12689}
12690// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12691
12692// Begin of protos/perfetto/trace/ftrace/g2d.proto
12693
12694#[derive(Clone, PartialEq, ::prost::Message)]
12695pub struct G2dTracingMarkWriteFtraceEvent {
12696    #[prost(int32, optional, tag="1")]
12697    pub pid: ::core::option::Option<i32>,
12698    #[prost(string, optional, tag="4")]
12699    pub name: ::core::option::Option<::prost::alloc::string::String>,
12700    #[prost(uint32, optional, tag="5")]
12701    pub r#type: ::core::option::Option<u32>,
12702    #[prost(int32, optional, tag="6")]
12703    pub value: ::core::option::Option<i32>,
12704}
12705// End of protos/perfetto/trace/ftrace/g2d.proto
12706
12707// Begin of protos/perfetto/trace/ftrace/generic.proto
12708
12709/// This generic proto is used to output events in the trace
12710/// when a specific proto for that event does not exist.
12711#[derive(Clone, PartialEq, ::prost::Message)]
12712pub struct GenericFtraceEvent {
12713    #[prost(string, optional, tag="1")]
12714    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12715    #[prost(message, repeated, tag="2")]
12716    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12717}
12718/// Nested message and enum types in `GenericFtraceEvent`.
12719pub mod generic_ftrace_event {
12720    #[derive(Clone, PartialEq, ::prost::Message)]
12721    pub struct Field {
12722        #[prost(string, optional, tag="1")]
12723        pub name: ::core::option::Option<::prost::alloc::string::String>,
12724        #[prost(oneof="field::Value", tags="3, 4, 5")]
12725        pub value: ::core::option::Option<field::Value>,
12726    }
12727    /// Nested message and enum types in `Field`.
12728    pub mod field {
12729        #[derive(Clone, PartialEq, ::prost::Oneof)]
12730        pub enum Value {
12731            #[prost(string, tag="3")]
12732            StrValue(::prost::alloc::string::String),
12733            #[prost(int64, tag="4")]
12734            IntValue(i64),
12735            #[prost(uint64, tag="5")]
12736            UintValue(u64),
12737        }
12738    }
12739}
12740#[derive(Clone, PartialEq, ::prost::Message)]
12741pub struct KprobeEvent {
12742    #[prost(string, optional, tag="1")]
12743    pub name: ::core::option::Option<::prost::alloc::string::String>,
12744    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
12745    pub r#type: ::core::option::Option<i32>,
12746}
12747/// Nested message and enum types in `KprobeEvent`.
12748pub mod kprobe_event {
12749    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12750    #[repr(i32)]
12751    pub enum KprobeType {
12752        Unknown = 0,
12753        Begin = 1,
12754        End = 2,
12755        Instant = 3,
12756    }
12757    impl KprobeType {
12758        /// String value of the enum field names used in the ProtoBuf definition.
12759        ///
12760        /// The values are not transformed in any way and thus are considered stable
12761        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12762        pub fn as_str_name(&self) -> &'static str {
12763            match self {
12764                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
12765                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
12766                KprobeType::End => "KPROBE_TYPE_END",
12767                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
12768            }
12769        }
12770    }
12771}
12772// End of protos/perfetto/trace/ftrace/generic.proto
12773
12774// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
12775
12776#[derive(Clone, PartialEq, ::prost::Message)]
12777pub struct GoogleIccEventFtraceEvent {
12778    #[prost(string, optional, tag="1")]
12779    pub event: ::core::option::Option<::prost::alloc::string::String>,
12780    #[prost(uint64, optional, tag="2")]
12781    pub timestamp: ::core::option::Option<u64>,
12782}
12783// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
12784
12785// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
12786
12787#[derive(Clone, PartialEq, ::prost::Message)]
12788pub struct GoogleIrmEventFtraceEvent {
12789    #[prost(string, optional, tag="1")]
12790    pub event: ::core::option::Option<::prost::alloc::string::String>,
12791    #[prost(uint64, optional, tag="2")]
12792    pub timestamp: ::core::option::Option<u64>,
12793}
12794// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
12795
12796// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
12797
12798#[derive(Clone, PartialEq, ::prost::Message)]
12799pub struct GpuMemTotalFtraceEvent {
12800    #[prost(uint32, optional, tag="1")]
12801    pub gpu_id: ::core::option::Option<u32>,
12802    #[prost(uint32, optional, tag="2")]
12803    pub pid: ::core::option::Option<u32>,
12804    #[prost(uint64, optional, tag="3")]
12805    pub size: ::core::option::Option<u64>,
12806}
12807// End of protos/perfetto/trace/ftrace/gpu_mem.proto
12808
12809// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12810
12811#[derive(Clone, PartialEq, ::prost::Message)]
12812pub struct DrmSchedJobFtraceEvent {
12813    #[prost(uint64, optional, tag="1")]
12814    pub entity: ::core::option::Option<u64>,
12815    #[prost(uint64, optional, tag="2")]
12816    pub fence: ::core::option::Option<u64>,
12817    #[prost(int32, optional, tag="3")]
12818    pub hw_job_count: ::core::option::Option<i32>,
12819    #[prost(uint64, optional, tag="4")]
12820    pub id: ::core::option::Option<u64>,
12821    #[prost(uint32, optional, tag="5")]
12822    pub job_count: ::core::option::Option<u32>,
12823    #[prost(string, optional, tag="6")]
12824    pub name: ::core::option::Option<::prost::alloc::string::String>,
12825}
12826#[derive(Clone, PartialEq, ::prost::Message)]
12827pub struct DrmRunJobFtraceEvent {
12828    #[prost(uint64, optional, tag="1")]
12829    pub entity: ::core::option::Option<u64>,
12830    #[prost(uint64, optional, tag="2")]
12831    pub fence: ::core::option::Option<u64>,
12832    #[prost(int32, optional, tag="3")]
12833    pub hw_job_count: ::core::option::Option<i32>,
12834    #[prost(uint64, optional, tag="4")]
12835    pub id: ::core::option::Option<u64>,
12836    #[prost(uint32, optional, tag="5")]
12837    pub job_count: ::core::option::Option<u32>,
12838    #[prost(string, optional, tag="6")]
12839    pub name: ::core::option::Option<::prost::alloc::string::String>,
12840}
12841#[derive(Clone, PartialEq, ::prost::Message)]
12842pub struct DrmSchedProcessJobFtraceEvent {
12843    #[prost(uint64, optional, tag="1")]
12844    pub fence: ::core::option::Option<u64>,
12845}
12846#[derive(Clone, PartialEq, ::prost::Message)]
12847pub struct DrmSchedJobAddDepFtraceEvent {
12848    #[prost(uint64, optional, tag="1")]
12849    pub fence_context: ::core::option::Option<u64>,
12850    #[prost(uint64, optional, tag="2")]
12851    pub fence_seqno: ::core::option::Option<u64>,
12852    #[prost(uint64, optional, tag="3")]
12853    pub ctx: ::core::option::Option<u64>,
12854    #[prost(uint64, optional, tag="4")]
12855    pub seqno: ::core::option::Option<u64>,
12856}
12857#[derive(Clone, PartialEq, ::prost::Message)]
12858pub struct DrmSchedJobDoneFtraceEvent {
12859    #[prost(uint64, optional, tag="1")]
12860    pub fence_context: ::core::option::Option<u64>,
12861    #[prost(uint64, optional, tag="2")]
12862    pub fence_seqno: ::core::option::Option<u64>,
12863}
12864#[derive(Clone, PartialEq, ::prost::Message)]
12865pub struct DrmSchedJobQueueFtraceEvent {
12866    #[prost(string, optional, tag="1")]
12867    pub name: ::core::option::Option<::prost::alloc::string::String>,
12868    #[prost(uint32, optional, tag="2")]
12869    pub job_count: ::core::option::Option<u32>,
12870    #[prost(int32, optional, tag="3")]
12871    pub hw_job_count: ::core::option::Option<i32>,
12872    #[prost(string, optional, tag="4")]
12873    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12874    #[prost(uint64, optional, tag="5")]
12875    pub fence_context: ::core::option::Option<u64>,
12876    #[prost(uint64, optional, tag="6")]
12877    pub fence_seqno: ::core::option::Option<u64>,
12878    #[prost(uint64, optional, tag="7")]
12879    pub client_id: ::core::option::Option<u64>,
12880}
12881#[derive(Clone, PartialEq, ::prost::Message)]
12882pub struct DrmSchedJobRunFtraceEvent {
12883    #[prost(string, optional, tag="1")]
12884    pub name: ::core::option::Option<::prost::alloc::string::String>,
12885    #[prost(uint32, optional, tag="2")]
12886    pub job_count: ::core::option::Option<u32>,
12887    #[prost(int32, optional, tag="3")]
12888    pub hw_job_count: ::core::option::Option<i32>,
12889    #[prost(string, optional, tag="4")]
12890    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12891    #[prost(uint64, optional, tag="5")]
12892    pub fence_context: ::core::option::Option<u64>,
12893    #[prost(uint64, optional, tag="6")]
12894    pub fence_seqno: ::core::option::Option<u64>,
12895    #[prost(uint64, optional, tag="7")]
12896    pub client_id: ::core::option::Option<u64>,
12897}
12898#[derive(Clone, PartialEq, ::prost::Message)]
12899pub struct DrmSchedJobUnschedulableFtraceEvent {
12900    #[prost(uint64, optional, tag="1")]
12901    pub fence_context: ::core::option::Option<u64>,
12902    #[prost(uint64, optional, tag="2")]
12903    pub fence_seqno: ::core::option::Option<u64>,
12904    #[prost(uint64, optional, tag="3")]
12905    pub ctx: ::core::option::Option<u64>,
12906    #[prost(uint64, optional, tag="4")]
12907    pub seqno: ::core::option::Option<u64>,
12908}
12909// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12910
12911// Begin of protos/perfetto/trace/ftrace/hyp.proto
12912
12913#[derive(Clone, PartialEq, ::prost::Message)]
12914pub struct HypEnterFtraceEvent {
12915}
12916#[derive(Clone, PartialEq, ::prost::Message)]
12917pub struct HypExitFtraceEvent {
12918}
12919#[derive(Clone, PartialEq, ::prost::Message)]
12920pub struct HostHcallFtraceEvent {
12921    #[prost(uint32, optional, tag="1")]
12922    pub id: ::core::option::Option<u32>,
12923    #[prost(uint32, optional, tag="2")]
12924    pub invalid: ::core::option::Option<u32>,
12925}
12926#[derive(Clone, PartialEq, ::prost::Message)]
12927pub struct HostSmcFtraceEvent {
12928    #[prost(uint64, optional, tag="1")]
12929    pub id: ::core::option::Option<u64>,
12930    #[prost(uint32, optional, tag="2")]
12931    pub forwarded: ::core::option::Option<u32>,
12932}
12933#[derive(Clone, PartialEq, ::prost::Message)]
12934pub struct HostMemAbortFtraceEvent {
12935    #[prost(uint64, optional, tag="1")]
12936    pub esr: ::core::option::Option<u64>,
12937    #[prost(uint64, optional, tag="2")]
12938    pub addr: ::core::option::Option<u64>,
12939}
12940#[derive(Clone, PartialEq, ::prost::Message)]
12941pub struct HostFfaCallFtraceEvent {
12942    #[prost(uint64, optional, tag="1")]
12943    pub func_id: ::core::option::Option<u64>,
12944    #[prost(uint64, optional, tag="2")]
12945    pub res_a1: ::core::option::Option<u64>,
12946    #[prost(uint64, optional, tag="3")]
12947    pub res_a2: ::core::option::Option<u64>,
12948    #[prost(uint64, optional, tag="4")]
12949    pub res_a3: ::core::option::Option<u64>,
12950    #[prost(uint64, optional, tag="5")]
12951    pub res_a4: ::core::option::Option<u64>,
12952    #[prost(int32, optional, tag="6")]
12953    pub handled: ::core::option::Option<i32>,
12954    #[prost(int32, optional, tag="7")]
12955    pub err: ::core::option::Option<i32>,
12956}
12957#[derive(Clone, PartialEq, ::prost::Message)]
12958pub struct IommuIdmapFtraceEvent {
12959    #[prost(uint64, optional, tag="1")]
12960    pub from: ::core::option::Option<u64>,
12961    #[prost(uint64, optional, tag="2")]
12962    pub to: ::core::option::Option<u64>,
12963    #[prost(int32, optional, tag="3")]
12964    pub prot: ::core::option::Option<i32>,
12965}
12966#[derive(Clone, PartialEq, ::prost::Message)]
12967pub struct PsciMemProtectFtraceEvent {
12968    #[prost(uint64, optional, tag="1")]
12969    pub count: ::core::option::Option<u64>,
12970    #[prost(uint64, optional, tag="2")]
12971    pub was: ::core::option::Option<u64>,
12972}
12973// End of protos/perfetto/trace/ftrace/hyp.proto
12974
12975// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
12976
12977#[derive(Clone, PartialEq, ::prost::Message)]
12978pub struct HypervisorHostHcallFtraceEvent {
12979    #[prost(uint32, optional, tag="1")]
12980    pub id: ::core::option::Option<u32>,
12981    #[prost(uint32, optional, tag="2")]
12982    pub invalid: ::core::option::Option<u32>,
12983}
12984#[derive(Clone, PartialEq, ::prost::Message)]
12985pub struct HypervisorHostSmcFtraceEvent {
12986    #[prost(uint64, optional, tag="1")]
12987    pub id: ::core::option::Option<u64>,
12988    #[prost(uint32, optional, tag="2")]
12989    pub forwarded: ::core::option::Option<u32>,
12990}
12991#[derive(Clone, PartialEq, ::prost::Message)]
12992pub struct HypervisorHypExitFtraceEvent {
12993}
12994#[derive(Clone, PartialEq, ::prost::Message)]
12995pub struct HypervisorIommuIdmapFtraceEvent {
12996    #[prost(uint64, optional, tag="1")]
12997    pub from: ::core::option::Option<u64>,
12998    #[prost(uint64, optional, tag="2")]
12999    pub to: ::core::option::Option<u64>,
13000    #[prost(int32, optional, tag="3")]
13001    pub prot: ::core::option::Option<i32>,
13002}
13003#[derive(Clone, PartialEq, ::prost::Message)]
13004pub struct HypervisorPsciMemProtectFtraceEvent {
13005    #[prost(uint64, optional, tag="1")]
13006    pub count: ::core::option::Option<u64>,
13007    #[prost(uint64, optional, tag="2")]
13008    pub was: ::core::option::Option<u64>,
13009}
13010#[derive(Clone, PartialEq, ::prost::Message)]
13011pub struct HypervisorHostMemAbortFtraceEvent {
13012    #[prost(uint64, optional, tag="1")]
13013    pub esr: ::core::option::Option<u64>,
13014    #[prost(uint64, optional, tag="2")]
13015    pub addr: ::core::option::Option<u64>,
13016}
13017#[derive(Clone, PartialEq, ::prost::Message)]
13018pub struct HypervisorHypEnterFtraceEvent {
13019}
13020#[derive(Clone, PartialEq, ::prost::Message)]
13021pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13022    #[prost(uint32, optional, tag="1")]
13023    pub map: ::core::option::Option<u32>,
13024}
13025#[derive(Clone, PartialEq, ::prost::Message)]
13026pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13027    #[prost(uint64, optional, tag="1")]
13028    pub esr: ::core::option::Option<u64>,
13029}
13030// End of protos/perfetto/trace/ftrace/hypervisor.proto
13031
13032// Begin of protos/perfetto/trace/ftrace/i2c.proto
13033
13034#[derive(Clone, PartialEq, ::prost::Message)]
13035pub struct I2cReadFtraceEvent {
13036    #[prost(int32, optional, tag="1")]
13037    pub adapter_nr: ::core::option::Option<i32>,
13038    #[prost(uint32, optional, tag="2")]
13039    pub msg_nr: ::core::option::Option<u32>,
13040    #[prost(uint32, optional, tag="3")]
13041    pub addr: ::core::option::Option<u32>,
13042    #[prost(uint32, optional, tag="4")]
13043    pub flags: ::core::option::Option<u32>,
13044    #[prost(uint32, optional, tag="5")]
13045    pub len: ::core::option::Option<u32>,
13046}
13047#[derive(Clone, PartialEq, ::prost::Message)]
13048pub struct I2cWriteFtraceEvent {
13049    #[prost(int32, optional, tag="1")]
13050    pub adapter_nr: ::core::option::Option<i32>,
13051    #[prost(uint32, optional, tag="2")]
13052    pub msg_nr: ::core::option::Option<u32>,
13053    #[prost(uint32, optional, tag="3")]
13054    pub addr: ::core::option::Option<u32>,
13055    #[prost(uint32, optional, tag="4")]
13056    pub flags: ::core::option::Option<u32>,
13057    #[prost(uint32, optional, tag="5")]
13058    pub len: ::core::option::Option<u32>,
13059    #[prost(bytes="vec", optional, tag="7")]
13060    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13061}
13062#[derive(Clone, PartialEq, ::prost::Message)]
13063pub struct I2cResultFtraceEvent {
13064    #[prost(int32, optional, tag="1")]
13065    pub adapter_nr: ::core::option::Option<i32>,
13066    #[prost(uint32, optional, tag="2")]
13067    pub nr_msgs: ::core::option::Option<u32>,
13068    #[prost(int32, optional, tag="3")]
13069    pub ret: ::core::option::Option<i32>,
13070}
13071#[derive(Clone, PartialEq, ::prost::Message)]
13072pub struct I2cReplyFtraceEvent {
13073    #[prost(int32, optional, tag="1")]
13074    pub adapter_nr: ::core::option::Option<i32>,
13075    #[prost(uint32, optional, tag="2")]
13076    pub msg_nr: ::core::option::Option<u32>,
13077    #[prost(uint32, optional, tag="3")]
13078    pub addr: ::core::option::Option<u32>,
13079    #[prost(uint32, optional, tag="4")]
13080    pub flags: ::core::option::Option<u32>,
13081    #[prost(uint32, optional, tag="5")]
13082    pub len: ::core::option::Option<u32>,
13083    #[prost(bytes="vec", optional, tag="7")]
13084    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13085}
13086#[derive(Clone, PartialEq, ::prost::Message)]
13087pub struct SmbusReadFtraceEvent {
13088    #[prost(int32, optional, tag="1")]
13089    pub adapter_nr: ::core::option::Option<i32>,
13090    #[prost(uint32, optional, tag="2")]
13091    pub flags: ::core::option::Option<u32>,
13092    #[prost(uint32, optional, tag="3")]
13093    pub addr: ::core::option::Option<u32>,
13094    #[prost(uint32, optional, tag="4")]
13095    pub command: ::core::option::Option<u32>,
13096    #[prost(uint32, optional, tag="5")]
13097    pub protocol: ::core::option::Option<u32>,
13098}
13099#[derive(Clone, PartialEq, ::prost::Message)]
13100pub struct SmbusWriteFtraceEvent {
13101    #[prost(int32, optional, tag="1")]
13102    pub adapter_nr: ::core::option::Option<i32>,
13103    #[prost(uint32, optional, tag="2")]
13104    pub addr: ::core::option::Option<u32>,
13105    #[prost(uint32, optional, tag="3")]
13106    pub flags: ::core::option::Option<u32>,
13107    #[prost(uint32, optional, tag="4")]
13108    pub command: ::core::option::Option<u32>,
13109    #[prost(uint32, optional, tag="5")]
13110    pub len: ::core::option::Option<u32>,
13111    #[prost(uint32, optional, tag="6")]
13112    pub protocol: ::core::option::Option<u32>,
13113}
13114#[derive(Clone, PartialEq, ::prost::Message)]
13115pub struct SmbusResultFtraceEvent {
13116    #[prost(int32, optional, tag="1")]
13117    pub adapter_nr: ::core::option::Option<i32>,
13118    #[prost(uint32, optional, tag="2")]
13119    pub addr: ::core::option::Option<u32>,
13120    #[prost(uint32, optional, tag="3")]
13121    pub flags: ::core::option::Option<u32>,
13122    #[prost(uint32, optional, tag="4")]
13123    pub read_write: ::core::option::Option<u32>,
13124    #[prost(uint32, optional, tag="5")]
13125    pub command: ::core::option::Option<u32>,
13126    #[prost(int32, optional, tag="6")]
13127    pub res: ::core::option::Option<i32>,
13128    #[prost(uint32, optional, tag="7")]
13129    pub protocol: ::core::option::Option<u32>,
13130}
13131#[derive(Clone, PartialEq, ::prost::Message)]
13132pub struct SmbusReplyFtraceEvent {
13133    #[prost(int32, optional, tag="1")]
13134    pub adapter_nr: ::core::option::Option<i32>,
13135    #[prost(uint32, optional, tag="2")]
13136    pub addr: ::core::option::Option<u32>,
13137    #[prost(uint32, optional, tag="3")]
13138    pub flags: ::core::option::Option<u32>,
13139    #[prost(uint32, optional, tag="4")]
13140    pub command: ::core::option::Option<u32>,
13141    #[prost(uint32, optional, tag="5")]
13142    pub len: ::core::option::Option<u32>,
13143    #[prost(uint32, optional, tag="6")]
13144    pub protocol: ::core::option::Option<u32>,
13145}
13146// End of protos/perfetto/trace/ftrace/i2c.proto
13147
13148// Begin of protos/perfetto/trace/ftrace/ion.proto
13149
13150#[derive(Clone, PartialEq, ::prost::Message)]
13151pub struct IonStatFtraceEvent {
13152    #[prost(uint32, optional, tag="1")]
13153    pub buffer_id: ::core::option::Option<u32>,
13154    #[prost(int64, optional, tag="2")]
13155    pub len: ::core::option::Option<i64>,
13156    #[prost(uint64, optional, tag="3")]
13157    pub total_allocated: ::core::option::Option<u64>,
13158}
13159// End of protos/perfetto/trace/ftrace/ion.proto
13160
13161// Begin of protos/perfetto/trace/ftrace/ipi.proto
13162
13163#[derive(Clone, PartialEq, ::prost::Message)]
13164pub struct IpiEntryFtraceEvent {
13165    #[prost(string, optional, tag="1")]
13166    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13167}
13168#[derive(Clone, PartialEq, ::prost::Message)]
13169pub struct IpiExitFtraceEvent {
13170    #[prost(string, optional, tag="1")]
13171    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13172}
13173#[derive(Clone, PartialEq, ::prost::Message)]
13174pub struct IpiRaiseFtraceEvent {
13175    #[prost(uint32, optional, tag="1")]
13176    pub target_cpus: ::core::option::Option<u32>,
13177    #[prost(string, optional, tag="2")]
13178    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13179}
13180// End of protos/perfetto/trace/ftrace/ipi.proto
13181
13182// Begin of protos/perfetto/trace/ftrace/irq.proto
13183
13184#[derive(Clone, PartialEq, ::prost::Message)]
13185pub struct SoftirqEntryFtraceEvent {
13186    #[prost(uint32, optional, tag="1")]
13187    pub vec: ::core::option::Option<u32>,
13188}
13189#[derive(Clone, PartialEq, ::prost::Message)]
13190pub struct SoftirqExitFtraceEvent {
13191    #[prost(uint32, optional, tag="1")]
13192    pub vec: ::core::option::Option<u32>,
13193}
13194#[derive(Clone, PartialEq, ::prost::Message)]
13195pub struct SoftirqRaiseFtraceEvent {
13196    #[prost(uint32, optional, tag="1")]
13197    pub vec: ::core::option::Option<u32>,
13198}
13199#[derive(Clone, PartialEq, ::prost::Message)]
13200pub struct IrqHandlerEntryFtraceEvent {
13201    #[prost(int32, optional, tag="1")]
13202    pub irq: ::core::option::Option<i32>,
13203    #[prost(string, optional, tag="2")]
13204    pub name: ::core::option::Option<::prost::alloc::string::String>,
13205    #[prost(uint32, optional, tag="3")]
13206    pub handler: ::core::option::Option<u32>,
13207}
13208#[derive(Clone, PartialEq, ::prost::Message)]
13209pub struct IrqHandlerExitFtraceEvent {
13210    #[prost(int32, optional, tag="1")]
13211    pub irq: ::core::option::Option<i32>,
13212    #[prost(int32, optional, tag="2")]
13213    pub ret: ::core::option::Option<i32>,
13214}
13215// End of protos/perfetto/trace/ftrace/irq.proto
13216
13217// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
13218
13219#[derive(Clone, PartialEq, ::prost::Message)]
13220pub struct LocalTimerEntryFtraceEvent {
13221    #[prost(int32, optional, tag="1")]
13222    pub vector: ::core::option::Option<i32>,
13223}
13224#[derive(Clone, PartialEq, ::prost::Message)]
13225pub struct LocalTimerExitFtraceEvent {
13226    #[prost(int32, optional, tag="1")]
13227    pub vector: ::core::option::Option<i32>,
13228}
13229// End of protos/perfetto/trace/ftrace/irq_vectors.proto
13230
13231// Begin of protos/perfetto/trace/ftrace/kgsl.proto
13232
13233#[derive(Clone, PartialEq, ::prost::Message)]
13234pub struct KgslGpuFrequencyFtraceEvent {
13235    #[prost(uint32, optional, tag="1")]
13236    pub gpu_freq: ::core::option::Option<u32>,
13237    #[prost(uint32, optional, tag="2")]
13238    pub gpu_id: ::core::option::Option<u32>,
13239}
13240#[derive(Clone, PartialEq, ::prost::Message)]
13241pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13242    #[prost(uint32, optional, tag="1")]
13243    pub id: ::core::option::Option<u32>,
13244    #[prost(uint32, optional, tag="2")]
13245    pub timestamp: ::core::option::Option<u32>,
13246    #[prost(uint32, optional, tag="3")]
13247    pub queued: ::core::option::Option<u32>,
13248    #[prost(uint32, optional, tag="4")]
13249    pub flags: ::core::option::Option<u32>,
13250    #[prost(uint32, optional, tag="5")]
13251    pub prio: ::core::option::Option<u32>,
13252}
13253#[derive(Clone, PartialEq, ::prost::Message)]
13254pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13255    #[prost(uint32, optional, tag="1")]
13256    pub id: ::core::option::Option<u32>,
13257    #[prost(uint32, optional, tag="2")]
13258    pub timestamp: ::core::option::Option<u32>,
13259    #[prost(int64, optional, tag="3")]
13260    pub inflight: ::core::option::Option<i64>,
13261    #[prost(uint32, optional, tag="4")]
13262    pub flags: ::core::option::Option<u32>,
13263    #[prost(uint64, optional, tag="5")]
13264    pub ticks: ::core::option::Option<u64>,
13265    #[prost(uint64, optional, tag="6")]
13266    pub secs: ::core::option::Option<u64>,
13267    #[prost(uint64, optional, tag="7")]
13268    pub usecs: ::core::option::Option<u64>,
13269    #[prost(int32, optional, tag="8")]
13270    pub prio: ::core::option::Option<i32>,
13271    #[prost(int32, optional, tag="9")]
13272    pub rb_id: ::core::option::Option<i32>,
13273    #[prost(uint32, optional, tag="10")]
13274    pub rptr: ::core::option::Option<u32>,
13275    #[prost(uint32, optional, tag="11")]
13276    pub wptr: ::core::option::Option<u32>,
13277    #[prost(int32, optional, tag="12")]
13278    pub q_inflight: ::core::option::Option<i32>,
13279    #[prost(int32, optional, tag="13")]
13280    pub dispatch_queue: ::core::option::Option<i32>,
13281}
13282#[derive(Clone, PartialEq, ::prost::Message)]
13283pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13284    #[prost(uint32, optional, tag="1")]
13285    pub id: ::core::option::Option<u32>,
13286    #[prost(uint32, optional, tag="2")]
13287    pub timestamp: ::core::option::Option<u32>,
13288    #[prost(uint64, optional, tag="3")]
13289    pub ticks: ::core::option::Option<u64>,
13290    #[prost(int32, optional, tag="4")]
13291    pub prio: ::core::option::Option<i32>,
13292}
13293#[derive(Clone, PartialEq, ::prost::Message)]
13294pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13295    #[prost(uint32, optional, tag="1")]
13296    pub id: ::core::option::Option<u32>,
13297    #[prost(uint32, optional, tag="2")]
13298    pub timestamp: ::core::option::Option<u32>,
13299    #[prost(int64, optional, tag="3")]
13300    pub inflight: ::core::option::Option<i64>,
13301    #[prost(uint32, optional, tag="4")]
13302    pub recovery: ::core::option::Option<u32>,
13303    #[prost(uint32, optional, tag="5")]
13304    pub flags: ::core::option::Option<u32>,
13305    #[prost(uint64, optional, tag="6")]
13306    pub start: ::core::option::Option<u64>,
13307    #[prost(uint64, optional, tag="7")]
13308    pub retire: ::core::option::Option<u64>,
13309    #[prost(int32, optional, tag="8")]
13310    pub prio: ::core::option::Option<i32>,
13311    #[prost(int32, optional, tag="9")]
13312    pub rb_id: ::core::option::Option<i32>,
13313    #[prost(uint32, optional, tag="10")]
13314    pub rptr: ::core::option::Option<u32>,
13315    #[prost(uint32, optional, tag="11")]
13316    pub wptr: ::core::option::Option<u32>,
13317    #[prost(int32, optional, tag="12")]
13318    pub q_inflight: ::core::option::Option<i32>,
13319    #[prost(uint64, optional, tag="13")]
13320    pub fault_recovery: ::core::option::Option<u64>,
13321    #[prost(uint32, optional, tag="14")]
13322    pub dispatch_queue: ::core::option::Option<u32>,
13323    #[prost(uint64, optional, tag="15")]
13324    pub submitted_to_rb: ::core::option::Option<u64>,
13325    #[prost(uint64, optional, tag="16")]
13326    pub retired_on_gmu: ::core::option::Option<u64>,
13327    #[prost(uint64, optional, tag="17")]
13328    pub active: ::core::option::Option<u64>,
13329}
13330// End of protos/perfetto/trace/ftrace/kgsl.proto
13331
13332// Begin of protos/perfetto/trace/ftrace/kmem.proto
13333
13334#[derive(Clone, PartialEq, ::prost::Message)]
13335pub struct AllocPagesIommuEndFtraceEvent {
13336    #[prost(uint32, optional, tag="1")]
13337    pub gfp_flags: ::core::option::Option<u32>,
13338    #[prost(uint32, optional, tag="2")]
13339    pub order: ::core::option::Option<u32>,
13340}
13341#[derive(Clone, PartialEq, ::prost::Message)]
13342pub struct AllocPagesIommuFailFtraceEvent {
13343    #[prost(uint32, optional, tag="1")]
13344    pub gfp_flags: ::core::option::Option<u32>,
13345    #[prost(uint32, optional, tag="2")]
13346    pub order: ::core::option::Option<u32>,
13347}
13348#[derive(Clone, PartialEq, ::prost::Message)]
13349pub struct AllocPagesIommuStartFtraceEvent {
13350    #[prost(uint32, optional, tag="1")]
13351    pub gfp_flags: ::core::option::Option<u32>,
13352    #[prost(uint32, optional, tag="2")]
13353    pub order: ::core::option::Option<u32>,
13354}
13355#[derive(Clone, PartialEq, ::prost::Message)]
13356pub struct AllocPagesSysEndFtraceEvent {
13357    #[prost(uint32, optional, tag="1")]
13358    pub gfp_flags: ::core::option::Option<u32>,
13359    #[prost(uint32, optional, tag="2")]
13360    pub order: ::core::option::Option<u32>,
13361}
13362#[derive(Clone, PartialEq, ::prost::Message)]
13363pub struct AllocPagesSysFailFtraceEvent {
13364    #[prost(uint32, optional, tag="1")]
13365    pub gfp_flags: ::core::option::Option<u32>,
13366    #[prost(uint32, optional, tag="2")]
13367    pub order: ::core::option::Option<u32>,
13368}
13369#[derive(Clone, PartialEq, ::prost::Message)]
13370pub struct AllocPagesSysStartFtraceEvent {
13371    #[prost(uint32, optional, tag="1")]
13372    pub gfp_flags: ::core::option::Option<u32>,
13373    #[prost(uint32, optional, tag="2")]
13374    pub order: ::core::option::Option<u32>,
13375}
13376#[derive(Clone, PartialEq, ::prost::Message)]
13377pub struct DmaAllocContiguousRetryFtraceEvent {
13378    #[prost(int32, optional, tag="1")]
13379    pub tries: ::core::option::Option<i32>,
13380}
13381#[derive(Clone, PartialEq, ::prost::Message)]
13382pub struct IommuMapRangeFtraceEvent {
13383    #[prost(uint64, optional, tag="1")]
13384    pub chunk_size: ::core::option::Option<u64>,
13385    #[prost(uint64, optional, tag="2")]
13386    pub len: ::core::option::Option<u64>,
13387    #[prost(uint64, optional, tag="3")]
13388    pub pa: ::core::option::Option<u64>,
13389    #[prost(uint64, optional, tag="4")]
13390    pub va: ::core::option::Option<u64>,
13391}
13392#[derive(Clone, PartialEq, ::prost::Message)]
13393pub struct IommuSecPtblMapRangeEndFtraceEvent {
13394    #[prost(uint64, optional, tag="1")]
13395    pub len: ::core::option::Option<u64>,
13396    #[prost(int32, optional, tag="2")]
13397    pub num: ::core::option::Option<i32>,
13398    #[prost(uint32, optional, tag="3")]
13399    pub pa: ::core::option::Option<u32>,
13400    #[prost(int32, optional, tag="4")]
13401    pub sec_id: ::core::option::Option<i32>,
13402    #[prost(uint64, optional, tag="5")]
13403    pub va: ::core::option::Option<u64>,
13404}
13405#[derive(Clone, PartialEq, ::prost::Message)]
13406pub struct IommuSecPtblMapRangeStartFtraceEvent {
13407    #[prost(uint64, optional, tag="1")]
13408    pub len: ::core::option::Option<u64>,
13409    #[prost(int32, optional, tag="2")]
13410    pub num: ::core::option::Option<i32>,
13411    #[prost(uint32, optional, tag="3")]
13412    pub pa: ::core::option::Option<u32>,
13413    #[prost(int32, optional, tag="4")]
13414    pub sec_id: ::core::option::Option<i32>,
13415    #[prost(uint64, optional, tag="5")]
13416    pub va: ::core::option::Option<u64>,
13417}
13418#[derive(Clone, PartialEq, ::prost::Message)]
13419pub struct IonAllocBufferEndFtraceEvent {
13420    #[prost(string, optional, tag="1")]
13421    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13422    #[prost(uint32, optional, tag="2")]
13423    pub flags: ::core::option::Option<u32>,
13424    #[prost(string, optional, tag="3")]
13425    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13426    #[prost(uint64, optional, tag="4")]
13427    pub len: ::core::option::Option<u64>,
13428    #[prost(uint32, optional, tag="5")]
13429    pub mask: ::core::option::Option<u32>,
13430}
13431#[derive(Clone, PartialEq, ::prost::Message)]
13432pub struct IonAllocBufferFailFtraceEvent {
13433    #[prost(string, optional, tag="1")]
13434    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13435    #[prost(int64, optional, tag="2")]
13436    pub error: ::core::option::Option<i64>,
13437    #[prost(uint32, optional, tag="3")]
13438    pub flags: ::core::option::Option<u32>,
13439    #[prost(string, optional, tag="4")]
13440    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13441    #[prost(uint64, optional, tag="5")]
13442    pub len: ::core::option::Option<u64>,
13443    #[prost(uint32, optional, tag="6")]
13444    pub mask: ::core::option::Option<u32>,
13445}
13446#[derive(Clone, PartialEq, ::prost::Message)]
13447pub struct IonAllocBufferFallbackFtraceEvent {
13448    #[prost(string, optional, tag="1")]
13449    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13450    #[prost(int64, optional, tag="2")]
13451    pub error: ::core::option::Option<i64>,
13452    #[prost(uint32, optional, tag="3")]
13453    pub flags: ::core::option::Option<u32>,
13454    #[prost(string, optional, tag="4")]
13455    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13456    #[prost(uint64, optional, tag="5")]
13457    pub len: ::core::option::Option<u64>,
13458    #[prost(uint32, optional, tag="6")]
13459    pub mask: ::core::option::Option<u32>,
13460}
13461#[derive(Clone, PartialEq, ::prost::Message)]
13462pub struct IonAllocBufferStartFtraceEvent {
13463    #[prost(string, optional, tag="1")]
13464    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13465    #[prost(uint32, optional, tag="2")]
13466    pub flags: ::core::option::Option<u32>,
13467    #[prost(string, optional, tag="3")]
13468    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13469    #[prost(uint64, optional, tag="4")]
13470    pub len: ::core::option::Option<u64>,
13471    #[prost(uint32, optional, tag="5")]
13472    pub mask: ::core::option::Option<u32>,
13473}
13474#[derive(Clone, PartialEq, ::prost::Message)]
13475pub struct IonCpAllocRetryFtraceEvent {
13476    #[prost(int32, optional, tag="1")]
13477    pub tries: ::core::option::Option<i32>,
13478}
13479#[derive(Clone, PartialEq, ::prost::Message)]
13480pub struct IonCpSecureBufferEndFtraceEvent {
13481    #[prost(uint64, optional, tag="1")]
13482    pub align: ::core::option::Option<u64>,
13483    #[prost(uint64, optional, tag="2")]
13484    pub flags: ::core::option::Option<u64>,
13485    #[prost(string, optional, tag="3")]
13486    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13487    #[prost(uint64, optional, tag="4")]
13488    pub len: ::core::option::Option<u64>,
13489}
13490#[derive(Clone, PartialEq, ::prost::Message)]
13491pub struct IonCpSecureBufferStartFtraceEvent {
13492    #[prost(uint64, optional, tag="1")]
13493    pub align: ::core::option::Option<u64>,
13494    #[prost(uint64, optional, tag="2")]
13495    pub flags: ::core::option::Option<u64>,
13496    #[prost(string, optional, tag="3")]
13497    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13498    #[prost(uint64, optional, tag="4")]
13499    pub len: ::core::option::Option<u64>,
13500}
13501#[derive(Clone, PartialEq, ::prost::Message)]
13502pub struct IonPrefetchingFtraceEvent {
13503    #[prost(uint64, optional, tag="1")]
13504    pub len: ::core::option::Option<u64>,
13505}
13506#[derive(Clone, PartialEq, ::prost::Message)]
13507pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13508    #[prost(uint32, optional, tag="1")]
13509    pub is_prefetch: ::core::option::Option<u32>,
13510    #[prost(uint64, optional, tag="2")]
13511    pub len: ::core::option::Option<u64>,
13512    #[prost(int32, optional, tag="3")]
13513    pub pool_total: ::core::option::Option<i32>,
13514}
13515#[derive(Clone, PartialEq, ::prost::Message)]
13516pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13517    #[prost(uint32, optional, tag="1")]
13518    pub is_prefetch: ::core::option::Option<u32>,
13519    #[prost(uint64, optional, tag="2")]
13520    pub len: ::core::option::Option<u64>,
13521    #[prost(int32, optional, tag="3")]
13522    pub pool_total: ::core::option::Option<i32>,
13523}
13524#[derive(Clone, PartialEq, ::prost::Message)]
13525pub struct IonSecureCmaAllocateEndFtraceEvent {
13526    #[prost(uint64, optional, tag="1")]
13527    pub align: ::core::option::Option<u64>,
13528    #[prost(uint64, optional, tag="2")]
13529    pub flags: ::core::option::Option<u64>,
13530    #[prost(string, optional, tag="3")]
13531    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13532    #[prost(uint64, optional, tag="4")]
13533    pub len: ::core::option::Option<u64>,
13534}
13535#[derive(Clone, PartialEq, ::prost::Message)]
13536pub struct IonSecureCmaAllocateStartFtraceEvent {
13537    #[prost(uint64, optional, tag="1")]
13538    pub align: ::core::option::Option<u64>,
13539    #[prost(uint64, optional, tag="2")]
13540    pub flags: ::core::option::Option<u64>,
13541    #[prost(string, optional, tag="3")]
13542    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13543    #[prost(uint64, optional, tag="4")]
13544    pub len: ::core::option::Option<u64>,
13545}
13546#[derive(Clone, PartialEq, ::prost::Message)]
13547pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13548    #[prost(uint64, optional, tag="1")]
13549    pub drained_size: ::core::option::Option<u64>,
13550    #[prost(uint64, optional, tag="2")]
13551    pub skipped_size: ::core::option::Option<u64>,
13552}
13553#[derive(Clone, PartialEq, ::prost::Message)]
13554pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13555    #[prost(uint64, optional, tag="1")]
13556    pub drained_size: ::core::option::Option<u64>,
13557    #[prost(uint64, optional, tag="2")]
13558    pub skipped_size: ::core::option::Option<u64>,
13559}
13560#[derive(Clone, PartialEq, ::prost::Message)]
13561pub struct KfreeFtraceEvent {
13562    #[prost(uint64, optional, tag="1")]
13563    pub call_site: ::core::option::Option<u64>,
13564    #[prost(uint64, optional, tag="2")]
13565    pub ptr: ::core::option::Option<u64>,
13566}
13567#[derive(Clone, PartialEq, ::prost::Message)]
13568pub struct KmallocFtraceEvent {
13569    #[prost(uint64, optional, tag="1")]
13570    pub bytes_alloc: ::core::option::Option<u64>,
13571    #[prost(uint64, optional, tag="2")]
13572    pub bytes_req: ::core::option::Option<u64>,
13573    #[prost(uint64, optional, tag="3")]
13574    pub call_site: ::core::option::Option<u64>,
13575    #[prost(uint32, optional, tag="4")]
13576    pub gfp_flags: ::core::option::Option<u32>,
13577    #[prost(uint64, optional, tag="5")]
13578    pub ptr: ::core::option::Option<u64>,
13579}
13580#[derive(Clone, PartialEq, ::prost::Message)]
13581pub struct KmallocNodeFtraceEvent {
13582    #[prost(uint64, optional, tag="1")]
13583    pub bytes_alloc: ::core::option::Option<u64>,
13584    #[prost(uint64, optional, tag="2")]
13585    pub bytes_req: ::core::option::Option<u64>,
13586    #[prost(uint64, optional, tag="3")]
13587    pub call_site: ::core::option::Option<u64>,
13588    #[prost(uint32, optional, tag="4")]
13589    pub gfp_flags: ::core::option::Option<u32>,
13590    #[prost(int32, optional, tag="5")]
13591    pub node: ::core::option::Option<i32>,
13592    #[prost(uint64, optional, tag="6")]
13593    pub ptr: ::core::option::Option<u64>,
13594}
13595#[derive(Clone, PartialEq, ::prost::Message)]
13596pub struct KmemCacheAllocFtraceEvent {
13597    #[prost(uint64, optional, tag="1")]
13598    pub bytes_alloc: ::core::option::Option<u64>,
13599    #[prost(uint64, optional, tag="2")]
13600    pub bytes_req: ::core::option::Option<u64>,
13601    #[prost(uint64, optional, tag="3")]
13602    pub call_site: ::core::option::Option<u64>,
13603    #[prost(uint32, optional, tag="4")]
13604    pub gfp_flags: ::core::option::Option<u32>,
13605    #[prost(uint64, optional, tag="5")]
13606    pub ptr: ::core::option::Option<u64>,
13607}
13608#[derive(Clone, PartialEq, ::prost::Message)]
13609pub struct KmemCacheAllocNodeFtraceEvent {
13610    #[prost(uint64, optional, tag="1")]
13611    pub bytes_alloc: ::core::option::Option<u64>,
13612    #[prost(uint64, optional, tag="2")]
13613    pub bytes_req: ::core::option::Option<u64>,
13614    #[prost(uint64, optional, tag="3")]
13615    pub call_site: ::core::option::Option<u64>,
13616    #[prost(uint32, optional, tag="4")]
13617    pub gfp_flags: ::core::option::Option<u32>,
13618    #[prost(int32, optional, tag="5")]
13619    pub node: ::core::option::Option<i32>,
13620    #[prost(uint64, optional, tag="6")]
13621    pub ptr: ::core::option::Option<u64>,
13622}
13623#[derive(Clone, PartialEq, ::prost::Message)]
13624pub struct KmemCacheFreeFtraceEvent {
13625    #[prost(uint64, optional, tag="1")]
13626    pub call_site: ::core::option::Option<u64>,
13627    #[prost(uint64, optional, tag="2")]
13628    pub ptr: ::core::option::Option<u64>,
13629}
13630#[derive(Clone, PartialEq, ::prost::Message)]
13631pub struct MigratePagesEndFtraceEvent {
13632    #[prost(int32, optional, tag="1")]
13633    pub mode: ::core::option::Option<i32>,
13634}
13635#[derive(Clone, PartialEq, ::prost::Message)]
13636pub struct MigratePagesStartFtraceEvent {
13637    #[prost(int32, optional, tag="1")]
13638    pub mode: ::core::option::Option<i32>,
13639}
13640#[derive(Clone, PartialEq, ::prost::Message)]
13641pub struct MigrateRetryFtraceEvent {
13642    #[prost(int32, optional, tag="1")]
13643    pub tries: ::core::option::Option<i32>,
13644}
13645#[derive(Clone, PartialEq, ::prost::Message)]
13646pub struct MmPageAllocFtraceEvent {
13647    #[prost(uint32, optional, tag="1")]
13648    pub gfp_flags: ::core::option::Option<u32>,
13649    #[prost(int32, optional, tag="2")]
13650    pub migratetype: ::core::option::Option<i32>,
13651    #[prost(uint32, optional, tag="3")]
13652    pub order: ::core::option::Option<u32>,
13653    #[prost(uint64, optional, tag="4")]
13654    pub page: ::core::option::Option<u64>,
13655    #[prost(uint64, optional, tag="5")]
13656    pub pfn: ::core::option::Option<u64>,
13657}
13658#[derive(Clone, PartialEq, ::prost::Message)]
13659pub struct MmPageAllocExtfragFtraceEvent {
13660    #[prost(int32, optional, tag="1")]
13661    pub alloc_migratetype: ::core::option::Option<i32>,
13662    #[prost(int32, optional, tag="2")]
13663    pub alloc_order: ::core::option::Option<i32>,
13664    #[prost(int32, optional, tag="3")]
13665    pub fallback_migratetype: ::core::option::Option<i32>,
13666    #[prost(int32, optional, tag="4")]
13667    pub fallback_order: ::core::option::Option<i32>,
13668    #[prost(uint64, optional, tag="5")]
13669    pub page: ::core::option::Option<u64>,
13670    #[prost(int32, optional, tag="6")]
13671    pub change_ownership: ::core::option::Option<i32>,
13672    #[prost(uint64, optional, tag="7")]
13673    pub pfn: ::core::option::Option<u64>,
13674}
13675#[derive(Clone, PartialEq, ::prost::Message)]
13676pub struct MmPageAllocZoneLockedFtraceEvent {
13677    #[prost(int32, optional, tag="1")]
13678    pub migratetype: ::core::option::Option<i32>,
13679    #[prost(uint32, optional, tag="2")]
13680    pub order: ::core::option::Option<u32>,
13681    #[prost(uint64, optional, tag="3")]
13682    pub page: ::core::option::Option<u64>,
13683    #[prost(uint64, optional, tag="4")]
13684    pub pfn: ::core::option::Option<u64>,
13685}
13686#[derive(Clone, PartialEq, ::prost::Message)]
13687pub struct MmPageFreeFtraceEvent {
13688    #[prost(uint32, optional, tag="1")]
13689    pub order: ::core::option::Option<u32>,
13690    #[prost(uint64, optional, tag="2")]
13691    pub page: ::core::option::Option<u64>,
13692    #[prost(uint64, optional, tag="3")]
13693    pub pfn: ::core::option::Option<u64>,
13694}
13695#[derive(Clone, PartialEq, ::prost::Message)]
13696pub struct MmPageFreeBatchedFtraceEvent {
13697    #[prost(int32, optional, tag="1")]
13698    pub cold: ::core::option::Option<i32>,
13699    #[prost(uint64, optional, tag="2")]
13700    pub page: ::core::option::Option<u64>,
13701    #[prost(uint64, optional, tag="3")]
13702    pub pfn: ::core::option::Option<u64>,
13703}
13704#[derive(Clone, PartialEq, ::prost::Message)]
13705pub struct MmPagePcpuDrainFtraceEvent {
13706    #[prost(int32, optional, tag="1")]
13707    pub migratetype: ::core::option::Option<i32>,
13708    #[prost(uint32, optional, tag="2")]
13709    pub order: ::core::option::Option<u32>,
13710    #[prost(uint64, optional, tag="3")]
13711    pub page: ::core::option::Option<u64>,
13712    #[prost(uint64, optional, tag="4")]
13713    pub pfn: ::core::option::Option<u64>,
13714}
13715#[derive(Clone, PartialEq, ::prost::Message)]
13716pub struct RssStatFtraceEvent {
13717    #[prost(int32, optional, tag="1")]
13718    pub member: ::core::option::Option<i32>,
13719    #[prost(int64, optional, tag="2")]
13720    pub size: ::core::option::Option<i64>,
13721    #[prost(uint32, optional, tag="3")]
13722    pub curr: ::core::option::Option<u32>,
13723    #[prost(uint32, optional, tag="4")]
13724    pub mm_id: ::core::option::Option<u32>,
13725}
13726#[derive(Clone, PartialEq, ::prost::Message)]
13727pub struct IonHeapShrinkFtraceEvent {
13728    #[prost(string, optional, tag="1")]
13729    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13730    #[prost(uint64, optional, tag="2")]
13731    pub len: ::core::option::Option<u64>,
13732    #[prost(int64, optional, tag="3")]
13733    pub total_allocated: ::core::option::Option<i64>,
13734}
13735#[derive(Clone, PartialEq, ::prost::Message)]
13736pub struct IonHeapGrowFtraceEvent {
13737    #[prost(string, optional, tag="1")]
13738    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13739    #[prost(uint64, optional, tag="2")]
13740    pub len: ::core::option::Option<u64>,
13741    #[prost(int64, optional, tag="3")]
13742    pub total_allocated: ::core::option::Option<i64>,
13743}
13744#[derive(Clone, PartialEq, ::prost::Message)]
13745pub struct IonBufferCreateFtraceEvent {
13746    #[prost(uint64, optional, tag="1")]
13747    pub addr: ::core::option::Option<u64>,
13748    #[prost(uint64, optional, tag="2")]
13749    pub len: ::core::option::Option<u64>,
13750}
13751#[derive(Clone, PartialEq, ::prost::Message)]
13752pub struct IonBufferDestroyFtraceEvent {
13753    #[prost(uint64, optional, tag="1")]
13754    pub addr: ::core::option::Option<u64>,
13755    #[prost(uint64, optional, tag="2")]
13756    pub len: ::core::option::Option<u64>,
13757}
13758#[derive(Clone, PartialEq, ::prost::Message)]
13759pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
13760    #[prost(uint64, optional, tag="1")]
13761    pub start: ::core::option::Option<u64>,
13762    #[prost(uint64, optional, tag="2")]
13763    pub end: ::core::option::Option<u64>,
13764    #[prost(uint64, optional, tag="3")]
13765    pub nr_migrated: ::core::option::Option<u64>,
13766    #[prost(uint64, optional, tag="4")]
13767    pub nr_reclaimed: ::core::option::Option<u64>,
13768    #[prost(uint64, optional, tag="5")]
13769    pub nr_mapped: ::core::option::Option<u64>,
13770    #[prost(int32, optional, tag="6")]
13771    pub migratetype: ::core::option::Option<i32>,
13772}
13773#[derive(Clone, PartialEq, ::prost::Message)]
13774pub struct DmabufRssStatFtraceEvent {
13775    #[prost(uint64, optional, tag="1")]
13776    pub rss: ::core::option::Option<u64>,
13777    #[prost(int64, optional, tag="2")]
13778    pub rss_delta: ::core::option::Option<i64>,
13779    #[prost(uint64, optional, tag="3")]
13780    pub i_ino: ::core::option::Option<u64>,
13781}
13782// End of protos/perfetto/trace/ftrace/kmem.proto
13783
13784// Begin of protos/perfetto/trace/ftrace/kvm.proto
13785
13786#[derive(Clone, PartialEq, ::prost::Message)]
13787pub struct KvmAccessFaultFtraceEvent {
13788    #[prost(uint64, optional, tag="1")]
13789    pub ipa: ::core::option::Option<u64>,
13790}
13791#[derive(Clone, PartialEq, ::prost::Message)]
13792pub struct KvmAckIrqFtraceEvent {
13793    #[prost(uint32, optional, tag="1")]
13794    pub irqchip: ::core::option::Option<u32>,
13795    #[prost(uint32, optional, tag="2")]
13796    pub pin: ::core::option::Option<u32>,
13797}
13798#[derive(Clone, PartialEq, ::prost::Message)]
13799pub struct KvmAgeHvaFtraceEvent {
13800    #[prost(uint64, optional, tag="1")]
13801    pub end: ::core::option::Option<u64>,
13802    #[prost(uint64, optional, tag="2")]
13803    pub start: ::core::option::Option<u64>,
13804}
13805#[derive(Clone, PartialEq, ::prost::Message)]
13806pub struct KvmAgePageFtraceEvent {
13807    #[prost(uint64, optional, tag="1")]
13808    pub gfn: ::core::option::Option<u64>,
13809    #[prost(uint64, optional, tag="2")]
13810    pub hva: ::core::option::Option<u64>,
13811    #[prost(uint32, optional, tag="3")]
13812    pub level: ::core::option::Option<u32>,
13813    #[prost(uint32, optional, tag="4")]
13814    pub referenced: ::core::option::Option<u32>,
13815}
13816#[derive(Clone, PartialEq, ::prost::Message)]
13817pub struct KvmArmClearDebugFtraceEvent {
13818    #[prost(uint32, optional, tag="1")]
13819    pub guest_debug: ::core::option::Option<u32>,
13820}
13821#[derive(Clone, PartialEq, ::prost::Message)]
13822pub struct KvmArmSetDreg32FtraceEvent {
13823    #[prost(string, optional, tag="1")]
13824    pub name: ::core::option::Option<::prost::alloc::string::String>,
13825    #[prost(uint32, optional, tag="2")]
13826    pub value: ::core::option::Option<u32>,
13827}
13828#[derive(Clone, PartialEq, ::prost::Message)]
13829pub struct KvmArmSetRegsetFtraceEvent {
13830    #[prost(int32, optional, tag="1")]
13831    pub len: ::core::option::Option<i32>,
13832    #[prost(string, optional, tag="2")]
13833    pub name: ::core::option::Option<::prost::alloc::string::String>,
13834}
13835#[derive(Clone, PartialEq, ::prost::Message)]
13836pub struct KvmArmSetupDebugFtraceEvent {
13837    #[prost(uint32, optional, tag="1")]
13838    pub guest_debug: ::core::option::Option<u32>,
13839    #[prost(uint64, optional, tag="2")]
13840    pub vcpu: ::core::option::Option<u64>,
13841}
13842#[derive(Clone, PartialEq, ::prost::Message)]
13843pub struct KvmEntryFtraceEvent {
13844    #[prost(uint64, optional, tag="1")]
13845    pub vcpu_pc: ::core::option::Option<u64>,
13846}
13847#[derive(Clone, PartialEq, ::prost::Message)]
13848pub struct KvmExitFtraceEvent {
13849    #[prost(uint32, optional, tag="1")]
13850    pub esr_ec: ::core::option::Option<u32>,
13851    #[prost(int32, optional, tag="2")]
13852    pub ret: ::core::option::Option<i32>,
13853    #[prost(uint64, optional, tag="3")]
13854    pub vcpu_pc: ::core::option::Option<u64>,
13855}
13856#[derive(Clone, PartialEq, ::prost::Message)]
13857pub struct KvmFpuFtraceEvent {
13858    #[prost(uint32, optional, tag="1")]
13859    pub load: ::core::option::Option<u32>,
13860}
13861#[derive(Clone, PartialEq, ::prost::Message)]
13862pub struct KvmGetTimerMapFtraceEvent {
13863    #[prost(int32, optional, tag="1")]
13864    pub direct_ptimer: ::core::option::Option<i32>,
13865    #[prost(int32, optional, tag="2")]
13866    pub direct_vtimer: ::core::option::Option<i32>,
13867    #[prost(int32, optional, tag="3")]
13868    pub emul_ptimer: ::core::option::Option<i32>,
13869    #[prost(uint64, optional, tag="4")]
13870    pub vcpu_id: ::core::option::Option<u64>,
13871}
13872#[derive(Clone, PartialEq, ::prost::Message)]
13873pub struct KvmGuestFaultFtraceEvent {
13874    #[prost(uint64, optional, tag="1")]
13875    pub hsr: ::core::option::Option<u64>,
13876    #[prost(uint64, optional, tag="2")]
13877    pub hxfar: ::core::option::Option<u64>,
13878    #[prost(uint64, optional, tag="3")]
13879    pub ipa: ::core::option::Option<u64>,
13880    #[prost(uint64, optional, tag="4")]
13881    pub vcpu_pc: ::core::option::Option<u64>,
13882}
13883#[derive(Clone, PartialEq, ::prost::Message)]
13884pub struct KvmHandleSysRegFtraceEvent {
13885    #[prost(uint64, optional, tag="1")]
13886    pub hsr: ::core::option::Option<u64>,
13887}
13888#[derive(Clone, PartialEq, ::prost::Message)]
13889pub struct KvmHvcArm64FtraceEvent {
13890    #[prost(uint64, optional, tag="1")]
13891    pub imm: ::core::option::Option<u64>,
13892    #[prost(uint64, optional, tag="2")]
13893    pub r0: ::core::option::Option<u64>,
13894    #[prost(uint64, optional, tag="3")]
13895    pub vcpu_pc: ::core::option::Option<u64>,
13896}
13897#[derive(Clone, PartialEq, ::prost::Message)]
13898pub struct KvmIrqLineFtraceEvent {
13899    #[prost(int32, optional, tag="1")]
13900    pub irq_num: ::core::option::Option<i32>,
13901    #[prost(int32, optional, tag="2")]
13902    pub level: ::core::option::Option<i32>,
13903    #[prost(uint32, optional, tag="3")]
13904    pub r#type: ::core::option::Option<u32>,
13905    #[prost(int32, optional, tag="4")]
13906    pub vcpu_idx: ::core::option::Option<i32>,
13907}
13908#[derive(Clone, PartialEq, ::prost::Message)]
13909pub struct KvmMmioFtraceEvent {
13910    #[prost(uint64, optional, tag="1")]
13911    pub gpa: ::core::option::Option<u64>,
13912    #[prost(uint32, optional, tag="2")]
13913    pub len: ::core::option::Option<u32>,
13914    #[prost(uint32, optional, tag="3")]
13915    pub r#type: ::core::option::Option<u32>,
13916    #[prost(uint64, optional, tag="4")]
13917    pub val: ::core::option::Option<u64>,
13918}
13919#[derive(Clone, PartialEq, ::prost::Message)]
13920pub struct KvmMmioEmulateFtraceEvent {
13921    #[prost(uint64, optional, tag="1")]
13922    pub cpsr: ::core::option::Option<u64>,
13923    #[prost(uint64, optional, tag="2")]
13924    pub instr: ::core::option::Option<u64>,
13925    #[prost(uint64, optional, tag="3")]
13926    pub vcpu_pc: ::core::option::Option<u64>,
13927}
13928#[derive(Clone, PartialEq, ::prost::Message)]
13929pub struct KvmSetGuestDebugFtraceEvent {
13930    #[prost(uint32, optional, tag="1")]
13931    pub guest_debug: ::core::option::Option<u32>,
13932    #[prost(uint64, optional, tag="2")]
13933    pub vcpu: ::core::option::Option<u64>,
13934}
13935#[derive(Clone, PartialEq, ::prost::Message)]
13936pub struct KvmSetIrqFtraceEvent {
13937    #[prost(uint32, optional, tag="1")]
13938    pub gsi: ::core::option::Option<u32>,
13939    #[prost(int32, optional, tag="2")]
13940    pub irq_source_id: ::core::option::Option<i32>,
13941    #[prost(int32, optional, tag="3")]
13942    pub level: ::core::option::Option<i32>,
13943}
13944#[derive(Clone, PartialEq, ::prost::Message)]
13945pub struct KvmSetSpteHvaFtraceEvent {
13946    #[prost(uint64, optional, tag="1")]
13947    pub hva: ::core::option::Option<u64>,
13948}
13949#[derive(Clone, PartialEq, ::prost::Message)]
13950pub struct KvmSetWayFlushFtraceEvent {
13951    #[prost(uint32, optional, tag="1")]
13952    pub cache: ::core::option::Option<u32>,
13953    #[prost(uint64, optional, tag="2")]
13954    pub vcpu_pc: ::core::option::Option<u64>,
13955}
13956#[derive(Clone, PartialEq, ::prost::Message)]
13957pub struct KvmSysAccessFtraceEvent {
13958    #[prost(uint32, optional, tag="1")]
13959    pub c_rm: ::core::option::Option<u32>,
13960    #[prost(uint32, optional, tag="2")]
13961    pub c_rn: ::core::option::Option<u32>,
13962    #[prost(uint32, optional, tag="3")]
13963    pub op0: ::core::option::Option<u32>,
13964    #[prost(uint32, optional, tag="4")]
13965    pub op1: ::core::option::Option<u32>,
13966    #[prost(uint32, optional, tag="5")]
13967    pub op2: ::core::option::Option<u32>,
13968    #[prost(uint32, optional, tag="6")]
13969    pub is_write: ::core::option::Option<u32>,
13970    #[prost(string, optional, tag="7")]
13971    pub name: ::core::option::Option<::prost::alloc::string::String>,
13972    #[prost(uint64, optional, tag="8")]
13973    pub vcpu_pc: ::core::option::Option<u64>,
13974}
13975#[derive(Clone, PartialEq, ::prost::Message)]
13976pub struct KvmTestAgeHvaFtraceEvent {
13977    #[prost(uint64, optional, tag="1")]
13978    pub hva: ::core::option::Option<u64>,
13979}
13980#[derive(Clone, PartialEq, ::prost::Message)]
13981pub struct KvmTimerEmulateFtraceEvent {
13982    #[prost(uint32, optional, tag="1")]
13983    pub should_fire: ::core::option::Option<u32>,
13984    #[prost(int32, optional, tag="2")]
13985    pub timer_idx: ::core::option::Option<i32>,
13986}
13987#[derive(Clone, PartialEq, ::prost::Message)]
13988pub struct KvmTimerHrtimerExpireFtraceEvent {
13989    #[prost(int32, optional, tag="1")]
13990    pub timer_idx: ::core::option::Option<i32>,
13991}
13992#[derive(Clone, PartialEq, ::prost::Message)]
13993pub struct KvmTimerRestoreStateFtraceEvent {
13994    #[prost(uint64, optional, tag="1")]
13995    pub ctl: ::core::option::Option<u64>,
13996    #[prost(uint64, optional, tag="2")]
13997    pub cval: ::core::option::Option<u64>,
13998    #[prost(int32, optional, tag="3")]
13999    pub timer_idx: ::core::option::Option<i32>,
14000}
14001#[derive(Clone, PartialEq, ::prost::Message)]
14002pub struct KvmTimerSaveStateFtraceEvent {
14003    #[prost(uint64, optional, tag="1")]
14004    pub ctl: ::core::option::Option<u64>,
14005    #[prost(uint64, optional, tag="2")]
14006    pub cval: ::core::option::Option<u64>,
14007    #[prost(int32, optional, tag="3")]
14008    pub timer_idx: ::core::option::Option<i32>,
14009}
14010#[derive(Clone, PartialEq, ::prost::Message)]
14011pub struct KvmTimerUpdateIrqFtraceEvent {
14012    #[prost(uint32, optional, tag="1")]
14013    pub irq: ::core::option::Option<u32>,
14014    #[prost(int32, optional, tag="2")]
14015    pub level: ::core::option::Option<i32>,
14016    #[prost(uint64, optional, tag="3")]
14017    pub vcpu_id: ::core::option::Option<u64>,
14018}
14019#[derive(Clone, PartialEq, ::prost::Message)]
14020pub struct KvmToggleCacheFtraceEvent {
14021    #[prost(uint32, optional, tag="1")]
14022    pub now: ::core::option::Option<u32>,
14023    #[prost(uint64, optional, tag="2")]
14024    pub vcpu_pc: ::core::option::Option<u64>,
14025    #[prost(uint32, optional, tag="3")]
14026    pub was: ::core::option::Option<u32>,
14027}
14028#[derive(Clone, PartialEq, ::prost::Message)]
14029pub struct KvmUnmapHvaRangeFtraceEvent {
14030    #[prost(uint64, optional, tag="1")]
14031    pub end: ::core::option::Option<u64>,
14032    #[prost(uint64, optional, tag="2")]
14033    pub start: ::core::option::Option<u64>,
14034}
14035#[derive(Clone, PartialEq, ::prost::Message)]
14036pub struct KvmUserspaceExitFtraceEvent {
14037    #[prost(uint32, optional, tag="1")]
14038    pub reason: ::core::option::Option<u32>,
14039}
14040#[derive(Clone, PartialEq, ::prost::Message)]
14041pub struct KvmVcpuWakeupFtraceEvent {
14042    #[prost(uint64, optional, tag="1")]
14043    pub ns: ::core::option::Option<u64>,
14044    #[prost(uint32, optional, tag="2")]
14045    pub valid: ::core::option::Option<u32>,
14046    #[prost(uint32, optional, tag="3")]
14047    pub waited: ::core::option::Option<u32>,
14048}
14049#[derive(Clone, PartialEq, ::prost::Message)]
14050pub struct KvmWfxArm64FtraceEvent {
14051    #[prost(uint32, optional, tag="1")]
14052    pub is_wfe: ::core::option::Option<u32>,
14053    #[prost(uint64, optional, tag="2")]
14054    pub vcpu_pc: ::core::option::Option<u64>,
14055}
14056#[derive(Clone, PartialEq, ::prost::Message)]
14057pub struct TrapRegFtraceEvent {
14058    #[prost(string, optional, tag="1")]
14059    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14060    #[prost(uint32, optional, tag="2")]
14061    pub is_write: ::core::option::Option<u32>,
14062    #[prost(int32, optional, tag="3")]
14063    pub reg: ::core::option::Option<i32>,
14064    #[prost(uint64, optional, tag="4")]
14065    pub write_value: ::core::option::Option<u64>,
14066}
14067#[derive(Clone, PartialEq, ::prost::Message)]
14068pub struct VgicUpdateIrqPendingFtraceEvent {
14069    #[prost(uint32, optional, tag="1")]
14070    pub irq: ::core::option::Option<u32>,
14071    #[prost(uint32, optional, tag="2")]
14072    pub level: ::core::option::Option<u32>,
14073    #[prost(uint64, optional, tag="3")]
14074    pub vcpu_id: ::core::option::Option<u64>,
14075}
14076// End of protos/perfetto/trace/ftrace/kvm.proto
14077
14078// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14079
14080#[derive(Clone, PartialEq, ::prost::Message)]
14081pub struct LowmemoryKillFtraceEvent {
14082    #[prost(string, optional, tag="1")]
14083    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14084    #[prost(int32, optional, tag="2")]
14085    pub pid: ::core::option::Option<i32>,
14086    #[prost(int64, optional, tag="3")]
14087    pub pagecache_size: ::core::option::Option<i64>,
14088    #[prost(int64, optional, tag="4")]
14089    pub pagecache_limit: ::core::option::Option<i64>,
14090    #[prost(int64, optional, tag="5")]
14091    pub free: ::core::option::Option<i64>,
14092}
14093// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14094
14095// Begin of protos/perfetto/trace/ftrace/lwis.proto
14096
14097#[derive(Clone, PartialEq, ::prost::Message)]
14098pub struct LwisTracingMarkWriteFtraceEvent {
14099    #[prost(string, optional, tag="1")]
14100    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14101    #[prost(uint32, optional, tag="2")]
14102    pub r#type: ::core::option::Option<u32>,
14103    #[prost(int32, optional, tag="3")]
14104    pub pid: ::core::option::Option<i32>,
14105    #[prost(string, optional, tag="4")]
14106    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14107    #[prost(int64, optional, tag="5")]
14108    pub value: ::core::option::Option<i64>,
14109}
14110// End of protos/perfetto/trace/ftrace/lwis.proto
14111
14112// Begin of protos/perfetto/trace/ftrace/mali.proto
14113
14114#[derive(Clone, PartialEq, ::prost::Message)]
14115pub struct MaliTracingMarkWriteFtraceEvent {
14116    #[prost(string, optional, tag="1")]
14117    pub name: ::core::option::Option<::prost::alloc::string::String>,
14118    #[prost(int32, optional, tag="2")]
14119    pub pid: ::core::option::Option<i32>,
14120    #[prost(uint32, optional, tag="3")]
14121    pub r#type: ::core::option::Option<u32>,
14122    #[prost(int32, optional, tag="4")]
14123    pub value: ::core::option::Option<i32>,
14124}
14125#[derive(Clone, PartialEq, ::prost::Message)]
14126pub struct MaliMaliKcpucqssetFtraceEvent {
14127    #[prost(uint32, optional, tag="1")]
14128    pub id: ::core::option::Option<u32>,
14129    #[prost(uint64, optional, tag="2")]
14130    pub info_val1: ::core::option::Option<u64>,
14131    #[prost(uint64, optional, tag="3")]
14132    pub info_val2: ::core::option::Option<u64>,
14133    #[prost(uint32, optional, tag="4")]
14134    pub kctx_id: ::core::option::Option<u32>,
14135    #[prost(int32, optional, tag="5")]
14136    pub kctx_tgid: ::core::option::Option<i32>,
14137}
14138#[derive(Clone, PartialEq, ::prost::Message)]
14139pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14140    #[prost(uint32, optional, tag="1")]
14141    pub id: ::core::option::Option<u32>,
14142    #[prost(uint64, optional, tag="2")]
14143    pub info_val1: ::core::option::Option<u64>,
14144    #[prost(uint64, optional, tag="3")]
14145    pub info_val2: ::core::option::Option<u64>,
14146    #[prost(uint32, optional, tag="4")]
14147    pub kctx_id: ::core::option::Option<u32>,
14148    #[prost(int32, optional, tag="5")]
14149    pub kctx_tgid: ::core::option::Option<i32>,
14150}
14151#[derive(Clone, PartialEq, ::prost::Message)]
14152pub struct MaliMaliKcpucqswaitendFtraceEvent {
14153    #[prost(uint32, optional, tag="1")]
14154    pub id: ::core::option::Option<u32>,
14155    #[prost(uint64, optional, tag="2")]
14156    pub info_val1: ::core::option::Option<u64>,
14157    #[prost(uint64, optional, tag="3")]
14158    pub info_val2: ::core::option::Option<u64>,
14159    #[prost(uint32, optional, tag="4")]
14160    pub kctx_id: ::core::option::Option<u32>,
14161    #[prost(int32, optional, tag="5")]
14162    pub kctx_tgid: ::core::option::Option<i32>,
14163}
14164#[derive(Clone, PartialEq, ::prost::Message)]
14165pub struct MaliMaliKcpufencesignalFtraceEvent {
14166    #[prost(uint64, optional, tag="1")]
14167    pub info_val1: ::core::option::Option<u64>,
14168    #[prost(uint64, optional, tag="2")]
14169    pub info_val2: ::core::option::Option<u64>,
14170    #[prost(int32, optional, tag="3")]
14171    pub kctx_tgid: ::core::option::Option<i32>,
14172    #[prost(uint32, optional, tag="4")]
14173    pub kctx_id: ::core::option::Option<u32>,
14174    #[prost(uint32, optional, tag="5")]
14175    pub id: ::core::option::Option<u32>,
14176}
14177#[derive(Clone, PartialEq, ::prost::Message)]
14178pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14179    #[prost(uint64, optional, tag="1")]
14180    pub info_val1: ::core::option::Option<u64>,
14181    #[prost(uint64, optional, tag="2")]
14182    pub info_val2: ::core::option::Option<u64>,
14183    #[prost(int32, optional, tag="3")]
14184    pub kctx_tgid: ::core::option::Option<i32>,
14185    #[prost(uint32, optional, tag="4")]
14186    pub kctx_id: ::core::option::Option<u32>,
14187    #[prost(uint32, optional, tag="5")]
14188    pub id: ::core::option::Option<u32>,
14189}
14190#[derive(Clone, PartialEq, ::prost::Message)]
14191pub struct MaliMaliKcpufencewaitendFtraceEvent {
14192    #[prost(uint64, optional, tag="1")]
14193    pub info_val1: ::core::option::Option<u64>,
14194    #[prost(uint64, optional, tag="2")]
14195    pub info_val2: ::core::option::Option<u64>,
14196    #[prost(int32, optional, tag="3")]
14197    pub kctx_tgid: ::core::option::Option<i32>,
14198    #[prost(uint32, optional, tag="4")]
14199    pub kctx_id: ::core::option::Option<u32>,
14200    #[prost(uint32, optional, tag="5")]
14201    pub id: ::core::option::Option<u32>,
14202}
14203#[derive(Clone, PartialEq, ::prost::Message)]
14204pub struct MaliMaliCsfinterruptstartFtraceEvent {
14205    #[prost(int32, optional, tag="1")]
14206    pub kctx_tgid: ::core::option::Option<i32>,
14207    #[prost(uint32, optional, tag="2")]
14208    pub kctx_id: ::core::option::Option<u32>,
14209    #[prost(uint64, optional, tag="3")]
14210    pub info_val: ::core::option::Option<u64>,
14211}
14212#[derive(Clone, PartialEq, ::prost::Message)]
14213pub struct MaliMaliCsfinterruptendFtraceEvent {
14214    #[prost(int32, optional, tag="1")]
14215    pub kctx_tgid: ::core::option::Option<i32>,
14216    #[prost(uint32, optional, tag="2")]
14217    pub kctx_id: ::core::option::Option<u32>,
14218    #[prost(uint64, optional, tag="3")]
14219    pub info_val: ::core::option::Option<u64>,
14220}
14221#[derive(Clone, PartialEq, ::prost::Message)]
14222pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14223    #[prost(int32, optional, tag="1")]
14224    pub kctx_tgid: ::core::option::Option<i32>,
14225    #[prost(uint32, optional, tag="2")]
14226    pub kctx_id: ::core::option::Option<u32>,
14227    #[prost(uint64, optional, tag="3")]
14228    pub info_val: ::core::option::Option<u64>,
14229}
14230#[derive(Clone, PartialEq, ::prost::Message)]
14231pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14232    #[prost(int32, optional, tag="1")]
14233    pub kctx_tgid: ::core::option::Option<i32>,
14234    #[prost(uint32, optional, tag="2")]
14235    pub kctx_id: ::core::option::Option<u32>,
14236    #[prost(uint64, optional, tag="3")]
14237    pub info_val: ::core::option::Option<u64>,
14238}
14239#[derive(Clone, PartialEq, ::prost::Message)]
14240pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14241    #[prost(int32, optional, tag="1")]
14242    pub kctx_tgid: ::core::option::Option<i32>,
14243    #[prost(uint32, optional, tag="2")]
14244    pub kctx_id: ::core::option::Option<u32>,
14245    #[prost(uint64, optional, tag="3")]
14246    pub info_val: ::core::option::Option<u64>,
14247}
14248#[derive(Clone, PartialEq, ::prost::Message)]
14249pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14250    #[prost(int32, optional, tag="1")]
14251    pub kctx_tgid: ::core::option::Option<i32>,
14252    #[prost(uint32, optional, tag="2")]
14253    pub kctx_id: ::core::option::Option<u32>,
14254    #[prost(uint64, optional, tag="3")]
14255    pub info_val: ::core::option::Option<u64>,
14256}
14257#[derive(Clone, PartialEq, ::prost::Message)]
14258pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14259    #[prost(int32, optional, tag="1")]
14260    pub kctx_tgid: ::core::option::Option<i32>,
14261    #[prost(uint32, optional, tag="2")]
14262    pub kctx_id: ::core::option::Option<u32>,
14263    #[prost(uint64, optional, tag="3")]
14264    pub info_val: ::core::option::Option<u64>,
14265}
14266#[derive(Clone, PartialEq, ::prost::Message)]
14267pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14268    #[prost(int32, optional, tag="1")]
14269    pub kctx_tgid: ::core::option::Option<i32>,
14270    #[prost(uint32, optional, tag="2")]
14271    pub kctx_id: ::core::option::Option<u32>,
14272    #[prost(uint64, optional, tag="3")]
14273    pub info_val: ::core::option::Option<u64>,
14274}
14275#[derive(Clone, PartialEq, ::prost::Message)]
14276pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14277    #[prost(int32, optional, tag="1")]
14278    pub kctx_tgid: ::core::option::Option<i32>,
14279    #[prost(uint32, optional, tag="2")]
14280    pub kctx_id: ::core::option::Option<u32>,
14281    #[prost(uint64, optional, tag="3")]
14282    pub info_val: ::core::option::Option<u64>,
14283}
14284#[derive(Clone, PartialEq, ::prost::Message)]
14285pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14286    #[prost(int32, optional, tag="1")]
14287    pub kctx_tgid: ::core::option::Option<i32>,
14288    #[prost(uint32, optional, tag="2")]
14289    pub kctx_id: ::core::option::Option<u32>,
14290    #[prost(uint64, optional, tag="3")]
14291    pub info_val: ::core::option::Option<u64>,
14292}
14293#[derive(Clone, PartialEq, ::prost::Message)]
14294pub struct MaliMaliPmmcuinsleepFtraceEvent {
14295    #[prost(int32, optional, tag="1")]
14296    pub kctx_tgid: ::core::option::Option<i32>,
14297    #[prost(uint32, optional, tag="2")]
14298    pub kctx_id: ::core::option::Option<u32>,
14299    #[prost(uint64, optional, tag="3")]
14300    pub info_val: ::core::option::Option<u64>,
14301}
14302#[derive(Clone, PartialEq, ::prost::Message)]
14303pub struct MaliMaliPmmcuoffFtraceEvent {
14304    #[prost(int32, optional, tag="1")]
14305    pub kctx_tgid: ::core::option::Option<i32>,
14306    #[prost(uint32, optional, tag="2")]
14307    pub kctx_id: ::core::option::Option<u32>,
14308    #[prost(uint64, optional, tag="3")]
14309    pub info_val: ::core::option::Option<u64>,
14310}
14311#[derive(Clone, PartialEq, ::prost::Message)]
14312pub struct MaliMaliPmmcuonFtraceEvent {
14313    #[prost(int32, optional, tag="1")]
14314    pub kctx_tgid: ::core::option::Option<i32>,
14315    #[prost(uint32, optional, tag="2")]
14316    pub kctx_id: ::core::option::Option<u32>,
14317    #[prost(uint64, optional, tag="3")]
14318    pub info_val: ::core::option::Option<u64>,
14319}
14320#[derive(Clone, PartialEq, ::prost::Message)]
14321pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14322    #[prost(int32, optional, tag="1")]
14323    pub kctx_tgid: ::core::option::Option<i32>,
14324    #[prost(uint32, optional, tag="2")]
14325    pub kctx_id: ::core::option::Option<u32>,
14326    #[prost(uint64, optional, tag="3")]
14327    pub info_val: ::core::option::Option<u64>,
14328}
14329#[derive(Clone, PartialEq, ::prost::Message)]
14330pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14331    #[prost(int32, optional, tag="1")]
14332    pub kctx_tgid: ::core::option::Option<i32>,
14333    #[prost(uint32, optional, tag="2")]
14334    pub kctx_id: ::core::option::Option<u32>,
14335    #[prost(uint64, optional, tag="3")]
14336    pub info_val: ::core::option::Option<u64>,
14337}
14338#[derive(Clone, PartialEq, ::prost::Message)]
14339pub struct MaliMaliPmmcuonhaltFtraceEvent {
14340    #[prost(int32, optional, tag="1")]
14341    pub kctx_tgid: ::core::option::Option<i32>,
14342    #[prost(uint32, optional, tag="2")]
14343    pub kctx_id: ::core::option::Option<u32>,
14344    #[prost(uint64, optional, tag="3")]
14345    pub info_val: ::core::option::Option<u64>,
14346}
14347#[derive(Clone, PartialEq, ::prost::Message)]
14348pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14349    #[prost(int32, optional, tag="1")]
14350    pub kctx_tgid: ::core::option::Option<i32>,
14351    #[prost(uint32, optional, tag="2")]
14352    pub kctx_id: ::core::option::Option<u32>,
14353    #[prost(uint64, optional, tag="3")]
14354    pub info_val: ::core::option::Option<u64>,
14355}
14356#[derive(Clone, PartialEq, ::prost::Message)]
14357pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14358    #[prost(int32, optional, tag="1")]
14359    pub kctx_tgid: ::core::option::Option<i32>,
14360    #[prost(uint32, optional, tag="2")]
14361    pub kctx_id: ::core::option::Option<u32>,
14362    #[prost(uint64, optional, tag="3")]
14363    pub info_val: ::core::option::Option<u64>,
14364}
14365#[derive(Clone, PartialEq, ::prost::Message)]
14366pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14367    #[prost(int32, optional, tag="1")]
14368    pub kctx_tgid: ::core::option::Option<i32>,
14369    #[prost(uint32, optional, tag="2")]
14370    pub kctx_id: ::core::option::Option<u32>,
14371    #[prost(uint64, optional, tag="3")]
14372    pub info_val: ::core::option::Option<u64>,
14373}
14374#[derive(Clone, PartialEq, ::prost::Message)]
14375pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14376    #[prost(int32, optional, tag="1")]
14377    pub kctx_tgid: ::core::option::Option<i32>,
14378    #[prost(uint32, optional, tag="2")]
14379    pub kctx_id: ::core::option::Option<u32>,
14380    #[prost(uint64, optional, tag="3")]
14381    pub info_val: ::core::option::Option<u64>,
14382}
14383#[derive(Clone, PartialEq, ::prost::Message)]
14384pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14385    #[prost(int32, optional, tag="1")]
14386    pub kctx_tgid: ::core::option::Option<i32>,
14387    #[prost(uint32, optional, tag="2")]
14388    pub kctx_id: ::core::option::Option<u32>,
14389    #[prost(uint64, optional, tag="3")]
14390    pub info_val: ::core::option::Option<u64>,
14391}
14392#[derive(Clone, PartialEq, ::prost::Message)]
14393pub struct MaliMaliPmmcupendoffFtraceEvent {
14394    #[prost(int32, optional, tag="1")]
14395    pub kctx_tgid: ::core::option::Option<i32>,
14396    #[prost(uint32, optional, tag="2")]
14397    pub kctx_id: ::core::option::Option<u32>,
14398    #[prost(uint64, optional, tag="3")]
14399    pub info_val: ::core::option::Option<u64>,
14400}
14401#[derive(Clone, PartialEq, ::prost::Message)]
14402pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14403    #[prost(int32, optional, tag="1")]
14404    pub kctx_tgid: ::core::option::Option<i32>,
14405    #[prost(uint32, optional, tag="2")]
14406    pub kctx_id: ::core::option::Option<u32>,
14407    #[prost(uint64, optional, tag="3")]
14408    pub info_val: ::core::option::Option<u64>,
14409}
14410#[derive(Clone, PartialEq, ::prost::Message)]
14411pub struct MaliMaliPmmcupowerdownFtraceEvent {
14412    #[prost(int32, optional, tag="1")]
14413    pub kctx_tgid: ::core::option::Option<i32>,
14414    #[prost(uint32, optional, tag="2")]
14415    pub kctx_id: ::core::option::Option<u32>,
14416    #[prost(uint64, optional, tag="3")]
14417    pub info_val: ::core::option::Option<u64>,
14418}
14419#[derive(Clone, PartialEq, ::prost::Message)]
14420pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14421    #[prost(int32, optional, tag="1")]
14422    pub kctx_tgid: ::core::option::Option<i32>,
14423    #[prost(uint32, optional, tag="2")]
14424    pub kctx_id: ::core::option::Option<u32>,
14425    #[prost(uint64, optional, tag="3")]
14426    pub info_val: ::core::option::Option<u64>,
14427}
14428#[derive(Clone, PartialEq, ::prost::Message)]
14429pub struct MaliGpuPowerStateFtraceEvent {
14430    #[prost(uint64, optional, tag="1")]
14431    pub change_ns: ::core::option::Option<u64>,
14432    #[prost(int32, optional, tag="2")]
14433    pub from_state: ::core::option::Option<i32>,
14434    #[prost(int32, optional, tag="3")]
14435    pub to_state: ::core::option::Option<i32>,
14436}
14437// End of protos/perfetto/trace/ftrace/mali.proto
14438
14439// Begin of protos/perfetto/trace/ftrace/mdss.proto
14440
14441#[derive(Clone, PartialEq, ::prost::Message)]
14442pub struct MdpCmdKickoffFtraceEvent {
14443    #[prost(uint32, optional, tag="1")]
14444    pub ctl_num: ::core::option::Option<u32>,
14445    #[prost(int32, optional, tag="2")]
14446    pub kickoff_cnt: ::core::option::Option<i32>,
14447}
14448#[derive(Clone, PartialEq, ::prost::Message)]
14449pub struct MdpCommitFtraceEvent {
14450    #[prost(uint32, optional, tag="1")]
14451    pub num: ::core::option::Option<u32>,
14452    #[prost(uint32, optional, tag="2")]
14453    pub play_cnt: ::core::option::Option<u32>,
14454    #[prost(uint32, optional, tag="3")]
14455    pub clk_rate: ::core::option::Option<u32>,
14456    #[prost(uint64, optional, tag="4")]
14457    pub bandwidth: ::core::option::Option<u64>,
14458}
14459#[derive(Clone, PartialEq, ::prost::Message)]
14460pub struct MdpPerfSetOtFtraceEvent {
14461    #[prost(uint32, optional, tag="1")]
14462    pub pnum: ::core::option::Option<u32>,
14463    #[prost(uint32, optional, tag="2")]
14464    pub xin_id: ::core::option::Option<u32>,
14465    #[prost(uint32, optional, tag="3")]
14466    pub rd_lim: ::core::option::Option<u32>,
14467    #[prost(uint32, optional, tag="4")]
14468    pub is_vbif_rt: ::core::option::Option<u32>,
14469}
14470#[derive(Clone, PartialEq, ::prost::Message)]
14471pub struct MdpSsppChangeFtraceEvent {
14472    #[prost(uint32, optional, tag="1")]
14473    pub num: ::core::option::Option<u32>,
14474    #[prost(uint32, optional, tag="2")]
14475    pub play_cnt: ::core::option::Option<u32>,
14476    #[prost(uint32, optional, tag="3")]
14477    pub mixer: ::core::option::Option<u32>,
14478    #[prost(uint32, optional, tag="4")]
14479    pub stage: ::core::option::Option<u32>,
14480    #[prost(uint32, optional, tag="5")]
14481    pub flags: ::core::option::Option<u32>,
14482    #[prost(uint32, optional, tag="6")]
14483    pub format: ::core::option::Option<u32>,
14484    #[prost(uint32, optional, tag="7")]
14485    pub img_w: ::core::option::Option<u32>,
14486    #[prost(uint32, optional, tag="8")]
14487    pub img_h: ::core::option::Option<u32>,
14488    #[prost(uint32, optional, tag="9")]
14489    pub src_x: ::core::option::Option<u32>,
14490    #[prost(uint32, optional, tag="10")]
14491    pub src_y: ::core::option::Option<u32>,
14492    #[prost(uint32, optional, tag="11")]
14493    pub src_w: ::core::option::Option<u32>,
14494    #[prost(uint32, optional, tag="12")]
14495    pub src_h: ::core::option::Option<u32>,
14496    #[prost(uint32, optional, tag="13")]
14497    pub dst_x: ::core::option::Option<u32>,
14498    #[prost(uint32, optional, tag="14")]
14499    pub dst_y: ::core::option::Option<u32>,
14500    #[prost(uint32, optional, tag="15")]
14501    pub dst_w: ::core::option::Option<u32>,
14502    #[prost(uint32, optional, tag="16")]
14503    pub dst_h: ::core::option::Option<u32>,
14504}
14505#[derive(Clone, PartialEq, ::prost::Message)]
14506pub struct TracingMarkWriteFtraceEvent {
14507    #[prost(int32, optional, tag="1")]
14508    pub pid: ::core::option::Option<i32>,
14509    #[prost(string, optional, tag="2")]
14510    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14511    #[prost(uint32, optional, tag="3")]
14512    pub trace_begin: ::core::option::Option<u32>,
14513}
14514#[derive(Clone, PartialEq, ::prost::Message)]
14515pub struct MdpCmdPingpongDoneFtraceEvent {
14516    #[prost(uint32, optional, tag="1")]
14517    pub ctl_num: ::core::option::Option<u32>,
14518    #[prost(uint32, optional, tag="2")]
14519    pub intf_num: ::core::option::Option<u32>,
14520    #[prost(uint32, optional, tag="3")]
14521    pub pp_num: ::core::option::Option<u32>,
14522    #[prost(int32, optional, tag="4")]
14523    pub koff_cnt: ::core::option::Option<i32>,
14524}
14525#[derive(Clone, PartialEq, ::prost::Message)]
14526pub struct MdpCompareBwFtraceEvent {
14527    #[prost(uint64, optional, tag="1")]
14528    pub new_ab: ::core::option::Option<u64>,
14529    #[prost(uint64, optional, tag="2")]
14530    pub new_ib: ::core::option::Option<u64>,
14531    #[prost(uint64, optional, tag="3")]
14532    pub new_wb: ::core::option::Option<u64>,
14533    #[prost(uint64, optional, tag="4")]
14534    pub old_ab: ::core::option::Option<u64>,
14535    #[prost(uint64, optional, tag="5")]
14536    pub old_ib: ::core::option::Option<u64>,
14537    #[prost(uint64, optional, tag="6")]
14538    pub old_wb: ::core::option::Option<u64>,
14539    #[prost(uint32, optional, tag="7")]
14540    pub params_changed: ::core::option::Option<u32>,
14541    #[prost(uint32, optional, tag="8")]
14542    pub update_bw: ::core::option::Option<u32>,
14543}
14544#[derive(Clone, PartialEq, ::prost::Message)]
14545pub struct MdpPerfSetPanicLutsFtraceEvent {
14546    #[prost(uint32, optional, tag="1")]
14547    pub pnum: ::core::option::Option<u32>,
14548    #[prost(uint32, optional, tag="2")]
14549    pub fmt: ::core::option::Option<u32>,
14550    #[prost(uint32, optional, tag="3")]
14551    pub mode: ::core::option::Option<u32>,
14552    #[prost(uint32, optional, tag="4")]
14553    pub panic_lut: ::core::option::Option<u32>,
14554    #[prost(uint32, optional, tag="5")]
14555    pub robust_lut: ::core::option::Option<u32>,
14556}
14557#[derive(Clone, PartialEq, ::prost::Message)]
14558pub struct MdpSsppSetFtraceEvent {
14559    #[prost(uint32, optional, tag="1")]
14560    pub num: ::core::option::Option<u32>,
14561    #[prost(uint32, optional, tag="2")]
14562    pub play_cnt: ::core::option::Option<u32>,
14563    #[prost(uint32, optional, tag="3")]
14564    pub mixer: ::core::option::Option<u32>,
14565    #[prost(uint32, optional, tag="4")]
14566    pub stage: ::core::option::Option<u32>,
14567    #[prost(uint32, optional, tag="5")]
14568    pub flags: ::core::option::Option<u32>,
14569    #[prost(uint32, optional, tag="6")]
14570    pub format: ::core::option::Option<u32>,
14571    #[prost(uint32, optional, tag="7")]
14572    pub img_w: ::core::option::Option<u32>,
14573    #[prost(uint32, optional, tag="8")]
14574    pub img_h: ::core::option::Option<u32>,
14575    #[prost(uint32, optional, tag="9")]
14576    pub src_x: ::core::option::Option<u32>,
14577    #[prost(uint32, optional, tag="10")]
14578    pub src_y: ::core::option::Option<u32>,
14579    #[prost(uint32, optional, tag="11")]
14580    pub src_w: ::core::option::Option<u32>,
14581    #[prost(uint32, optional, tag="12")]
14582    pub src_h: ::core::option::Option<u32>,
14583    #[prost(uint32, optional, tag="13")]
14584    pub dst_x: ::core::option::Option<u32>,
14585    #[prost(uint32, optional, tag="14")]
14586    pub dst_y: ::core::option::Option<u32>,
14587    #[prost(uint32, optional, tag="15")]
14588    pub dst_w: ::core::option::Option<u32>,
14589    #[prost(uint32, optional, tag="16")]
14590    pub dst_h: ::core::option::Option<u32>,
14591}
14592#[derive(Clone, PartialEq, ::prost::Message)]
14593pub struct MdpCmdReadptrDoneFtraceEvent {
14594    #[prost(uint32, optional, tag="1")]
14595    pub ctl_num: ::core::option::Option<u32>,
14596    #[prost(int32, optional, tag="2")]
14597    pub koff_cnt: ::core::option::Option<i32>,
14598}
14599#[derive(Clone, PartialEq, ::prost::Message)]
14600pub struct MdpMisrCrcFtraceEvent {
14601    #[prost(uint32, optional, tag="1")]
14602    pub block_id: ::core::option::Option<u32>,
14603    #[prost(uint32, optional, tag="2")]
14604    pub vsync_cnt: ::core::option::Option<u32>,
14605    #[prost(uint32, optional, tag="3")]
14606    pub crc: ::core::option::Option<u32>,
14607}
14608#[derive(Clone, PartialEq, ::prost::Message)]
14609pub struct MdpPerfSetQosLutsFtraceEvent {
14610    #[prost(uint32, optional, tag="1")]
14611    pub pnum: ::core::option::Option<u32>,
14612    #[prost(uint32, optional, tag="2")]
14613    pub fmt: ::core::option::Option<u32>,
14614    #[prost(uint32, optional, tag="3")]
14615    pub intf: ::core::option::Option<u32>,
14616    #[prost(uint32, optional, tag="4")]
14617    pub rot: ::core::option::Option<u32>,
14618    #[prost(uint32, optional, tag="5")]
14619    pub fl: ::core::option::Option<u32>,
14620    #[prost(uint32, optional, tag="6")]
14621    pub lut: ::core::option::Option<u32>,
14622    #[prost(uint32, optional, tag="7")]
14623    pub linear: ::core::option::Option<u32>,
14624}
14625#[derive(Clone, PartialEq, ::prost::Message)]
14626pub struct MdpTraceCounterFtraceEvent {
14627    #[prost(int32, optional, tag="1")]
14628    pub pid: ::core::option::Option<i32>,
14629    #[prost(string, optional, tag="2")]
14630    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14631    #[prost(int32, optional, tag="3")]
14632    pub value: ::core::option::Option<i32>,
14633}
14634#[derive(Clone, PartialEq, ::prost::Message)]
14635pub struct MdpCmdReleaseBwFtraceEvent {
14636    #[prost(uint32, optional, tag="1")]
14637    pub ctl_num: ::core::option::Option<u32>,
14638}
14639#[derive(Clone, PartialEq, ::prost::Message)]
14640pub struct MdpMixerUpdateFtraceEvent {
14641    #[prost(uint32, optional, tag="1")]
14642    pub mixer_num: ::core::option::Option<u32>,
14643}
14644#[derive(Clone, PartialEq, ::prost::Message)]
14645pub struct MdpPerfSetWmLevelsFtraceEvent {
14646    #[prost(uint32, optional, tag="1")]
14647    pub pnum: ::core::option::Option<u32>,
14648    #[prost(uint32, optional, tag="2")]
14649    pub use_space: ::core::option::Option<u32>,
14650    #[prost(uint32, optional, tag="3")]
14651    pub priority_bytes: ::core::option::Option<u32>,
14652    #[prost(uint32, optional, tag="4")]
14653    pub wm0: ::core::option::Option<u32>,
14654    #[prost(uint32, optional, tag="5")]
14655    pub wm1: ::core::option::Option<u32>,
14656    #[prost(uint32, optional, tag="6")]
14657    pub wm2: ::core::option::Option<u32>,
14658    #[prost(uint32, optional, tag="7")]
14659    pub mb_cnt: ::core::option::Option<u32>,
14660    #[prost(uint32, optional, tag="8")]
14661    pub mb_size: ::core::option::Option<u32>,
14662}
14663#[derive(Clone, PartialEq, ::prost::Message)]
14664pub struct MdpVideoUnderrunDoneFtraceEvent {
14665    #[prost(uint32, optional, tag="1")]
14666    pub ctl_num: ::core::option::Option<u32>,
14667    #[prost(uint32, optional, tag="2")]
14668    pub underrun_cnt: ::core::option::Option<u32>,
14669}
14670#[derive(Clone, PartialEq, ::prost::Message)]
14671pub struct MdpCmdWaitPingpongFtraceEvent {
14672    #[prost(uint32, optional, tag="1")]
14673    pub ctl_num: ::core::option::Option<u32>,
14674    #[prost(int32, optional, tag="2")]
14675    pub kickoff_cnt: ::core::option::Option<i32>,
14676}
14677#[derive(Clone, PartialEq, ::prost::Message)]
14678pub struct MdpPerfPrefillCalcFtraceEvent {
14679    #[prost(uint32, optional, tag="1")]
14680    pub pnum: ::core::option::Option<u32>,
14681    #[prost(uint32, optional, tag="2")]
14682    pub latency_buf: ::core::option::Option<u32>,
14683    #[prost(uint32, optional, tag="3")]
14684    pub ot: ::core::option::Option<u32>,
14685    #[prost(uint32, optional, tag="4")]
14686    pub y_buf: ::core::option::Option<u32>,
14687    #[prost(uint32, optional, tag="5")]
14688    pub y_scaler: ::core::option::Option<u32>,
14689    #[prost(uint32, optional, tag="6")]
14690    pub pp_lines: ::core::option::Option<u32>,
14691    #[prost(uint32, optional, tag="7")]
14692    pub pp_bytes: ::core::option::Option<u32>,
14693    #[prost(uint32, optional, tag="8")]
14694    pub post_sc: ::core::option::Option<u32>,
14695    #[prost(uint32, optional, tag="9")]
14696    pub fbc_bytes: ::core::option::Option<u32>,
14697    #[prost(uint32, optional, tag="10")]
14698    pub prefill_bytes: ::core::option::Option<u32>,
14699}
14700#[derive(Clone, PartialEq, ::prost::Message)]
14701pub struct MdpPerfUpdateBusFtraceEvent {
14702    #[prost(int32, optional, tag="1")]
14703    pub client: ::core::option::Option<i32>,
14704    #[prost(uint64, optional, tag="2")]
14705    pub ab_quota: ::core::option::Option<u64>,
14706    #[prost(uint64, optional, tag="3")]
14707    pub ib_quota: ::core::option::Option<u64>,
14708}
14709#[derive(Clone, PartialEq, ::prost::Message)]
14710pub struct RotatorBwAoAsContextFtraceEvent {
14711    #[prost(uint32, optional, tag="1")]
14712    pub state: ::core::option::Option<u32>,
14713}
14714// End of protos/perfetto/trace/ftrace/mdss.proto
14715
14716// Begin of protos/perfetto/trace/ftrace/mm_event.proto
14717
14718#[derive(Clone, PartialEq, ::prost::Message)]
14719pub struct MmEventRecordFtraceEvent {
14720    #[prost(uint32, optional, tag="1")]
14721    pub avg_lat: ::core::option::Option<u32>,
14722    #[prost(uint32, optional, tag="2")]
14723    pub count: ::core::option::Option<u32>,
14724    #[prost(uint32, optional, tag="3")]
14725    pub max_lat: ::core::option::Option<u32>,
14726    #[prost(uint32, optional, tag="4")]
14727    pub r#type: ::core::option::Option<u32>,
14728}
14729// End of protos/perfetto/trace/ftrace/mm_event.proto
14730
14731// Begin of protos/perfetto/trace/ftrace/net.proto
14732
14733#[derive(Clone, PartialEq, ::prost::Message)]
14734pub struct NetifReceiveSkbFtraceEvent {
14735    #[prost(uint32, optional, tag="1")]
14736    pub len: ::core::option::Option<u32>,
14737    #[prost(string, optional, tag="2")]
14738    pub name: ::core::option::Option<::prost::alloc::string::String>,
14739    #[prost(uint64, optional, tag="3")]
14740    pub skbaddr: ::core::option::Option<u64>,
14741}
14742#[derive(Clone, PartialEq, ::prost::Message)]
14743pub struct NetDevXmitFtraceEvent {
14744    #[prost(uint32, optional, tag="1")]
14745    pub len: ::core::option::Option<u32>,
14746    #[prost(string, optional, tag="2")]
14747    pub name: ::core::option::Option<::prost::alloc::string::String>,
14748    #[prost(int32, optional, tag="3")]
14749    pub rc: ::core::option::Option<i32>,
14750    #[prost(uint64, optional, tag="4")]
14751    pub skbaddr: ::core::option::Option<u64>,
14752}
14753#[derive(Clone, PartialEq, ::prost::Message)]
14754pub struct NapiGroReceiveEntryFtraceEvent {
14755    #[prost(uint32, optional, tag="1")]
14756    pub data_len: ::core::option::Option<u32>,
14757    #[prost(uint32, optional, tag="2")]
14758    pub gso_size: ::core::option::Option<u32>,
14759    #[prost(uint32, optional, tag="3")]
14760    pub gso_type: ::core::option::Option<u32>,
14761    #[prost(uint32, optional, tag="4")]
14762    pub hash: ::core::option::Option<u32>,
14763    #[prost(uint32, optional, tag="5")]
14764    pub ip_summed: ::core::option::Option<u32>,
14765    #[prost(uint32, optional, tag="6")]
14766    pub l4_hash: ::core::option::Option<u32>,
14767    #[prost(uint32, optional, tag="7")]
14768    pub len: ::core::option::Option<u32>,
14769    #[prost(int32, optional, tag="8")]
14770    pub mac_header: ::core::option::Option<i32>,
14771    #[prost(uint32, optional, tag="9")]
14772    pub mac_header_valid: ::core::option::Option<u32>,
14773    #[prost(string, optional, tag="10")]
14774    pub name: ::core::option::Option<::prost::alloc::string::String>,
14775    #[prost(uint32, optional, tag="11")]
14776    pub napi_id: ::core::option::Option<u32>,
14777    #[prost(uint32, optional, tag="12")]
14778    pub nr_frags: ::core::option::Option<u32>,
14779    #[prost(uint32, optional, tag="13")]
14780    pub protocol: ::core::option::Option<u32>,
14781    #[prost(uint32, optional, tag="14")]
14782    pub queue_mapping: ::core::option::Option<u32>,
14783    #[prost(uint64, optional, tag="15")]
14784    pub skbaddr: ::core::option::Option<u64>,
14785    #[prost(uint32, optional, tag="16")]
14786    pub truesize: ::core::option::Option<u32>,
14787    #[prost(uint32, optional, tag="17")]
14788    pub vlan_proto: ::core::option::Option<u32>,
14789    #[prost(uint32, optional, tag="18")]
14790    pub vlan_tagged: ::core::option::Option<u32>,
14791    #[prost(uint32, optional, tag="19")]
14792    pub vlan_tci: ::core::option::Option<u32>,
14793}
14794#[derive(Clone, PartialEq, ::prost::Message)]
14795pub struct NapiGroReceiveExitFtraceEvent {
14796    #[prost(int32, optional, tag="1")]
14797    pub ret: ::core::option::Option<i32>,
14798}
14799// End of protos/perfetto/trace/ftrace/net.proto
14800
14801// Begin of protos/perfetto/trace/ftrace/oom.proto
14802
14803#[derive(Clone, PartialEq, ::prost::Message)]
14804pub struct OomScoreAdjUpdateFtraceEvent {
14805    #[prost(string, optional, tag="1")]
14806    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14807    #[prost(int32, optional, tag="2")]
14808    pub oom_score_adj: ::core::option::Option<i32>,
14809    #[prost(int32, optional, tag="3")]
14810    pub pid: ::core::option::Option<i32>,
14811}
14812#[derive(Clone, PartialEq, ::prost::Message)]
14813pub struct MarkVictimFtraceEvent {
14814    #[prost(int32, optional, tag="1")]
14815    pub pid: ::core::option::Option<i32>,
14816}
14817// End of protos/perfetto/trace/ftrace/oom.proto
14818
14819// Begin of protos/perfetto/trace/ftrace/panel.proto
14820
14821#[derive(Clone, PartialEq, ::prost::Message)]
14822pub struct DsiCmdFifoStatusFtraceEvent {
14823    #[prost(uint32, optional, tag="1")]
14824    pub header: ::core::option::Option<u32>,
14825    #[prost(uint32, optional, tag="2")]
14826    pub payload: ::core::option::Option<u32>,
14827}
14828#[derive(Clone, PartialEq, ::prost::Message)]
14829pub struct DsiRxFtraceEvent {
14830    #[prost(uint32, optional, tag="1")]
14831    pub cmd: ::core::option::Option<u32>,
14832    #[prost(bytes="vec", optional, tag="3")]
14833    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14834}
14835#[derive(Clone, PartialEq, ::prost::Message)]
14836pub struct DsiTxFtraceEvent {
14837    #[prost(uint32, optional, tag="1")]
14838    pub last: ::core::option::Option<u32>,
14839    #[prost(uint32, optional, tag="3")]
14840    pub r#type: ::core::option::Option<u32>,
14841    #[prost(bytes="vec", optional, tag="4")]
14842    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14843}
14844#[derive(Clone, PartialEq, ::prost::Message)]
14845pub struct PanelWriteGenericFtraceEvent {
14846    #[prost(int32, optional, tag="1")]
14847    pub pid: ::core::option::Option<i32>,
14848    #[prost(string, optional, tag="2")]
14849    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14850    #[prost(uint32, optional, tag="3")]
14851    pub trace_begin: ::core::option::Option<u32>,
14852    #[prost(string, optional, tag="4")]
14853    pub name: ::core::option::Option<::prost::alloc::string::String>,
14854    #[prost(uint32, optional, tag="5")]
14855    pub r#type: ::core::option::Option<u32>,
14856    #[prost(int32, optional, tag="6")]
14857    pub value: ::core::option::Option<i32>,
14858}
14859#[derive(Clone, PartialEq, ::prost::Message)]
14860pub struct GramCollisionFtraceEvent {
14861    #[prost(int32, optional, tag="1")]
14862    pub panel_index: ::core::option::Option<i32>,
14863    #[prost(uint32, optional, tag="2")]
14864    pub collision_cnt: ::core::option::Option<u32>,
14865}
14866// End of protos/perfetto/trace/ftrace/panel.proto
14867
14868// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14869
14870#[derive(Clone, PartialEq, ::prost::Message)]
14871pub struct SchedSwitchWithCtrsFtraceEvent {
14872    #[prost(int32, optional, tag="1")]
14873    pub old_pid: ::core::option::Option<i32>,
14874    #[prost(int32, optional, tag="2")]
14875    pub new_pid: ::core::option::Option<i32>,
14876    #[prost(uint64, optional, tag="3")]
14877    pub cctr: ::core::option::Option<u64>,
14878    #[prost(uint64, optional, tag="4")]
14879    pub ctr0: ::core::option::Option<u64>,
14880    #[prost(uint64, optional, tag="5")]
14881    pub ctr1: ::core::option::Option<u64>,
14882    #[prost(uint64, optional, tag="6")]
14883    pub ctr2: ::core::option::Option<u64>,
14884    #[prost(uint64, optional, tag="7")]
14885    pub ctr3: ::core::option::Option<u64>,
14886    #[prost(uint32, optional, tag="8")]
14887    pub lctr0: ::core::option::Option<u32>,
14888    #[prost(uint32, optional, tag="9")]
14889    pub lctr1: ::core::option::Option<u32>,
14890    #[prost(uint64, optional, tag="10")]
14891    pub ctr4: ::core::option::Option<u64>,
14892    #[prost(uint64, optional, tag="11")]
14893    pub ctr5: ::core::option::Option<u64>,
14894    #[prost(string, optional, tag="12")]
14895    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14896    #[prost(int32, optional, tag="13")]
14897    pub prev_pid: ::core::option::Option<i32>,
14898    #[prost(uint32, optional, tag="14")]
14899    pub cyc: ::core::option::Option<u32>,
14900    #[prost(uint32, optional, tag="15")]
14901    pub inst: ::core::option::Option<u32>,
14902    #[prost(uint32, optional, tag="16")]
14903    pub stallbm: ::core::option::Option<u32>,
14904    #[prost(uint32, optional, tag="17")]
14905    pub l3dm: ::core::option::Option<u32>,
14906    #[prost(int32, optional, tag="18")]
14907    pub next_pid: ::core::option::Option<i32>,
14908    #[prost(string, optional, tag="19")]
14909    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14910    #[prost(int64, optional, tag="20")]
14911    pub prev_state: ::core::option::Option<i64>,
14912    #[prost(uint64, optional, tag="21")]
14913    pub amu0: ::core::option::Option<u64>,
14914    #[prost(uint64, optional, tag="22")]
14915    pub amu1: ::core::option::Option<u64>,
14916    #[prost(uint64, optional, tag="23")]
14917    pub amu2: ::core::option::Option<u64>,
14918}
14919// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14920
14921// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
14922
14923#[derive(Clone, PartialEq, ::prost::Message)]
14924pub struct PixelMmKswapdWakeFtraceEvent {
14925    #[prost(int32, optional, tag="1")]
14926    pub whatever: ::core::option::Option<i32>,
14927}
14928#[derive(Clone, PartialEq, ::prost::Message)]
14929pub struct PixelMmKswapdDoneFtraceEvent {
14930    #[prost(uint64, optional, tag="1")]
14931    pub delta_nr_scanned: ::core::option::Option<u64>,
14932    #[prost(uint64, optional, tag="2")]
14933    pub delta_nr_reclaimed: ::core::option::Option<u64>,
14934    #[prost(uint64, optional, tag="3")]
14935    pub delta_nr_allocated: ::core::option::Option<u64>,
14936    #[prost(uint64, optional, tag="4")]
14937    pub duration_ns: ::core::option::Option<u64>,
14938}
14939// End of protos/perfetto/trace/ftrace/pixel_mm.proto
14940
14941// Begin of protos/perfetto/trace/ftrace/power.proto
14942
14943#[derive(Clone, PartialEq, ::prost::Message)]
14944pub struct CpuFrequencyFtraceEvent {
14945    #[prost(uint32, optional, tag="1")]
14946    pub state: ::core::option::Option<u32>,
14947    #[prost(uint32, optional, tag="2")]
14948    pub cpu_id: ::core::option::Option<u32>,
14949}
14950#[derive(Clone, PartialEq, ::prost::Message)]
14951pub struct CpuFrequencyLimitsFtraceEvent {
14952    #[prost(uint32, optional, tag="1")]
14953    pub min_freq: ::core::option::Option<u32>,
14954    #[prost(uint32, optional, tag="2")]
14955    pub max_freq: ::core::option::Option<u32>,
14956    #[prost(uint32, optional, tag="3")]
14957    pub cpu_id: ::core::option::Option<u32>,
14958}
14959#[derive(Clone, PartialEq, ::prost::Message)]
14960pub struct CpuIdleFtraceEvent {
14961    #[prost(uint32, optional, tag="1")]
14962    pub state: ::core::option::Option<u32>,
14963    #[prost(uint32, optional, tag="2")]
14964    pub cpu_id: ::core::option::Option<u32>,
14965}
14966#[derive(Clone, PartialEq, ::prost::Message)]
14967pub struct ClockEnableFtraceEvent {
14968    #[prost(string, optional, tag="1")]
14969    pub name: ::core::option::Option<::prost::alloc::string::String>,
14970    #[prost(uint64, optional, tag="2")]
14971    pub state: ::core::option::Option<u64>,
14972    #[prost(uint64, optional, tag="3")]
14973    pub cpu_id: ::core::option::Option<u64>,
14974}
14975#[derive(Clone, PartialEq, ::prost::Message)]
14976pub struct ClockDisableFtraceEvent {
14977    #[prost(string, optional, tag="1")]
14978    pub name: ::core::option::Option<::prost::alloc::string::String>,
14979    #[prost(uint64, optional, tag="2")]
14980    pub state: ::core::option::Option<u64>,
14981    #[prost(uint64, optional, tag="3")]
14982    pub cpu_id: ::core::option::Option<u64>,
14983}
14984#[derive(Clone, PartialEq, ::prost::Message)]
14985pub struct ClockSetRateFtraceEvent {
14986    #[prost(string, optional, tag="1")]
14987    pub name: ::core::option::Option<::prost::alloc::string::String>,
14988    #[prost(uint64, optional, tag="2")]
14989    pub state: ::core::option::Option<u64>,
14990    #[prost(uint64, optional, tag="3")]
14991    pub cpu_id: ::core::option::Option<u64>,
14992}
14993#[derive(Clone, PartialEq, ::prost::Message)]
14994pub struct SuspendResumeFtraceEvent {
14995    #[prost(string, optional, tag="1")]
14996    pub action: ::core::option::Option<::prost::alloc::string::String>,
14997    #[prost(int32, optional, tag="2")]
14998    pub val: ::core::option::Option<i32>,
14999    #[prost(uint32, optional, tag="3")]
15000    pub start: ::core::option::Option<u32>,
15001}
15002#[derive(Clone, PartialEq, ::prost::Message)]
15003pub struct GpuFrequencyFtraceEvent {
15004    #[prost(uint32, optional, tag="1")]
15005    pub gpu_id: ::core::option::Option<u32>,
15006    #[prost(uint32, optional, tag="2")]
15007    pub state: ::core::option::Option<u32>,
15008}
15009#[derive(Clone, PartialEq, ::prost::Message)]
15010pub struct WakeupSourceActivateFtraceEvent {
15011    #[prost(string, optional, tag="1")]
15012    pub name: ::core::option::Option<::prost::alloc::string::String>,
15013    #[prost(uint64, optional, tag="2")]
15014    pub state: ::core::option::Option<u64>,
15015}
15016#[derive(Clone, PartialEq, ::prost::Message)]
15017pub struct WakeupSourceDeactivateFtraceEvent {
15018    #[prost(string, optional, tag="1")]
15019    pub name: ::core::option::Option<::prost::alloc::string::String>,
15020    #[prost(uint64, optional, tag="2")]
15021    pub state: ::core::option::Option<u64>,
15022}
15023#[derive(Clone, PartialEq, ::prost::Message)]
15024pub struct GpuWorkPeriodFtraceEvent {
15025    #[prost(uint32, optional, tag="1")]
15026    pub gpu_id: ::core::option::Option<u32>,
15027    #[prost(uint32, optional, tag="2")]
15028    pub uid: ::core::option::Option<u32>,
15029    #[prost(uint64, optional, tag="3")]
15030    pub start_time_ns: ::core::option::Option<u64>,
15031    #[prost(uint64, optional, tag="4")]
15032    pub end_time_ns: ::core::option::Option<u64>,
15033    #[prost(uint64, optional, tag="5")]
15034    pub total_active_duration_ns: ::core::option::Option<u64>,
15035}
15036#[derive(Clone, PartialEq, ::prost::Message)]
15037pub struct DevicePmCallbackStartFtraceEvent {
15038    #[prost(string, optional, tag="1")]
15039    pub device: ::core::option::Option<::prost::alloc::string::String>,
15040    #[prost(string, optional, tag="2")]
15041    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15042    #[prost(string, optional, tag="3")]
15043    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15044    #[prost(string, optional, tag="4")]
15045    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15046    #[prost(int32, optional, tag="5")]
15047    pub event: ::core::option::Option<i32>,
15048}
15049#[derive(Clone, PartialEq, ::prost::Message)]
15050pub struct DevicePmCallbackEndFtraceEvent {
15051    #[prost(string, optional, tag="1")]
15052    pub device: ::core::option::Option<::prost::alloc::string::String>,
15053    #[prost(string, optional, tag="2")]
15054    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15055    #[prost(int32, optional, tag="3")]
15056    pub error: ::core::option::Option<i32>,
15057}
15058#[derive(Clone, PartialEq, ::prost::Message)]
15059pub struct GpuPowerStateFtraceEvent {
15060    #[prost(int32, optional, tag="1")]
15061    pub old_state: ::core::option::Option<i32>,
15062    #[prost(int32, optional, tag="2")]
15063    pub new_state: ::core::option::Option<i32>,
15064}
15065// End of protos/perfetto/trace/ftrace/power.proto
15066
15067// Begin of protos/perfetto/trace/ftrace/printk.proto
15068
15069#[derive(Clone, PartialEq, ::prost::Message)]
15070pub struct ConsoleFtraceEvent {
15071    #[prost(string, optional, tag="1")]
15072    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15073}
15074// End of protos/perfetto/trace/ftrace/printk.proto
15075
15076// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
15077
15078#[derive(Clone, PartialEq, ::prost::Message)]
15079pub struct SysEnterFtraceEvent {
15080    #[prost(int64, optional, tag="1")]
15081    pub id: ::core::option::Option<i64>,
15082    #[prost(uint64, repeated, packed="false", tag="2")]
15083    pub args: ::prost::alloc::vec::Vec<u64>,
15084}
15085#[derive(Clone, PartialEq, ::prost::Message)]
15086pub struct SysExitFtraceEvent {
15087    #[prost(int64, optional, tag="1")]
15088    pub id: ::core::option::Option<i64>,
15089    #[prost(int64, optional, tag="2")]
15090    pub ret: ::core::option::Option<i64>,
15091}
15092// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
15093
15094// Begin of protos/perfetto/trace/ftrace/regulator.proto
15095
15096#[derive(Clone, PartialEq, ::prost::Message)]
15097pub struct RegulatorDisableFtraceEvent {
15098    #[prost(string, optional, tag="1")]
15099    pub name: ::core::option::Option<::prost::alloc::string::String>,
15100}
15101#[derive(Clone, PartialEq, ::prost::Message)]
15102pub struct RegulatorDisableCompleteFtraceEvent {
15103    #[prost(string, optional, tag="1")]
15104    pub name: ::core::option::Option<::prost::alloc::string::String>,
15105}
15106#[derive(Clone, PartialEq, ::prost::Message)]
15107pub struct RegulatorEnableFtraceEvent {
15108    #[prost(string, optional, tag="1")]
15109    pub name: ::core::option::Option<::prost::alloc::string::String>,
15110}
15111#[derive(Clone, PartialEq, ::prost::Message)]
15112pub struct RegulatorEnableCompleteFtraceEvent {
15113    #[prost(string, optional, tag="1")]
15114    pub name: ::core::option::Option<::prost::alloc::string::String>,
15115}
15116#[derive(Clone, PartialEq, ::prost::Message)]
15117pub struct RegulatorEnableDelayFtraceEvent {
15118    #[prost(string, optional, tag="1")]
15119    pub name: ::core::option::Option<::prost::alloc::string::String>,
15120}
15121#[derive(Clone, PartialEq, ::prost::Message)]
15122pub struct RegulatorSetVoltageFtraceEvent {
15123    #[prost(string, optional, tag="1")]
15124    pub name: ::core::option::Option<::prost::alloc::string::String>,
15125    #[prost(int32, optional, tag="2")]
15126    pub min: ::core::option::Option<i32>,
15127    #[prost(int32, optional, tag="3")]
15128    pub max: ::core::option::Option<i32>,
15129}
15130#[derive(Clone, PartialEq, ::prost::Message)]
15131pub struct RegulatorSetVoltageCompleteFtraceEvent {
15132    #[prost(string, optional, tag="1")]
15133    pub name: ::core::option::Option<::prost::alloc::string::String>,
15134    #[prost(uint32, optional, tag="2")]
15135    pub val: ::core::option::Option<u32>,
15136}
15137// End of protos/perfetto/trace/ftrace/regulator.proto
15138
15139// Begin of protos/perfetto/trace/ftrace/rpm.proto
15140
15141#[derive(Clone, PartialEq, ::prost::Message)]
15142pub struct RpmStatusFtraceEvent {
15143    #[prost(string, optional, tag="1")]
15144    pub name: ::core::option::Option<::prost::alloc::string::String>,
15145    #[prost(int32, optional, tag="2")]
15146    pub status: ::core::option::Option<i32>,
15147}
15148// End of protos/perfetto/trace/ftrace/rpm.proto
15149
15150// Begin of protos/perfetto/trace/ftrace/samsung.proto
15151
15152#[derive(Clone, PartialEq, ::prost::Message)]
15153pub struct SamsungTracingMarkWriteFtraceEvent {
15154    #[prost(int32, optional, tag="1")]
15155    pub pid: ::core::option::Option<i32>,
15156    #[prost(string, optional, tag="2")]
15157    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15158    #[prost(uint32, optional, tag="3")]
15159    pub trace_begin: ::core::option::Option<u32>,
15160    #[prost(uint32, optional, tag="4")]
15161    pub trace_type: ::core::option::Option<u32>,
15162    #[prost(int32, optional, tag="5")]
15163    pub value: ::core::option::Option<i32>,
15164}
15165// End of protos/perfetto/trace/ftrace/samsung.proto
15166
15167// Begin of protos/perfetto/trace/ftrace/sched.proto
15168
15169#[derive(Clone, PartialEq, ::prost::Message)]
15170pub struct SchedSwitchFtraceEvent {
15171    #[prost(string, optional, tag="1")]
15172    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15173    #[prost(int32, optional, tag="2")]
15174    pub prev_pid: ::core::option::Option<i32>,
15175    #[prost(int32, optional, tag="3")]
15176    pub prev_prio: ::core::option::Option<i32>,
15177    #[prost(int64, optional, tag="4")]
15178    pub prev_state: ::core::option::Option<i64>,
15179    #[prost(string, optional, tag="5")]
15180    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15181    #[prost(int32, optional, tag="6")]
15182    pub next_pid: ::core::option::Option<i32>,
15183    #[prost(int32, optional, tag="7")]
15184    pub next_prio: ::core::option::Option<i32>,
15185}
15186#[derive(Clone, PartialEq, ::prost::Message)]
15187pub struct SchedWakeupFtraceEvent {
15188    #[prost(string, optional, tag="1")]
15189    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15190    #[prost(int32, optional, tag="2")]
15191    pub pid: ::core::option::Option<i32>,
15192    #[prost(int32, optional, tag="3")]
15193    pub prio: ::core::option::Option<i32>,
15194    #[prost(int32, optional, tag="4")]
15195    pub success: ::core::option::Option<i32>,
15196    #[prost(int32, optional, tag="5")]
15197    pub target_cpu: ::core::option::Option<i32>,
15198}
15199#[derive(Clone, PartialEq, ::prost::Message)]
15200pub struct SchedBlockedReasonFtraceEvent {
15201    #[prost(int32, optional, tag="1")]
15202    pub pid: ::core::option::Option<i32>,
15203    #[prost(uint64, optional, tag="2")]
15204    pub caller: ::core::option::Option<u64>,
15205    #[prost(uint32, optional, tag="3")]
15206    pub io_wait: ::core::option::Option<u32>,
15207}
15208#[derive(Clone, PartialEq, ::prost::Message)]
15209pub struct SchedCpuHotplugFtraceEvent {
15210    #[prost(int32, optional, tag="1")]
15211    pub affected_cpu: ::core::option::Option<i32>,
15212    #[prost(int32, optional, tag="2")]
15213    pub error: ::core::option::Option<i32>,
15214    #[prost(int32, optional, tag="3")]
15215    pub status: ::core::option::Option<i32>,
15216}
15217#[derive(Clone, PartialEq, ::prost::Message)]
15218pub struct SchedWakingFtraceEvent {
15219    #[prost(string, optional, tag="1")]
15220    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15221    #[prost(int32, optional, tag="2")]
15222    pub pid: ::core::option::Option<i32>,
15223    #[prost(int32, optional, tag="3")]
15224    pub prio: ::core::option::Option<i32>,
15225    #[prost(int32, optional, tag="4")]
15226    pub success: ::core::option::Option<i32>,
15227    #[prost(int32, optional, tag="5")]
15228    pub target_cpu: ::core::option::Option<i32>,
15229}
15230#[derive(Clone, PartialEq, ::prost::Message)]
15231pub struct SchedWakeupNewFtraceEvent {
15232    #[prost(string, optional, tag="1")]
15233    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15234    #[prost(int32, optional, tag="2")]
15235    pub pid: ::core::option::Option<i32>,
15236    #[prost(int32, optional, tag="3")]
15237    pub prio: ::core::option::Option<i32>,
15238    #[prost(int32, optional, tag="4")]
15239    pub success: ::core::option::Option<i32>,
15240    #[prost(int32, optional, tag="5")]
15241    pub target_cpu: ::core::option::Option<i32>,
15242}
15243#[derive(Clone, PartialEq, ::prost::Message)]
15244pub struct SchedProcessExecFtraceEvent {
15245    #[prost(string, optional, tag="1")]
15246    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15247    #[prost(int32, optional, tag="2")]
15248    pub pid: ::core::option::Option<i32>,
15249    #[prost(int32, optional, tag="3")]
15250    pub old_pid: ::core::option::Option<i32>,
15251}
15252#[derive(Clone, PartialEq, ::prost::Message)]
15253pub struct SchedProcessExitFtraceEvent {
15254    #[prost(string, optional, tag="1")]
15255    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15256    #[prost(int32, optional, tag="2")]
15257    pub pid: ::core::option::Option<i32>,
15258    #[prost(int32, optional, tag="3")]
15259    pub tgid: ::core::option::Option<i32>,
15260    #[prost(int32, optional, tag="4")]
15261    pub prio: ::core::option::Option<i32>,
15262}
15263#[derive(Clone, PartialEq, ::prost::Message)]
15264pub struct SchedProcessForkFtraceEvent {
15265    #[prost(string, optional, tag="1")]
15266    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15267    #[prost(int32, optional, tag="2")]
15268    pub parent_pid: ::core::option::Option<i32>,
15269    #[prost(string, optional, tag="3")]
15270    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15271    #[prost(int32, optional, tag="4")]
15272    pub child_pid: ::core::option::Option<i32>,
15273}
15274#[derive(Clone, PartialEq, ::prost::Message)]
15275pub struct SchedProcessFreeFtraceEvent {
15276    #[prost(string, optional, tag="1")]
15277    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15278    #[prost(int32, optional, tag="2")]
15279    pub pid: ::core::option::Option<i32>,
15280    #[prost(int32, optional, tag="3")]
15281    pub prio: ::core::option::Option<i32>,
15282}
15283#[derive(Clone, PartialEq, ::prost::Message)]
15284pub struct SchedProcessHangFtraceEvent {
15285    #[prost(string, optional, tag="1")]
15286    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15287    #[prost(int32, optional, tag="2")]
15288    pub pid: ::core::option::Option<i32>,
15289}
15290#[derive(Clone, PartialEq, ::prost::Message)]
15291pub struct SchedProcessWaitFtraceEvent {
15292    #[prost(string, optional, tag="1")]
15293    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15294    #[prost(int32, optional, tag="2")]
15295    pub pid: ::core::option::Option<i32>,
15296    #[prost(int32, optional, tag="3")]
15297    pub prio: ::core::option::Option<i32>,
15298}
15299#[derive(Clone, PartialEq, ::prost::Message)]
15300pub struct SchedPiSetprioFtraceEvent {
15301    #[prost(string, optional, tag="1")]
15302    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15303    #[prost(int32, optional, tag="2")]
15304    pub newprio: ::core::option::Option<i32>,
15305    #[prost(int32, optional, tag="3")]
15306    pub oldprio: ::core::option::Option<i32>,
15307    #[prost(int32, optional, tag="4")]
15308    pub pid: ::core::option::Option<i32>,
15309}
15310#[derive(Clone, PartialEq, ::prost::Message)]
15311pub struct SchedCpuUtilCfsFtraceEvent {
15312    #[prost(int32, optional, tag="1")]
15313    pub active: ::core::option::Option<i32>,
15314    #[prost(uint64, optional, tag="2")]
15315    pub capacity: ::core::option::Option<u64>,
15316    #[prost(uint64, optional, tag="3")]
15317    pub capacity_orig: ::core::option::Option<u64>,
15318    #[prost(uint32, optional, tag="4")]
15319    pub cpu: ::core::option::Option<u32>,
15320    #[prost(uint64, optional, tag="5")]
15321    pub cpu_importance: ::core::option::Option<u64>,
15322    #[prost(uint64, optional, tag="6")]
15323    pub cpu_util: ::core::option::Option<u64>,
15324    #[prost(uint32, optional, tag="7")]
15325    pub exit_lat: ::core::option::Option<u32>,
15326    #[prost(uint64, optional, tag="8")]
15327    pub group_capacity: ::core::option::Option<u64>,
15328    #[prost(uint32, optional, tag="9")]
15329    pub grp_overutilized: ::core::option::Option<u32>,
15330    #[prost(uint32, optional, tag="10")]
15331    pub idle_cpu: ::core::option::Option<u32>,
15332    #[prost(uint32, optional, tag="11")]
15333    pub nr_running: ::core::option::Option<u32>,
15334    #[prost(int64, optional, tag="12")]
15335    pub spare_cap: ::core::option::Option<i64>,
15336    #[prost(uint32, optional, tag="13")]
15337    pub task_fits: ::core::option::Option<u32>,
15338    #[prost(uint64, optional, tag="14")]
15339    pub wake_group_util: ::core::option::Option<u64>,
15340    #[prost(uint64, optional, tag="15")]
15341    pub wake_util: ::core::option::Option<u64>,
15342}
15343#[derive(Clone, PartialEq, ::prost::Message)]
15344pub struct SchedMigrateTaskFtraceEvent {
15345    #[prost(string, optional, tag="1")]
15346    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15347    #[prost(int32, optional, tag="2")]
15348    pub pid: ::core::option::Option<i32>,
15349    #[prost(int32, optional, tag="3")]
15350    pub prio: ::core::option::Option<i32>,
15351    #[prost(int32, optional, tag="4")]
15352    pub orig_cpu: ::core::option::Option<i32>,
15353    #[prost(int32, optional, tag="5")]
15354    pub dest_cpu: ::core::option::Option<i32>,
15355    #[prost(int32, optional, tag="6")]
15356    pub running: ::core::option::Option<i32>,
15357    #[prost(uint32, optional, tag="7")]
15358    pub load: ::core::option::Option<u32>,
15359}
15360#[derive(Clone, PartialEq, ::prost::Message)]
15361pub struct SchedWakeupTaskAttrFtraceEvent {
15362    #[prost(int32, optional, tag="1")]
15363    pub pid: ::core::option::Option<i32>,
15364    #[prost(uint64, optional, tag="2")]
15365    pub cpu_affinity: ::core::option::Option<u64>,
15366    #[prost(uint64, optional, tag="3")]
15367    pub task_util: ::core::option::Option<u64>,
15368    #[prost(uint64, optional, tag="4")]
15369    pub uclamp_min: ::core::option::Option<u64>,
15370    #[prost(uint64, optional, tag="5")]
15371    pub vruntime: ::core::option::Option<u64>,
15372}
15373// End of protos/perfetto/trace/ftrace/sched.proto
15374
15375// Begin of protos/perfetto/trace/ftrace/scm.proto
15376
15377#[derive(Clone, PartialEq, ::prost::Message)]
15378pub struct ScmCallStartFtraceEvent {
15379    #[prost(uint32, optional, tag="1")]
15380    pub arginfo: ::core::option::Option<u32>,
15381    #[prost(uint64, optional, tag="2")]
15382    pub x0: ::core::option::Option<u64>,
15383    #[prost(uint64, optional, tag="3")]
15384    pub x5: ::core::option::Option<u64>,
15385}
15386#[derive(Clone, PartialEq, ::prost::Message)]
15387pub struct ScmCallEndFtraceEvent {
15388}
15389// End of protos/perfetto/trace/ftrace/scm.proto
15390
15391// Begin of protos/perfetto/trace/ftrace/scsi.proto
15392
15393#[derive(Clone, PartialEq, ::prost::Message)]
15394pub struct ScsiDispatchCmdErrorFtraceEvent {
15395    #[prost(uint32, optional, tag="1")]
15396    pub host_no: ::core::option::Option<u32>,
15397    #[prost(uint32, optional, tag="2")]
15398    pub channel: ::core::option::Option<u32>,
15399    #[prost(uint32, optional, tag="3")]
15400    pub id: ::core::option::Option<u32>,
15401    #[prost(uint32, optional, tag="4")]
15402    pub lun: ::core::option::Option<u32>,
15403    #[prost(int32, optional, tag="5")]
15404    pub rtn: ::core::option::Option<i32>,
15405    #[prost(uint32, optional, tag="6")]
15406    pub opcode: ::core::option::Option<u32>,
15407    #[prost(uint32, optional, tag="7")]
15408    pub cmd_len: ::core::option::Option<u32>,
15409    #[prost(uint32, optional, tag="8")]
15410    pub data_sglen: ::core::option::Option<u32>,
15411    #[prost(uint32, optional, tag="9")]
15412    pub prot_sglen: ::core::option::Option<u32>,
15413    #[prost(uint32, optional, tag="10")]
15414    pub prot_op: ::core::option::Option<u32>,
15415    #[prost(int32, optional, tag="12")]
15416    pub driver_tag: ::core::option::Option<i32>,
15417    #[prost(int32, optional, tag="13")]
15418    pub scheduler_tag: ::core::option::Option<i32>,
15419    #[prost(bytes="vec", optional, tag="14")]
15420    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15421}
15422#[derive(Clone, PartialEq, ::prost::Message)]
15423pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15424    #[prost(uint32, optional, tag="1")]
15425    pub host_no: ::core::option::Option<u32>,
15426    #[prost(uint32, optional, tag="2")]
15427    pub channel: ::core::option::Option<u32>,
15428    #[prost(uint32, optional, tag="3")]
15429    pub id: ::core::option::Option<u32>,
15430    #[prost(uint32, optional, tag="4")]
15431    pub lun: ::core::option::Option<u32>,
15432    #[prost(int32, optional, tag="5")]
15433    pub result: ::core::option::Option<i32>,
15434    #[prost(uint32, optional, tag="6")]
15435    pub opcode: ::core::option::Option<u32>,
15436    #[prost(uint32, optional, tag="7")]
15437    pub cmd_len: ::core::option::Option<u32>,
15438    #[prost(uint32, optional, tag="8")]
15439    pub data_sglen: ::core::option::Option<u32>,
15440    #[prost(uint32, optional, tag="9")]
15441    pub prot_sglen: ::core::option::Option<u32>,
15442    #[prost(uint32, optional, tag="10")]
15443    pub prot_op: ::core::option::Option<u32>,
15444    #[prost(int32, optional, tag="12")]
15445    pub driver_tag: ::core::option::Option<i32>,
15446    #[prost(int32, optional, tag="13")]
15447    pub scheduler_tag: ::core::option::Option<i32>,
15448    #[prost(uint32, optional, tag="14")]
15449    pub sense_key: ::core::option::Option<u32>,
15450    #[prost(uint32, optional, tag="15")]
15451    pub asc: ::core::option::Option<u32>,
15452    #[prost(uint32, optional, tag="16")]
15453    pub ascq: ::core::option::Option<u32>,
15454    #[prost(bytes="vec", optional, tag="17")]
15455    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15456}
15457#[derive(Clone, PartialEq, ::prost::Message)]
15458pub struct ScsiEhWakeupFtraceEvent {
15459    #[prost(uint32, optional, tag="1")]
15460    pub host_no: ::core::option::Option<u32>,
15461}
15462// End of protos/perfetto/trace/ftrace/scsi.proto
15463
15464// Begin of protos/perfetto/trace/ftrace/sde.proto
15465
15466#[derive(Clone, PartialEq, ::prost::Message)]
15467pub struct SdeTracingMarkWriteFtraceEvent {
15468    #[prost(int32, optional, tag="1")]
15469    pub pid: ::core::option::Option<i32>,
15470    #[prost(string, optional, tag="2")]
15471    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15472    #[prost(uint32, optional, tag="3")]
15473    pub trace_type: ::core::option::Option<u32>,
15474    #[prost(int32, optional, tag="4")]
15475    pub value: ::core::option::Option<i32>,
15476    #[prost(uint32, optional, tag="5")]
15477    pub trace_begin: ::core::option::Option<u32>,
15478}
15479#[derive(Clone, PartialEq, ::prost::Message)]
15480pub struct SdeSdeEvtlogFtraceEvent {
15481    #[prost(string, optional, tag="1")]
15482    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15483    #[prost(int32, optional, tag="2")]
15484    pub pid: ::core::option::Option<i32>,
15485    #[prost(uint32, optional, tag="3")]
15486    pub tag_id: ::core::option::Option<u32>,
15487}
15488#[derive(Clone, PartialEq, ::prost::Message)]
15489pub struct SdeSdePerfCalcCrtcFtraceEvent {
15490    #[prost(uint64, optional, tag="1")]
15491    pub bw_ctl_ebi: ::core::option::Option<u64>,
15492    #[prost(uint64, optional, tag="2")]
15493    pub bw_ctl_llcc: ::core::option::Option<u64>,
15494    #[prost(uint64, optional, tag="3")]
15495    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15496    #[prost(uint32, optional, tag="4")]
15497    pub core_clk_rate: ::core::option::Option<u32>,
15498    #[prost(uint32, optional, tag="5")]
15499    pub crtc: ::core::option::Option<u32>,
15500    #[prost(uint64, optional, tag="6")]
15501    pub ib_ebi: ::core::option::Option<u64>,
15502    #[prost(uint64, optional, tag="7")]
15503    pub ib_llcc: ::core::option::Option<u64>,
15504    #[prost(uint64, optional, tag="8")]
15505    pub ib_mnoc: ::core::option::Option<u64>,
15506}
15507#[derive(Clone, PartialEq, ::prost::Message)]
15508pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15509    #[prost(uint64, optional, tag="1")]
15510    pub bw_ctl_ebi: ::core::option::Option<u64>,
15511    #[prost(uint64, optional, tag="2")]
15512    pub bw_ctl_llcc: ::core::option::Option<u64>,
15513    #[prost(uint64, optional, tag="3")]
15514    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15515    #[prost(uint32, optional, tag="4")]
15516    pub core_clk_rate: ::core::option::Option<u32>,
15517    #[prost(uint32, optional, tag="5")]
15518    pub crtc: ::core::option::Option<u32>,
15519    #[prost(int32, optional, tag="6")]
15520    pub params: ::core::option::Option<i32>,
15521    #[prost(uint64, optional, tag="7")]
15522    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15523    #[prost(uint64, optional, tag="8")]
15524    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15525    #[prost(uint64, optional, tag="9")]
15526    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15527    #[prost(uint32, optional, tag="10")]
15528    pub stop_req: ::core::option::Option<u32>,
15529    #[prost(uint32, optional, tag="11")]
15530    pub update_bus: ::core::option::Option<u32>,
15531    #[prost(uint32, optional, tag="12")]
15532    pub update_clk: ::core::option::Option<u32>,
15533}
15534#[derive(Clone, PartialEq, ::prost::Message)]
15535pub struct SdeSdePerfSetQosLutsFtraceEvent {
15536    #[prost(uint32, optional, tag="1")]
15537    pub fl: ::core::option::Option<u32>,
15538    #[prost(uint32, optional, tag="2")]
15539    pub fmt: ::core::option::Option<u32>,
15540    #[prost(uint64, optional, tag="3")]
15541    pub lut: ::core::option::Option<u64>,
15542    #[prost(uint32, optional, tag="4")]
15543    pub lut_usage: ::core::option::Option<u32>,
15544    #[prost(uint32, optional, tag="5")]
15545    pub pnum: ::core::option::Option<u32>,
15546    #[prost(uint32, optional, tag="6")]
15547    pub rt: ::core::option::Option<u32>,
15548}
15549#[derive(Clone, PartialEq, ::prost::Message)]
15550pub struct SdeSdePerfUpdateBusFtraceEvent {
15551    #[prost(uint64, optional, tag="1")]
15552    pub ab_quota: ::core::option::Option<u64>,
15553    #[prost(uint32, optional, tag="2")]
15554    pub bus_id: ::core::option::Option<u32>,
15555    #[prost(int32, optional, tag="3")]
15556    pub client: ::core::option::Option<i32>,
15557    #[prost(uint64, optional, tag="4")]
15558    pub ib_quota: ::core::option::Option<u64>,
15559}
15560// End of protos/perfetto/trace/ftrace/sde.proto
15561
15562// Begin of protos/perfetto/trace/ftrace/signal.proto
15563
15564#[derive(Clone, PartialEq, ::prost::Message)]
15565pub struct SignalDeliverFtraceEvent {
15566    #[prost(int32, optional, tag="1")]
15567    pub code: ::core::option::Option<i32>,
15568    #[prost(uint64, optional, tag="2")]
15569    pub sa_flags: ::core::option::Option<u64>,
15570    #[prost(int32, optional, tag="3")]
15571    pub sig: ::core::option::Option<i32>,
15572}
15573#[derive(Clone, PartialEq, ::prost::Message)]
15574pub struct SignalGenerateFtraceEvent {
15575    #[prost(int32, optional, tag="1")]
15576    pub code: ::core::option::Option<i32>,
15577    #[prost(string, optional, tag="2")]
15578    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15579    #[prost(int32, optional, tag="3")]
15580    pub group: ::core::option::Option<i32>,
15581    #[prost(int32, optional, tag="4")]
15582    pub pid: ::core::option::Option<i32>,
15583    #[prost(int32, optional, tag="5")]
15584    pub result: ::core::option::Option<i32>,
15585    #[prost(int32, optional, tag="6")]
15586    pub sig: ::core::option::Option<i32>,
15587}
15588// End of protos/perfetto/trace/ftrace/signal.proto
15589
15590// Begin of protos/perfetto/trace/ftrace/skb.proto
15591
15592#[derive(Clone, PartialEq, ::prost::Message)]
15593pub struct KfreeSkbFtraceEvent {
15594    #[prost(uint64, optional, tag="1")]
15595    pub location: ::core::option::Option<u64>,
15596    #[prost(uint32, optional, tag="2")]
15597    pub protocol: ::core::option::Option<u32>,
15598    #[prost(uint64, optional, tag="3")]
15599    pub skbaddr: ::core::option::Option<u64>,
15600}
15601// End of protos/perfetto/trace/ftrace/skb.proto
15602
15603// Begin of protos/perfetto/trace/ftrace/sock.proto
15604
15605#[derive(Clone, PartialEq, ::prost::Message)]
15606pub struct InetSockSetStateFtraceEvent {
15607    #[prost(uint32, optional, tag="1")]
15608    pub daddr: ::core::option::Option<u32>,
15609    #[prost(uint32, optional, tag="2")]
15610    pub dport: ::core::option::Option<u32>,
15611    #[prost(uint32, optional, tag="3")]
15612    pub family: ::core::option::Option<u32>,
15613    #[prost(int32, optional, tag="4")]
15614    pub newstate: ::core::option::Option<i32>,
15615    #[prost(int32, optional, tag="5")]
15616    pub oldstate: ::core::option::Option<i32>,
15617    #[prost(uint32, optional, tag="6")]
15618    pub protocol: ::core::option::Option<u32>,
15619    #[prost(uint32, optional, tag="7")]
15620    pub saddr: ::core::option::Option<u32>,
15621    #[prost(uint64, optional, tag="8")]
15622    pub skaddr: ::core::option::Option<u64>,
15623    #[prost(uint32, optional, tag="9")]
15624    pub sport: ::core::option::Option<u32>,
15625}
15626// End of protos/perfetto/trace/ftrace/sock.proto
15627
15628// Begin of protos/perfetto/trace/ftrace/sync.proto
15629
15630#[derive(Clone, PartialEq, ::prost::Message)]
15631pub struct SyncPtFtraceEvent {
15632    #[prost(string, optional, tag="1")]
15633    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15634    #[prost(string, optional, tag="2")]
15635    pub value: ::core::option::Option<::prost::alloc::string::String>,
15636}
15637#[derive(Clone, PartialEq, ::prost::Message)]
15638pub struct SyncTimelineFtraceEvent {
15639    #[prost(string, optional, tag="1")]
15640    pub name: ::core::option::Option<::prost::alloc::string::String>,
15641    #[prost(string, optional, tag="2")]
15642    pub value: ::core::option::Option<::prost::alloc::string::String>,
15643}
15644#[derive(Clone, PartialEq, ::prost::Message)]
15645pub struct SyncWaitFtraceEvent {
15646    #[prost(string, optional, tag="1")]
15647    pub name: ::core::option::Option<::prost::alloc::string::String>,
15648    #[prost(int32, optional, tag="2")]
15649    pub status: ::core::option::Option<i32>,
15650    #[prost(uint32, optional, tag="3")]
15651    pub begin: ::core::option::Option<u32>,
15652}
15653// End of protos/perfetto/trace/ftrace/sync.proto
15654
15655// Begin of protos/perfetto/trace/ftrace/synthetic.proto
15656
15657#[derive(Clone, PartialEq, ::prost::Message)]
15658pub struct RssStatThrottledFtraceEvent {
15659    #[prost(uint32, optional, tag="1")]
15660    pub curr: ::core::option::Option<u32>,
15661    #[prost(int32, optional, tag="2")]
15662    pub member: ::core::option::Option<i32>,
15663    #[prost(uint32, optional, tag="3")]
15664    pub mm_id: ::core::option::Option<u32>,
15665    #[prost(int64, optional, tag="4")]
15666    pub size: ::core::option::Option<i64>,
15667}
15668#[derive(Clone, PartialEq, ::prost::Message)]
15669pub struct SuspendResumeMinimalFtraceEvent {
15670    #[prost(uint32, optional, tag="1")]
15671    pub start: ::core::option::Option<u32>,
15672}
15673// End of protos/perfetto/trace/ftrace/synthetic.proto
15674
15675// Begin of protos/perfetto/trace/ftrace/systrace.proto
15676
15677#[derive(Clone, PartialEq, ::prost::Message)]
15678pub struct ZeroFtraceEvent {
15679    #[prost(int32, optional, tag="1")]
15680    pub flag: ::core::option::Option<i32>,
15681    #[prost(string, optional, tag="2")]
15682    pub name: ::core::option::Option<::prost::alloc::string::String>,
15683    #[prost(int32, optional, tag="3")]
15684    pub pid: ::core::option::Option<i32>,
15685    #[prost(int64, optional, tag="4")]
15686    pub value: ::core::option::Option<i64>,
15687}
15688// End of protos/perfetto/trace/ftrace/systrace.proto
15689
15690// Begin of protos/perfetto/trace/ftrace/task.proto
15691
15692#[derive(Clone, PartialEq, ::prost::Message)]
15693pub struct TaskNewtaskFtraceEvent {
15694    #[prost(int32, optional, tag="1")]
15695    pub pid: ::core::option::Option<i32>,
15696    #[prost(string, optional, tag="2")]
15697    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15698    #[prost(uint64, optional, tag="3")]
15699    pub clone_flags: ::core::option::Option<u64>,
15700    #[prost(int32, optional, tag="4")]
15701    pub oom_score_adj: ::core::option::Option<i32>,
15702}
15703#[derive(Clone, PartialEq, ::prost::Message)]
15704pub struct TaskRenameFtraceEvent {
15705    #[prost(int32, optional, tag="1")]
15706    pub pid: ::core::option::Option<i32>,
15707    #[prost(string, optional, tag="2")]
15708    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
15709    #[prost(string, optional, tag="3")]
15710    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
15711    #[prost(int32, optional, tag="4")]
15712    pub oom_score_adj: ::core::option::Option<i32>,
15713}
15714// End of protos/perfetto/trace/ftrace/task.proto
15715
15716// Begin of protos/perfetto/trace/ftrace/tcp.proto
15717
15718#[derive(Clone, PartialEq, ::prost::Message)]
15719pub struct TcpRetransmitSkbFtraceEvent {
15720    #[prost(uint32, optional, tag="1")]
15721    pub daddr: ::core::option::Option<u32>,
15722    #[prost(uint32, optional, tag="2")]
15723    pub dport: ::core::option::Option<u32>,
15724    #[prost(uint32, optional, tag="3")]
15725    pub saddr: ::core::option::Option<u32>,
15726    #[prost(uint64, optional, tag="4")]
15727    pub skaddr: ::core::option::Option<u64>,
15728    #[prost(uint64, optional, tag="5")]
15729    pub skbaddr: ::core::option::Option<u64>,
15730    #[prost(uint32, optional, tag="6")]
15731    pub sport: ::core::option::Option<u32>,
15732    #[prost(int32, optional, tag="7")]
15733    pub state: ::core::option::Option<i32>,
15734}
15735// End of protos/perfetto/trace/ftrace/tcp.proto
15736
15737// Begin of protos/perfetto/trace/ftrace/thermal.proto
15738
15739#[derive(Clone, PartialEq, ::prost::Message)]
15740pub struct ThermalTemperatureFtraceEvent {
15741    #[prost(int32, optional, tag="1")]
15742    pub id: ::core::option::Option<i32>,
15743    #[prost(int32, optional, tag="2")]
15744    pub temp: ::core::option::Option<i32>,
15745    #[prost(int32, optional, tag="3")]
15746    pub temp_prev: ::core::option::Option<i32>,
15747    #[prost(string, optional, tag="4")]
15748    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
15749}
15750#[derive(Clone, PartialEq, ::prost::Message)]
15751pub struct CdevUpdateFtraceEvent {
15752    #[prost(uint64, optional, tag="1")]
15753    pub target: ::core::option::Option<u64>,
15754    #[prost(string, optional, tag="2")]
15755    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
15756}
15757// End of protos/perfetto/trace/ftrace/thermal.proto
15758
15759// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
15760
15761#[derive(Clone, PartialEq, ::prost::Message)]
15762pub struct ThermalExynosAcpmBulkFtraceEvent {
15763    #[prost(uint32, optional, tag="1")]
15764    pub tz_id: ::core::option::Option<u32>,
15765    #[prost(uint32, optional, tag="2")]
15766    pub current_temp: ::core::option::Option<u32>,
15767    #[prost(uint32, optional, tag="3")]
15768    pub ctrl_temp: ::core::option::Option<u32>,
15769    #[prost(uint32, optional, tag="4")]
15770    pub cdev_state: ::core::option::Option<u32>,
15771    #[prost(int32, optional, tag="5")]
15772    pub pid_et_p: ::core::option::Option<i32>,
15773    #[prost(int32, optional, tag="6")]
15774    pub pid_power_range: ::core::option::Option<i32>,
15775    #[prost(int32, optional, tag="7")]
15776    pub pid_p: ::core::option::Option<i32>,
15777    #[prost(int32, optional, tag="8")]
15778    pub pid_i: ::core::option::Option<i32>,
15779    #[prost(int32, optional, tag="9")]
15780    pub k_p: ::core::option::Option<i32>,
15781    #[prost(int32, optional, tag="10")]
15782    pub k_i: ::core::option::Option<i32>,
15783    #[prost(uint64, optional, tag="11")]
15784    pub timestamp: ::core::option::Option<u64>,
15785}
15786#[derive(Clone, PartialEq, ::prost::Message)]
15787pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
15788    #[prost(int32, optional, tag="1")]
15789    pub tz_id: ::core::option::Option<i32>,
15790    #[prost(uint32, optional, tag="2")]
15791    pub current_temp: ::core::option::Option<u32>,
15792    #[prost(uint32, optional, tag="3")]
15793    pub ctrl_temp: ::core::option::Option<u32>,
15794    #[prost(uint32, optional, tag="4")]
15795    pub cdev_state: ::core::option::Option<u32>,
15796    #[prost(int32, optional, tag="5")]
15797    pub pid_et_p: ::core::option::Option<i32>,
15798    #[prost(int32, optional, tag="6")]
15799    pub k_p: ::core::option::Option<i32>,
15800    #[prost(int32, optional, tag="7")]
15801    pub k_i: ::core::option::Option<i32>,
15802}
15803// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
15804
15805// Begin of protos/perfetto/trace/ftrace/timer.proto
15806
15807#[derive(Clone, PartialEq, ::prost::Message)]
15808pub struct HrtimerStartFtraceEvent {
15809    #[prost(uint64, optional, tag="1")]
15810    pub hrtimer: ::core::option::Option<u64>,
15811    #[prost(uint64, optional, tag="2")]
15812    pub function: ::core::option::Option<u64>,
15813    #[prost(int64, optional, tag="3")]
15814    pub expires: ::core::option::Option<i64>,
15815    #[prost(int64, optional, tag="4")]
15816    pub softexpires: ::core::option::Option<i64>,
15817    #[prost(uint32, optional, tag="5")]
15818    pub mode: ::core::option::Option<u32>,
15819}
15820#[derive(Clone, PartialEq, ::prost::Message)]
15821pub struct HrtimerCancelFtraceEvent {
15822    #[prost(uint64, optional, tag="1")]
15823    pub hrtimer: ::core::option::Option<u64>,
15824}
15825#[derive(Clone, PartialEq, ::prost::Message)]
15826pub struct HrtimerExpireEntryFtraceEvent {
15827    #[prost(uint64, optional, tag="1")]
15828    pub hrtimer: ::core::option::Option<u64>,
15829    #[prost(int64, optional, tag="2")]
15830    pub now: ::core::option::Option<i64>,
15831    #[prost(uint64, optional, tag="3")]
15832    pub function: ::core::option::Option<u64>,
15833}
15834#[derive(Clone, PartialEq, ::prost::Message)]
15835pub struct HrtimerExpireExitFtraceEvent {
15836    #[prost(uint64, optional, tag="1")]
15837    pub hrtimer: ::core::option::Option<u64>,
15838}
15839#[derive(Clone, PartialEq, ::prost::Message)]
15840pub struct TimerStartFtraceEvent {
15841    #[prost(uint64, optional, tag="1")]
15842    pub timer: ::core::option::Option<u64>,
15843    #[prost(uint64, optional, tag="2")]
15844    pub function: ::core::option::Option<u64>,
15845    #[prost(uint64, optional, tag="3")]
15846    pub expires: ::core::option::Option<u64>,
15847    #[prost(uint64, optional, tag="4")]
15848    pub now: ::core::option::Option<u64>,
15849    #[prost(uint32, optional, tag="5")]
15850    pub deferrable: ::core::option::Option<u32>,
15851    #[prost(uint32, optional, tag="6")]
15852    pub flags: ::core::option::Option<u32>,
15853    #[prost(uint64, optional, tag="7")]
15854    pub bucket_expiry: ::core::option::Option<u64>,
15855}
15856#[derive(Clone, PartialEq, ::prost::Message)]
15857pub struct TimerCancelFtraceEvent {
15858    #[prost(uint64, optional, tag="1")]
15859    pub timer: ::core::option::Option<u64>,
15860}
15861#[derive(Clone, PartialEq, ::prost::Message)]
15862pub struct TimerExpireEntryFtraceEvent {
15863    #[prost(uint64, optional, tag="1")]
15864    pub timer: ::core::option::Option<u64>,
15865    #[prost(uint64, optional, tag="2")]
15866    pub now: ::core::option::Option<u64>,
15867    #[prost(uint64, optional, tag="3")]
15868    pub function: ::core::option::Option<u64>,
15869    #[prost(uint64, optional, tag="4")]
15870    pub baseclk: ::core::option::Option<u64>,
15871}
15872#[derive(Clone, PartialEq, ::prost::Message)]
15873pub struct TimerExpireExitFtraceEvent {
15874    #[prost(uint64, optional, tag="1")]
15875    pub timer: ::core::option::Option<u64>,
15876}
15877// End of protos/perfetto/trace/ftrace/timer.proto
15878
15879// Begin of protos/perfetto/trace/ftrace/trusty.proto
15880
15881#[derive(Clone, PartialEq, ::prost::Message)]
15882pub struct TrustySmcFtraceEvent {
15883    #[prost(uint64, optional, tag="1")]
15884    pub r0: ::core::option::Option<u64>,
15885    #[prost(uint64, optional, tag="2")]
15886    pub r1: ::core::option::Option<u64>,
15887    #[prost(uint64, optional, tag="3")]
15888    pub r2: ::core::option::Option<u64>,
15889    #[prost(uint64, optional, tag="4")]
15890    pub r3: ::core::option::Option<u64>,
15891}
15892#[derive(Clone, PartialEq, ::prost::Message)]
15893pub struct TrustySmcDoneFtraceEvent {
15894    #[prost(uint64, optional, tag="1")]
15895    pub ret: ::core::option::Option<u64>,
15896}
15897#[derive(Clone, PartialEq, ::prost::Message)]
15898pub struct TrustyStdCall32FtraceEvent {
15899    #[prost(uint64, optional, tag="1")]
15900    pub r0: ::core::option::Option<u64>,
15901    #[prost(uint64, optional, tag="2")]
15902    pub r1: ::core::option::Option<u64>,
15903    #[prost(uint64, optional, tag="3")]
15904    pub r2: ::core::option::Option<u64>,
15905    #[prost(uint64, optional, tag="4")]
15906    pub r3: ::core::option::Option<u64>,
15907}
15908#[derive(Clone, PartialEq, ::prost::Message)]
15909pub struct TrustyStdCall32DoneFtraceEvent {
15910    #[prost(int64, optional, tag="1")]
15911    pub ret: ::core::option::Option<i64>,
15912}
15913#[derive(Clone, PartialEq, ::prost::Message)]
15914pub struct TrustyShareMemoryFtraceEvent {
15915    #[prost(uint64, optional, tag="1")]
15916    pub len: ::core::option::Option<u64>,
15917    #[prost(uint32, optional, tag="2")]
15918    pub lend: ::core::option::Option<u32>,
15919    #[prost(uint32, optional, tag="3")]
15920    pub nents: ::core::option::Option<u32>,
15921}
15922#[derive(Clone, PartialEq, ::prost::Message)]
15923pub struct TrustyShareMemoryDoneFtraceEvent {
15924    #[prost(uint64, optional, tag="1")]
15925    pub handle: ::core::option::Option<u64>,
15926    #[prost(uint64, optional, tag="2")]
15927    pub len: ::core::option::Option<u64>,
15928    #[prost(uint32, optional, tag="3")]
15929    pub lend: ::core::option::Option<u32>,
15930    #[prost(uint32, optional, tag="4")]
15931    pub nents: ::core::option::Option<u32>,
15932    #[prost(int32, optional, tag="5")]
15933    pub ret: ::core::option::Option<i32>,
15934}
15935#[derive(Clone, PartialEq, ::prost::Message)]
15936pub struct TrustyReclaimMemoryFtraceEvent {
15937    #[prost(uint64, optional, tag="1")]
15938    pub id: ::core::option::Option<u64>,
15939}
15940#[derive(Clone, PartialEq, ::prost::Message)]
15941pub struct TrustyReclaimMemoryDoneFtraceEvent {
15942    #[prost(uint64, optional, tag="1")]
15943    pub id: ::core::option::Option<u64>,
15944    #[prost(int32, optional, tag="2")]
15945    pub ret: ::core::option::Option<i32>,
15946}
15947#[derive(Clone, PartialEq, ::prost::Message)]
15948pub struct TrustyIrqFtraceEvent {
15949    #[prost(int32, optional, tag="1")]
15950    pub irq: ::core::option::Option<i32>,
15951}
15952#[derive(Clone, PartialEq, ::prost::Message)]
15953pub struct TrustyIpcHandleEventFtraceEvent {
15954    #[prost(uint32, optional, tag="1")]
15955    pub chan: ::core::option::Option<u32>,
15956    #[prost(uint32, optional, tag="2")]
15957    pub event_id: ::core::option::Option<u32>,
15958    #[prost(string, optional, tag="3")]
15959    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15960}
15961#[derive(Clone, PartialEq, ::prost::Message)]
15962pub struct TrustyIpcConnectFtraceEvent {
15963    #[prost(uint32, optional, tag="1")]
15964    pub chan: ::core::option::Option<u32>,
15965    #[prost(string, optional, tag="2")]
15966    pub port: ::core::option::Option<::prost::alloc::string::String>,
15967    #[prost(int32, optional, tag="3")]
15968    pub state: ::core::option::Option<i32>,
15969}
15970#[derive(Clone, PartialEq, ::prost::Message)]
15971pub struct TrustyIpcConnectEndFtraceEvent {
15972    #[prost(uint32, optional, tag="1")]
15973    pub chan: ::core::option::Option<u32>,
15974    #[prost(int32, optional, tag="2")]
15975    pub err: ::core::option::Option<i32>,
15976    #[prost(int32, optional, tag="3")]
15977    pub state: ::core::option::Option<i32>,
15978}
15979#[derive(Clone, PartialEq, ::prost::Message)]
15980pub struct TrustyIpcWriteFtraceEvent {
15981    #[prost(uint64, optional, tag="1")]
15982    pub buf_id: ::core::option::Option<u64>,
15983    #[prost(uint32, optional, tag="2")]
15984    pub chan: ::core::option::Option<u32>,
15985    #[prost(int32, optional, tag="3")]
15986    pub kind_shm: ::core::option::Option<i32>,
15987    #[prost(int32, optional, tag="4")]
15988    pub len_or_err: ::core::option::Option<i32>,
15989    #[prost(uint64, optional, tag="5")]
15990    pub shm_cnt: ::core::option::Option<u64>,
15991    #[prost(string, optional, tag="6")]
15992    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15993}
15994#[derive(Clone, PartialEq, ::prost::Message)]
15995pub struct TrustyIpcPollFtraceEvent {
15996    #[prost(uint32, optional, tag="1")]
15997    pub chan: ::core::option::Option<u32>,
15998    #[prost(uint32, optional, tag="2")]
15999    pub poll_mask: ::core::option::Option<u32>,
16000    #[prost(string, optional, tag="3")]
16001    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16002}
16003#[derive(Clone, PartialEq, ::prost::Message)]
16004pub struct TrustyIpcReadFtraceEvent {
16005    #[prost(uint32, optional, tag="1")]
16006    pub chan: ::core::option::Option<u32>,
16007    #[prost(string, optional, tag="2")]
16008    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16009}
16010#[derive(Clone, PartialEq, ::prost::Message)]
16011pub struct TrustyIpcReadEndFtraceEvent {
16012    #[prost(uint64, optional, tag="1")]
16013    pub buf_id: ::core::option::Option<u64>,
16014    #[prost(uint32, optional, tag="2")]
16015    pub chan: ::core::option::Option<u32>,
16016    #[prost(int32, optional, tag="3")]
16017    pub len_or_err: ::core::option::Option<i32>,
16018    #[prost(uint64, optional, tag="4")]
16019    pub shm_cnt: ::core::option::Option<u64>,
16020    #[prost(string, optional, tag="5")]
16021    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16022}
16023#[derive(Clone, PartialEq, ::prost::Message)]
16024pub struct TrustyIpcRxFtraceEvent {
16025    #[prost(uint64, optional, tag="1")]
16026    pub buf_id: ::core::option::Option<u64>,
16027    #[prost(uint32, optional, tag="2")]
16028    pub chan: ::core::option::Option<u32>,
16029    #[prost(string, optional, tag="3")]
16030    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16031}
16032#[derive(Clone, PartialEq, ::prost::Message)]
16033pub struct TrustyEnqueueNopFtraceEvent {
16034    #[prost(uint32, optional, tag="1")]
16035    pub arg1: ::core::option::Option<u32>,
16036    #[prost(uint32, optional, tag="2")]
16037    pub arg2: ::core::option::Option<u32>,
16038    #[prost(uint32, optional, tag="3")]
16039    pub arg3: ::core::option::Option<u32>,
16040}
16041// End of protos/perfetto/trace/ftrace/trusty.proto
16042
16043// Begin of protos/perfetto/trace/ftrace/ufs.proto
16044
16045#[derive(Clone, PartialEq, ::prost::Message)]
16046pub struct UfshcdCommandFtraceEvent {
16047    #[prost(string, optional, tag="1")]
16048    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16049    #[prost(uint32, optional, tag="2")]
16050    pub doorbell: ::core::option::Option<u32>,
16051    #[prost(uint32, optional, tag="3")]
16052    pub intr: ::core::option::Option<u32>,
16053    #[prost(uint64, optional, tag="4")]
16054    pub lba: ::core::option::Option<u64>,
16055    #[prost(uint32, optional, tag="5")]
16056    pub opcode: ::core::option::Option<u32>,
16057    #[prost(string, optional, tag="6")]
16058    pub str: ::core::option::Option<::prost::alloc::string::String>,
16059    #[prost(uint32, optional, tag="7")]
16060    pub tag: ::core::option::Option<u32>,
16061    #[prost(int32, optional, tag="8")]
16062    pub transfer_len: ::core::option::Option<i32>,
16063    #[prost(uint32, optional, tag="9")]
16064    pub group_id: ::core::option::Option<u32>,
16065    #[prost(uint32, optional, tag="10")]
16066    pub str_t: ::core::option::Option<u32>,
16067}
16068#[derive(Clone, PartialEq, ::prost::Message)]
16069pub struct UfshcdClkGatingFtraceEvent {
16070    #[prost(string, optional, tag="1")]
16071    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16072    #[prost(int32, optional, tag="2")]
16073    pub state: ::core::option::Option<i32>,
16074}
16075// End of protos/perfetto/trace/ftrace/ufs.proto
16076
16077// Begin of protos/perfetto/trace/ftrace/v4l2.proto
16078
16079#[derive(Clone, PartialEq, ::prost::Message)]
16080pub struct V4l2QbufFtraceEvent {
16081    #[prost(uint32, optional, tag="1")]
16082    pub bytesused: ::core::option::Option<u32>,
16083    #[prost(uint32, optional, tag="2")]
16084    pub field: ::core::option::Option<u32>,
16085    #[prost(uint32, optional, tag="3")]
16086    pub flags: ::core::option::Option<u32>,
16087    #[prost(uint32, optional, tag="4")]
16088    pub index: ::core::option::Option<u32>,
16089    #[prost(int32, optional, tag="5")]
16090    pub minor: ::core::option::Option<i32>,
16091    #[prost(uint32, optional, tag="6")]
16092    pub sequence: ::core::option::Option<u32>,
16093    #[prost(uint32, optional, tag="7")]
16094    pub timecode_flags: ::core::option::Option<u32>,
16095    #[prost(uint32, optional, tag="8")]
16096    pub timecode_frames: ::core::option::Option<u32>,
16097    #[prost(uint32, optional, tag="9")]
16098    pub timecode_hours: ::core::option::Option<u32>,
16099    #[prost(uint32, optional, tag="10")]
16100    pub timecode_minutes: ::core::option::Option<u32>,
16101    #[prost(uint32, optional, tag="11")]
16102    pub timecode_seconds: ::core::option::Option<u32>,
16103    #[prost(uint32, optional, tag="12")]
16104    pub timecode_type: ::core::option::Option<u32>,
16105    #[prost(uint32, optional, tag="13")]
16106    pub timecode_userbits0: ::core::option::Option<u32>,
16107    #[prost(uint32, optional, tag="14")]
16108    pub timecode_userbits1: ::core::option::Option<u32>,
16109    #[prost(uint32, optional, tag="15")]
16110    pub timecode_userbits2: ::core::option::Option<u32>,
16111    #[prost(uint32, optional, tag="16")]
16112    pub timecode_userbits3: ::core::option::Option<u32>,
16113    #[prost(int64, optional, tag="17")]
16114    pub timestamp: ::core::option::Option<i64>,
16115    #[prost(uint32, optional, tag="18")]
16116    pub r#type: ::core::option::Option<u32>,
16117}
16118#[derive(Clone, PartialEq, ::prost::Message)]
16119pub struct V4l2DqbufFtraceEvent {
16120    #[prost(uint32, optional, tag="1")]
16121    pub bytesused: ::core::option::Option<u32>,
16122    #[prost(uint32, optional, tag="2")]
16123    pub field: ::core::option::Option<u32>,
16124    #[prost(uint32, optional, tag="3")]
16125    pub flags: ::core::option::Option<u32>,
16126    #[prost(uint32, optional, tag="4")]
16127    pub index: ::core::option::Option<u32>,
16128    #[prost(int32, optional, tag="5")]
16129    pub minor: ::core::option::Option<i32>,
16130    #[prost(uint32, optional, tag="6")]
16131    pub sequence: ::core::option::Option<u32>,
16132    #[prost(uint32, optional, tag="7")]
16133    pub timecode_flags: ::core::option::Option<u32>,
16134    #[prost(uint32, optional, tag="8")]
16135    pub timecode_frames: ::core::option::Option<u32>,
16136    #[prost(uint32, optional, tag="9")]
16137    pub timecode_hours: ::core::option::Option<u32>,
16138    #[prost(uint32, optional, tag="10")]
16139    pub timecode_minutes: ::core::option::Option<u32>,
16140    #[prost(uint32, optional, tag="11")]
16141    pub timecode_seconds: ::core::option::Option<u32>,
16142    #[prost(uint32, optional, tag="12")]
16143    pub timecode_type: ::core::option::Option<u32>,
16144    #[prost(uint32, optional, tag="13")]
16145    pub timecode_userbits0: ::core::option::Option<u32>,
16146    #[prost(uint32, optional, tag="14")]
16147    pub timecode_userbits1: ::core::option::Option<u32>,
16148    #[prost(uint32, optional, tag="15")]
16149    pub timecode_userbits2: ::core::option::Option<u32>,
16150    #[prost(uint32, optional, tag="16")]
16151    pub timecode_userbits3: ::core::option::Option<u32>,
16152    #[prost(int64, optional, tag="17")]
16153    pub timestamp: ::core::option::Option<i64>,
16154    #[prost(uint32, optional, tag="18")]
16155    pub r#type: ::core::option::Option<u32>,
16156}
16157#[derive(Clone, PartialEq, ::prost::Message)]
16158pub struct Vb2V4l2BufQueueFtraceEvent {
16159    #[prost(uint32, optional, tag="1")]
16160    pub field: ::core::option::Option<u32>,
16161    #[prost(uint32, optional, tag="2")]
16162    pub flags: ::core::option::Option<u32>,
16163    #[prost(int32, optional, tag="3")]
16164    pub minor: ::core::option::Option<i32>,
16165    #[prost(uint32, optional, tag="4")]
16166    pub sequence: ::core::option::Option<u32>,
16167    #[prost(uint32, optional, tag="5")]
16168    pub timecode_flags: ::core::option::Option<u32>,
16169    #[prost(uint32, optional, tag="6")]
16170    pub timecode_frames: ::core::option::Option<u32>,
16171    #[prost(uint32, optional, tag="7")]
16172    pub timecode_hours: ::core::option::Option<u32>,
16173    #[prost(uint32, optional, tag="8")]
16174    pub timecode_minutes: ::core::option::Option<u32>,
16175    #[prost(uint32, optional, tag="9")]
16176    pub timecode_seconds: ::core::option::Option<u32>,
16177    #[prost(uint32, optional, tag="10")]
16178    pub timecode_type: ::core::option::Option<u32>,
16179    #[prost(uint32, optional, tag="11")]
16180    pub timecode_userbits0: ::core::option::Option<u32>,
16181    #[prost(uint32, optional, tag="12")]
16182    pub timecode_userbits1: ::core::option::Option<u32>,
16183    #[prost(uint32, optional, tag="13")]
16184    pub timecode_userbits2: ::core::option::Option<u32>,
16185    #[prost(uint32, optional, tag="14")]
16186    pub timecode_userbits3: ::core::option::Option<u32>,
16187    #[prost(int64, optional, tag="15")]
16188    pub timestamp: ::core::option::Option<i64>,
16189}
16190#[derive(Clone, PartialEq, ::prost::Message)]
16191pub struct Vb2V4l2BufDoneFtraceEvent {
16192    #[prost(uint32, optional, tag="1")]
16193    pub field: ::core::option::Option<u32>,
16194    #[prost(uint32, optional, tag="2")]
16195    pub flags: ::core::option::Option<u32>,
16196    #[prost(int32, optional, tag="3")]
16197    pub minor: ::core::option::Option<i32>,
16198    #[prost(uint32, optional, tag="4")]
16199    pub sequence: ::core::option::Option<u32>,
16200    #[prost(uint32, optional, tag="5")]
16201    pub timecode_flags: ::core::option::Option<u32>,
16202    #[prost(uint32, optional, tag="6")]
16203    pub timecode_frames: ::core::option::Option<u32>,
16204    #[prost(uint32, optional, tag="7")]
16205    pub timecode_hours: ::core::option::Option<u32>,
16206    #[prost(uint32, optional, tag="8")]
16207    pub timecode_minutes: ::core::option::Option<u32>,
16208    #[prost(uint32, optional, tag="9")]
16209    pub timecode_seconds: ::core::option::Option<u32>,
16210    #[prost(uint32, optional, tag="10")]
16211    pub timecode_type: ::core::option::Option<u32>,
16212    #[prost(uint32, optional, tag="11")]
16213    pub timecode_userbits0: ::core::option::Option<u32>,
16214    #[prost(uint32, optional, tag="12")]
16215    pub timecode_userbits1: ::core::option::Option<u32>,
16216    #[prost(uint32, optional, tag="13")]
16217    pub timecode_userbits2: ::core::option::Option<u32>,
16218    #[prost(uint32, optional, tag="14")]
16219    pub timecode_userbits3: ::core::option::Option<u32>,
16220    #[prost(int64, optional, tag="15")]
16221    pub timestamp: ::core::option::Option<i64>,
16222}
16223#[derive(Clone, PartialEq, ::prost::Message)]
16224pub struct Vb2V4l2QbufFtraceEvent {
16225    #[prost(uint32, optional, tag="1")]
16226    pub field: ::core::option::Option<u32>,
16227    #[prost(uint32, optional, tag="2")]
16228    pub flags: ::core::option::Option<u32>,
16229    #[prost(int32, optional, tag="3")]
16230    pub minor: ::core::option::Option<i32>,
16231    #[prost(uint32, optional, tag="4")]
16232    pub sequence: ::core::option::Option<u32>,
16233    #[prost(uint32, optional, tag="5")]
16234    pub timecode_flags: ::core::option::Option<u32>,
16235    #[prost(uint32, optional, tag="6")]
16236    pub timecode_frames: ::core::option::Option<u32>,
16237    #[prost(uint32, optional, tag="7")]
16238    pub timecode_hours: ::core::option::Option<u32>,
16239    #[prost(uint32, optional, tag="8")]
16240    pub timecode_minutes: ::core::option::Option<u32>,
16241    #[prost(uint32, optional, tag="9")]
16242    pub timecode_seconds: ::core::option::Option<u32>,
16243    #[prost(uint32, optional, tag="10")]
16244    pub timecode_type: ::core::option::Option<u32>,
16245    #[prost(uint32, optional, tag="11")]
16246    pub timecode_userbits0: ::core::option::Option<u32>,
16247    #[prost(uint32, optional, tag="12")]
16248    pub timecode_userbits1: ::core::option::Option<u32>,
16249    #[prost(uint32, optional, tag="13")]
16250    pub timecode_userbits2: ::core::option::Option<u32>,
16251    #[prost(uint32, optional, tag="14")]
16252    pub timecode_userbits3: ::core::option::Option<u32>,
16253    #[prost(int64, optional, tag="15")]
16254    pub timestamp: ::core::option::Option<i64>,
16255}
16256#[derive(Clone, PartialEq, ::prost::Message)]
16257pub struct Vb2V4l2DqbufFtraceEvent {
16258    #[prost(uint32, optional, tag="1")]
16259    pub field: ::core::option::Option<u32>,
16260    #[prost(uint32, optional, tag="2")]
16261    pub flags: ::core::option::Option<u32>,
16262    #[prost(int32, optional, tag="3")]
16263    pub minor: ::core::option::Option<i32>,
16264    #[prost(uint32, optional, tag="4")]
16265    pub sequence: ::core::option::Option<u32>,
16266    #[prost(uint32, optional, tag="5")]
16267    pub timecode_flags: ::core::option::Option<u32>,
16268    #[prost(uint32, optional, tag="6")]
16269    pub timecode_frames: ::core::option::Option<u32>,
16270    #[prost(uint32, optional, tag="7")]
16271    pub timecode_hours: ::core::option::Option<u32>,
16272    #[prost(uint32, optional, tag="8")]
16273    pub timecode_minutes: ::core::option::Option<u32>,
16274    #[prost(uint32, optional, tag="9")]
16275    pub timecode_seconds: ::core::option::Option<u32>,
16276    #[prost(uint32, optional, tag="10")]
16277    pub timecode_type: ::core::option::Option<u32>,
16278    #[prost(uint32, optional, tag="11")]
16279    pub timecode_userbits0: ::core::option::Option<u32>,
16280    #[prost(uint32, optional, tag="12")]
16281    pub timecode_userbits1: ::core::option::Option<u32>,
16282    #[prost(uint32, optional, tag="13")]
16283    pub timecode_userbits2: ::core::option::Option<u32>,
16284    #[prost(uint32, optional, tag="14")]
16285    pub timecode_userbits3: ::core::option::Option<u32>,
16286    #[prost(int64, optional, tag="15")]
16287    pub timestamp: ::core::option::Option<i64>,
16288}
16289// End of protos/perfetto/trace/ftrace/v4l2.proto
16290
16291// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16292
16293#[derive(Clone, PartialEq, ::prost::Message)]
16294pub struct VirtioGpuCmdQueueFtraceEvent {
16295    #[prost(uint32, optional, tag="1")]
16296    pub ctx_id: ::core::option::Option<u32>,
16297    #[prost(int32, optional, tag="2")]
16298    pub dev: ::core::option::Option<i32>,
16299    #[prost(uint64, optional, tag="3")]
16300    pub fence_id: ::core::option::Option<u64>,
16301    #[prost(uint32, optional, tag="4")]
16302    pub flags: ::core::option::Option<u32>,
16303    #[prost(string, optional, tag="5")]
16304    pub name: ::core::option::Option<::prost::alloc::string::String>,
16305    #[prost(uint32, optional, tag="6")]
16306    pub num_free: ::core::option::Option<u32>,
16307    #[prost(uint32, optional, tag="7")]
16308    pub seqno: ::core::option::Option<u32>,
16309    #[prost(uint32, optional, tag="8")]
16310    pub r#type: ::core::option::Option<u32>,
16311    #[prost(uint32, optional, tag="9")]
16312    pub vq: ::core::option::Option<u32>,
16313}
16314#[derive(Clone, PartialEq, ::prost::Message)]
16315pub struct VirtioGpuCmdResponseFtraceEvent {
16316    #[prost(uint32, optional, tag="1")]
16317    pub ctx_id: ::core::option::Option<u32>,
16318    #[prost(int32, optional, tag="2")]
16319    pub dev: ::core::option::Option<i32>,
16320    #[prost(uint64, optional, tag="3")]
16321    pub fence_id: ::core::option::Option<u64>,
16322    #[prost(uint32, optional, tag="4")]
16323    pub flags: ::core::option::Option<u32>,
16324    #[prost(string, optional, tag="5")]
16325    pub name: ::core::option::Option<::prost::alloc::string::String>,
16326    #[prost(uint32, optional, tag="6")]
16327    pub num_free: ::core::option::Option<u32>,
16328    #[prost(uint32, optional, tag="7")]
16329    pub seqno: ::core::option::Option<u32>,
16330    #[prost(uint32, optional, tag="8")]
16331    pub r#type: ::core::option::Option<u32>,
16332    #[prost(uint32, optional, tag="9")]
16333    pub vq: ::core::option::Option<u32>,
16334}
16335// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16336
16337// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16338
16339#[derive(Clone, PartialEq, ::prost::Message)]
16340pub struct VirtioVideoCmdFtraceEvent {
16341    #[prost(uint32, optional, tag="1")]
16342    pub stream_id: ::core::option::Option<u32>,
16343    #[prost(uint32, optional, tag="2")]
16344    pub r#type: ::core::option::Option<u32>,
16345}
16346#[derive(Clone, PartialEq, ::prost::Message)]
16347pub struct VirtioVideoCmdDoneFtraceEvent {
16348    #[prost(uint32, optional, tag="1")]
16349    pub stream_id: ::core::option::Option<u32>,
16350    #[prost(uint32, optional, tag="2")]
16351    pub r#type: ::core::option::Option<u32>,
16352}
16353#[derive(Clone, PartialEq, ::prost::Message)]
16354pub struct VirtioVideoResourceQueueFtraceEvent {
16355    #[prost(uint32, optional, tag="1")]
16356    pub data_size0: ::core::option::Option<u32>,
16357    #[prost(uint32, optional, tag="2")]
16358    pub data_size1: ::core::option::Option<u32>,
16359    #[prost(uint32, optional, tag="3")]
16360    pub data_size2: ::core::option::Option<u32>,
16361    #[prost(uint32, optional, tag="4")]
16362    pub data_size3: ::core::option::Option<u32>,
16363    #[prost(uint32, optional, tag="5")]
16364    pub queue_type: ::core::option::Option<u32>,
16365    #[prost(int32, optional, tag="6")]
16366    pub resource_id: ::core::option::Option<i32>,
16367    #[prost(int32, optional, tag="7")]
16368    pub stream_id: ::core::option::Option<i32>,
16369    #[prost(uint64, optional, tag="8")]
16370    pub timestamp: ::core::option::Option<u64>,
16371}
16372#[derive(Clone, PartialEq, ::prost::Message)]
16373pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16374    #[prost(uint32, optional, tag="1")]
16375    pub data_size0: ::core::option::Option<u32>,
16376    #[prost(uint32, optional, tag="2")]
16377    pub data_size1: ::core::option::Option<u32>,
16378    #[prost(uint32, optional, tag="3")]
16379    pub data_size2: ::core::option::Option<u32>,
16380    #[prost(uint32, optional, tag="4")]
16381    pub data_size3: ::core::option::Option<u32>,
16382    #[prost(uint32, optional, tag="5")]
16383    pub queue_type: ::core::option::Option<u32>,
16384    #[prost(int32, optional, tag="6")]
16385    pub resource_id: ::core::option::Option<i32>,
16386    #[prost(int32, optional, tag="7")]
16387    pub stream_id: ::core::option::Option<i32>,
16388    #[prost(uint64, optional, tag="8")]
16389    pub timestamp: ::core::option::Option<u64>,
16390}
16391// End of protos/perfetto/trace/ftrace/virtio_video.proto
16392
16393// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16394
16395#[derive(Clone, PartialEq, ::prost::Message)]
16396pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16397    #[prost(int32, optional, tag="1")]
16398    pub order: ::core::option::Option<i32>,
16399    #[prost(int32, optional, tag="2")]
16400    pub may_writepage: ::core::option::Option<i32>,
16401    #[prost(uint32, optional, tag="3")]
16402    pub gfp_flags: ::core::option::Option<u32>,
16403}
16404#[derive(Clone, PartialEq, ::prost::Message)]
16405pub struct MmVmscanDirectReclaimEndFtraceEvent {
16406    #[prost(uint64, optional, tag="1")]
16407    pub nr_reclaimed: ::core::option::Option<u64>,
16408}
16409#[derive(Clone, PartialEq, ::prost::Message)]
16410pub struct MmVmscanKswapdWakeFtraceEvent {
16411    #[prost(int32, optional, tag="1")]
16412    pub nid: ::core::option::Option<i32>,
16413    #[prost(int32, optional, tag="2")]
16414    pub order: ::core::option::Option<i32>,
16415    #[prost(int32, optional, tag="3")]
16416    pub zid: ::core::option::Option<i32>,
16417}
16418#[derive(Clone, PartialEq, ::prost::Message)]
16419pub struct MmVmscanKswapdSleepFtraceEvent {
16420    #[prost(int32, optional, tag="1")]
16421    pub nid: ::core::option::Option<i32>,
16422}
16423#[derive(Clone, PartialEq, ::prost::Message)]
16424pub struct MmShrinkSlabStartFtraceEvent {
16425    #[prost(uint64, optional, tag="1")]
16426    pub cache_items: ::core::option::Option<u64>,
16427    #[prost(uint64, optional, tag="2")]
16428    pub delta: ::core::option::Option<u64>,
16429    #[prost(uint32, optional, tag="3")]
16430    pub gfp_flags: ::core::option::Option<u32>,
16431    #[prost(uint64, optional, tag="4")]
16432    pub lru_pgs: ::core::option::Option<u64>,
16433    #[prost(int64, optional, tag="5")]
16434    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16435    #[prost(uint64, optional, tag="6")]
16436    pub pgs_scanned: ::core::option::Option<u64>,
16437    #[prost(uint64, optional, tag="7")]
16438    pub shr: ::core::option::Option<u64>,
16439    #[prost(uint64, optional, tag="8")]
16440    pub shrink: ::core::option::Option<u64>,
16441    #[prost(uint64, optional, tag="9")]
16442    pub total_scan: ::core::option::Option<u64>,
16443    #[prost(int32, optional, tag="10")]
16444    pub nid: ::core::option::Option<i32>,
16445    #[prost(int32, optional, tag="11")]
16446    pub priority: ::core::option::Option<i32>,
16447}
16448#[derive(Clone, PartialEq, ::prost::Message)]
16449pub struct MmShrinkSlabEndFtraceEvent {
16450    #[prost(int64, optional, tag="1")]
16451    pub new_scan: ::core::option::Option<i64>,
16452    #[prost(int32, optional, tag="2")]
16453    pub retval: ::core::option::Option<i32>,
16454    #[prost(uint64, optional, tag="3")]
16455    pub shr: ::core::option::Option<u64>,
16456    #[prost(uint64, optional, tag="4")]
16457    pub shrink: ::core::option::Option<u64>,
16458    #[prost(int64, optional, tag="5")]
16459    pub total_scan: ::core::option::Option<i64>,
16460    #[prost(int64, optional, tag="6")]
16461    pub unused_scan: ::core::option::Option<i64>,
16462    #[prost(int32, optional, tag="7")]
16463    pub nid: ::core::option::Option<i32>,
16464}
16465// End of protos/perfetto/trace/ftrace/vmscan.proto
16466
16467// Begin of protos/perfetto/trace/ftrace/workqueue.proto
16468
16469#[derive(Clone, PartialEq, ::prost::Message)]
16470pub struct WorkqueueActivateWorkFtraceEvent {
16471    #[prost(uint64, optional, tag="1")]
16472    pub work: ::core::option::Option<u64>,
16473    #[prost(uint64, optional, tag="2")]
16474    pub function: ::core::option::Option<u64>,
16475}
16476#[derive(Clone, PartialEq, ::prost::Message)]
16477pub struct WorkqueueExecuteEndFtraceEvent {
16478    #[prost(uint64, optional, tag="1")]
16479    pub work: ::core::option::Option<u64>,
16480    #[prost(uint64, optional, tag="2")]
16481    pub function: ::core::option::Option<u64>,
16482}
16483#[derive(Clone, PartialEq, ::prost::Message)]
16484pub struct WorkqueueExecuteStartFtraceEvent {
16485    #[prost(uint64, optional, tag="1")]
16486    pub work: ::core::option::Option<u64>,
16487    #[prost(uint64, optional, tag="2")]
16488    pub function: ::core::option::Option<u64>,
16489}
16490#[derive(Clone, PartialEq, ::prost::Message)]
16491pub struct WorkqueueQueueWorkFtraceEvent {
16492    #[prost(uint64, optional, tag="1")]
16493    pub work: ::core::option::Option<u64>,
16494    #[prost(uint64, optional, tag="2")]
16495    pub function: ::core::option::Option<u64>,
16496    #[prost(int32, optional, tag="4")]
16497    pub req_cpu: ::core::option::Option<i32>,
16498    #[prost(int32, optional, tag="5")]
16499    pub cpu: ::core::option::Option<i32>,
16500    #[prost(string, optional, tag="6")]
16501    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16502}
16503// End of protos/perfetto/trace/ftrace/workqueue.proto
16504
16505// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
16506
16507#[derive(Clone, PartialEq, ::prost::Message)]
16508pub struct FtraceEvent {
16509    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16510    #[prost(uint64, optional, tag="1")]
16511    pub timestamp: ::core::option::Option<u64>,
16512    /// Kernel pid (do not confuse with userspace pid aka tgid).
16513    #[prost(uint32, optional, tag="2")]
16514    pub pid: ::core::option::Option<u32>,
16515    /// Not populated in actual traces. Wire format might change.
16516    /// Placeholder declaration so that the ftrace parsing code accepts the
16517    /// existence of this common field. If this becomes needed for all events:
16518    /// consider merging with common_preempt_count to avoid extra proto tags.
16519    #[prost(uint32, optional, tag="5")]
16520    pub common_flags: ::core::option::Option<u32>,
16521    #[prost(oneof="ftrace_event::Event", tags="3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602")]
16522    pub event: ::core::option::Option<ftrace_event::Event>,
16523}
16524/// Nested message and enum types in `FtraceEvent`.
16525pub mod ftrace_event {
16526    #[derive(Clone, PartialEq, ::prost::Oneof)]
16527    pub enum Event {
16528        #[prost(message, tag="3")]
16529        Print(super::PrintFtraceEvent),
16530        #[prost(message, tag="4")]
16531        SchedSwitch(super::SchedSwitchFtraceEvent),
16532        /// removed field with id 5;
16533        /// removed field with id 6;
16534        /// removed field with id 7;
16535        /// removed field with id 8;
16536        /// removed field with id 9;
16537        /// removed field with id 10;
16538        #[prost(message, tag="11")]
16539        CpuFrequency(super::CpuFrequencyFtraceEvent),
16540        #[prost(message, tag="12")]
16541        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16542        #[prost(message, tag="13")]
16543        CpuIdle(super::CpuIdleFtraceEvent),
16544        #[prost(message, tag="14")]
16545        ClockEnable(super::ClockEnableFtraceEvent),
16546        #[prost(message, tag="15")]
16547        ClockDisable(super::ClockDisableFtraceEvent),
16548        #[prost(message, tag="16")]
16549        ClockSetRate(super::ClockSetRateFtraceEvent),
16550        #[prost(message, tag="17")]
16551        SchedWakeup(super::SchedWakeupFtraceEvent),
16552        #[prost(message, tag="18")]
16553        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16554        #[prost(message, tag="19")]
16555        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16556        #[prost(message, tag="20")]
16557        SchedWaking(super::SchedWakingFtraceEvent),
16558        #[prost(message, tag="21")]
16559        IpiEntry(super::IpiEntryFtraceEvent),
16560        #[prost(message, tag="22")]
16561        IpiExit(super::IpiExitFtraceEvent),
16562        #[prost(message, tag="23")]
16563        IpiRaise(super::IpiRaiseFtraceEvent),
16564        #[prost(message, tag="24")]
16565        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16566        #[prost(message, tag="25")]
16567        SoftirqExit(super::SoftirqExitFtraceEvent),
16568        #[prost(message, tag="26")]
16569        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16570        #[prost(message, tag="27")]
16571        I2cRead(super::I2cReadFtraceEvent),
16572        #[prost(message, tag="28")]
16573        I2cWrite(super::I2cWriteFtraceEvent),
16574        #[prost(message, tag="29")]
16575        I2cResult(super::I2cResultFtraceEvent),
16576        #[prost(message, tag="30")]
16577        I2cReply(super::I2cReplyFtraceEvent),
16578        #[prost(message, tag="31")]
16579        SmbusRead(super::SmbusReadFtraceEvent),
16580        #[prost(message, tag="32")]
16581        SmbusWrite(super::SmbusWriteFtraceEvent),
16582        #[prost(message, tag="33")]
16583        SmbusResult(super::SmbusResultFtraceEvent),
16584        #[prost(message, tag="34")]
16585        SmbusReply(super::SmbusReplyFtraceEvent),
16586        #[prost(message, tag="35")]
16587        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16588        #[prost(message, tag="36")]
16589        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16590        #[prost(message, tag="37")]
16591        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16592        #[prost(message, tag="38")]
16593        SyncPt(super::SyncPtFtraceEvent),
16594        #[prost(message, tag="39")]
16595        SyncTimeline(super::SyncTimelineFtraceEvent),
16596        #[prost(message, tag="40")]
16597        SyncWait(super::SyncWaitFtraceEvent),
16598        #[prost(message, tag="41")]
16599        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16600        #[prost(message, tag="42")]
16601        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16602        #[prost(message, tag="43")]
16603        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16604        #[prost(message, tag="44")]
16605        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16606        #[prost(message, tag="45")]
16607        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16608        #[prost(message, tag="46")]
16609        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16610        #[prost(message, tag="47")]
16611        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16612        #[prost(message, tag="48")]
16613        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16614        #[prost(message, tag="49")]
16615        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16616        #[prost(message, tag="50")]
16617        BinderTransaction(super::BinderTransactionFtraceEvent),
16618        #[prost(message, tag="51")]
16619        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16620        #[prost(message, tag="52")]
16621        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16622        #[prost(message, tag="53")]
16623        BinderLock(super::BinderLockFtraceEvent),
16624        #[prost(message, tag="54")]
16625        BinderLocked(super::BinderLockedFtraceEvent),
16626        #[prost(message, tag="55")]
16627        BinderUnlock(super::BinderUnlockFtraceEvent),
16628        #[prost(message, tag="56")]
16629        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16630        #[prost(message, tag="57")]
16631        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16632        #[prost(message, tag="58")]
16633        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16634        #[prost(message, tag="59")]
16635        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
16636        #[prost(message, tag="60")]
16637        RegulatorDisable(super::RegulatorDisableFtraceEvent),
16638        #[prost(message, tag="61")]
16639        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
16640        #[prost(message, tag="62")]
16641        RegulatorEnable(super::RegulatorEnableFtraceEvent),
16642        #[prost(message, tag="63")]
16643        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
16644        #[prost(message, tag="64")]
16645        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
16646        #[prost(message, tag="65")]
16647        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
16648        #[prost(message, tag="66")]
16649        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
16650        #[prost(message, tag="67")]
16651        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
16652        #[prost(message, tag="68")]
16653        CgroupMkdir(super::CgroupMkdirFtraceEvent),
16654        #[prost(message, tag="69")]
16655        CgroupRemount(super::CgroupRemountFtraceEvent),
16656        #[prost(message, tag="70")]
16657        CgroupRmdir(super::CgroupRmdirFtraceEvent),
16658        #[prost(message, tag="71")]
16659        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
16660        #[prost(message, tag="72")]
16661        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
16662        #[prost(message, tag="73")]
16663        CgroupRelease(super::CgroupReleaseFtraceEvent),
16664        #[prost(message, tag="74")]
16665        CgroupRename(super::CgroupRenameFtraceEvent),
16666        #[prost(message, tag="75")]
16667        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
16668        #[prost(message, tag="76")]
16669        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
16670        #[prost(message, tag="77")]
16671        MdpCommit(super::MdpCommitFtraceEvent),
16672        #[prost(message, tag="78")]
16673        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
16674        #[prost(message, tag="79")]
16675        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
16676        #[prost(message, tag="80")]
16677        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
16678        #[prost(message, tag="81")]
16679        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
16680        #[prost(message, tag="82")]
16681        MdpCompareBw(super::MdpCompareBwFtraceEvent),
16682        #[prost(message, tag="83")]
16683        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
16684        #[prost(message, tag="84")]
16685        MdpSsppSet(super::MdpSsppSetFtraceEvent),
16686        #[prost(message, tag="85")]
16687        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
16688        #[prost(message, tag="86")]
16689        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
16690        #[prost(message, tag="87")]
16691        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
16692        #[prost(message, tag="88")]
16693        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
16694        #[prost(message, tag="89")]
16695        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
16696        #[prost(message, tag="90")]
16697        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
16698        #[prost(message, tag="91")]
16699        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
16700        #[prost(message, tag="92")]
16701        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
16702        #[prost(message, tag="93")]
16703        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
16704        #[prost(message, tag="94")]
16705        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
16706        #[prost(message, tag="95")]
16707        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
16708        #[prost(message, tag="96")]
16709        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
16710        #[prost(message, tag="97")]
16711        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
16712        #[prost(message, tag="98")]
16713        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
16714        #[prost(message, tag="99")]
16715        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
16716        #[prost(message, tag="100")]
16717        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
16718        #[prost(message, tag="101")]
16719        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
16720        #[prost(message, tag="102")]
16721        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
16722        #[prost(message, tag="103")]
16723        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
16724        #[prost(message, tag="104")]
16725        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
16726        #[prost(message, tag="105")]
16727        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
16728        #[prost(message, tag="106")]
16729        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
16730        #[prost(message, tag="107")]
16731        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
16732        #[prost(message, tag="108")]
16733        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
16734        #[prost(message, tag="109")]
16735        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
16736        #[prost(message, tag="110")]
16737        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
16738        #[prost(message, tag="111")]
16739        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
16740        #[prost(message, tag="112")]
16741        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
16742        #[prost(message, tag="113")]
16743        SuspendResume(super::SuspendResumeFtraceEvent),
16744        #[prost(message, tag="114")]
16745        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
16746        #[prost(message, tag="115")]
16747        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
16748        #[prost(message, tag="116")]
16749        BlockBioBounce(super::BlockBioBounceFtraceEvent),
16750        #[prost(message, tag="117")]
16751        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
16752        #[prost(message, tag="118")]
16753        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
16754        #[prost(message, tag="119")]
16755        BlockBioQueue(super::BlockBioQueueFtraceEvent),
16756        #[prost(message, tag="120")]
16757        BlockBioRemap(super::BlockBioRemapFtraceEvent),
16758        #[prost(message, tag="121")]
16759        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
16760        #[prost(message, tag="122")]
16761        BlockGetrq(super::BlockGetrqFtraceEvent),
16762        #[prost(message, tag="123")]
16763        BlockPlug(super::BlockPlugFtraceEvent),
16764        #[prost(message, tag="124")]
16765        BlockRqAbort(super::BlockRqAbortFtraceEvent),
16766        #[prost(message, tag="125")]
16767        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
16768        #[prost(message, tag="126")]
16769        BlockRqInsert(super::BlockRqInsertFtraceEvent),
16770        /// removed field with id 127;
16771        #[prost(message, tag="128")]
16772        BlockRqRemap(super::BlockRqRemapFtraceEvent),
16773        #[prost(message, tag="129")]
16774        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
16775        #[prost(message, tag="130")]
16776        BlockSleeprq(super::BlockSleeprqFtraceEvent),
16777        #[prost(message, tag="131")]
16778        BlockSplit(super::BlockSplitFtraceEvent),
16779        #[prost(message, tag="132")]
16780        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
16781        #[prost(message, tag="133")]
16782        BlockUnplug(super::BlockUnplugFtraceEvent),
16783        #[prost(message, tag="134")]
16784        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
16785        #[prost(message, tag="135")]
16786        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
16787        #[prost(message, tag="136")]
16788        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
16789        #[prost(message, tag="137")]
16790        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
16791        #[prost(message, tag="138")]
16792        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
16793        #[prost(message, tag="139")]
16794        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
16795        #[prost(message, tag="140")]
16796        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
16797        #[prost(message, tag="141")]
16798        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
16799        #[prost(message, tag="142")]
16800        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
16801        #[prost(message, tag="143")]
16802        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
16803        #[prost(message, tag="144")]
16804        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
16805        #[prost(message, tag="145")]
16806        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
16807        #[prost(message, tag="146")]
16808        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
16809        #[prost(message, tag="147")]
16810        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
16811        #[prost(message, tag="148")]
16812        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
16813        #[prost(message, tag="149")]
16814        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
16815        #[prost(message, tag="150")]
16816        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
16817        #[prost(message, tag="151")]
16818        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
16819        #[prost(message, tag="152")]
16820        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
16821        #[prost(message, tag="153")]
16822        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
16823        #[prost(message, tag="154")]
16824        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
16825        #[prost(message, tag="155")]
16826        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
16827        #[prost(message, tag="156")]
16828        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
16829        #[prost(message, tag="157")]
16830        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
16831        #[prost(message, tag="158")]
16832        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
16833        #[prost(message, tag="159")]
16834        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
16835        #[prost(message, tag="160")]
16836        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
16837        #[prost(message, tag="161")]
16838        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
16839        #[prost(message, tag="162")]
16840        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
16841        #[prost(message, tag="163")]
16842        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
16843        #[prost(message, tag="164")]
16844        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
16845        #[prost(message, tag="165")]
16846        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
16847        #[prost(message, tag="166")]
16848        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
16849        #[prost(message, tag="167")]
16850        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
16851        #[prost(message, tag="168")]
16852        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
16853        #[prost(message, tag="169")]
16854        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
16855        #[prost(message, tag="170")]
16856        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
16857        #[prost(message, tag="171")]
16858        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
16859        #[prost(message, tag="172")]
16860        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
16861        #[prost(message, tag="173")]
16862        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
16863        #[prost(message, tag="174")]
16864        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
16865        #[prost(message, tag="175")]
16866        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
16867        #[prost(message, tag="176")]
16868        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
16869        #[prost(message, tag="177")]
16870        Ext4Forget(super::Ext4ForgetFtraceEvent),
16871        #[prost(message, tag="178")]
16872        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
16873        #[prost(message, tag="179")]
16874        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
16875        #[prost(message, tag="180")]
16876        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
16877        #[prost(message, tag="181")]
16878        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
16879        #[prost(message, tag="182")]
16880        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
16881        #[prost(message, tag="183")]
16882        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
16883        #[prost(message, tag="184")]
16884        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
16885        #[prost(message, tag="185")]
16886        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
16887        #[prost(message, tag="186")]
16888        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
16889        #[prost(message, tag="187")]
16890        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
16891        #[prost(message, tag="188")]
16892        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
16893        #[prost(message, tag="189")]
16894        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
16895        #[prost(message, tag="190")]
16896        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
16897        #[prost(message, tag="191")]
16898        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
16899        #[prost(message, tag="192")]
16900        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
16901        #[prost(message, tag="193")]
16902        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
16903        #[prost(message, tag="194")]
16904        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
16905        #[prost(message, tag="195")]
16906        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
16907        #[prost(message, tag="196")]
16908        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
16909        #[prost(message, tag="197")]
16910        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
16911        #[prost(message, tag="198")]
16912        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
16913        #[prost(message, tag="199")]
16914        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
16915        #[prost(message, tag="200")]
16916        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
16917        #[prost(message, tag="201")]
16918        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
16919        #[prost(message, tag="202")]
16920        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
16921        #[prost(message, tag="203")]
16922        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
16923        #[prost(message, tag="204")]
16924        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
16925        #[prost(message, tag="205")]
16926        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
16927        #[prost(message, tag="206")]
16928        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
16929        #[prost(message, tag="207")]
16930        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
16931        #[prost(message, tag="208")]
16932        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
16933        #[prost(message, tag="209")]
16934        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
16935        #[prost(message, tag="210")]
16936        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
16937        #[prost(message, tag="211")]
16938        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
16939        #[prost(message, tag="212")]
16940        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
16941        #[prost(message, tag="213")]
16942        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
16943        #[prost(message, tag="214")]
16944        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
16945        #[prost(message, tag="215")]
16946        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
16947        #[prost(message, tag="216")]
16948        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
16949        #[prost(message, tag="217")]
16950        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
16951        #[prost(message, tag="218")]
16952        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
16953        #[prost(message, tag="219")]
16954        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
16955        /// removed field with id 220;
16956        /// removed field with id 221;
16957        /// removed field with id 222;
16958        /// removed field with id 223;
16959        /// removed field with id 224;
16960        /// removed field with id 225;
16961        /// removed field with id 226;
16962        /// removed field with id 227;
16963        /// removed field with id 228;
16964        /// removed field with id 229;
16965        #[prost(message, tag="230")]
16966        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
16967        #[prost(message, tag="231")]
16968        Ext4Writepage(super::Ext4WritepageFtraceEvent),
16969        #[prost(message, tag="232")]
16970        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
16971        #[prost(message, tag="233")]
16972        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
16973        #[prost(message, tag="234")]
16974        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
16975        #[prost(message, tag="235")]
16976        TaskNewtask(super::TaskNewtaskFtraceEvent),
16977        #[prost(message, tag="236")]
16978        TaskRename(super::TaskRenameFtraceEvent),
16979        #[prost(message, tag="237")]
16980        SchedProcessExec(super::SchedProcessExecFtraceEvent),
16981        #[prost(message, tag="238")]
16982        SchedProcessExit(super::SchedProcessExitFtraceEvent),
16983        #[prost(message, tag="239")]
16984        SchedProcessFork(super::SchedProcessForkFtraceEvent),
16985        #[prost(message, tag="240")]
16986        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
16987        #[prost(message, tag="241")]
16988        SchedProcessHang(super::SchedProcessHangFtraceEvent),
16989        #[prost(message, tag="242")]
16990        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
16991        #[prost(message, tag="243")]
16992        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
16993        #[prost(message, tag="244")]
16994        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
16995        #[prost(message, tag="245")]
16996        F2fsFallocate(super::F2fsFallocateFtraceEvent),
16997        #[prost(message, tag="246")]
16998        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
16999        #[prost(message, tag="247")]
17000        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17001        #[prost(message, tag="248")]
17002        F2fsIget(super::F2fsIgetFtraceEvent),
17003        #[prost(message, tag="249")]
17004        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17005        #[prost(message, tag="250")]
17006        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17007        #[prost(message, tag="251")]
17008        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17009        #[prost(message, tag="252")]
17010        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17011        #[prost(message, tag="253")]
17012        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17013        #[prost(message, tag="254")]
17014        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17015        #[prost(message, tag="255")]
17016        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17017        #[prost(message, tag="256")]
17018        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17019        #[prost(message, tag="257")]
17020        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17021        #[prost(message, tag="258")]
17022        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17023        #[prost(message, tag="259")]
17024        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17025        #[prost(message, tag="260")]
17026        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17027        #[prost(message, tag="261")]
17028        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17029        #[prost(message, tag="262")]
17030        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17031        #[prost(message, tag="263")]
17032        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17033        #[prost(message, tag="264")]
17034        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17035        #[prost(message, tag="265")]
17036        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17037        #[prost(message, tag="266")]
17038        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17039        #[prost(message, tag="267")]
17040        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17041        #[prost(message, tag="268")]
17042        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17043        #[prost(message, tag="269")]
17044        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17045        #[prost(message, tag="270")]
17046        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17047        #[prost(message, tag="271")]
17048        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17049        #[prost(message, tag="272")]
17050        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17051        #[prost(message, tag="273")]
17052        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17053        #[prost(message, tag="274")]
17054        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17055        #[prost(message, tag="275")]
17056        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17057        #[prost(message, tag="276")]
17058        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17059        #[prost(message, tag="277")]
17060        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17061        #[prost(message, tag="278")]
17062        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17063        #[prost(message, tag="279")]
17064        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17065        #[prost(message, tag="280")]
17066        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17067        #[prost(message, tag="281")]
17068        IommuMapRange(super::IommuMapRangeFtraceEvent),
17069        #[prost(message, tag="282")]
17070        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17071        #[prost(message, tag="283")]
17072        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17073        #[prost(message, tag="284")]
17074        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17075        #[prost(message, tag="285")]
17076        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17077        #[prost(message, tag="286")]
17078        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17079        #[prost(message, tag="287")]
17080        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17081        #[prost(message, tag="288")]
17082        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17083        #[prost(message, tag="289")]
17084        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17085        #[prost(message, tag="290")]
17086        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17087        #[prost(message, tag="291")]
17088        IonPrefetching(super::IonPrefetchingFtraceEvent),
17089        #[prost(message, tag="292")]
17090        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17091        #[prost(message, tag="293")]
17092        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17093        #[prost(message, tag="294")]
17094        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17095        #[prost(message, tag="295")]
17096        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17097        #[prost(message, tag="296")]
17098        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17099        #[prost(message, tag="297")]
17100        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17101        #[prost(message, tag="298")]
17102        Kfree(super::KfreeFtraceEvent),
17103        #[prost(message, tag="299")]
17104        Kmalloc(super::KmallocFtraceEvent),
17105        #[prost(message, tag="300")]
17106        KmallocNode(super::KmallocNodeFtraceEvent),
17107        #[prost(message, tag="301")]
17108        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17109        #[prost(message, tag="302")]
17110        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17111        #[prost(message, tag="303")]
17112        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17113        #[prost(message, tag="304")]
17114        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17115        #[prost(message, tag="305")]
17116        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17117        #[prost(message, tag="306")]
17118        MigrateRetry(super::MigrateRetryFtraceEvent),
17119        #[prost(message, tag="307")]
17120        MmPageAlloc(super::MmPageAllocFtraceEvent),
17121        #[prost(message, tag="308")]
17122        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17123        #[prost(message, tag="309")]
17124        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17125        #[prost(message, tag="310")]
17126        MmPageFree(super::MmPageFreeFtraceEvent),
17127        #[prost(message, tag="311")]
17128        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17129        #[prost(message, tag="312")]
17130        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17131        #[prost(message, tag="313")]
17132        RssStat(super::RssStatFtraceEvent),
17133        #[prost(message, tag="314")]
17134        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17135        #[prost(message, tag="315")]
17136        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17137        #[prost(message, tag="316")]
17138        FenceInit(super::FenceInitFtraceEvent),
17139        #[prost(message, tag="317")]
17140        FenceDestroy(super::FenceDestroyFtraceEvent),
17141        #[prost(message, tag="318")]
17142        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17143        #[prost(message, tag="319")]
17144        FenceSignaled(super::FenceSignaledFtraceEvent),
17145        #[prost(message, tag="320")]
17146        ClkEnable(super::ClkEnableFtraceEvent),
17147        #[prost(message, tag="321")]
17148        ClkDisable(super::ClkDisableFtraceEvent),
17149        #[prost(message, tag="322")]
17150        ClkSetRate(super::ClkSetRateFtraceEvent),
17151        #[prost(message, tag="323")]
17152        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17153        #[prost(message, tag="324")]
17154        SignalDeliver(super::SignalDeliverFtraceEvent),
17155        #[prost(message, tag="325")]
17156        SignalGenerate(super::SignalGenerateFtraceEvent),
17157        #[prost(message, tag="326")]
17158        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17159        #[prost(message, tag="327")]
17160        Generic(super::GenericFtraceEvent),
17161        #[prost(message, tag="328")]
17162        MmEventRecord(super::MmEventRecordFtraceEvent),
17163        #[prost(message, tag="329")]
17164        SysEnter(super::SysEnterFtraceEvent),
17165        #[prost(message, tag="330")]
17166        SysExit(super::SysExitFtraceEvent),
17167        #[prost(message, tag="331")]
17168        Zero(super::ZeroFtraceEvent),
17169        #[prost(message, tag="332")]
17170        GpuFrequency(super::GpuFrequencyFtraceEvent),
17171        #[prost(message, tag="333")]
17172        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17173        #[prost(message, tag="334")]
17174        MarkVictim(super::MarkVictimFtraceEvent),
17175        #[prost(message, tag="335")]
17176        IonStat(super::IonStatFtraceEvent),
17177        #[prost(message, tag="336")]
17178        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17179        #[prost(message, tag="337")]
17180        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17181        #[prost(message, tag="338")]
17182        ScmCallStart(super::ScmCallStartFtraceEvent),
17183        #[prost(message, tag="339")]
17184        ScmCallEnd(super::ScmCallEndFtraceEvent),
17185        #[prost(message, tag="340")]
17186        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17187        #[prost(message, tag="341")]
17188        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17189        #[prost(message, tag="342")]
17190        CdevUpdate(super::CdevUpdateFtraceEvent),
17191        #[prost(message, tag="343")]
17192        CpuhpExit(super::CpuhpExitFtraceEvent),
17193        #[prost(message, tag="344")]
17194        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17195        #[prost(message, tag="345")]
17196        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17197        #[prost(message, tag="346")]
17198        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17199        #[prost(message, tag="347")]
17200        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17201        #[prost(message, tag="348")]
17202        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17203        #[prost(message, tag="349")]
17204        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17205        #[prost(message, tag="350")]
17206        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17207        #[prost(message, tag="351")]
17208        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17209        #[prost(message, tag="352")]
17210        CpuhpPause(super::CpuhpPauseFtraceEvent),
17211        #[prost(message, tag="353")]
17212        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17213        #[prost(message, tag="354")]
17214        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17215        #[prost(message, tag="355")]
17216        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17217        #[prost(message, tag="356")]
17218        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17219        #[prost(message, tag="357")]
17220        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17221        #[prost(message, tag="358")]
17222        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17223        #[prost(message, tag="359")]
17224        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17225        #[prost(message, tag="360")]
17226        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17227        #[prost(message, tag="361")]
17228        NetDevXmit(super::NetDevXmitFtraceEvent),
17229        #[prost(message, tag="362")]
17230        InetSockSetState(super::InetSockSetStateFtraceEvent),
17231        #[prost(message, tag="363")]
17232        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17233        #[prost(message, tag="364")]
17234        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17235        #[prost(message, tag="365")]
17236        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17237        #[prost(message, tag="366")]
17238        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17239        #[prost(message, tag="367")]
17240        KfreeSkb(super::KfreeSkbFtraceEvent),
17241        #[prost(message, tag="368")]
17242        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17243        #[prost(message, tag="369")]
17244        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17245        #[prost(message, tag="370")]
17246        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17247        #[prost(message, tag="371")]
17248        KvmAgePage(super::KvmAgePageFtraceEvent),
17249        #[prost(message, tag="372")]
17250        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17251        #[prost(message, tag="373")]
17252        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17253        #[prost(message, tag="374")]
17254        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17255        #[prost(message, tag="375")]
17256        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17257        #[prost(message, tag="376")]
17258        KvmEntry(super::KvmEntryFtraceEvent),
17259        #[prost(message, tag="377")]
17260        KvmExit(super::KvmExitFtraceEvent),
17261        #[prost(message, tag="378")]
17262        KvmFpu(super::KvmFpuFtraceEvent),
17263        #[prost(message, tag="379")]
17264        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17265        #[prost(message, tag="380")]
17266        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17267        #[prost(message, tag="381")]
17268        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17269        #[prost(message, tag="382")]
17270        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17271        #[prost(message, tag="383")]
17272        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17273        #[prost(message, tag="384")]
17274        KvmMmio(super::KvmMmioFtraceEvent),
17275        #[prost(message, tag="385")]
17276        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17277        #[prost(message, tag="386")]
17278        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17279        #[prost(message, tag="387")]
17280        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17281        #[prost(message, tag="388")]
17282        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17283        #[prost(message, tag="389")]
17284        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17285        #[prost(message, tag="390")]
17286        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17287        #[prost(message, tag="391")]
17288        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17289        #[prost(message, tag="392")]
17290        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17291        #[prost(message, tag="393")]
17292        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17293        #[prost(message, tag="394")]
17294        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17295        #[prost(message, tag="395")]
17296        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17297        #[prost(message, tag="396")]
17298        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17299        #[prost(message, tag="397")]
17300        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17301        #[prost(message, tag="398")]
17302        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17303        #[prost(message, tag="399")]
17304        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17305        #[prost(message, tag="400")]
17306        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17307        #[prost(message, tag="401")]
17308        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17309        #[prost(message, tag="402")]
17310        TrapReg(super::TrapRegFtraceEvent),
17311        #[prost(message, tag="403")]
17312        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17313        #[prost(message, tag="404")]
17314        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17315        #[prost(message, tag="405")]
17316        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17317        #[prost(message, tag="406")]
17318        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17319        #[prost(message, tag="407")]
17320        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17321        #[prost(message, tag="408")]
17322        Console(super::ConsoleFtraceEvent),
17323        #[prost(message, tag="409")]
17324        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17325        #[prost(message, tag="410")]
17326        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17327        #[prost(message, tag="411")]
17328        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17329        #[prost(message, tag="412")]
17330        DrmRunJob(super::DrmRunJobFtraceEvent),
17331        #[prost(message, tag="413")]
17332        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17333        #[prost(message, tag="414")]
17334        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17335        #[prost(message, tag="415")]
17336        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17337        #[prost(message, tag="416")]
17338        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17339        #[prost(message, tag="417")]
17340        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17341        #[prost(message, tag="418")]
17342        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17343        #[prost(message, tag="419")]
17344        F2fsIostat(super::F2fsIostatFtraceEvent),
17345        #[prost(message, tag="420")]
17346        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17347        #[prost(message, tag="421")]
17348        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17349        #[prost(message, tag="422")]
17350        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17351        #[prost(message, tag="423")]
17352        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17353        #[prost(message, tag="424")]
17354        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17355        #[prost(message, tag="425")]
17356        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17357        #[prost(message, tag="426")]
17358        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17359        #[prost(message, tag="427")]
17360        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17361        #[prost(message, tag="428")]
17362        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17363        #[prost(message, tag="429")]
17364        DsiRx(super::DsiRxFtraceEvent),
17365        #[prost(message, tag="430")]
17366        DsiTx(super::DsiTxFtraceEvent),
17367        #[prost(message, tag="431")]
17368        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17369        #[prost(message, tag="432")]
17370        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17371        #[prost(message, tag="433")]
17372        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17373        #[prost(message, tag="434")]
17374        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17375        #[prost(message, tag="435")]
17376        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17377        #[prost(message, tag="436")]
17378        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17379        #[prost(message, tag="437")]
17380        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17381        #[prost(message, tag="438")]
17382        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17383        #[prost(message, tag="439")]
17384        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17385        #[prost(message, tag="440")]
17386        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17387        #[prost(message, tag="441")]
17388        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17389        #[prost(message, tag="442")]
17390        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17391        #[prost(message, tag="443")]
17392        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17393        #[prost(message, tag="444")]
17394        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17395        #[prost(message, tag="445")]
17396        TrustySmc(super::TrustySmcFtraceEvent),
17397        #[prost(message, tag="446")]
17398        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17399        #[prost(message, tag="447")]
17400        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17401        #[prost(message, tag="448")]
17402        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17403        #[prost(message, tag="449")]
17404        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17405        #[prost(message, tag="450")]
17406        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17407        #[prost(message, tag="451")]
17408        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17409        #[prost(message, tag="452")]
17410        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17411        #[prost(message, tag="453")]
17412        TrustyIrq(super::TrustyIrqFtraceEvent),
17413        #[prost(message, tag="454")]
17414        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17415        #[prost(message, tag="455")]
17416        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17417        #[prost(message, tag="456")]
17418        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17419        #[prost(message, tag="457")]
17420        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17421        #[prost(message, tag="458")]
17422        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17423        /// removed field with id 459;
17424        #[prost(message, tag="460")]
17425        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17426        #[prost(message, tag="461")]
17427        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17428        #[prost(message, tag="462")]
17429        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17430        /// removed field with id 463;
17431        #[prost(message, tag="464")]
17432        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17433        #[prost(message, tag="465")]
17434        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17435        #[prost(message, tag="466")]
17436        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17437        #[prost(message, tag="467")]
17438        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17439        #[prost(message, tag="468")]
17440        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17441        #[prost(message, tag="469")]
17442        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17443        #[prost(message, tag="470")]
17444        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17445        #[prost(message, tag="471")]
17446        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17447        #[prost(message, tag="472")]
17448        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17449        #[prost(message, tag="473")]
17450        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17451        #[prost(message, tag="474")]
17452        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17453        #[prost(message, tag="475")]
17454        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17455        #[prost(message, tag="476")]
17456        HypEnter(super::HypEnterFtraceEvent),
17457        #[prost(message, tag="477")]
17458        HypExit(super::HypExitFtraceEvent),
17459        #[prost(message, tag="478")]
17460        HostHcall(super::HostHcallFtraceEvent),
17461        #[prost(message, tag="479")]
17462        HostSmc(super::HostSmcFtraceEvent),
17463        #[prost(message, tag="480")]
17464        HostMemAbort(super::HostMemAbortFtraceEvent),
17465        #[prost(message, tag="481")]
17466        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17467        #[prost(message, tag="482")]
17468        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17469        #[prost(message, tag="483")]
17470        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17471        #[prost(message, tag="484")]
17472        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17473        #[prost(message, tag="485")]
17474        BinderCommand(super::BinderCommandFtraceEvent),
17475        #[prost(message, tag="486")]
17476        BinderReturn(super::BinderReturnFtraceEvent),
17477        #[prost(message, tag="487")]
17478        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17479        #[prost(message, tag="488")]
17480        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17481        #[prost(message, tag="489")]
17482        RpmStatus(super::RpmStatusFtraceEvent),
17483        #[prost(message, tag="490")]
17484        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17485        #[prost(message, tag="491")]
17486        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17487        #[prost(message, tag="492")]
17488        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17489        #[prost(message, tag="493")]
17490        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17491        #[prost(message, tag="494")]
17492        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17493        #[prost(message, tag="495")]
17494        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17495        #[prost(message, tag="496")]
17496        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17497        #[prost(message, tag="497")]
17498        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17499        #[prost(message, tag="498")]
17500        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17501        #[prost(message, tag="499")]
17502        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17503        #[prost(message, tag="500")]
17504        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17505        #[prost(message, tag="501")]
17506        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17507        #[prost(message, tag="502")]
17508        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17509        #[prost(message, tag="503")]
17510        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17511        #[prost(message, tag="504")]
17512        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17513        #[prost(message, tag="505")]
17514        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17515        #[prost(message, tag="506")]
17516        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17517        #[prost(message, tag="507")]
17518        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17519        #[prost(message, tag="508")]
17520        DcvshFreq(super::DcvshFreqFtraceEvent),
17521        #[prost(message, tag="509")]
17522        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17523        #[prost(message, tag="510")]
17524        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
17525        #[prost(message, tag="511")]
17526        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
17527        #[prost(message, tag="512")]
17528        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
17529        #[prost(message, tag="513")]
17530        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17531        #[prost(message, tag="514")]
17532        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
17533        #[prost(message, tag="515")]
17534        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
17535        #[prost(message, tag="516")]
17536        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17537        #[prost(message, tag="517")]
17538        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
17539        #[prost(message, tag="518")]
17540        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17541        #[prost(message, tag="519")]
17542        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17543        #[prost(message, tag="520")]
17544        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17545        #[prost(message, tag="521")]
17546        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
17547        #[prost(message, tag="522")]
17548        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17549        #[prost(message, tag="523")]
17550        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17551        #[prost(message, tag="524")]
17552        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17553        #[prost(message, tag="525")]
17554        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17555        #[prost(message, tag="526")]
17556        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17557        #[prost(message, tag="527")]
17558        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17559        #[prost(message, tag="528")]
17560        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17561        #[prost(message, tag="529")]
17562        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17563        #[prost(message, tag="530")]
17564        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17565        #[prost(message, tag="531")]
17566        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17567        #[prost(message, tag="532")]
17568        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17569        #[prost(message, tag="533")]
17570        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17571        #[prost(message, tag="534")]
17572        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17573        #[prost(message, tag="535")]
17574        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17575        #[prost(message, tag="536")]
17576        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17577        #[prost(message, tag="537")]
17578        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17579        #[prost(message, tag="538")]
17580        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17581        #[prost(message, tag="539")]
17582        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17583        #[prost(message, tag="540")]
17584        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17585        #[prost(message, tag="541")]
17586        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17587        #[prost(message, tag="542")]
17588        KprobeEvent(super::KprobeEvent),
17589        #[prost(message, tag="543")]
17590        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17591        #[prost(message, tag="544")]
17592        DoSysOpen(super::DoSysOpenFtraceEvent),
17593        #[prost(message, tag="545")]
17594        OpenExec(super::OpenExecFtraceEvent),
17595        #[prost(message, tag="546")]
17596        BlockIoStart(super::BlockIoStartFtraceEvent),
17597        #[prost(message, tag="547")]
17598        BlockIoDone(super::BlockIoDoneFtraceEvent),
17599        #[prost(message, tag="548")]
17600        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17601        #[prost(message, tag="549")]
17602        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17603        #[prost(message, tag="550")]
17604        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17605        #[prost(message, tag="551")]
17606        HrtimerStart(super::HrtimerStartFtraceEvent),
17607        #[prost(message, tag="552")]
17608        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17609        #[prost(message, tag="553")]
17610        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
17611        #[prost(message, tag="554")]
17612        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
17613        #[prost(message, tag="555")]
17614        TimerStart(super::TimerStartFtraceEvent),
17615        #[prost(message, tag="556")]
17616        TimerCancel(super::TimerCancelFtraceEvent),
17617        #[prost(message, tag="557")]
17618        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
17619        #[prost(message, tag="558")]
17620        TimerExpireExit(super::TimerExpireExitFtraceEvent),
17621        #[prost(message, tag="559")]
17622        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
17623        #[prost(message, tag="560")]
17624        LocalTimerExit(super::LocalTimerExitFtraceEvent),
17625        #[prost(message, tag="561")]
17626        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
17627        #[prost(message, tag="562")]
17628        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
17629        #[prost(message, tag="563")]
17630        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
17631        #[prost(message, tag="564")]
17632        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
17633        #[prost(message, tag="565")]
17634        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
17635        #[prost(message, tag="566")]
17636        Dwc3Event(super::Dwc3EventFtraceEvent),
17637        #[prost(message, tag="567")]
17638        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
17639        #[prost(message, tag="568")]
17640        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
17641        #[prost(message, tag="569")]
17642        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
17643        #[prost(message, tag="570")]
17644        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
17645        #[prost(message, tag="571")]
17646        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
17647        #[prost(message, tag="572")]
17648        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
17649        #[prost(message, tag="573")]
17650        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
17651        #[prost(message, tag="574")]
17652        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
17653        #[prost(message, tag="575")]
17654        Dwc3Writel(super::Dwc3WritelFtraceEvent),
17655        #[prost(message, tag="576")]
17656        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
17657        #[prost(message, tag="577")]
17658        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
17659        #[prost(message, tag="578")]
17660        HostFfaCall(super::HostFfaCallFtraceEvent),
17661        #[prost(message, tag="579")]
17662        DmabufRssStat(super::DmabufRssStatFtraceEvent),
17663        #[prost(message, tag="580")]
17664        IommuIdmap(super::IommuIdmapFtraceEvent),
17665        #[prost(message, tag="581")]
17666        PsciMemProtect(super::PsciMemProtectFtraceEvent),
17667        #[prost(message, tag="582")]
17668        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
17669        #[prost(message, tag="583")]
17670        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
17671        #[prost(message, tag="584")]
17672        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
17673        #[prost(message, tag="585")]
17674        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
17675        #[prost(message, tag="586")]
17676        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
17677        #[prost(message, tag="587")]
17678        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
17679        #[prost(message, tag="588")]
17680        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
17681        #[prost(message, tag="589")]
17682        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
17683        #[prost(message, tag="590")]
17684        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
17685        #[prost(message, tag="591")]
17686        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
17687        #[prost(message, tag="592")]
17688        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
17689        #[prost(message, tag="593")]
17690        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
17691        #[prost(message, tag="594")]
17692        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
17693        #[prost(message, tag="595")]
17694        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
17695        #[prost(message, tag="596")]
17696        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
17697        #[prost(message, tag="597")]
17698        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
17699        #[prost(message, tag="598")]
17700        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
17701        #[prost(message, tag="599")]
17702        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
17703        #[prost(message, tag="600")]
17704        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
17705        #[prost(message, tag="601")]
17706        GpuPowerState(super::GpuPowerStateFtraceEvent),
17707        #[prost(message, tag="602")]
17708        GramCollision(super::GramCollisionFtraceEvent),
17709    }
17710}
17711// End of protos/perfetto/trace/ftrace/ftrace_event.proto
17712
17713// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
17714
17715/// Per-CPU kernel buffer stats for the ftrace data source gathered from
17716/// /sys/kernel/tracing/per_cpu/cpuX/stats.
17717#[derive(Clone, PartialEq, ::prost::Message)]
17718pub struct FtraceCpuStats {
17719    /// CPU index.
17720    #[prost(uint64, optional, tag="1")]
17721    pub cpu: ::core::option::Option<u64>,
17722    /// Number of entries currently in the kernel buffer.
17723    #[prost(uint64, optional, tag="2")]
17724    pub entries: ::core::option::Option<u64>,
17725    /// Number of events lost in kernel buffers due to overwriting of old events
17726    /// before userspace had a chance to drain them. Valid if the buffer is in
17727    /// "overwrite" mode, otherwise see |dropped_events|.
17728    #[prost(uint64, optional, tag="3")]
17729    pub overrun: ::core::option::Option<u64>,
17730    /// This should always be zero. If not the buffer size is way too small or
17731    /// something went wrong with the tracer. Quoting the kernel: "number of
17732    /// commits failing due to the buffer wrapping around while there are
17733    /// uncommitted events, such as during an interrupt storm".
17734    #[prost(uint64, optional, tag="4")]
17735    pub commit_overrun: ::core::option::Option<u64>,
17736    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
17737    /// The field should be named "bytes", but is misnamed for historical reasons.
17738    /// This value has known inaccuracies before Linux v6.6:
17739    /// <https://github.com/torvalds/linux/commit/45d99ea>
17740    #[prost(uint64, optional, tag="5")]
17741    pub bytes_read: ::core::option::Option<u64>,
17742    /// The timestamp for the oldest event still in the ring buffer.
17743    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17744    #[prost(double, optional, tag="6")]
17745    pub oldest_event_ts: ::core::option::Option<f64>,
17746    /// The current timestamp.
17747    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17748    #[prost(double, optional, tag="7")]
17749    pub now_ts: ::core::option::Option<f64>,
17750    /// If the kernel buffer has overwrite mode disabled, this will show the number
17751    /// of new events that were lost because the buffer was full. This is similar
17752    /// to |overrun| but only for the overwrite=false case.
17753    #[prost(uint64, optional, tag="8")]
17754    pub dropped_events: ::core::option::Option<u64>,
17755    /// The number of events read (consumed) from the buffer by userspace.
17756    #[prost(uint64, optional, tag="9")]
17757    pub read_events: ::core::option::Option<u64>,
17758}
17759/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
17760#[derive(Clone, PartialEq, ::prost::Message)]
17761pub struct FtraceKprobeStats {
17762    /// Cumulative number of kprobe events generated for this function
17763    #[prost(int64, optional, tag="1")]
17764    pub hits: ::core::option::Option<i64>,
17765    /// Cumulative number of kprobe events that could not be generated for this
17766    /// function and were missed.  This happens when too much nesting
17767    /// happens between a kprobe and its kretprobe, overflowing the
17768    /// maxactives buffer.
17769    #[prost(int64, optional, tag="2")]
17770    pub misses: ::core::option::Option<i64>,
17771}
17772/// Errors and kernel buffer stats for the ftrace data source.
17773#[derive(Clone, PartialEq, ::prost::Message)]
17774pub struct FtraceStats {
17775    /// A pair of FtraceStats is written on every trace flush:
17776    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
17777    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
17778    ///                   before this packet was written. For simple traces this
17779    ///                   will be once at the end of the trace.
17780    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
17781    pub phase: ::core::option::Option<i32>,
17782    /// Per-CPU stats (one entry for each CPU).
17783    #[prost(message, repeated, tag="2")]
17784    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
17785    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
17786    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
17787    /// trace or not. It can be used to debug kptr_restrict or security-related
17788    /// errors.
17789    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
17790    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
17791    #[prost(uint32, optional, tag="3")]
17792    pub kernel_symbols_parsed: ::core::option::Option<u32>,
17793    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
17794    #[prost(uint32, optional, tag="4")]
17795    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
17796    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
17797    /// one or more atrace categories not available on the device.
17798    #[prost(string, optional, tag="5")]
17799    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
17800    /// Error message due to exclusivity violation of a single-tenant feature.
17801    #[prost(string, optional, tag="13")]
17802    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
17803    /// Ftrace events requested by the config but not present on device.
17804    #[prost(string, repeated, tag="6")]
17805    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17806    /// Ftrace events requested by the config and present on device, but which we
17807    /// failed to enable due to permissions, or due to a conflicting option
17808    /// (currently FtraceConfig.disable_generic_events).
17809    #[prost(string, repeated, tag="7")]
17810    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17811    /// The data source was configured to preserve existing events in the ftrace
17812    /// buffer before the start of the trace.
17813    #[prost(bool, optional, tag="8")]
17814    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
17815    /// Unique errors encountered during reading and parsing of the raw ftrace
17816    /// data. Ring buffer ABI related errors will also be recorded in the
17817    /// affected FtraceEventBundles with a timestamp.
17818    /// Any traces with entries in this field should be investigated, as they
17819    /// indicate a bug in perfetto or the kernel.
17820    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
17821    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
17822    /// Kprobe profile stats for functions hits and misses
17823    #[prost(message, optional, tag="10")]
17824    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
17825    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
17826    /// Added in: perfetto v52.
17827    #[prost(uint32, optional, tag="11")]
17828    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
17829    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
17830    /// on the value we're writing into the tracefs control file. Might not be
17831    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
17832    /// scratch pages (and/or other factors). Added in: perfetto v52.
17833    #[prost(uint32, optional, tag="12")]
17834    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
17835}
17836/// Nested message and enum types in `FtraceStats`.
17837pub mod ftrace_stats {
17838    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17839    #[repr(i32)]
17840    pub enum Phase {
17841        Unspecified = 0,
17842        StartOfTrace = 1,
17843        EndOfTrace = 2,
17844    }
17845    impl Phase {
17846        /// String value of the enum field names used in the ProtoBuf definition.
17847        ///
17848        /// The values are not transformed in any way and thus are considered stable
17849        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17850        pub fn as_str_name(&self) -> &'static str {
17851            match self {
17852                Phase::Unspecified => "UNSPECIFIED",
17853                Phase::StartOfTrace => "START_OF_TRACE",
17854                Phase::EndOfTrace => "END_OF_TRACE",
17855            }
17856        }
17857    }
17858}
17859// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
17860
17861// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17862
17863/// The result of tracing one or more ftrace data pages from a single per-cpu
17864/// kernel ring buffer. If collating multiple pages' worth of events, all of
17865/// them come from contiguous pages, with no kernel data loss in between.
17866#[derive(Clone, PartialEq, ::prost::Message)]
17867pub struct FtraceEventBundle {
17868    #[prost(uint32, optional, tag="1")]
17869    pub cpu: ::core::option::Option<u32>,
17870    #[prost(message, repeated, tag="2")]
17871    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
17872    /// Set to true if there was data loss between the last time we've read from
17873    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
17874    /// in this bundle.
17875    #[prost(bool, optional, tag="3")]
17876    pub lost_events: ::core::option::Option<bool>,
17877    #[prost(message, optional, tag="4")]
17878    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
17879    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
17880    /// timestamps as that counts during suspend, is available to userspace, and
17881    /// is coherent across cpus.
17882    ///
17883    /// If this field is set, it means that a different clock was used during
17884    /// recording. Either because the boot clock is unavailable (e.g. old kernels
17885    /// before 3.x), or the trace config has set an incompatible option
17886    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
17887    /// trace_processor will do best-effort clock alignment using timestamp pairs
17888    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
17889    /// when the ftrace clock is "boot", as that is the default assumption.
17890    ///
17891    /// Some clocks (local/global) are technically per-cpu, but we make a
17892    /// simplifying assumption that they are global, as their inter-cpu skew
17893    /// should be reasonably bounded on modern systems.
17894    ///
17895    /// Added in: perfetto v19. Android T (13).
17896    #[prost(enumeration="FtraceClock", optional, tag="5")]
17897    pub ftrace_clock: ::core::option::Option<i32>,
17898    /// The timestamp according to the ftrace clock, taken at the same instant as
17899    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
17900    /// will be in the future relative to the data covered by this bundle.
17901    /// Implementation note: Populated by reading the 'now ts:' field in
17902    /// tracefs/per_cpu/cpu0/stat.
17903    ///
17904    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17905    #[prost(int64, optional, tag="6")]
17906    pub ftrace_timestamp: ::core::option::Option<i64>,
17907    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
17908    /// |ftrace_timestamp|.
17909    ///
17910    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17911    #[prost(int64, optional, tag="7")]
17912    pub boot_timestamp: ::core::option::Option<i64>,
17913    #[prost(message, repeated, tag="8")]
17914    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
17915    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
17916    /// primary difference is that this field tracked the last timestamp read from
17917    /// the per-cpu buffer, while the newer field tracks events that get
17918    /// serialised into the trace.
17919    /// Added in: perfetto v44.
17920    #[prost(uint64, optional, tag="9")]
17921    pub last_read_event_timestamp: ::core::option::Option<u64>,
17922    /// The timestamp (using ftrace clock) of the last event written into this
17923    /// data source on this cpu. In other words: the last event in the previous
17924    /// bundle.
17925    /// Lets the trace processing find an initial timestamp after which ftrace
17926    /// data is known to be valid across all cpus. Of particular importance when
17927    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
17928    /// oldest bundles can skew the first valid timestamp per cpu significantly.
17929    /// Added in: perfetto v47.
17930    #[prost(uint64, optional, tag="10")]
17931    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
17932    #[prost(message, repeated, tag="11")]
17933    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
17934    /// Written only on android builds if the config sets |debug_ftrace_abi|.
17935    /// Contains the raw ring buffer tracing page that the implementation could
17936    /// not parse.
17937    /// Addded in: perfetto v50.
17938    #[prost(bytes="vec", optional, tag="512")]
17939    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17940}
17941/// Nested message and enum types in `FtraceEventBundle`.
17942pub mod ftrace_event_bundle {
17943    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
17944    /// a subset of events & their fields is recorded.
17945    /// All fields (except comms) are stored in a structure-of-arrays form, one
17946    /// entry in each repeated field per event.
17947    #[derive(Clone, PartialEq, ::prost::Message)]
17948    pub struct CompactSched {
17949        /// Interned table of unique strings for this bundle.
17950        #[prost(string, repeated, tag="5")]
17951        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17952        /// Delta-encoded timestamps across all sched_switch events within this
17953        /// bundle. The first is absolute, each next one is relative to its
17954        /// predecessor.
17955        #[prost(uint64, repeated, tag="1")]
17956        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
17957        #[prost(int64, repeated, tag="2")]
17958        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
17959        #[prost(int32, repeated, tag="3")]
17960        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
17961        #[prost(int32, repeated, tag="4")]
17962        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
17963        /// One per event, index into |intern_table| corresponding to the
17964        /// next_comm field of the event.
17965        #[prost(uint32, repeated, tag="6")]
17966        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
17967        /// Delta-encoded timestamps across all sched_waking events within this
17968        /// bundle. The first is absolute, each next one is relative to its
17969        /// predecessor.
17970        #[prost(uint64, repeated, tag="7")]
17971        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
17972        #[prost(int32, repeated, tag="8")]
17973        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
17974        #[prost(int32, repeated, tag="9")]
17975        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
17976        #[prost(int32, repeated, tag="10")]
17977        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
17978        /// One per event, index into |intern_table| corresponding to the
17979        /// comm field of the event.
17980        #[prost(uint32, repeated, tag="11")]
17981        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
17982        #[prost(uint32, repeated, tag="12")]
17983        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
17984    }
17985    /// Errors encountered during parsing of the raw ftrace data. In case of ring
17986    /// buffer layout errors, the parser skips the rest of the offending kernel
17987    /// buffer page and continues from the next page.
17988    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
17989    /// seen within the duration of the trace (even if the affected bundles get
17990    /// overwritten in ring buffer mode).
17991    #[derive(Clone, PartialEq, ::prost::Message)]
17992    pub struct FtraceError {
17993        /// Timestamp of the data that we're unable to parse, in the ftrace clock
17994        /// domain. Currently, we use the base timestamp of the tracing page
17995        /// containing the bad record rather than the time of the record itself.
17996        #[prost(uint64, optional, tag="1")]
17997        pub timestamp: ::core::option::Option<u64>,
17998        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
17999        pub status: ::core::option::Option<i32>,
18000    }
18001    /// Describes the serialised |FtraceEvent| protos for events not known at
18002    /// compile time, when using the |denser_generic_event_encoding| option.
18003    /// Addded in: perfetto v50.
18004    #[derive(Clone, PartialEq, ::prost::Message)]
18005    pub struct GenericEventDescriptor {
18006        /// submessage id within FtraceEvent described by |event_descriptor|.
18007        #[prost(int32, optional, tag="1")]
18008        pub field_id: ::core::option::Option<i32>,
18009        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18010        /// The event name itself is in |event_descriptor.name|.
18011        #[prost(string, optional, tag="3")]
18012        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18013        /// serialised DescriptorProto.
18014        #[prost(bytes="vec", optional, tag="2")]
18015        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18016    }
18017}
18018// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18019
18020// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
18021
18022/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18023/// frequency change events in a generic kernel implementation.
18024#[derive(Clone, PartialEq, ::prost::Message)]
18025pub struct GenericKernelCpuFrequencyEvent {
18026    /// CPU in which the event occurred.
18027    #[prost(int32, optional, tag="1")]
18028    pub cpu: ::core::option::Option<i32>,
18029    /// Frequency (Hz) of the CPU.
18030    #[prost(int64, optional, tag="2")]
18031    pub freq_hz: ::core::option::Option<i64>,
18032}
18033// End of protos/perfetto/trace/generic_kernel/generic_power.proto
18034
18035// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
18036
18037/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18038/// change events in a generic kernel implementation. This is mainly for the
18039/// case where scheduler events are not directly supported in the kernel's
18040/// tracing mechanism.
18041///
18042/// By capturing these task state events Perfetto is able to infer higher-level
18043/// events such as context switches and task waking events, providing as much
18044/// parity as possible with established tracing frameworks such as
18045/// Linux's ftrace.
18046#[derive(Clone, PartialEq, ::prost::Message)]
18047pub struct GenericKernelTaskStateEvent {
18048    /// CPU in which the event occurred.
18049    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18050    /// no specific meaning to the cpu field in a non-running state event.
18051    #[prost(int32, optional, tag="1")]
18052    pub cpu: ::core::option::Option<i32>,
18053    /// Command name for the thread.
18054    #[prost(string, optional, tag="2")]
18055    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18056    /// Thread id.
18057    #[prost(int64, optional, tag="3")]
18058    pub tid: ::core::option::Option<i64>,
18059    /// New state of the thread.
18060    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
18061    pub state: ::core::option::Option<i32>,
18062    /// Priority of the thread.
18063    /// This value is OS agnostic and should only be interpreted based on the
18064    /// kernel who emitted the message.
18065    #[prost(int32, optional, tag="5")]
18066    pub prio: ::core::option::Option<i32>,
18067}
18068/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18069pub mod generic_kernel_task_state_event {
18070    /// TaskStateEnum represents the valid states of a thread.
18071    /// These states are a generic representation of the actual thread state and
18072    /// don't necessarily map one-to-one to the states the actual OS kernel
18073    /// tracks internally.
18074    ///
18075    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18076    /// an error resulting in potential data loss.
18077    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18078    #[repr(i32)]
18079    pub enum TaskStateEnum {
18080        TaskStateUnknown = 0,
18081        TaskStateCreated = 1,
18082        TaskStateRunnable = 2,
18083        TaskStateRunning = 3,
18084        TaskStateInterruptibleSleep = 4,
18085        TaskStateUninterruptibleSleep = 5,
18086        TaskStateStopped = 6,
18087        TaskStateDead = 7,
18088        TaskStateDestroyed = 8,
18089    }
18090    impl TaskStateEnum {
18091        /// String value of the enum field names used in the ProtoBuf definition.
18092        ///
18093        /// The values are not transformed in any way and thus are considered stable
18094        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18095        pub fn as_str_name(&self) -> &'static str {
18096            match self {
18097                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18098                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
18099                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18100                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
18101                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18102                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18103                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
18104                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
18105                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18106            }
18107        }
18108    }
18109}
18110/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18111/// of a thread.
18112#[derive(Clone, PartialEq, ::prost::Message)]
18113pub struct GenericKernelTaskRenameEvent {
18114    /// Thread id.
18115    #[prost(int64, optional, tag="1")]
18116    pub tid: ::core::option::Option<i64>,
18117    /// New command name for the thread.
18118    #[prost(string, optional, tag="2")]
18119    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18120}
18121/// Metadata about the processes and threads in the trace.
18122/// The main goal of this proto is to provide a generic kernel
18123/// implementation a mechanism to outline its process structure.
18124#[derive(Clone, PartialEq, ::prost::Message)]
18125pub struct GenericKernelProcessTree {
18126    /// List of processes and threads in the kernel. These lists are incremental
18127    /// and not exhaustive. A process and its threads might show up separately in
18128    /// different ProcessTree messages. A thread might not show up at all, if
18129    /// no sched switch activity was detected, for instance:
18130    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
18131    /// #1 { threads: [{tid: 12, pid: 10}] }
18132    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
18133    #[prost(message, repeated, tag="1")]
18134    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18135    #[prost(message, repeated, tag="2")]
18136    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18137}
18138/// Nested message and enum types in `GenericKernelProcessTree`.
18139pub mod generic_kernel_process_tree {
18140    /// Representation of a thread.
18141    #[derive(Clone, PartialEq, ::prost::Message)]
18142    pub struct Thread {
18143        /// Thread id.
18144        #[prost(int64, optional, tag="1")]
18145        pub tid: ::core::option::Option<i64>,
18146        /// Id of the parent process.
18147        #[prost(int64, optional, tag="2")]
18148        pub pid: ::core::option::Option<i64>,
18149        /// The command name of the thread.
18150        #[prost(string, optional, tag="3")]
18151        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18152        /// True if thread is the main thread.
18153        #[prost(bool, optional, tag="4")]
18154        pub is_main_thread: ::core::option::Option<bool>,
18155        /// True if thread is an idle thread.
18156        #[prost(bool, optional, tag="5")]
18157        pub is_idle: ::core::option::Option<bool>,
18158    }
18159    /// Representation of a process.
18160    #[derive(Clone, PartialEq, ::prost::Message)]
18161    pub struct Process {
18162        /// Process id.
18163        #[prost(int64, optional, tag="1")]
18164        pub pid: ::core::option::Option<i64>,
18165        /// Parent process id.
18166        #[prost(int64, optional, tag="2")]
18167        pub ppid: ::core::option::Option<i64>,
18168        /// The command line of the process.
18169        /// If the cmdline has spaces in it, then we use the characters from
18170        /// position 0 to the first instance of the space char (' ') as the name
18171        /// of the process. If no spaces are present, then the entire cmdline is
18172        /// used as the name.
18173        #[prost(string, optional, tag="3")]
18174        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18175    }
18176}
18177// End of protos/perfetto/trace/generic_kernel/generic_task.proto
18178
18179// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
18180
18181#[derive(Clone, PartialEq, ::prost::Message)]
18182pub struct GpuCounterEvent {
18183    /// The first trace packet of each session should include counter_spec.
18184    #[prost(message, optional, tag="1")]
18185    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18186    #[prost(message, repeated, tag="2")]
18187    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18188    /// optional. Identifier for GPU in a multi-gpu device.
18189    #[prost(int32, optional, tag="3")]
18190    pub gpu_id: ::core::option::Option<i32>,
18191}
18192/// Nested message and enum types in `GpuCounterEvent`.
18193pub mod gpu_counter_event {
18194    #[derive(Clone, PartialEq, ::prost::Message)]
18195    pub struct GpuCounter {
18196        /// required. Identifier for counter.
18197        #[prost(uint32, optional, tag="1")]
18198        pub counter_id: ::core::option::Option<u32>,
18199        /// required. Value of the counter.
18200        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
18201        pub value: ::core::option::Option<gpu_counter::Value>,
18202    }
18203    /// Nested message and enum types in `GpuCounter`.
18204    pub mod gpu_counter {
18205        /// required. Value of the counter.
18206        #[derive(Clone, PartialEq, ::prost::Oneof)]
18207        pub enum Value {
18208            #[prost(int64, tag="2")]
18209            IntValue(i64),
18210            #[prost(double, tag="3")]
18211            DoubleValue(f64),
18212        }
18213    }
18214}
18215// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
18216
18217// Begin of protos/perfetto/trace/gpu/gpu_log.proto
18218
18219/// Message for logging events GPU data producer.
18220#[derive(Clone, PartialEq, ::prost::Message)]
18221pub struct GpuLog {
18222    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
18223    pub severity: ::core::option::Option<i32>,
18224    #[prost(string, optional, tag="2")]
18225    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18226    #[prost(string, optional, tag="3")]
18227    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18228}
18229/// Nested message and enum types in `GpuLog`.
18230pub mod gpu_log {
18231    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18232    #[repr(i32)]
18233    pub enum Severity {
18234        LogSeverityUnspecified = 0,
18235        LogSeverityVerbose = 1,
18236        LogSeverityDebug = 2,
18237        LogSeverityInfo = 3,
18238        LogSeverityWarning = 4,
18239        LogSeverityError = 5,
18240    }
18241    impl Severity {
18242        /// String value of the enum field names used in the ProtoBuf definition.
18243        ///
18244        /// The values are not transformed in any way and thus are considered stable
18245        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18246        pub fn as_str_name(&self) -> &'static str {
18247            match self {
18248                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18249                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18250                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18251                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
18252                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18253                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
18254            }
18255        }
18256    }
18257}
18258// End of protos/perfetto/trace/gpu/gpu_log.proto
18259
18260// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18261
18262/// next id: 15
18263#[derive(Clone, PartialEq, ::prost::Message)]
18264pub struct GpuRenderStageEvent {
18265    /// required. Unique ID for the event.
18266    #[prost(uint64, optional, tag="1")]
18267    pub event_id: ::core::option::Option<u64>,
18268    /// optional. Duration of the event in nanoseconds. If unset, this is a
18269    /// single time point event.
18270    #[prost(uint64, optional, tag="2")]
18271    pub duration: ::core::option::Option<u64>,
18272    /// required. ID to a hardware queue description in the specifications.
18273    /// InternedGpuRenderStageSpecification
18274    #[prost(uint64, optional, tag="13")]
18275    pub hw_queue_iid: ::core::option::Option<u64>,
18276    /// required. ID to a render stage description in the specifications.
18277    /// InternedGpuRenderStageSpecification
18278    #[prost(uint64, optional, tag="14")]
18279    pub stage_iid: ::core::option::Option<u64>,
18280    /// optional. Identifier for GPU in a multi-gpu device.
18281    #[prost(int32, optional, tag="11")]
18282    pub gpu_id: ::core::option::Option<i32>,
18283    /// required. Graphics context for the event.
18284    /// For OpenGL, this is the GL context.
18285    /// For Vulkan, this is the VkDevice.
18286    #[prost(uint64, optional, tag="5")]
18287    pub context: ::core::option::Option<u64>,
18288    /// optional. The render target for this event.
18289    /// For OpenGL, this is the GL frame buffer handle.
18290    /// For Vulkan, this is the VkFrameBuffer handle.
18291    #[prost(uint64, optional, tag="8")]
18292    pub render_target_handle: ::core::option::Option<u64>,
18293    /// optional. Submission ID generated by the UMD.
18294    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18295    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18296    /// to a single API submission should share the same ID.
18297    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18298    #[prost(uint32, optional, tag="10")]
18299    pub submission_id: ::core::option::Option<u32>,
18300    #[prost(message, repeated, tag="6")]
18301    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18302    // VULKAN SPECIFICS
18303
18304    /// optional. The Vulkan render pass handle.
18305    #[prost(uint64, optional, tag="9")]
18306    pub render_pass_handle: ::core::option::Option<u64>,
18307    /// optional. An ID for the render pass instance. This is used to correlate
18308    /// different events on different queues produced by the same Vulkan render
18309    /// pass instance.
18310    #[prost(uint64, optional, tag="16")]
18311    pub render_pass_instance_id: ::core::option::Option<u64>,
18312    /// optional. A bit mask representing which render subpasses contributed to
18313    /// this render stage event.  Subpass index 0 is represented by setting the
18314    /// LSB of the mask.  Additional mask can be added for subpass index greater
18315    /// than 63.
18316    #[prost(uint64, repeated, packed="false", tag="15")]
18317    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18318    /// optional. The Vulkan command buffer handle.
18319    #[prost(uint64, optional, tag="12")]
18320    pub command_buffer_handle: ::core::option::Option<u64>,
18321    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18322    /// InternedGpuRenderStageSpecification instead.
18323    #[deprecated]
18324    #[prost(message, optional, tag="7")]
18325    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18326    /// Deprecated. Use hw_queue_iid instead;
18327    #[deprecated]
18328    #[prost(int32, optional, tag="3")]
18329    pub hw_queue_id: ::core::option::Option<i32>,
18330    /// Deprecated. Use stage_iid instead;
18331    #[deprecated]
18332    #[prost(int32, optional, tag="4")]
18333    pub stage_id: ::core::option::Option<i32>,
18334}
18335/// Nested message and enum types in `GpuRenderStageEvent`.
18336pub mod gpu_render_stage_event {
18337    /// optional. Additional data for the user. This may include attributes for
18338    /// the event like resource ids, shaders, etc.
18339    #[derive(Clone, PartialEq, ::prost::Message)]
18340    pub struct ExtraData {
18341        #[prost(string, optional, tag="1")]
18342        pub name: ::core::option::Option<::prost::alloc::string::String>,
18343        #[prost(string, optional, tag="2")]
18344        pub value: ::core::option::Option<::prost::alloc::string::String>,
18345    }
18346    // DEPRECATED
18347
18348    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18349    /// The first trace packet of each session should include a Specifications
18350    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18351    /// must be earlier than all other packets. Only one packet with Specifications
18352    /// is expected.
18353    #[derive(Clone, PartialEq, ::prost::Message)]
18354    pub struct Specifications {
18355        #[prost(message, optional, tag="1")]
18356        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18357        /// Labels to categorize the hw Queue this event goes on.
18358        #[prost(message, repeated, tag="2")]
18359        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18360        /// Labels to categorize render stage(binning, render, compute etc).
18361        #[prost(message, repeated, tag="3")]
18362        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18363    }
18364    /// Nested message and enum types in `Specifications`.
18365    pub mod specifications {
18366        #[derive(Clone, PartialEq, ::prost::Message)]
18367        pub struct ContextSpec {
18368            #[prost(uint64, optional, tag="1")]
18369            pub context: ::core::option::Option<u64>,
18370            #[prost(int32, optional, tag="2")]
18371            pub pid: ::core::option::Option<i32>,
18372        }
18373        #[derive(Clone, PartialEq, ::prost::Message)]
18374        pub struct Description {
18375            #[prost(string, optional, tag="1")]
18376            pub name: ::core::option::Option<::prost::alloc::string::String>,
18377            #[prost(string, optional, tag="2")]
18378            pub description: ::core::option::Option<::prost::alloc::string::String>,
18379        }
18380    }
18381}
18382// Interned data.
18383
18384/// The iid is the numeric value of either the GL Context or the VkDevice
18385/// handle.
18386#[derive(Clone, PartialEq, ::prost::Message)]
18387pub struct InternedGraphicsContext {
18388    #[prost(uint64, optional, tag="1")]
18389    pub iid: ::core::option::Option<u64>,
18390    #[prost(int32, optional, tag="2")]
18391    pub pid: ::core::option::Option<i32>,
18392    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18393    pub api: ::core::option::Option<i32>,
18394}
18395/// Nested message and enum types in `InternedGraphicsContext`.
18396pub mod interned_graphics_context {
18397    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18398    #[repr(i32)]
18399    pub enum Api {
18400        Undefined = 0,
18401        OpenGl = 1,
18402        Vulkan = 2,
18403        OpenCl = 3,
18404    }
18405    impl Api {
18406        /// String value of the enum field names used in the ProtoBuf definition.
18407        ///
18408        /// The values are not transformed in any way and thus are considered stable
18409        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18410        pub fn as_str_name(&self) -> &'static str {
18411            match self {
18412                Api::Undefined => "UNDEFINED",
18413                Api::OpenGl => "OPEN_GL",
18414                Api::Vulkan => "VULKAN",
18415                Api::OpenCl => "OPEN_CL",
18416            }
18417        }
18418    }
18419}
18420#[derive(Clone, PartialEq, ::prost::Message)]
18421pub struct InternedGpuRenderStageSpecification {
18422    #[prost(uint64, optional, tag="1")]
18423    pub iid: ::core::option::Option<u64>,
18424    #[prost(string, optional, tag="2")]
18425    pub name: ::core::option::Option<::prost::alloc::string::String>,
18426    #[prost(string, optional, tag="3")]
18427    pub description: ::core::option::Option<::prost::alloc::string::String>,
18428    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18429    pub category: ::core::option::Option<i32>,
18430}
18431/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18432pub mod interned_gpu_render_stage_specification {
18433    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18434    #[repr(i32)]
18435    pub enum RenderStageCategory {
18436        Other = 0,
18437        Graphics = 1,
18438        Compute = 2,
18439    }
18440    impl RenderStageCategory {
18441        /// String value of the enum field names used in the ProtoBuf definition.
18442        ///
18443        /// The values are not transformed in any way and thus are considered stable
18444        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18445        pub fn as_str_name(&self) -> &'static str {
18446            match self {
18447                RenderStageCategory::Other => "OTHER",
18448                RenderStageCategory::Graphics => "GRAPHICS",
18449                RenderStageCategory::Compute => "COMPUTE",
18450            }
18451        }
18452    }
18453}
18454// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18455
18456// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
18457
18458/// Message for recording the Vulkan call.
18459#[derive(Clone, PartialEq, ::prost::Message)]
18460pub struct VulkanApiEvent {
18461    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
18462    pub event: ::core::option::Option<vulkan_api_event::Event>,
18463}
18464/// Nested message and enum types in `VulkanApiEvent`.
18465pub mod vulkan_api_event {
18466    /// For recording vkSetDebugUtilsObjectNameEXT and
18467    /// vkDebugMarkerSetObjectNameEXT
18468    #[derive(Clone, PartialEq, ::prost::Message)]
18469    pub struct VkDebugUtilsObjectName {
18470        #[prost(uint32, optional, tag="1")]
18471        pub pid: ::core::option::Option<u32>,
18472        #[prost(uint64, optional, tag="2")]
18473        pub vk_device: ::core::option::Option<u64>,
18474        /// VkObjectType.  Value must match
18475        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18476        #[prost(int32, optional, tag="3")]
18477        pub object_type: ::core::option::Option<i32>,
18478        #[prost(uint64, optional, tag="4")]
18479        pub object: ::core::option::Option<u64>,
18480        #[prost(string, optional, tag="5")]
18481        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18482    }
18483    /// For recording vkQueueSubmit call.
18484    #[derive(Clone, PartialEq, ::prost::Message)]
18485    pub struct VkQueueSubmit {
18486        #[prost(uint64, optional, tag="1")]
18487        pub duration_ns: ::core::option::Option<u64>,
18488        #[prost(uint32, optional, tag="2")]
18489        pub pid: ::core::option::Option<u32>,
18490        #[prost(uint32, optional, tag="3")]
18491        pub tid: ::core::option::Option<u32>,
18492        #[prost(uint64, optional, tag="4")]
18493        pub vk_queue: ::core::option::Option<u64>,
18494        #[prost(uint64, repeated, packed="false", tag="5")]
18495        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18496        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18497        /// submission_id must match GpuRenderStageEvent.submission_id if the
18498        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18499        #[prost(uint32, optional, tag="6")]
18500        pub submission_id: ::core::option::Option<u32>,
18501    }
18502    #[derive(Clone, PartialEq, ::prost::Oneof)]
18503    pub enum Event {
18504        #[prost(message, tag="1")]
18505        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18506        #[prost(message, tag="2")]
18507        VkQueueSubmit(VkQueueSubmit),
18508    }
18509}
18510// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
18511
18512// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18513
18514/// All the information that cannot be sent within a VulkanMemoryEvent message,
18515/// are sent as annotations to the main memory event. One example is the
18516/// properties of the object that consumes the allocated memory, for example, a
18517/// buffer or an image.
18518/// key_iid and string_iid are both interned strings. Original string value is
18519/// stored in vulkan_memory_keys from
18520/// protos/perfetto/trace/interned_data/interned_data.proto.
18521#[derive(Clone, PartialEq, ::prost::Message)]
18522pub struct VulkanMemoryEventAnnotation {
18523    #[prost(uint64, optional, tag="1")]
18524    pub key_iid: ::core::option::Option<u64>,
18525    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
18526    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18527}
18528/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18529pub mod vulkan_memory_event_annotation {
18530    #[derive(Clone, PartialEq, ::prost::Oneof)]
18531    pub enum Value {
18532        #[prost(int64, tag="2")]
18533        IntValue(i64),
18534        #[prost(double, tag="3")]
18535        DoubleValue(f64),
18536        #[prost(uint64, tag="4")]
18537        StringIid(u64),
18538    }
18539}
18540/// Each VulkanMemoryEvent encompasses information regarding one single function
18541/// call that results in reserving, binding or freeing host or GPU memory. There
18542/// is a special message type, ANNOTATIONS, which is used to communicate
18543/// information that are not directly related to a memory event, nonetheless are
18544/// essential to understand the memory usage. An example is the size and memory
18545/// types of the memory heaps.
18546///
18547/// Next reserved id: 10 (up to 15).
18548/// Next id: 21.
18549#[derive(Clone, PartialEq, ::prost::Message)]
18550pub struct VulkanMemoryEvent {
18551    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
18552    pub source: ::core::option::Option<i32>,
18553    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
18554    pub operation: ::core::option::Option<i32>,
18555    #[prost(int64, optional, tag="3")]
18556    pub timestamp: ::core::option::Option<i64>,
18557    #[prost(uint32, optional, tag="4")]
18558    pub pid: ::core::option::Option<u32>,
18559    #[prost(fixed64, optional, tag="5")]
18560    pub memory_address: ::core::option::Option<u64>,
18561    #[prost(uint64, optional, tag="6")]
18562    pub memory_size: ::core::option::Option<u64>,
18563    /// Interned string. Original string value is stored in function_names from
18564    /// protos/perfetto/trace/interned_data/interned_data.proto.
18565    #[prost(uint64, optional, tag="7")]
18566    pub caller_iid: ::core::option::Option<u64>,
18567    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
18568    pub allocation_scope: ::core::option::Option<i32>,
18569    /// Extra related information, e.g., create configs, etc.
18570    #[prost(message, repeated, tag="9")]
18571    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
18572    /// Field IDs used for device memory (low sampling rate)
18573    #[prost(fixed64, optional, tag="16")]
18574    pub device: ::core::option::Option<u64>,
18575    #[prost(fixed64, optional, tag="17")]
18576    pub device_memory: ::core::option::Option<u64>,
18577    #[prost(uint32, optional, tag="18")]
18578    pub memory_type: ::core::option::Option<u32>,
18579    #[prost(uint32, optional, tag="19")]
18580    pub heap: ::core::option::Option<u32>,
18581    #[prost(fixed64, optional, tag="20")]
18582    pub object_handle: ::core::option::Option<u64>,
18583}
18584/// Nested message and enum types in `VulkanMemoryEvent`.
18585pub mod vulkan_memory_event {
18586    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18587    #[repr(i32)]
18588    pub enum Source {
18589        Unspecified = 0,
18590        Driver = 1,
18591        Device = 2,
18592        DeviceMemory = 3,
18593        Buffer = 4,
18594        Image = 5,
18595    }
18596    impl Source {
18597        /// String value of the enum field names used in the ProtoBuf definition.
18598        ///
18599        /// The values are not transformed in any way and thus are considered stable
18600        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18601        pub fn as_str_name(&self) -> &'static str {
18602            match self {
18603                Source::Unspecified => "SOURCE_UNSPECIFIED",
18604                Source::Driver => "SOURCE_DRIVER",
18605                Source::Device => "SOURCE_DEVICE",
18606                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
18607                Source::Buffer => "SOURCE_BUFFER",
18608                Source::Image => "SOURCE_IMAGE",
18609            }
18610        }
18611    }
18612    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18613    #[repr(i32)]
18614    pub enum Operation {
18615        OpUnspecified = 0,
18616        /// alloc, create
18617        OpCreate = 1,
18618        /// free, destroy(non-bound)
18619        OpDestroy = 2,
18620        /// bind buffer and image
18621        OpBind = 3,
18622        /// destroy (bound)
18623        OpDestroyBound = 4,
18624        /// only annotations
18625        OpAnnotations = 5,
18626    }
18627    impl Operation {
18628        /// String value of the enum field names used in the ProtoBuf definition.
18629        ///
18630        /// The values are not transformed in any way and thus are considered stable
18631        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18632        pub fn as_str_name(&self) -> &'static str {
18633            match self {
18634                Operation::OpUnspecified => "OP_UNSPECIFIED",
18635                Operation::OpCreate => "OP_CREATE",
18636                Operation::OpDestroy => "OP_DESTROY",
18637                Operation::OpBind => "OP_BIND",
18638                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
18639                Operation::OpAnnotations => "OP_ANNOTATIONS",
18640            }
18641        }
18642    }
18643    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18644    #[repr(i32)]
18645    pub enum AllocationScope {
18646        ScopeUnspecified = 0,
18647        ScopeCommand = 1,
18648        ScopeObject = 2,
18649        ScopeCache = 3,
18650        ScopeDevice = 4,
18651        ScopeInstance = 5,
18652    }
18653    impl AllocationScope {
18654        /// String value of the enum field names used in the ProtoBuf definition.
18655        ///
18656        /// The values are not transformed in any way and thus are considered stable
18657        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18658        pub fn as_str_name(&self) -> &'static str {
18659            match self {
18660                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
18661                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
18662                AllocationScope::ScopeObject => "SCOPE_OBJECT",
18663                AllocationScope::ScopeCache => "SCOPE_CACHE",
18664                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
18665                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
18666            }
18667        }
18668    }
18669}
18670// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18671
18672// Begin of protos/perfetto/trace/profiling/profile_common.proto
18673
18674/// The interning fields in this file can refer to 2 different intern tables,
18675/// depending on the message they are used in. If the interned fields are present
18676/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
18677/// should be used. If the intered fields are present in the
18678/// StreamingProfilePacket proto, then the intern tables included in all of the
18679/// previous InternedData message with same sequence ID should be used.
18680/// TODO(fmayer): Move to the intern tables to a common location.
18681#[derive(Clone, PartialEq, ::prost::Message)]
18682pub struct InternedString {
18683    /// Interning key. Starts from 1, 0 is the same as "not set".
18684    #[prost(uint64, optional, tag="1")]
18685    pub iid: ::core::option::Option<u64>,
18686    /// The actual string.
18687    #[prost(bytes="vec", optional, tag="2")]
18688    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18689}
18690/// Source line info.
18691#[derive(Clone, PartialEq, ::prost::Message)]
18692pub struct Line {
18693    #[prost(string, optional, tag="1")]
18694    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18695    #[prost(string, optional, tag="2")]
18696    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
18697    #[prost(uint32, optional, tag="3")]
18698    pub line_number: ::core::option::Option<u32>,
18699}
18700/// Symbols for a given address in a module.
18701#[derive(Clone, PartialEq, ::prost::Message)]
18702pub struct AddressSymbols {
18703    #[prost(uint64, optional, tag="1")]
18704    pub address: ::core::option::Option<u64>,
18705    /// Source lines that correspond to this address.
18706    ///
18707    /// These are repeated because when inlining happens, multiple functions'
18708    /// frames can be at a single address. Imagine function Foo calling the
18709    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
18710    /// both Foo and the std::vector<int> constructor when we symbolize the
18711    /// address.
18712    #[prost(message, repeated, tag="2")]
18713    pub lines: ::prost::alloc::vec::Vec<Line>,
18714}
18715/// Symbols for addresses seen in a module.
18716/// Used in re-symbolisation of complete traces.
18717#[derive(Clone, PartialEq, ::prost::Message)]
18718pub struct ModuleSymbols {
18719    /// Fully qualified path to the mapping.
18720    /// E.g. /system/lib64/libc.so.
18721    #[prost(string, optional, tag="1")]
18722    pub path: ::core::option::Option<::prost::alloc::string::String>,
18723    /// .note.gnu.build-id on Linux (not hex encoded).
18724    /// uuid on MacOS.
18725    /// Module GUID on Windows.
18726    #[prost(string, optional, tag="2")]
18727    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
18728    #[prost(message, repeated, tag="3")]
18729    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
18730}
18731#[derive(Clone, PartialEq, ::prost::Message)]
18732pub struct Mapping {
18733    /// Interning key.
18734    /// Starts from 1, 0 is the same as "not set".
18735    #[prost(uint64, optional, tag="1")]
18736    pub iid: ::core::option::Option<u64>,
18737    /// Interning key.
18738    /// Starts from 1, 0 is the same as "not set".
18739    #[prost(uint64, optional, tag="2")]
18740    pub build_id: ::core::option::Option<u64>,
18741    // The linker may create multiple memory mappings for the same shared
18742    // library.
18743    // This is so that the ELF header is mapped as read only, while the
18744    // executable memory is mapped as executable only.
18745    // The details of this depend on the linker, a possible mapping of an ELF
18746    // file is this:
18747    //          +----------------------+
18748    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
18749    //          +---------+------------+
18750    //          |         |
18751    //          | read    | executable
18752    //          v mapping v mapping
18753    //          +----------------------+
18754    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
18755    //          +------------------+---+
18756    //          ^         ^        ^
18757    //          +         +        +
18758    //        start     exact    relpc
18759    //        offset   offset    0x1800
18760    //        0x0000   0x1000
18761    //
18762    // exact_offset is the offset into the library file of this mapping.
18763    // start_offset is the offset into the library file of the first mapping
18764    // for that library. For native libraries (.so files) this should be 0.
18765
18766    /// This is not set on Android 10.
18767    #[prost(uint64, optional, tag="8")]
18768    pub exact_offset: ::core::option::Option<u64>,
18769    #[prost(uint64, optional, tag="3")]
18770    pub start_offset: ::core::option::Option<u64>,
18771    #[prost(uint64, optional, tag="4")]
18772    pub start: ::core::option::Option<u64>,
18773    #[prost(uint64, optional, tag="5")]
18774    pub end: ::core::option::Option<u64>,
18775    /// Libunwindstack-specific concept, not to be confused with bionic linker's
18776    /// notion of load_bias. Needed to correct relative pc addresses (as produced
18777    /// by libunwindstack) when doing offline resymbolisation.
18778    ///
18779    /// For an executable ELF PT_LOAD segment, this is:
18780    ///    p_vaddr - p_offset
18781    ///
18782    /// Where p_offset means that the code is at that offset into the ELF file on
18783    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
18784    /// to where the linker loads the ELF into the address space. For most ELFs,
18785    /// the two values are identical and therefore load_bias is zero.
18786    #[prost(uint64, optional, tag="6")]
18787    pub load_bias: ::core::option::Option<u64>,
18788    /// E.g. ["system", "lib64", "libc.so"]
18789    /// id of string.
18790    #[prost(uint64, repeated, packed="false", tag="7")]
18791    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
18792}
18793#[derive(Clone, PartialEq, ::prost::Message)]
18794pub struct Frame {
18795    /// Interning key. Starts from 1, 0 is the same as "not set".
18796    #[prost(uint64, optional, tag="1")]
18797    pub iid: ::core::option::Option<u64>,
18798    /// E.g. "fopen"
18799    /// id of string.
18800    #[prost(uint64, optional, tag="2")]
18801    pub function_name_id: ::core::option::Option<u64>,
18802    /// The mapping in which this frame's instruction pointer resides.
18803    /// iid of Mapping.iid.
18804    ///
18805    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
18806    /// this frame has no associated memory mapping (e.g., symbolized frames
18807    /// without address information).
18808    ///
18809    /// Starts from 1, 0 is the same as "not set".
18810    #[prost(uint64, optional, tag="3")]
18811    pub mapping_id: ::core::option::Option<u64>,
18812    /// Instruction pointer relative to the start of the mapping.
18813    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
18814    #[prost(uint64, optional, tag="4")]
18815    pub rel_pc: ::core::option::Option<u64>,
18816    /// Source file path for this frame.
18817    /// This is typically set during online symbolization when symbol information
18818    /// is available at trace collection time. If not set, source file paths may be
18819    /// added later via offline symbolization (see ModuleSymbols).
18820    ///
18821    /// Starts from 1, 0 is the same as "not set".
18822    ///
18823    /// iid of InternedData.source_paths.
18824    #[prost(uint64, optional, tag="5")]
18825    pub source_path_iid: ::core::option::Option<u64>,
18826    /// Line number in the source file for this frame.
18827    /// This is typically set during online symbolization when symbol information
18828    /// is available at trace collection time. If not set, line numbers may be
18829    /// added later via offline symbolization (see ModuleSymbols).
18830    #[prost(uint32, optional, tag="6")]
18831    pub line_number: ::core::option::Option<u32>,
18832}
18833#[derive(Clone, PartialEq, ::prost::Message)]
18834pub struct Callstack {
18835    /// Interning key. Starts from 1, 0 is the same as "not set".
18836    #[prost(uint64, optional, tag="1")]
18837    pub iid: ::core::option::Option<u64>,
18838    /// Frames of this callstack. Bottom frame first.
18839    #[prost(uint64, repeated, packed="false", tag="2")]
18840    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
18841}
18842// End of protos/perfetto/trace/profiling/profile_common.proto
18843
18844// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18845
18846#[derive(Clone, PartialEq, ::prost::Message)]
18847pub struct HistogramName {
18848    #[prost(uint64, optional, tag="1")]
18849    pub iid: ::core::option::Option<u64>,
18850    #[prost(string, optional, tag="2")]
18851    pub name: ::core::option::Option<::prost::alloc::string::String>,
18852}
18853/// An individual histogram sample logged via Chrome's UMA metrics system.
18854#[derive(Clone, PartialEq, ::prost::Message)]
18855pub struct ChromeHistogramSample {
18856    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
18857    /// both must be present.
18858    #[prost(uint64, optional, tag="1")]
18859    pub name_hash: ::core::option::Option<u64>,
18860    #[prost(string, optional, tag="2")]
18861    pub name: ::core::option::Option<::prost::alloc::string::String>,
18862    #[prost(int64, optional, tag="3")]
18863    pub sample: ::core::option::Option<i64>,
18864    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
18865    #[prost(uint64, optional, tag="4")]
18866    pub name_iid: ::core::option::Option<u64>,
18867}
18868// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18869
18870// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
18871
18872/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
18873/// macros. Users of the Perfetto SDK should prefer to use the
18874/// perfetto::TracedValue API to fill these protos, rather than filling them
18875/// manually.
18876///
18877/// Debug annotations are intended for debug use and are not considered a stable
18878/// API of the trace contents. Trace-based metrics that use debug annotation
18879/// values are prone to breakage, so please rely on typed TrackEvent fields for
18880/// these instead.
18881///
18882/// DebugAnnotations support nested arrays and dictionaries. Each entry is
18883/// encoded as a single DebugAnnotation message. Only dictionary entries
18884/// set the "name" field. The TrackEvent message forms an implicit root
18885/// dictionary.
18886///
18887/// Example TrackEvent with nested annotations:
18888///    track_event {
18889///      debug_annotations {
18890///        name: "foo"
18891///        dict_entries {
18892///          name: "a"
18893///          bool_value: true
18894///        }
18895///        dict_entries {
18896///          name: "b"
18897///          int_value: 123
18898///        }
18899///      }
18900///      debug_annotations {
18901///        name: "bar"
18902///        array_values {
18903///          string_value: "hello"
18904///        }
18905///        array_values {
18906///          string_value: "world"
18907///        }
18908///      }
18909///    }
18910///
18911/// Next ID: 18.
18912/// Reserved ID: 15
18913#[derive(Clone, PartialEq, ::prost::Message)]
18914pub struct DebugAnnotation {
18915    #[prost(bytes="vec", optional, tag="14")]
18916    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18917    #[prost(message, repeated, tag="11")]
18918    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
18919    #[prost(message, repeated, tag="12")]
18920    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
18921    /// Name fields are set only for dictionary entries.
18922    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
18923    pub name_field: ::core::option::Option<debug_annotation::NameField>,
18924    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
18925    pub value: ::core::option::Option<debug_annotation::Value>,
18926    /// Used to embed arbitrary proto messages (which are also typically used to
18927    /// represent typed TrackEvent arguments). |proto_type_name| or
18928    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18929    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18930    /// proto messages. See |TracedValue::WriteProto| for more details.
18931    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
18932    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
18933}
18934/// Nested message and enum types in `DebugAnnotation`.
18935pub mod debug_annotation {
18936    /// Deprecated legacy way to use nested values. Only kept for
18937    /// backwards-compatibility in TraceProcessor. May be removed in the future -
18938    /// code filling protos should use |dict_entries| and |array_values| instead.
18939    #[derive(Clone, PartialEq, ::prost::Message)]
18940    pub struct NestedValue {
18941        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
18942        pub nested_type: ::core::option::Option<i32>,
18943        #[prost(string, repeated, tag="2")]
18944        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18945        #[prost(message, repeated, tag="3")]
18946        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
18947        #[prost(message, repeated, tag="4")]
18948        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
18949        #[prost(int64, optional, tag="5")]
18950        pub int_value: ::core::option::Option<i64>,
18951        #[prost(double, optional, tag="6")]
18952        pub double_value: ::core::option::Option<f64>,
18953        #[prost(bool, optional, tag="7")]
18954        pub bool_value: ::core::option::Option<bool>,
18955        #[prost(string, optional, tag="8")]
18956        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
18957    }
18958    /// Nested message and enum types in `NestedValue`.
18959    pub mod nested_value {
18960        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18961        #[repr(i32)]
18962        pub enum NestedType {
18963            /// leaf value.
18964            Unspecified = 0,
18965            Dict = 1,
18966            Array = 2,
18967        }
18968        impl NestedType {
18969            /// String value of the enum field names used in the ProtoBuf definition.
18970            ///
18971            /// The values are not transformed in any way and thus are considered stable
18972            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18973            pub fn as_str_name(&self) -> &'static str {
18974                match self {
18975                    NestedType::Unspecified => "UNSPECIFIED",
18976                    NestedType::Dict => "DICT",
18977                    NestedType::Array => "ARRAY",
18978                }
18979            }
18980        }
18981    }
18982    /// Name fields are set only for dictionary entries.
18983    #[derive(Clone, PartialEq, ::prost::Oneof)]
18984    pub enum NameField {
18985        /// interned DebugAnnotationName.
18986        #[prost(uint64, tag="1")]
18987        NameIid(u64),
18988        /// non-interned variant.
18989        #[prost(string, tag="10")]
18990        Name(::prost::alloc::string::String),
18991    }
18992    #[derive(Clone, PartialEq, ::prost::Oneof)]
18993    pub enum Value {
18994        #[prost(bool, tag="2")]
18995        BoolValue(bool),
18996        #[prost(uint64, tag="3")]
18997        UintValue(u64),
18998        #[prost(int64, tag="4")]
18999        IntValue(i64),
19000        #[prost(double, tag="5")]
19001        DoubleValue(f64),
19002        /// Pointers are stored in a separate type as the JSON output treats them
19003        /// differently from other uint64 values.
19004        #[prost(uint64, tag="7")]
19005        PointerValue(u64),
19006        /// Deprecated. Use dict_entries / array_values instead.
19007        #[prost(message, tag="8")]
19008        NestedValue(NestedValue),
19009        /// Legacy instrumentation may not support conversion of nested data to
19010        /// NestedValue yet.
19011        #[prost(string, tag="9")]
19012        LegacyJsonValue(::prost::alloc::string::String),
19013        /// interned and non-interned variants of strings.
19014        #[prost(string, tag="6")]
19015        StringValue(::prost::alloc::string::String),
19016        /// Corresponds to |debug_annotation_string_values| field in InternedData.
19017        #[prost(uint64, tag="17")]
19018        StringValueIid(u64),
19019    }
19020    /// Used to embed arbitrary proto messages (which are also typically used to
19021    /// represent typed TrackEvent arguments). |proto_type_name| or
19022    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19023    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19024    /// proto messages. See |TracedValue::WriteProto| for more details.
19025    #[derive(Clone, PartialEq, ::prost::Oneof)]
19026    pub enum ProtoTypeDescriptor {
19027        #[prost(string, tag="16")]
19028        ProtoTypeName(::prost::alloc::string::String),
19029        /// interned DebugAnnotationValueTypeName.
19030        #[prost(uint64, tag="13")]
19031        ProtoTypeNameIid(u64),
19032    }
19033}
19034// --------------------
19035// Interned data types:
19036// --------------------
19037
19038#[derive(Clone, PartialEq, ::prost::Message)]
19039pub struct DebugAnnotationName {
19040    #[prost(uint64, optional, tag="1")]
19041    pub iid: ::core::option::Option<u64>,
19042    #[prost(string, optional, tag="2")]
19043    pub name: ::core::option::Option<::prost::alloc::string::String>,
19044}
19045/// See the |proto_type_descriptor| comment.
19046#[derive(Clone, PartialEq, ::prost::Message)]
19047pub struct DebugAnnotationValueTypeName {
19048    #[prost(uint64, optional, tag="1")]
19049    pub iid: ::core::option::Option<u64>,
19050    #[prost(string, optional, tag="2")]
19051    pub name: ::core::option::Option<::prost::alloc::string::String>,
19052}
19053// End of protos/perfetto/trace/track_event/debug_annotation.proto
19054
19055// Begin of protos/perfetto/trace/track_event/log_message.proto
19056
19057#[derive(Clone, PartialEq, ::prost::Message)]
19058pub struct LogMessage {
19059    /// interned SourceLocation.
19060    #[prost(uint64, optional, tag="1")]
19061    pub source_location_iid: ::core::option::Option<u64>,
19062    /// interned LogMessageBody.
19063    #[prost(uint64, optional, tag="2")]
19064    pub body_iid: ::core::option::Option<u64>,
19065    #[prost(enumeration="log_message::Priority", optional, tag="3")]
19066    pub prio: ::core::option::Option<i32>,
19067}
19068/// Nested message and enum types in `LogMessage`.
19069pub mod log_message {
19070    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19071    #[repr(i32)]
19072    pub enum Priority {
19073        PrioUnspecified = 0,
19074        PrioUnused = 1,
19075        PrioVerbose = 2,
19076        PrioDebug = 3,
19077        PrioInfo = 4,
19078        PrioWarn = 5,
19079        PrioError = 6,
19080        PrioFatal = 7,
19081    }
19082    impl Priority {
19083        /// String value of the enum field names used in the ProtoBuf definition.
19084        ///
19085        /// The values are not transformed in any way and thus are considered stable
19086        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19087        pub fn as_str_name(&self) -> &'static str {
19088            match self {
19089                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
19090                Priority::PrioUnused => "PRIO_UNUSED",
19091                Priority::PrioVerbose => "PRIO_VERBOSE",
19092                Priority::PrioDebug => "PRIO_DEBUG",
19093                Priority::PrioInfo => "PRIO_INFO",
19094                Priority::PrioWarn => "PRIO_WARN",
19095                Priority::PrioError => "PRIO_ERROR",
19096                Priority::PrioFatal => "PRIO_FATAL",
19097            }
19098        }
19099    }
19100}
19101// --------------------
19102// Interned data types:
19103// --------------------
19104
19105#[derive(Clone, PartialEq, ::prost::Message)]
19106pub struct LogMessageBody {
19107    #[prost(uint64, optional, tag="1")]
19108    pub iid: ::core::option::Option<u64>,
19109    #[prost(string, optional, tag="2")]
19110    pub body: ::core::option::Option<::prost::alloc::string::String>,
19111}
19112// End of protos/perfetto/trace/track_event/log_message.proto
19113
19114// Begin of protos/perfetto/trace/track_event/source_location.proto
19115
19116// --------------------
19117// Interned data types:
19118// --------------------
19119
19120/// A source location, represented as a native symbol.
19121/// This is similar to `message Frame` from
19122/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
19123/// source code locations (for example in track event args), not stack frames.
19124#[derive(Clone, PartialEq, ::prost::Message)]
19125pub struct UnsymbolizedSourceLocation {
19126    #[prost(uint64, optional, tag="1")]
19127    pub iid: ::core::option::Option<u64>,
19128    #[prost(uint64, optional, tag="2")]
19129    pub mapping_id: ::core::option::Option<u64>,
19130    #[prost(uint64, optional, tag="3")]
19131    pub rel_pc: ::core::option::Option<u64>,
19132}
19133#[derive(Clone, PartialEq, ::prost::Message)]
19134pub struct SourceLocation {
19135    #[prost(uint64, optional, tag="1")]
19136    pub iid: ::core::option::Option<u64>,
19137    #[prost(string, optional, tag="2")]
19138    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
19139    #[prost(string, optional, tag="3")]
19140    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19141    #[prost(uint32, optional, tag="4")]
19142    pub line_number: ::core::option::Option<u32>,
19143}
19144// End of protos/perfetto/trace/track_event/source_location.proto
19145
19146// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
19147
19148/// A list of processes connected to the tracing service.
19149#[derive(Clone, PartialEq, ::prost::Message)]
19150pub struct ChromeActiveProcesses {
19151    #[prost(int32, repeated, packed="false", tag="1")]
19152    pub pid: ::prost::alloc::vec::Vec<i32>,
19153}
19154// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
19155
19156/// Trace event arguments for application state changes.
19157#[derive(Clone, PartialEq, ::prost::Message)]
19158pub struct ChromeApplicationStateInfo {
19159    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
19160    pub application_state: ::core::option::Option<i32>,
19161}
19162/// Nested message and enum types in `ChromeApplicationStateInfo`.
19163pub mod chrome_application_state_info {
19164    /// Enum definition taken from:
19165    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
19166    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19167    #[repr(i32)]
19168    pub enum ChromeApplicationState {
19169        ApplicationStateUnknown = 0,
19170        ApplicationStateHasRunningActivities = 1,
19171        ApplicationStateHasPausedActivities = 2,
19172        ApplicationStateHasStoppedActivities = 3,
19173        ApplicationStateHasDestroyedActivities = 4,
19174    }
19175    impl ChromeApplicationState {
19176        /// String value of the enum field names used in the ProtoBuf definition.
19177        ///
19178        /// The values are not transformed in any way and thus are considered stable
19179        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19180        pub fn as_str_name(&self) -> &'static str {
19181            match self {
19182                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
19183                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
19184                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
19185                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
19186                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
19187            }
19188        }
19189    }
19190}
19191/// Next id: 18
19192#[derive(Clone, PartialEq, ::prost::Message)]
19193pub struct ChromeCompositorSchedulerState {
19194    #[prost(message, optional, tag="1")]
19195    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
19196    #[prost(bool, optional, tag="2")]
19197    pub observing_begin_frame_source: ::core::option::Option<bool>,
19198    #[prost(bool, optional, tag="3")]
19199    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
19200    #[prost(bool, optional, tag="4")]
19201    pub pending_begin_frame_task: ::core::option::Option<bool>,
19202    #[prost(bool, optional, tag="5")]
19203    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
19204    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
19205    pub inside_action: ::core::option::Option<i32>,
19206    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
19207    pub deadline_mode: ::core::option::Option<i32>,
19208    #[prost(int64, optional, tag="9")]
19209    pub deadline_us: ::core::option::Option<i64>,
19210    #[prost(int64, optional, tag="10")]
19211    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
19212    #[prost(int64, optional, tag="11")]
19213    pub now_us: ::core::option::Option<i64>,
19214    #[prost(int64, optional, tag="12")]
19215    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
19216    #[prost(int64, optional, tag="13")]
19217    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
19218    #[prost(message, optional, tag="14")]
19219    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
19220    #[prost(message, optional, tag="15")]
19221    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
19222    #[prost(message, optional, tag="16")]
19223    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
19224    #[prost(message, optional, tag="17")]
19225    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
19226}
19227/// Nested message and enum types in `ChromeCompositorSchedulerState`.
19228pub mod chrome_compositor_scheduler_state {
19229    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19230    #[repr(i32)]
19231    pub enum BeginImplFrameDeadlineMode {
19232        DeadlineModeUnspecified = 0,
19233        DeadlineModeNone = 1,
19234        DeadlineModeImmediate = 2,
19235        DeadlineModeRegular = 3,
19236        DeadlineModeLate = 4,
19237        DeadlineModeBlocked = 5,
19238    }
19239    impl BeginImplFrameDeadlineMode {
19240        /// String value of the enum field names used in the ProtoBuf definition.
19241        ///
19242        /// The values are not transformed in any way and thus are considered stable
19243        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19244        pub fn as_str_name(&self) -> &'static str {
19245            match self {
19246                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
19247                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
19248                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
19249                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
19250                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
19251                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
19252            }
19253        }
19254    }
19255}
19256/// Describes the current values stored in the Chrome Compositor state machine.
19257/// Next id: 3
19258#[derive(Clone, PartialEq, ::prost::Message)]
19259pub struct ChromeCompositorStateMachine {
19260    #[prost(message, optional, tag="1")]
19261    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
19262    #[prost(message, optional, tag="2")]
19263    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
19264}
19265/// Nested message and enum types in `ChromeCompositorStateMachine`.
19266pub mod chrome_compositor_state_machine {
19267    /// Next id: 6
19268    #[derive(Clone, PartialEq, ::prost::Message)]
19269    pub struct MajorState {
19270        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
19271        pub next_action: ::core::option::Option<i32>,
19272        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
19273        pub begin_impl_frame_state: ::core::option::Option<i32>,
19274        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
19275        pub begin_main_frame_state: ::core::option::Option<i32>,
19276        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
19277        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
19278        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
19279        pub forced_redraw_state: ::core::option::Option<i32>,
19280    }
19281    /// Nested message and enum types in `MajorState`.
19282    pub mod major_state {
19283        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19284        #[repr(i32)]
19285        pub enum BeginImplFrameState {
19286            BeginImplFrameUnspecified = 0,
19287            BeginImplFrameIdle = 1,
19288            BeginImplFrameInsideBeginFrame = 2,
19289            BeginImplFrameInsideDeadline = 3,
19290        }
19291        impl BeginImplFrameState {
19292            /// String value of the enum field names used in the ProtoBuf definition.
19293            ///
19294            /// The values are not transformed in any way and thus are considered stable
19295            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19296            pub fn as_str_name(&self) -> &'static str {
19297                match self {
19298                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19299                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19300                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19301                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19302                }
19303            }
19304        }
19305        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19306        #[repr(i32)]
19307        pub enum BeginMainFrameState {
19308            BeginMainFrameUnspecified = 0,
19309            BeginMainFrameIdle = 1,
19310            BeginMainFrameSent = 2,
19311            BeginMainFrameReadyToCommit = 3,
19312        }
19313        impl BeginMainFrameState {
19314            /// String value of the enum field names used in the ProtoBuf definition.
19315            ///
19316            /// The values are not transformed in any way and thus are considered stable
19317            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19318            pub fn as_str_name(&self) -> &'static str {
19319                match self {
19320                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19321                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19322                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19323                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19324                }
19325            }
19326        }
19327        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19328        #[repr(i32)]
19329        pub enum LayerTreeFrameSinkState {
19330            LayerTreeFrameUnspecified = 0,
19331            LayerTreeFrameNone = 1,
19332            LayerTreeFrameActive = 2,
19333            LayerTreeFrameCreating = 3,
19334            LayerTreeFrameWaitingForFirstCommit = 4,
19335            LayerTreeFrameWaitingForFirstActivation = 5,
19336        }
19337        impl LayerTreeFrameSinkState {
19338            /// String value of the enum field names used in the ProtoBuf definition.
19339            ///
19340            /// The values are not transformed in any way and thus are considered stable
19341            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19342            pub fn as_str_name(&self) -> &'static str {
19343                match self {
19344                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19345                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19346                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19347                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19348                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19349                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19350                }
19351            }
19352        }
19353        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19354        #[repr(i32)]
19355        pub enum ForcedRedrawOnTimeoutState {
19356            ForcedRedrawUnspecified = 0,
19357            ForcedRedrawIdle = 1,
19358            ForcedRedrawWaitingForCommit = 2,
19359            ForcedRedrawWaitingForActivation = 3,
19360            ForcedRedrawWaitingForDraw = 4,
19361        }
19362        impl ForcedRedrawOnTimeoutState {
19363            /// String value of the enum field names used in the ProtoBuf definition.
19364            ///
19365            /// The values are not transformed in any way and thus are considered stable
19366            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19367            pub fn as_str_name(&self) -> &'static str {
19368                match self {
19369                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19370                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19371                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19372                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19373                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19374                }
19375            }
19376        }
19377    }
19378    /// Next id: 47
19379    #[derive(Clone, PartialEq, ::prost::Message)]
19380    pub struct MinorState {
19381        #[prost(int32, optional, tag="1")]
19382        pub commit_count: ::core::option::Option<i32>,
19383        #[prost(int32, optional, tag="2")]
19384        pub current_frame_number: ::core::option::Option<i32>,
19385        #[prost(int32, optional, tag="3")]
19386        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19387        #[prost(int32, optional, tag="4")]
19388        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19389        #[prost(int32, optional, tag="5")]
19390        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19391        #[prost(bool, optional, tag="6")]
19392        pub did_draw: ::core::option::Option<bool>,
19393        #[prost(bool, optional, tag="7")]
19394        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19395        #[prost(bool, optional, tag="8")]
19396        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19397        #[prost(bool, optional, tag="9")]
19398        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19399        #[prost(bool, optional, tag="10")]
19400        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19401        #[prost(bool, optional, tag="11")]
19402        pub did_commit_during_frame: ::core::option::Option<bool>,
19403        #[prost(bool, optional, tag="12")]
19404        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19405        #[prost(bool, optional, tag="13")]
19406        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19407        #[prost(bool, optional, tag="14")]
19408        pub did_prepare_tiles: ::core::option::Option<bool>,
19409        #[prost(int32, optional, tag="15")]
19410        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19411        #[prost(int32, optional, tag="16")]
19412        pub pending_submit_frames: ::core::option::Option<i32>,
19413        #[prost(int32, optional, tag="17")]
19414        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19415        #[prost(bool, optional, tag="18")]
19416        pub needs_redraw: ::core::option::Option<bool>,
19417        #[prost(bool, optional, tag="19")]
19418        pub needs_prepare_tiles: ::core::option::Option<bool>,
19419        #[prost(bool, optional, tag="20")]
19420        pub needs_begin_main_frame: ::core::option::Option<bool>,
19421        #[prost(bool, optional, tag="21")]
19422        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19423        #[prost(bool, optional, tag="22")]
19424        pub visible: ::core::option::Option<bool>,
19425        #[prost(bool, optional, tag="23")]
19426        pub begin_frame_source_paused: ::core::option::Option<bool>,
19427        #[prost(bool, optional, tag="24")]
19428        pub can_draw: ::core::option::Option<bool>,
19429        #[prost(bool, optional, tag="25")]
19430        pub resourceless_draw: ::core::option::Option<bool>,
19431        #[prost(bool, optional, tag="26")]
19432        pub has_pending_tree: ::core::option::Option<bool>,
19433        #[prost(bool, optional, tag="27")]
19434        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19435        #[prost(bool, optional, tag="28")]
19436        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19437        #[prost(bool, optional, tag="29")]
19438        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19439        #[prost(bool, optional, tag="30")]
19440        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
19441        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
19442        pub tree_priority: ::core::option::Option<i32>,
19443        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
19444        pub scroll_handler_state: ::core::option::Option<i32>,
19445        #[prost(bool, optional, tag="33")]
19446        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
19447        #[prost(bool, optional, tag="34")]
19448        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
19449        #[prost(bool, optional, tag="36")]
19450        pub video_needs_begin_frames: ::core::option::Option<bool>,
19451        #[prost(bool, optional, tag="37")]
19452        pub defer_begin_main_frame: ::core::option::Option<bool>,
19453        #[prost(bool, optional, tag="38")]
19454        pub last_commit_had_no_updates: ::core::option::Option<bool>,
19455        #[prost(bool, optional, tag="39")]
19456        pub did_draw_in_last_frame: ::core::option::Option<bool>,
19457        #[prost(bool, optional, tag="40")]
19458        pub did_submit_in_last_frame: ::core::option::Option<bool>,
19459        #[prost(bool, optional, tag="41")]
19460        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
19461        #[prost(bool, optional, tag="42")]
19462        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
19463        #[prost(bool, optional, tag="43")]
19464        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
19465        #[prost(bool, optional, tag="44")]
19466        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
19467        #[prost(bool, optional, tag="45")]
19468        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
19469        #[prost(bool, optional, tag="46")]
19470        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
19471    }
19472    /// Nested message and enum types in `MinorState`.
19473    pub mod minor_state {
19474        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19475        #[repr(i32)]
19476        pub enum TreePriority {
19477            Unspecified = 0,
19478            SamePriorityForBothTrees = 1,
19479            SmoothnessTakesPriority = 2,
19480            NewContentTakesPriority = 3,
19481        }
19482        impl TreePriority {
19483            /// String value of the enum field names used in the ProtoBuf definition.
19484            ///
19485            /// The values are not transformed in any way and thus are considered stable
19486            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19487            pub fn as_str_name(&self) -> &'static str {
19488                match self {
19489                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
19490                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
19491                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
19492                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
19493                }
19494            }
19495        }
19496        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19497        #[repr(i32)]
19498        pub enum ScrollHandlerState {
19499            ScrollHandlerUnspecified = 0,
19500            ScrollAffectsScrollHandler = 1,
19501            ScrollDoesNotAffectScrollHandler = 2,
19502        }
19503        impl ScrollHandlerState {
19504            /// String value of the enum field names used in the ProtoBuf definition.
19505            ///
19506            /// The values are not transformed in any way and thus are considered stable
19507            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19508            pub fn as_str_name(&self) -> &'static str {
19509                match self {
19510                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
19511                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
19512                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
19513                }
19514            }
19515        }
19516    }
19517}
19518/// Next id: 13
19519#[derive(Clone, PartialEq, ::prost::Message)]
19520pub struct BeginFrameArgs {
19521    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
19522    pub r#type: ::core::option::Option<i32>,
19523    #[prost(uint64, optional, tag="2")]
19524    pub source_id: ::core::option::Option<u64>,
19525    #[prost(uint64, optional, tag="3")]
19526    pub sequence_number: ::core::option::Option<u64>,
19527    #[prost(int64, optional, tag="4")]
19528    pub frame_time_us: ::core::option::Option<i64>,
19529    #[prost(int64, optional, tag="5")]
19530    pub deadline_us: ::core::option::Option<i64>,
19531    #[prost(int64, optional, tag="6")]
19532    pub interval_delta_us: ::core::option::Option<i64>,
19533    #[prost(bool, optional, tag="7")]
19534    pub on_critical_path: ::core::option::Option<bool>,
19535    #[prost(bool, optional, tag="8")]
19536    pub animate_only: ::core::option::Option<bool>,
19537    #[prost(int64, optional, tag="12")]
19538    pub frames_throttled_since_last: ::core::option::Option<i64>,
19539    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
19540    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
19541}
19542/// Nested message and enum types in `BeginFrameArgs`.
19543pub mod begin_frame_args {
19544    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
19545    /// drop this in the proto representation, and instead make the JSON format
19546    /// "subtype" field become the type field.
19547    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19548    #[repr(i32)]
19549    pub enum BeginFrameArgsType {
19550        Unspecified = 0,
19551        Invalid = 1,
19552        Normal = 2,
19553        Missed = 3,
19554    }
19555    impl BeginFrameArgsType {
19556        /// String value of the enum field names used in the ProtoBuf definition.
19557        ///
19558        /// The values are not transformed in any way and thus are considered stable
19559        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19560        pub fn as_str_name(&self) -> &'static str {
19561            match self {
19562                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
19563                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
19564                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
19565                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
19566            }
19567        }
19568    }
19569    #[derive(Clone, PartialEq, ::prost::Oneof)]
19570    pub enum CreatedFrom {
19571        /// The interned SourceLocation.
19572        #[prost(uint64, tag="9")]
19573        SourceLocationIid(u64),
19574        /// The SourceLocation that this args was created from.
19575        /// TODO(nuskos): Eventually we will support interning inside of
19576        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
19577        /// since we can emit it as part of the InternedData message. When we can
19578        /// remove this |source_location|.
19579        #[prost(message, tag="10")]
19580        SourceLocation(super::SourceLocation),
19581    }
19582}
19583/// Next id: 7
19584#[derive(Clone, PartialEq, ::prost::Message)]
19585pub struct BeginImplFrameArgs {
19586    #[prost(int64, optional, tag="1")]
19587    pub updated_at_us: ::core::option::Option<i64>,
19588    #[prost(int64, optional, tag="2")]
19589    pub finished_at_us: ::core::option::Option<i64>,
19590    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
19591    pub state: ::core::option::Option<i32>,
19592    #[prost(message, optional, tag="6")]
19593    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
19594    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
19595    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
19596}
19597/// Nested message and enum types in `BeginImplFrameArgs`.
19598pub mod begin_impl_frame_args {
19599    #[derive(Clone, PartialEq, ::prost::Message)]
19600    pub struct TimestampsInUs {
19601        #[prost(int64, optional, tag="1")]
19602        pub interval_delta: ::core::option::Option<i64>,
19603        #[prost(int64, optional, tag="2")]
19604        pub now_to_deadline_delta: ::core::option::Option<i64>,
19605        #[prost(int64, optional, tag="3")]
19606        pub frame_time_to_now_delta: ::core::option::Option<i64>,
19607        #[prost(int64, optional, tag="4")]
19608        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
19609        #[prost(int64, optional, tag="5")]
19610        pub now: ::core::option::Option<i64>,
19611        #[prost(int64, optional, tag="6")]
19612        pub frame_time: ::core::option::Option<i64>,
19613        #[prost(int64, optional, tag="7")]
19614        pub deadline: ::core::option::Option<i64>,
19615    }
19616    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19617    #[repr(i32)]
19618    pub enum State {
19619        BeginFrameFinished = 0,
19620        BeginFrameUsing = 1,
19621    }
19622    impl State {
19623        /// String value of the enum field names used in the ProtoBuf definition.
19624        ///
19625        /// The values are not transformed in any way and thus are considered stable
19626        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19627        pub fn as_str_name(&self) -> &'static str {
19628            match self {
19629                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
19630                State::BeginFrameUsing => "BEGIN_FRAME_USING",
19631            }
19632        }
19633    }
19634    #[derive(Clone, PartialEq, ::prost::Oneof)]
19635    pub enum Args {
19636        /// Only set if |state| is BEGIN_FRAME_FINISHED.
19637        #[prost(message, tag="4")]
19638        CurrentArgs(super::BeginFrameArgs),
19639        /// Only set if |state| is BEGIN_FRAME_USING.
19640        #[prost(message, tag="5")]
19641        LastArgs(super::BeginFrameArgs),
19642    }
19643}
19644#[derive(Clone, PartialEq, ::prost::Message)]
19645pub struct BeginFrameObserverState {
19646    #[prost(int64, optional, tag="1")]
19647    pub dropped_begin_frame_args: ::core::option::Option<i64>,
19648    #[prost(message, optional, tag="2")]
19649    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19650}
19651#[derive(Clone, PartialEq, ::prost::Message)]
19652pub struct BeginFrameSourceState {
19653    #[prost(uint32, optional, tag="1")]
19654    pub source_id: ::core::option::Option<u32>,
19655    #[prost(bool, optional, tag="2")]
19656    pub paused: ::core::option::Option<bool>,
19657    #[prost(uint32, optional, tag="3")]
19658    pub num_observers: ::core::option::Option<u32>,
19659    #[prost(message, optional, tag="4")]
19660    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19661}
19662#[derive(Clone, PartialEq, ::prost::Message)]
19663pub struct CompositorTimingHistory {
19664    #[prost(int64, optional, tag="1")]
19665    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
19666    #[prost(int64, optional, tag="2")]
19667    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
19668    #[prost(int64, optional, tag="3")]
19669    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
19670    #[prost(int64, optional, tag="4")]
19671    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
19672    #[prost(int64, optional, tag="5")]
19673    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
19674    #[prost(int64, optional, tag="6")]
19675    pub activate_estimate_delta_us: ::core::option::Option<i64>,
19676    #[prost(int64, optional, tag="7")]
19677    pub draw_estimate_delta_us: ::core::option::Option<i64>,
19678}
19679// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
19680
19681// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
19682
19683/// Details about ContentSettings trace events.
19684#[derive(Clone, PartialEq, ::prost::Message)]
19685pub struct ChromeContentSettingsEventInfo {
19686    /// The number of user defined hostname patterns for content settings at
19687    /// browser start. Similar to UMA histogram
19688    /// 'ContentSettings.NumberOfExceptions'.
19689    #[prost(uint32, optional, tag="1")]
19690    pub number_of_exceptions: ::core::option::Option<u32>,
19691}
19692// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19693
19694/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
19695/// in
19696/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19697/// instead.
19698#[derive(Clone, PartialEq, ::prost::Message)]
19699pub struct ChromeFrameReporter {
19700    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
19701    pub state: ::core::option::Option<i32>,
19702    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
19703    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
19704    pub reason: ::core::option::Option<i32>,
19705    #[prost(uint64, optional, tag="3")]
19706    pub frame_source: ::core::option::Option<u64>,
19707    #[prost(uint64, optional, tag="4")]
19708    pub frame_sequence: ::core::option::Option<u64>,
19709    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
19710    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
19711    /// smoothness.
19712    #[prost(bool, optional, tag="5")]
19713    pub affects_smoothness: ::core::option::Option<bool>,
19714    /// The type of active scroll.
19715    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
19716    pub scroll_state: ::core::option::Option<i32>,
19717    /// If any main thread animation is active during this frame.
19718    #[prost(bool, optional, tag="7")]
19719    pub has_main_animation: ::core::option::Option<bool>,
19720    /// If any compositor thread animation is active during this frame.
19721    #[prost(bool, optional, tag="8")]
19722    pub has_compositor_animation: ::core::option::Option<bool>,
19723    /// If any touch-driven UX (not scroll) is active during this frame.
19724    #[prost(bool, optional, tag="9")]
19725    pub has_smooth_input_main: ::core::option::Option<bool>,
19726    /// Whether the frame contained any missing content (i.e. whether there was
19727    /// checkerboarding in the frame).  If has_missing_content,
19728    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
19729    /// values, has_missing_content should equal checkerboarded_needs_raster ||
19730    /// checkerboarded_needs_record.
19731    #[prost(bool, optional, tag="10")]
19732    pub has_missing_content: ::core::option::Option<bool>,
19733    /// The id of layer_tree_host that the frame has been produced for.
19734    #[prost(uint64, optional, tag="11")]
19735    pub layer_tree_host_id: ::core::option::Option<u64>,
19736    /// If total latency of PipelineReporter exceeds a certain limit.
19737    #[prost(bool, optional, tag="12")]
19738    pub has_high_latency: ::core::option::Option<bool>,
19739    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
19740    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
19741    /// (i.e. dropped frames when there are no partial compositor updates).
19742    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
19743    pub frame_type: ::core::option::Option<i32>,
19744    /// The breakdown stage of PipelineReporter that is most likely accountable for
19745    /// high latency.
19746    #[prost(string, repeated, tag="14")]
19747    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19748    /// Whether the frame contained any content that is not fully rastered.
19749    #[prost(bool, optional, tag="15")]
19750    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
19751    /// Whether the frame contained any content that is not fully recorded.
19752    #[prost(bool, optional, tag="16")]
19753    pub checkerboarded_needs_record: ::core::option::Option<bool>,
19754    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
19755    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
19756    #[prost(int64, optional, tag="17")]
19757    pub surface_frame_trace_id: ::core::option::Option<i64>,
19758    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
19759    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
19760    #[prost(int64, optional, tag="18")]
19761    pub display_trace_id: ::core::option::Option<i64>,
19762}
19763/// Nested message and enum types in `ChromeFrameReporter`.
19764pub mod chrome_frame_reporter {
19765    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19766    #[repr(i32)]
19767    pub enum State {
19768        /// The frame did not have any updates to present.
19769        NoUpdateDesired = 0,
19770        /// The frame presented all the desired updates (i.e. any updates requested
19771        /// from both the compositor thread and main-threads were handled).
19772        PresentedAll = 1,
19773        /// The frame was presented with some updates, but also missed some updates
19774        /// (e.g. missed updates from the main-thread, but included updates from the
19775        /// compositor thread).
19776        PresentedPartial = 2,
19777        /// The frame was dropped, i.e. some updates were desired for the frame, but
19778        /// was not presented.
19779        Dropped = 3,
19780    }
19781    impl State {
19782        /// String value of the enum field names used in the ProtoBuf definition.
19783        ///
19784        /// The values are not transformed in any way and thus are considered stable
19785        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19786        pub fn as_str_name(&self) -> &'static str {
19787            match self {
19788                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
19789                State::PresentedAll => "STATE_PRESENTED_ALL",
19790                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
19791                State::Dropped => "STATE_DROPPED",
19792            }
19793        }
19794    }
19795    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19796    #[repr(i32)]
19797    pub enum FrameDropReason {
19798        ReasonUnspecified = 0,
19799        /// Frame was dropped by the display-compositor.
19800        /// The display-compositor may drop a frame some times (e.g. the frame missed
19801        /// the deadline, or was blocked on surface-sync, etc.)
19802        ReasonDisplayCompositor = 1,
19803        /// Frame was dropped because of the main-thread.
19804        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
19805        /// is running expensive javascript, or doing a lot of layout updates, etc.
19806        ReasonMainThread = 2,
19807        /// Frame was dropped by the client compositor.
19808        /// The client compositor can drop some frames too (e.g. attempting to
19809        /// recover latency, missing the deadline, etc.).
19810        ReasonClientCompositor = 3,
19811    }
19812    impl FrameDropReason {
19813        /// String value of the enum field names used in the ProtoBuf definition.
19814        ///
19815        /// The values are not transformed in any way and thus are considered stable
19816        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19817        pub fn as_str_name(&self) -> &'static str {
19818            match self {
19819                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
19820                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
19821                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
19822                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
19823            }
19824        }
19825    }
19826    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19827    #[repr(i32)]
19828    pub enum ScrollState {
19829        ScrollNone = 0,
19830        ScrollMainThread = 1,
19831        ScrollCompositorThread = 2,
19832        ScrollRaster = 3,
19833        /// Used when it can't be determined whether a scroll is in progress or not.
19834        ScrollUnknown = 4,
19835    }
19836    impl ScrollState {
19837        /// String value of the enum field names used in the ProtoBuf definition.
19838        ///
19839        /// The values are not transformed in any way and thus are considered stable
19840        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19841        pub fn as_str_name(&self) -> &'static str {
19842            match self {
19843                ScrollState::ScrollNone => "SCROLL_NONE",
19844                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
19845                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
19846                ScrollState::ScrollRaster => "SCROLL_RASTER",
19847                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
19848            }
19849        }
19850    }
19851    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19852    #[repr(i32)]
19853    pub enum FrameType {
19854        Forked = 0,
19855        Backfill = 1,
19856    }
19857    impl FrameType {
19858        /// String value of the enum field names used in the ProtoBuf definition.
19859        ///
19860        /// The values are not transformed in any way and thus are considered stable
19861        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19862        pub fn as_str_name(&self) -> &'static str {
19863            match self {
19864                FrameType::Forked => "FORKED",
19865                FrameType::Backfill => "BACKFILL",
19866            }
19867        }
19868    }
19869}
19870// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19871
19872// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19873
19874/// Details about one of Chrome's keyed services associated with the event.
19875#[derive(Clone, PartialEq, ::prost::Message)]
19876pub struct ChromeKeyedService {
19877    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
19878    /// Chrome, these are static strings known at compile time).
19879    #[prost(string, optional, tag="1")]
19880    pub name: ::core::option::Option<::prost::alloc::string::String>,
19881}
19882// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19883
19884// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
19885
19886#[derive(Clone, PartialEq, ::prost::Message)]
19887pub struct ChromeLatencyInfo {
19888    #[prost(int64, optional, tag="1")]
19889    pub trace_id: ::core::option::Option<i64>,
19890    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
19891    pub step: ::core::option::Option<i32>,
19892    #[prost(int32, optional, tag="3")]
19893    pub frame_tree_node_id: ::core::option::Option<i32>,
19894    #[prost(message, repeated, tag="4")]
19895    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
19896    #[prost(bool, optional, tag="5")]
19897    pub is_coalesced: ::core::option::Option<bool>,
19898    #[prost(int64, optional, tag="6")]
19899    pub gesture_scroll_id: ::core::option::Option<i64>,
19900    #[prost(int64, optional, tag="7")]
19901    pub touch_id: ::core::option::Option<i64>,
19902    /// The type of input corresponding to this `ChromeLatencyInfo`.
19903    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
19904    pub input_type: ::core::option::Option<i32>,
19905}
19906/// Nested message and enum types in `ChromeLatencyInfo`.
19907pub mod chrome_latency_info {
19908    #[derive(Clone, PartialEq, ::prost::Message)]
19909    pub struct ComponentInfo {
19910        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
19911        pub component_type: ::core::option::Option<i32>,
19912        /// Microsecond timestamp in CLOCK_MONOTONIC domain
19913        #[prost(uint64, optional, tag="2")]
19914        pub time_us: ::core::option::Option<u64>,
19915    }
19916    /// NEXT ID: 12
19917    /// All step are optional but the enum is ordered (not by number) below in the
19918    /// order we expect them to appear if they are emitted in trace in a blocking
19919    /// fashion.
19920    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19921    #[repr(i32)]
19922    pub enum Step {
19923        Unspecified = 0,
19924        /// Emitted on the browser main thread.
19925        SendInputEventUi = 3,
19926        /// Happens on the renderer's compositor.
19927        HandleInputEventImpl = 5,
19928        DidHandleInputAndOverscroll = 8,
19929        /// Occurs on the Renderer's main thread.
19930        HandleInputEventMain = 4,
19931        MainThreadScrollUpdate = 2,
19932        HandleInputEventMainCommit = 1,
19933        /// Could be emitted on both the renderer's main OR compositor.
19934        HandledInputEventMainOrImpl = 9,
19935        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
19936        /// renderer's compositor and this will be emitted.
19937        HandledInputEventImpl = 10,
19938        /// Renderer's compositor.
19939        SwapBuffers = 6,
19940        /// Happens on the VizCompositor in the GPU process.
19941        DrawAndSwap = 7,
19942        /// Happens on the GPU main thread after the swap has completed.
19943        ///
19944        /// See above for NEXT ID, enum steps are not ordered by tag number.
19945        FinishedSwapBuffers = 11,
19946    }
19947    impl Step {
19948        /// String value of the enum field names used in the ProtoBuf definition.
19949        ///
19950        /// The values are not transformed in any way and thus are considered stable
19951        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19952        pub fn as_str_name(&self) -> &'static str {
19953            match self {
19954                Step::Unspecified => "STEP_UNSPECIFIED",
19955                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
19956                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
19957                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
19958                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
19959                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
19960                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
19961                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
19962                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
19963                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
19964                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
19965                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
19966            }
19967        }
19968    }
19969    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
19970    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
19971    /// practices.
19972    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19973    #[repr(i32)]
19974    pub enum LatencyComponentType {
19975        ComponentUnspecified = 0,
19976        ComponentInputEventLatencyBeginRwh = 1,
19977        ComponentInputEventLatencyScrollUpdateOriginal = 2,
19978        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
19979        ComponentInputEventLatencyOriginal = 4,
19980        ComponentInputEventLatencyUi = 5,
19981        ComponentInputEventLatencyRendererMain = 6,
19982        ComponentInputEventLatencyRenderingScheduledMain = 7,
19983        ComponentInputEventLatencyRenderingScheduledImpl = 8,
19984        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
19985        ComponentInputEventLatencyAckRwh = 10,
19986        ComponentInputEventLatencyRendererSwap = 11,
19987        ComponentDisplayCompositorReceivedFrame = 12,
19988        ComponentInputEventGpuSwapBuffer = 13,
19989        ComponentInputEventLatencyFrameSwap = 14,
19990    }
19991    impl LatencyComponentType {
19992        /// String value of the enum field names used in the ProtoBuf definition.
19993        ///
19994        /// The values are not transformed in any way and thus are considered stable
19995        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19996        pub fn as_str_name(&self) -> &'static str {
19997            match self {
19998                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
19999                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
20000                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
20001                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
20002                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
20003                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
20004                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
20005                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
20006                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
20007                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
20008                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
20009                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
20010                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
20011                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
20012                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
20013            }
20014        }
20015    }
20016    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20017    #[repr(i32)]
20018    pub enum InputType {
20019        UnspecifiedOrOther = 0,
20020        TouchMoved = 1,
20021        GestureScrollBegin = 2,
20022        GestureScrollUpdate = 3,
20023        GestureScrollEnd = 4,
20024        GestureTap = 5,
20025        GestureTapCancel = 6,
20026    }
20027    impl InputType {
20028        /// String value of the enum field names used in the ProtoBuf definition.
20029        ///
20030        /// The values are not transformed in any way and thus are considered stable
20031        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20032        pub fn as_str_name(&self) -> &'static str {
20033            match self {
20034                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
20035                InputType::TouchMoved => "TOUCH_MOVED",
20036                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
20037                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
20038                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
20039                InputType::GestureTap => "GESTURE_TAP",
20040                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
20041            }
20042        }
20043    }
20044}
20045// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
20046
20047// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20048
20049/// Details about a legacy Chrome IPC message that is either sent by the event.
20050/// TODO(eseckler): Also use this message on the receiving side?
20051#[derive(Clone, PartialEq, ::prost::Message)]
20052pub struct ChromeLegacyIpc {
20053    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
20054    /// enum, e.g. FrameMsgStart,
20055    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
20056    pub message_class: ::core::option::Option<i32>,
20057    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
20058    /// IPC_MESSAGE_START macros.
20059    #[prost(uint32, optional, tag="2")]
20060    pub message_line: ::core::option::Option<u32>,
20061}
20062/// Nested message and enum types in `ChromeLegacyIpc`.
20063pub mod chrome_legacy_ipc {
20064    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20065    #[repr(i32)]
20066    pub enum MessageClass {
20067        ClassUnspecified = 0,
20068        ClassAutomation = 1,
20069        ClassFrame = 2,
20070        ClassPage = 3,
20071        ClassView = 4,
20072        ClassWidget = 5,
20073        ClassInput = 6,
20074        ClassTest = 7,
20075        ClassWorker = 8,
20076        ClassNacl = 9,
20077        ClassGpuChannel = 10,
20078        ClassMedia = 11,
20079        ClassPpapi = 12,
20080        ClassChrome = 13,
20081        ClassDrag = 14,
20082        ClassPrint = 15,
20083        ClassExtension = 16,
20084        ClassTextInputClient = 17,
20085        ClassBlinkTest = 18,
20086        ClassAccessibility = 19,
20087        ClassPrerender = 20,
20088        ClassChromoting = 21,
20089        ClassBrowserPlugin = 22,
20090        ClassAndroidWebView = 23,
20091        ClassNaclHost = 24,
20092        ClassEncryptedMedia = 25,
20093        ClassCast = 26,
20094        ClassGinJavaBridge = 27,
20095        ClassChromeUtilityPrinting = 28,
20096        ClassOzoneGpu = 29,
20097        ClassWebTest = 30,
20098        ClassNetworkHints = 31,
20099        ClassExtensionsGuestView = 32,
20100        ClassGuestView = 33,
20101        ClassMediaPlayerDelegate = 34,
20102        ClassExtensionWorker = 35,
20103        ClassSubresourceFilter = 36,
20104        ClassUnfreezableFrame = 37,
20105    }
20106    impl MessageClass {
20107        /// String value of the enum field names used in the ProtoBuf definition.
20108        ///
20109        /// The values are not transformed in any way and thus are considered stable
20110        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20111        pub fn as_str_name(&self) -> &'static str {
20112            match self {
20113                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
20114                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
20115                MessageClass::ClassFrame => "CLASS_FRAME",
20116                MessageClass::ClassPage => "CLASS_PAGE",
20117                MessageClass::ClassView => "CLASS_VIEW",
20118                MessageClass::ClassWidget => "CLASS_WIDGET",
20119                MessageClass::ClassInput => "CLASS_INPUT",
20120                MessageClass::ClassTest => "CLASS_TEST",
20121                MessageClass::ClassWorker => "CLASS_WORKER",
20122                MessageClass::ClassNacl => "CLASS_NACL",
20123                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
20124                MessageClass::ClassMedia => "CLASS_MEDIA",
20125                MessageClass::ClassPpapi => "CLASS_PPAPI",
20126                MessageClass::ClassChrome => "CLASS_CHROME",
20127                MessageClass::ClassDrag => "CLASS_DRAG",
20128                MessageClass::ClassPrint => "CLASS_PRINT",
20129                MessageClass::ClassExtension => "CLASS_EXTENSION",
20130                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
20131                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
20132                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
20133                MessageClass::ClassPrerender => "CLASS_PRERENDER",
20134                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
20135                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
20136                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
20137                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
20138                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
20139                MessageClass::ClassCast => "CLASS_CAST",
20140                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
20141                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
20142                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
20143                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
20144                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
20145                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
20146                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
20147                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
20148                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
20149                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
20150                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
20151            }
20152        }
20153    }
20154}
20155// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20156
20157// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
20158
20159/// Details about Chrome message pump events
20160#[derive(Clone, PartialEq, ::prost::Message)]
20161pub struct ChromeMessagePump {
20162    /// True if there are sent messages in the queue.
20163    #[prost(bool, optional, tag="1")]
20164    pub sent_messages_in_queue: ::core::option::Option<bool>,
20165    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
20166    /// invoke.
20167    #[prost(uint64, optional, tag="2")]
20168    pub io_handler_location_iid: ::core::option::Option<u64>,
20169}
20170// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
20171
20172// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
20173
20174/// Contains information to identify mojo handling events. The trace events in
20175/// mojo are common for all mojo interfaces and this information is used to
20176/// identify who is the caller or callee.
20177#[derive(Clone, PartialEq, ::prost::Message)]
20178pub struct ChromeMojoEventInfo {
20179    /// Contains the interface name or the file name of the creator of a mojo
20180    /// handle watcher, recorded when an event if notified to the watcher. The code
20181    /// that runs within the track event belongs to the interface.
20182    #[prost(string, optional, tag="1")]
20183    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20184    /// The hash of the IPC message that is being handled.
20185    #[prost(uint32, optional, tag="2")]
20186    pub ipc_hash: ::core::option::Option<u32>,
20187    /// A static string representing the mojo interface name of the message that is
20188    /// being handled.
20189    #[prost(string, optional, tag="3")]
20190    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20191    /// Refers to an interned UnsymbolizedSourceLocation.
20192    /// The UnsymbolizedSourceLocation contains the interface method that's being
20193    /// handled, represented as a native symbol.
20194    /// The native symbol can be symbolized after the trace is recorded.
20195    /// Not using a symbolized source location for official Chromium builds to
20196    /// reduce binary size - emitting file/function names as strings into the
20197    /// trace requires storing them in the binary, which causes a significant
20198    /// binary size bloat for Chromium.
20199    #[prost(uint64, optional, tag="4")]
20200    pub mojo_interface_method_iid: ::core::option::Option<u64>,
20201    /// Indicate whether this is a message or reply.
20202    #[prost(bool, optional, tag="5")]
20203    pub is_reply: ::core::option::Option<bool>,
20204    /// The payload size of the message being sent through mojo messages.
20205    #[prost(uint64, optional, tag="6")]
20206    pub payload_size: ::core::option::Option<u64>,
20207    /// Represents the size of the message. Includes all headers and user payload.
20208    #[prost(uint64, optional, tag="7")]
20209    pub data_num_bytes: ::core::option::Option<u64>,
20210}
20211#[derive(Clone, PartialEq, ::prost::Message)]
20212pub struct ChromeRendererSchedulerState {
20213    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
20214    pub rail_mode: ::core::option::Option<i32>,
20215    #[prost(bool, optional, tag="2")]
20216    pub is_backgrounded: ::core::option::Option<bool>,
20217    #[prost(bool, optional, tag="3")]
20218    pub is_hidden: ::core::option::Option<bool>,
20219}
20220// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
20221
20222// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
20223
20224/// Details about a UI interaction initiated by the user, such as opening or
20225/// closing a tab or a context menu.
20226#[derive(Clone, PartialEq, ::prost::Message)]
20227pub struct ChromeUserEvent {
20228    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
20229    /// Chrome, these are usually static strings known at compile time, or
20230    /// concatenations of multiple such static strings).
20231    #[prost(string, optional, tag="1")]
20232    pub action: ::core::option::Option<::prost::alloc::string::String>,
20233    /// MD5 hash of the action string.
20234    #[prost(uint64, optional, tag="2")]
20235    pub action_hash: ::core::option::Option<u64>,
20236}
20237// End of protos/perfetto/trace/track_event/chrome_user_event.proto
20238
20239// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20240
20241/// Details about HWNDMessageHandler trace events.
20242#[derive(Clone, PartialEq, ::prost::Message)]
20243pub struct ChromeWindowHandleEventInfo {
20244    #[prost(uint32, optional, tag="1")]
20245    pub dpi: ::core::option::Option<u32>,
20246    #[prost(uint32, optional, tag="2")]
20247    pub message_id: ::core::option::Option<u32>,
20248    #[prost(fixed64, optional, tag="3")]
20249    pub hwnd_ptr: ::core::option::Option<u64>,
20250}
20251// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20252
20253// Begin of protos/perfetto/trace/track_event/screenshot.proto
20254
20255#[derive(Clone, PartialEq, ::prost::Message)]
20256pub struct Screenshot {
20257    #[prost(bytes="vec", optional, tag="1")]
20258    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20259}
20260// End of protos/perfetto/trace/track_event/screenshot.proto
20261
20262// Begin of protos/perfetto/trace/track_event/task_execution.proto
20263
20264/// TrackEvent arguments describing the execution of a task.
20265#[derive(Clone, PartialEq, ::prost::Message)]
20266pub struct TaskExecution {
20267    /// Source location that the task was posted from.
20268    /// interned SourceLocation.
20269    #[prost(uint64, optional, tag="1")]
20270    pub posted_from_iid: ::core::option::Option<u64>,
20271}
20272// Begin of protos/perfetto/trace/track_event/track_event.proto
20273
20274// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
20275// protos are still subject to change. Don't depend on them staying as they are.
20276
20277/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
20278/// which describe activity on a track, such as a thread or asynchronous event
20279/// track. The track is specified using separate TrackDescriptor messages and
20280/// referred to via the track's UUID.
20281///
20282/// A simple TrackEvent packet specifies a timestamp, category, name and type:
20283/// ```protobuf
20284///    trace_packet {
20285///      timestamp: 1000
20286///      track_event {
20287///        categories: \["my_cat"\]
20288///        name: "my_event"
20289///        type: TYPE_INSTANT
20290///       }
20291///     }
20292/// ```
20293///
20294/// To associate an event with a custom track (e.g. a thread), the track is
20295/// defined in a separate packet and referred to from the TrackEvent by its UUID:
20296/// ```protobuf
20297///    trace_packet {
20298///      track_descriptor {
20299///        track_uuid: 1234
20300///        name: "my_track"
20301///
20302///        // Optionally, associate the track with a thread.
20303///        thread_descriptor {
20304///          pid: 10
20305///          tid: 10
20306///          ..
20307///        }
20308///      }
20309///    }
20310/// ```
20311///
20312/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20313///
20314/// ```protobuf
20315///    trace_packet {
20316///      timestamp: 1200
20317///      track_event {
20318///        track_uuid: 1234
20319///        categories: \["my_cat"\]
20320///        name: "my_slice"
20321///        type: TYPE_SLICE_BEGIN
20322///      }
20323///    }
20324///    trace_packet {
20325///      timestamp: 1400
20326///      track_event {
20327///        track_uuid: 1234
20328///        type: TYPE_SLICE_END
20329///      }
20330///    }
20331/// ```
20332/// TrackEvents also support optimizations to reduce data repetition and encoded
20333/// data size, e.g. through data interning (names, categories, ...) and delta
20334/// encoding of timestamps/counters. For details, see the InternedData message.
20335/// Further, default values for attributes of events on the same sequence (e.g.
20336/// their default track association) can be emitted as part of a
20337/// TrackEventDefaults message.
20338///
20339/// Next reserved id: 13 (up to 15). Next id: 57.
20340#[derive(Clone, PartialEq, ::prost::Message)]
20341pub struct TrackEvent {
20342    /// Names of categories of the event. In the client library, categories are a
20343    /// way to turn groups of individual events on or off.
20344    /// interned EventCategoryName.
20345    #[prost(uint64, repeated, packed="false", tag="3")]
20346    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20347    /// non-interned variant.
20348    #[prost(string, repeated, tag="22")]
20349    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20350    #[prost(enumeration="track_event::Type", optional, tag="9")]
20351    pub r#type: ::core::option::Option<i32>,
20352    /// Identifies the track of the event. The default value may be overridden
20353    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20354    /// sequence (in most cases sequence = one thread). If no value is specified
20355    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20356    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20357    #[prost(uint64, optional, tag="11")]
20358    pub track_uuid: ::core::option::Option<u64>,
20359    /// To encode counter values more efficiently, we support attaching additional
20360    /// counter values to a TrackEvent of any type. All values will share the same
20361    /// timestamp specified in the TracePacket. The value at
20362    /// extra_counter_values\[N\] is for the counter track referenced by
20363    /// extra_counter_track_uuids\[N\].
20364    ///
20365    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20366    /// should always be equal or more uuids than values. It is valid to set more
20367    /// uuids (e.g. via defaults) than values. If uuids are specified in
20368    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20369    /// default uuid list.
20370    ///
20371    /// For example, this allows snapshotting the thread time clock at each
20372    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20373    #[prost(uint64, repeated, packed="false", tag="31")]
20374    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20375    #[prost(int64, repeated, packed="false", tag="12")]
20376    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20377    /// Counter snapshots using floating point instead of integer values.
20378    #[prost(uint64, repeated, packed="false", tag="45")]
20379    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20380    #[prost(double, repeated, packed="false", tag="46")]
20381    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20382    /// IDs of flows originating, passing through, or ending at this event.
20383    /// Flow IDs are global within a trace.
20384    ///
20385    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20386    /// an input event may be handled on one thread but cause another event on
20387    /// a different thread - a flow between the two events can associate them.
20388    ///
20389    /// The direction of the flows between events is inferred from the events'
20390    /// timestamps. The earliest event with the same flow ID becomes the source
20391    /// of the flow. Any events thereafter are intermediate steps of the flow,
20392    /// until the flow terminates at the last event with the flow ID.
20393    ///
20394    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20395    /// that the same ID can later be reused for another flow.
20396    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20397    #[deprecated]
20398    #[prost(uint64, repeated, packed="false", tag="36")]
20399    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20400    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20401    /// consumption.
20402    #[prost(fixed64, repeated, packed="false", tag="47")]
20403    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20404    /// List of flow ids which should terminate on this event, otherwise same as
20405    /// |flow_ids|.
20406    /// Any one flow ID should be either listed as part of |flow_ids| OR
20407    /// |terminating_flow_ids|, not both.
20408    /// DEPRECATED. Only kept for backwards compatibility.  Use
20409    /// |terminating_flow_ids|.
20410    #[deprecated]
20411    #[prost(uint64, repeated, packed="false", tag="42")]
20412    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20413    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20414    /// "terminating_flow_ids" to reduce memory consumption.
20415    #[prost(fixed64, repeated, packed="false", tag="48")]
20416    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20417    /// Debug annotations associated with this event. These are arbitrary key-value
20418    /// pairs that can be used to attach additional information to the event.
20419    /// See DebugAnnotation message for details on supported value types.
20420    ///
20421    /// For example, debug annotations can be used to attach a URL or resource
20422    /// identifier to a network request event. Arrays, dictionaries and full
20423    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20424    /// are supported.
20425    #[prost(message, repeated, tag="4")]
20426    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20427    // ---------------------------------------------------------------------------
20428    // TrackEvent arguments:
20429    // ---------------------------------------------------------------------------
20430    //
20431    // NOTE: The fields below this point are NOT part of the stable public API.
20432    // They are primarily intended for internal use by Chrome and Android. These
20433    // fields may change or be removed without notice. For custom/synthetic
20434    // traces, prefer using the fields above (name, categories, type, flows,
20435    // correlation_id, callstack, etc.) along with custom debug_annotations.
20436
20437    /// Typed event arguments:
20438    #[prost(message, optional, tag="5")]
20439    pub task_execution: ::core::option::Option<TaskExecution>,
20440    #[prost(message, optional, tag="21")]
20441    pub log_message: ::core::option::Option<LogMessage>,
20442    #[prost(message, optional, tag="24")]
20443    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
20444    #[prost(message, optional, tag="25")]
20445    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
20446    #[prost(message, optional, tag="26")]
20447    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
20448    #[prost(message, optional, tag="27")]
20449    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
20450    #[prost(message, optional, tag="28")]
20451    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
20452    #[prost(message, optional, tag="29")]
20453    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
20454    /// DEPRECATED. Only kept for backwards compatibility. Use the
20455    /// |ChromeTrackEvent.frame_reporter| extension in
20456    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20457    /// instead.
20458    #[deprecated]
20459    #[prost(message, optional, tag="32")]
20460    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
20461    #[prost(message, optional, tag="39")]
20462    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
20463    #[prost(message, optional, tag="40")]
20464    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
20465    #[prost(message, optional, tag="41")]
20466    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
20467    #[prost(message, optional, tag="43")]
20468    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
20469    #[prost(message, optional, tag="49")]
20470    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
20471    #[prost(message, optional, tag="50")]
20472    pub screenshot: ::core::option::Option<Screenshot>,
20473    #[prost(message, optional, tag="35")]
20474    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
20475    #[prost(message, optional, tag="38")]
20476    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
20477    #[prost(message, optional, tag="6")]
20478    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
20479    /// Optional name of the event for its display in trace viewer. May be left
20480    /// unspecified for events with typed arguments.
20481    ///
20482    /// Note that metrics should not rely on event names, as they are prone to
20483    /// changing. Instead, they should use typed arguments to identify the events
20484    /// they are interested in.
20485    #[prost(oneof="track_event::NameField", tags="10, 23")]
20486    pub name_field: ::core::option::Option<track_event::NameField>,
20487    /// A new value for a counter track. |track_uuid| should refer to a track with
20488    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20489    /// efficient encoding of counter values that are sampled at the beginning/end
20490    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20491    /// Counter values can optionally be encoded in as delta values (positive or
20492    /// negative) on each packet sequence (see CounterIncrementalBase).
20493    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
20494    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
20495    /// An opaque identifier to correlate this slice with other slices that are
20496    /// considered part of the same logical operation, even if they are not
20497    /// causally connected. Examples uses of a correlation id might be the number
20498    /// of frame going through various stages of rendering in a GPU, the id for an
20499    /// RPC request going through a distributed system, or the id of a network
20500    /// request going through various stages of processing by the kernel.
20501    ///
20502    /// NOTE: if the events *are* causually connected, you probably want to use
20503    /// flows instead of OR in addition to correlation ids.
20504    ///
20505    /// UIs can use this identifier to visually link these slices, for instance,
20506    /// by assigning them a consistent color or highlighting the entire correlated
20507    /// set when one slice is hovered.
20508    ///
20509    /// Only one field within this 'oneof' should be set to define the correlation.
20510    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
20511    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
20512    /// Callstack associated with this event. This captures the program stack at
20513    /// the time the event occurred, useful for understanding what code path led
20514    /// to the event.
20515    ///
20516    /// Two variants are supported:
20517    /// - callstack: Inline callstack data (simpler when trace size is not a
20518    ///    concern or callstacks are unique)
20519    /// - callstack_iid: Reference to an interned Callstack in InternedData
20520    ///    (efficient for repeated callstacks)
20521    ///
20522    /// Only one of these fields should be set.
20523    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
20524    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
20525    /// This field is used only if the source location represents the function that
20526    /// executes during this event.
20527    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
20528    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
20529    // ---------------------------------------------------------------------------
20530    // Deprecated / legacy event fields, which will be removed in the future:
20531    // ---------------------------------------------------------------------------
20532
20533    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20534    /// TracePacket instead.
20535    ///
20536    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20537    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
20538    pub timestamp: ::core::option::Option<track_event::Timestamp>,
20539    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20540    /// encode thread time instead.
20541    ///
20542    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20543    /// microseconds.
20544    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
20545    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
20546    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20547    /// encode thread instruction count instead.
20548    ///
20549    /// Value of the instruction counter for the current thread.
20550    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
20551    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
20552}
20553/// Nested message and enum types in `TrackEvent`.
20554pub mod track_event {
20555    /// Inline callstack for TrackEvents when interning is not needed.
20556    /// This is a simplified version of the profiling Callstack/Frame messages,
20557    /// designed for cases where trace size is not critical or callstacks are
20558    /// unique.
20559    ///
20560    /// Use this for simple callstacks with function names and source locations.
20561    /// For binary/library information (mappings, build IDs, relative PCs), use
20562    /// interned callstacks via callstack_iid instead.
20563    #[derive(Clone, PartialEq, ::prost::Message)]
20564    pub struct Callstack {
20565        /// Frames of this callstack, ordered from bottom (outermost) to top
20566        /// (innermost). For example, if main() calls foo() which calls bar(), the
20567        /// frames would be: [main, foo, bar]
20568        #[prost(message, repeated, tag="1")]
20569        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
20570    }
20571    /// Nested message and enum types in `Callstack`.
20572    pub mod callstack {
20573        /// Frame within an inline callstack.
20574        #[derive(Clone, PartialEq, ::prost::Message)]
20575        pub struct Frame {
20576            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
20577            #[prost(string, optional, tag="1")]
20578            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20579            /// Optional: Source file path, e.g., "/src/foo.cc"
20580            #[prost(string, optional, tag="2")]
20581            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
20582            /// Optional: Line number in the source file
20583            #[prost(uint32, optional, tag="3")]
20584            pub line_number: ::core::option::Option<u32>,
20585        }
20586    }
20587    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
20588    /// event attributes are initially simply proxied for conversion to a JSON
20589    /// trace. We intend to gradually transition these attributes to similar native
20590    /// features in TrackEvent (e.g. async + flow events), or deprecate them
20591    /// without replacement where transition is unsuitable.
20592    ///
20593    /// Next reserved id: 16 (up to 16).
20594    /// Next id: 20.
20595    #[derive(Clone, PartialEq, ::prost::Message)]
20596    pub struct LegacyEvent {
20597        /// Deprecated, use TrackEvent::name(_iid) instead.
20598        /// interned EventName.
20599        #[prost(uint64, optional, tag="1")]
20600        pub name_iid: ::core::option::Option<u64>,
20601        #[prost(int32, optional, tag="2")]
20602        pub phase: ::core::option::Option<i32>,
20603        #[prost(int64, optional, tag="3")]
20604        pub duration_us: ::core::option::Option<i64>,
20605        #[prost(int64, optional, tag="4")]
20606        pub thread_duration_us: ::core::option::Option<i64>,
20607        /// Elapsed retired instruction count during the event.
20608        #[prost(int64, optional, tag="15")]
20609        pub thread_instruction_delta: ::core::option::Option<i64>,
20610        /// Additional optional scope for |id|.
20611        #[prost(string, optional, tag="7")]
20612        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
20613        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
20614        #[prost(bool, optional, tag="9")]
20615        pub use_async_tts: ::core::option::Option<bool>,
20616        /// Idenfifies a flow. Flow events with the same bind_id are connected.
20617        #[prost(uint64, optional, tag="8")]
20618        pub bind_id: ::core::option::Option<u64>,
20619        /// Use the enclosing slice as binding point for a flow end event instead of
20620        /// the next slice. Flow start/step events always bind to the enclosing
20621        /// slice.
20622        #[prost(bool, optional, tag="12")]
20623        pub bind_to_enclosing: ::core::option::Option<bool>,
20624        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
20625        pub flow_direction: ::core::option::Option<i32>,
20626        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
20627        pub instant_event_scope: ::core::option::Option<i32>,
20628        /// Override the pid/tid if the writer needs to emit events on behalf of
20629        /// another process/thread. This should be the exception. Normally, the
20630        /// pid+tid from ThreadDescriptor is used.
20631        #[prost(int32, optional, tag="18")]
20632        pub pid_override: ::core::option::Option<i32>,
20633        #[prost(int32, optional, tag="19")]
20634        pub tid_override: ::core::option::Option<i32>,
20635        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
20636        pub id: ::core::option::Option<legacy_event::Id>,
20637    }
20638    /// Nested message and enum types in `LegacyEvent`.
20639    pub mod legacy_event {
20640        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20641        #[repr(i32)]
20642        pub enum FlowDirection {
20643            FlowUnspecified = 0,
20644            FlowIn = 1,
20645            FlowOut = 2,
20646            FlowInout = 3,
20647        }
20648        impl FlowDirection {
20649            /// String value of the enum field names used in the ProtoBuf definition.
20650            ///
20651            /// The values are not transformed in any way and thus are considered stable
20652            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20653            pub fn as_str_name(&self) -> &'static str {
20654                match self {
20655                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
20656                    FlowDirection::FlowIn => "FLOW_IN",
20657                    FlowDirection::FlowOut => "FLOW_OUT",
20658                    FlowDirection::FlowInout => "FLOW_INOUT",
20659                }
20660            }
20661        }
20662        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20663        #[repr(i32)]
20664        pub enum InstantEventScope {
20665            ScopeUnspecified = 0,
20666            ScopeGlobal = 1,
20667            ScopeProcess = 2,
20668            ScopeThread = 3,
20669        }
20670        impl InstantEventScope {
20671            /// String value of the enum field names used in the ProtoBuf definition.
20672            ///
20673            /// The values are not transformed in any way and thus are considered stable
20674            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20675            pub fn as_str_name(&self) -> &'static str {
20676                match self {
20677                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20678                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
20679                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
20680                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
20681                }
20682            }
20683        }
20684        #[derive(Clone, PartialEq, ::prost::Oneof)]
20685        pub enum Id {
20686            #[prost(uint64, tag="6")]
20687            UnscopedId(u64),
20688            #[prost(uint64, tag="10")]
20689            LocalId(u64),
20690            #[prost(uint64, tag="11")]
20691            GlobalId(u64),
20692        }
20693    }
20694    // TODO(eseckler): Support using binary symbols for category/event names.
20695
20696    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
20697    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20698    #[repr(i32)]
20699    pub enum Type {
20700        Unspecified = 0,
20701        /// Slice events are events that have a begin and end timestamp, i.e. a
20702        /// duration. They can be nested similar to a callstack: If, on the same
20703        /// track, event B begins after event A, but before A ends, B is a child
20704        /// event of A and will be drawn as a nested event underneath A in the UI.
20705        /// Note that child events should always end before their parents (e.g. B
20706        /// before A).
20707        ///
20708        /// Each slice event is formed by a pair of BEGIN + END events. The END event
20709        /// does not need to repeat any TrackEvent fields it has in common with its
20710        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
20711        /// END pair will be merged during trace import.
20712        ///
20713        /// Note that we deliberately chose not to support COMPLETE events (which
20714        /// would specify a duration directly) since clients would need to delay
20715        /// writing them until the slice is completed, which can result in reordered
20716        /// events in the trace and loss of unfinished events at the end of a trace.
20717        SliceBegin = 1,
20718        SliceEnd = 2,
20719        /// Instant events are nestable events without duration. They can be children
20720        /// of slice events on the same track.
20721        Instant = 3,
20722        /// Event that provides a value for a counter track. |track_uuid| should
20723        /// refer to a counter track and |counter_value| set to the new value. Note
20724        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
20725        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
20726        Counter = 4,
20727    }
20728    impl Type {
20729        /// String value of the enum field names used in the ProtoBuf definition.
20730        ///
20731        /// The values are not transformed in any way and thus are considered stable
20732        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20733        pub fn as_str_name(&self) -> &'static str {
20734            match self {
20735                Type::Unspecified => "TYPE_UNSPECIFIED",
20736                Type::SliceBegin => "TYPE_SLICE_BEGIN",
20737                Type::SliceEnd => "TYPE_SLICE_END",
20738                Type::Instant => "TYPE_INSTANT",
20739                Type::Counter => "TYPE_COUNTER",
20740            }
20741        }
20742    }
20743    /// Optional name of the event for its display in trace viewer. May be left
20744    /// unspecified for events with typed arguments.
20745    ///
20746    /// Note that metrics should not rely on event names, as they are prone to
20747    /// changing. Instead, they should use typed arguments to identify the events
20748    /// they are interested in.
20749    #[derive(Clone, PartialEq, ::prost::Oneof)]
20750    pub enum NameField {
20751        /// interned EventName.
20752        #[prost(uint64, tag="10")]
20753        NameIid(u64),
20754        /// non-interned variant.
20755        #[prost(string, tag="23")]
20756        Name(::prost::alloc::string::String),
20757    }
20758    /// A new value for a counter track. |track_uuid| should refer to a track with
20759    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20760    /// efficient encoding of counter values that are sampled at the beginning/end
20761    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20762    /// Counter values can optionally be encoded in as delta values (positive or
20763    /// negative) on each packet sequence (see CounterIncrementalBase).
20764    #[derive(Clone, PartialEq, ::prost::Oneof)]
20765    pub enum CounterValueField {
20766        #[prost(int64, tag="30")]
20767        CounterValue(i64),
20768        #[prost(double, tag="44")]
20769        DoubleCounterValue(f64),
20770    }
20771    /// An opaque identifier to correlate this slice with other slices that are
20772    /// considered part of the same logical operation, even if they are not
20773    /// causally connected. Examples uses of a correlation id might be the number
20774    /// of frame going through various stages of rendering in a GPU, the id for an
20775    /// RPC request going through a distributed system, or the id of a network
20776    /// request going through various stages of processing by the kernel.
20777    ///
20778    /// NOTE: if the events *are* causually connected, you probably want to use
20779    /// flows instead of OR in addition to correlation ids.
20780    ///
20781    /// UIs can use this identifier to visually link these slices, for instance,
20782    /// by assigning them a consistent color or highlighting the entire correlated
20783    /// set when one slice is hovered.
20784    ///
20785    /// Only one field within this 'oneof' should be set to define the correlation.
20786    #[derive(Clone, PartialEq, ::prost::Oneof)]
20787    pub enum CorrelationIdField {
20788        /// A 64-bit unsigned integer used as the correlation ID.
20789        ///
20790        /// Best for performance and compact traces if the identifier is naturally
20791        /// numerical or can be easily mapped to one by the trace producer.
20792        #[prost(uint64, tag="52")]
20793        CorrelationId(u64),
20794        /// A string value used as the correlation ID.
20795        ///
20796        /// Offers maximum flexibility for human-readable or complex identifiers
20797        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
20798        /// size. For frequently repeated string identifiers, consider
20799        /// 'correlation_id_string_iid'.
20800        #[prost(string, tag="53")]
20801        CorrelationIdStr(::prost::alloc::string::String),
20802        /// An interned string identifier (an IID) for correlation.
20803        ///
20804        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
20805        /// field within the packet sequence's InternedData. This approach combines
20806        /// the descriptiveness and uniqueness of strings with the efficiency of
20807        /// integer IDs for storage and comparison, especially for identifiers that
20808        /// repeat across many events.
20809        #[prost(uint64, tag="54")]
20810        CorrelationIdStrIid(u64),
20811    }
20812    /// Callstack associated with this event. This captures the program stack at
20813    /// the time the event occurred, useful for understanding what code path led
20814    /// to the event.
20815    ///
20816    /// Two variants are supported:
20817    /// - callstack: Inline callstack data (simpler when trace size is not a
20818    ///    concern or callstacks are unique)
20819    /// - callstack_iid: Reference to an interned Callstack in InternedData
20820    ///    (efficient for repeated callstacks)
20821    ///
20822    /// Only one of these fields should be set.
20823    #[derive(Clone, PartialEq, ::prost::Oneof)]
20824    pub enum CallstackField {
20825        /// Inline callstack data. Use this for simplicity when interning is not
20826        /// needed (e.g., for unique callstacks or when trace size is not critical).
20827        #[prost(message, tag="55")]
20828        Callstack(Callstack),
20829        /// Reference to interned Callstack (see InternedData.callstacks).
20830        /// This is the efficient option when callstacks are repeated.
20831        ///
20832        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
20833        #[prost(uint64, tag="56")]
20834        CallstackIid(u64),
20835    }
20836    /// This field is used only if the source location represents the function that
20837    /// executes during this event.
20838    #[derive(Clone, PartialEq, ::prost::Oneof)]
20839    pub enum SourceLocationField {
20840        /// Non-interned field.
20841        #[prost(message, tag="33")]
20842        SourceLocation(super::SourceLocation),
20843        /// Interned field.
20844        #[prost(uint64, tag="34")]
20845        SourceLocationIid(u64),
20846    }
20847    // ---------------------------------------------------------------------------
20848    // Deprecated / legacy event fields, which will be removed in the future:
20849    // ---------------------------------------------------------------------------
20850
20851    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20852    /// TracePacket instead.
20853    ///
20854    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20855    #[derive(Clone, PartialEq, ::prost::Oneof)]
20856    pub enum Timestamp {
20857        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20858        /// calculate the absolute timestamp value, sum up all delta values of the
20859        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20860        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20861        /// be positive.
20862        #[prost(int64, tag="1")]
20863        TimestampDeltaUs(i64),
20864        /// Absolute value (e.g. a manually specified timestamp in the macro).
20865        /// This is a one-off value that does not affect delta timestamp computation
20866        /// in subsequent TrackEvents.
20867        #[prost(int64, tag="16")]
20868        TimestampAbsoluteUs(i64),
20869    }
20870    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20871    /// encode thread time instead.
20872    ///
20873    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20874    /// microseconds.
20875    #[derive(Clone, PartialEq, ::prost::Oneof)]
20876    pub enum ThreadTime {
20877        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20878        /// calculate the absolute timestamp value, sum up all delta values of the
20879        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20880        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20881        /// be positive.
20882        #[prost(int64, tag="2")]
20883        ThreadTimeDeltaUs(i64),
20884        /// This is a one-off absolute value that does not affect delta timestamp
20885        /// computation in subsequent TrackEvents.
20886        #[prost(int64, tag="17")]
20887        ThreadTimeAbsoluteUs(i64),
20888    }
20889    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20890    /// encode thread instruction count instead.
20891    ///
20892    /// Value of the instruction counter for the current thread.
20893    #[derive(Clone, PartialEq, ::prost::Oneof)]
20894    pub enum ThreadInstructionCount {
20895        /// Same encoding as |thread_time| field above.
20896        #[prost(int64, tag="8")]
20897        ThreadInstructionCountDelta(i64),
20898        #[prost(int64, tag="20")]
20899        ThreadInstructionCountAbsolute(i64),
20900    }
20901}
20902/// Default values for fields of all TrackEvents on the same packet sequence.
20903/// Should be emitted as part of TracePacketDefaults whenever incremental state
20904/// is cleared. It's defined here because field IDs should match those of the
20905/// corresponding fields in TrackEvent.
20906#[derive(Clone, PartialEq, ::prost::Message)]
20907pub struct TrackEventDefaults {
20908    #[prost(uint64, optional, tag="11")]
20909    pub track_uuid: ::core::option::Option<u64>,
20910    #[prost(uint64, repeated, packed="false", tag="31")]
20911    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20912    #[prost(uint64, repeated, packed="false", tag="45")]
20913    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20914}
20915// --------------------
20916// Interned data types:
20917// --------------------
20918
20919#[derive(Clone, PartialEq, ::prost::Message)]
20920pub struct EventCategory {
20921    #[prost(uint64, optional, tag="1")]
20922    pub iid: ::core::option::Option<u64>,
20923    #[prost(string, optional, tag="2")]
20924    pub name: ::core::option::Option<::prost::alloc::string::String>,
20925}
20926#[derive(Clone, PartialEq, ::prost::Message)]
20927pub struct EventName {
20928    #[prost(uint64, optional, tag="1")]
20929    pub iid: ::core::option::Option<u64>,
20930    #[prost(string, optional, tag="2")]
20931    pub name: ::core::option::Option<::prost::alloc::string::String>,
20932}
20933// End of protos/perfetto/trace/track_event/track_event.proto
20934
20935// Begin of protos/perfetto/trace/interned_data/interned_data.proto
20936
20937// ------------------------------ DATA INTERNING: ------------------------------
20938// Interning indexes are built up gradually by adding the entries contained in
20939// each TracePacket of the same packet sequence (packets emitted by the same
20940// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
20941// can only refer to interned data from other packets in the same sequence.
20942//
20943// The writer will emit new entries when it encounters new internable values
20944// that aren't yet in the index. Data in current and subsequent TracePackets can
20945// then refer to the entry by its position (interning ID, abbreviated "iid") in
20946// its index. An interning ID with value 0 is considered invalid (not set).
20947//
20948// Because of the incremental build-up, the interning index will miss data when
20949// TracePackets are lost, e.g. because a chunk was overridden in the central
20950// ring buffer. To avoid invalidation of the whole trace in such a case, the
20951// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
20952// When packet loss occurs, the reader will only lose interning data up to the
20953// next reset.
20954// -----------------------------------------------------------------------------
20955
20956/// Message that contains new entries for the interning indices of a packet
20957/// sequence.
20958///
20959/// The writer will usually emit new entries in the same TracePacket that first
20960/// refers to them (since the last reset of interning state). They may also be
20961/// emitted proactively in advance of referring to them in later packets.
20962///
20963/// Next reserved id: 8 (up to 15).
20964/// Next id: 45.
20965///
20966/// TODO(eseckler): Replace iid fields inside interned messages with
20967/// map<iid, message> type fields in InternedData.
20968#[derive(Clone, PartialEq, ::prost::Message)]
20969pub struct InternedData {
20970    /// Each field's message type needs to specify an |iid| field, which is the ID
20971    /// of the entry in the field's interning index. Each field constructs its own
20972    /// index, thus interning IDs are scoped to the tracing session and field
20973    /// (usually as a counter for efficient var-int encoding), and optionally to
20974    /// the incremental state generation of the packet sequence.
20975    #[prost(message, repeated, tag="1")]
20976    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
20977    #[prost(message, repeated, tag="2")]
20978    pub event_names: ::prost::alloc::vec::Vec<EventName>,
20979    #[prost(message, repeated, tag="3")]
20980    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
20981    #[prost(message, repeated, tag="27")]
20982    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
20983    #[prost(message, repeated, tag="4")]
20984    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
20985    #[prost(message, repeated, tag="28")]
20986    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
20987    #[prost(message, repeated, tag="20")]
20988    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
20989    #[prost(message, repeated, tag="25")]
20990    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
20991    // Note: field IDs up to 15 should be used for frequent data only.
20992
20993    /// Build IDs of exectuable files.
20994    #[prost(message, repeated, tag="16")]
20995    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
20996    /// Paths to executable files.
20997    #[prost(message, repeated, tag="17")]
20998    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
20999    /// Paths to source files.
21000    #[prost(message, repeated, tag="18")]
21001    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
21002    /// Names of functions used in frames below.
21003    #[prost(message, repeated, tag="5")]
21004    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
21005    /// Executable files mapped into processes.
21006    #[prost(message, repeated, tag="19")]
21007    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21008    /// Frames of callstacks of a program.
21009    #[prost(message, repeated, tag="6")]
21010    pub frames: ::prost::alloc::vec::Vec<Frame>,
21011    /// A callstack of a program.
21012    #[prost(message, repeated, tag="7")]
21013    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21014    /// Additional Vulkan information sent in a VulkanMemoryEvent message
21015    #[prost(message, repeated, tag="22")]
21016    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
21017    /// Graphics context of a render stage event.  This represent the GL
21018    /// context for an OpenGl app or the VkDevice for a Vulkan app.
21019    #[prost(message, repeated, tag="23")]
21020    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
21021    /// Description of a GPU hardware queue or render stage.
21022    #[prost(message, repeated, tag="24")]
21023    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
21024    /// This is set when FtraceConfig.symbolize_ksyms = true.
21025    /// The id of each symbol the number that will be reported in ftrace events
21026    /// like sched_block_reason.caller and is obtained from a monotonic counter.
21027    /// The same symbol can have different indexes in different bundles.
21028    /// This is is NOT the real address. This is to avoid disclosing KASLR through
21029    /// traces.
21030    #[prost(message, repeated, tag="26")]
21031    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
21032    /// Interned string values in the DebugAnnotation proto.
21033    #[prost(message, repeated, tag="29")]
21034    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
21035    /// Interned packet context for android.network_packets.
21036    #[prost(message, repeated, tag="30")]
21037    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
21038    /// Interned name of a js function. We only intern js functions as there is a
21039    /// lot of duplication for them, but less so for other strings in the V8 data
21040    /// source.
21041    #[prost(message, repeated, tag="31")]
21042    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
21043    /// Js functions can be emitted multiple times for various compilation tiers,
21044    /// so it makes sense to deduplicate all this.
21045    #[prost(message, repeated, tag="32")]
21046    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
21047    /// Interned JS script (there is one associated with each JS function)
21048    #[prost(message, repeated, tag="33")]
21049    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
21050    /// Interned Wasm script (there is one associated with each Wasm function)
21051    #[prost(message, repeated, tag="34")]
21052    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
21053    /// Every V8 event is associated with an isolate, intern the isolate to remove
21054    /// duplication.
21055    #[prost(message, repeated, tag="35")]
21056    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
21057    /// Interned protolog strings args.
21058    #[prost(message, repeated, tag="36")]
21059    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
21060    /// Interned protolog stacktraces.
21061    #[prost(message, repeated, tag="37")]
21062    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
21063    /// viewcapture
21064    #[prost(message, repeated, tag="38")]
21065    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
21066    #[prost(message, repeated, tag="39")]
21067    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
21068    #[prost(message, repeated, tag="40")]
21069    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
21070    #[prost(message, repeated, tag="41")]
21071    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
21072    #[prost(message, repeated, tag="45")]
21073    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
21074    #[prost(message, repeated, tag="46")]
21075    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
21076    /// Interned context for android.app_wakelocks.
21077    #[prost(message, repeated, tag="42")]
21078    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
21079    /// Interned correlation ids in track_event.
21080    #[prost(message, repeated, tag="43")]
21081    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
21082    /// Interned job names for Android Job Names. These are separate from
21083    /// other strings because they are under app control.
21084    #[prost(message, repeated, tag="44")]
21085    pub android_job_name: ::prost::alloc::vec::Vec<AndroidJobName>,
21086}
21087#[derive(Clone, PartialEq, ::prost::Message)]
21088pub struct AndroidJobName {
21089    #[prost(uint64, optional, tag="1")]
21090    pub iid: ::core::option::Option<u64>,
21091    #[prost(string, optional, tag="2")]
21092    pub name: ::core::option::Option<::prost::alloc::string::String>,
21093}
21094// End of protos/perfetto/trace/interned_data/interned_data.proto
21095
21096// Begin of protos/perfetto/trace/memory_graph.proto
21097
21098// Message definitions for app-reported memory breakdowns. At the moment, this
21099// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
21100// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
21101// This is unrelated to the native or java heap profilers (those protos live
21102// in //protos/perfetto/trace/profiling/).
21103
21104#[derive(Clone, PartialEq, ::prost::Message)]
21105pub struct MemoryTrackerSnapshot {
21106    /// Unique ID that represents the global memory dump.
21107    #[prost(uint64, optional, tag="1")]
21108    pub global_dump_id: ::core::option::Option<u64>,
21109    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
21110    pub level_of_detail: ::core::option::Option<i32>,
21111    #[prost(message, repeated, tag="3")]
21112    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
21113}
21114/// Nested message and enum types in `MemoryTrackerSnapshot`.
21115pub mod memory_tracker_snapshot {
21116    /// Memory snapshot of a process. The snapshot contains memory data that is
21117    /// from 2 different sources, namely system stats and instrumentation stats.
21118    /// The system memory usage stats come from the OS based on standard API
21119    /// available in the platform to query memory usage. The instrumentation stats
21120    /// are added by instrumenting specific piece of code which tracks memory
21121    /// allocations and deallocations made by a small sub-system within the
21122    /// application.
21123    /// The system stats of the global memory snapshot are recorded as part of
21124    /// ProcessStats and SmapsPacket fields in trace packet with the same
21125    /// timestamp.
21126    #[derive(Clone, PartialEq, ::prost::Message)]
21127    pub struct ProcessSnapshot {
21128        /// Process ID of the process
21129        #[prost(int32, optional, tag="1")]
21130        pub pid: ::core::option::Option<i32>,
21131        #[prost(message, repeated, tag="2")]
21132        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
21133        #[prost(message, repeated, tag="3")]
21134        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
21135    }
21136    /// Nested message and enum types in `ProcessSnapshot`.
21137    pub mod process_snapshot {
21138        // Memory dumps are represented as a graph of memory nodes which contain
21139        // statistics. To avoid double counting the same memory across different
21140        // nodes, edges are used to mark nodes that account for the same memory. See
21141        // this doc for examples of the usage:
21142        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
21143
21144        /// A single node in the memory graph.
21145        #[derive(Clone, PartialEq, ::prost::Message)]
21146        pub struct MemoryNode {
21147            /// Unique ID of the node across all processes involved in the global
21148            /// memory dump. The ID is only unique within this particular global dump
21149            /// identified by GlobalMemoryDumpPacket.global_dump_id.
21150            #[prost(uint64, optional, tag="1")]
21151            pub id: ::core::option::Option<u64>,
21152            /// Absolute name is a unique name for the memory node within the process
21153            /// with ProcessMemoryDump.pid. The name can contain multiple parts
21154            /// separated by '/', which traces the edges of the node from the root
21155            /// node.
21156            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
21157            /// node "buffer1" in a graph structure of:
21158            ///    root -> partition_allocator -> array_buffers -> buffer1.
21159            #[prost(string, optional, tag="2")]
21160            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
21161            /// A weak node means that the instrumentation that added the current node
21162            /// is unsure about the existence of the actual memory. Unless a "strong"
21163            /// (non-weak is default) node that has an edge to the current node exists
21164            /// in the current global dump, the current node will be discarded.
21165            #[prost(bool, optional, tag="3")]
21166            pub weak: ::core::option::Option<bool>,
21167            /// Size of the node in bytes, used to compute the effective size of the
21168            /// nodes without double counting.
21169            #[prost(uint64, optional, tag="4")]
21170            pub size_bytes: ::core::option::Option<u64>,
21171            #[prost(message, repeated, tag="5")]
21172            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
21173        }
21174        /// Nested message and enum types in `MemoryNode`.
21175        pub mod memory_node {
21176            /// Entries in the memory node that contain statistics and additional
21177            /// debuggable information about the memory. The size of the node is
21178            /// tracked separately in the |size_bytes| field.
21179            #[derive(Clone, PartialEq, ::prost::Message)]
21180            pub struct MemoryNodeEntry {
21181                #[prost(string, optional, tag="1")]
21182                pub name: ::core::option::Option<::prost::alloc::string::String>,
21183                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
21184                pub units: ::core::option::Option<i32>,
21185                /// Contains either one of uint64 or string value.
21186                #[prost(uint64, optional, tag="3")]
21187                pub value_uint64: ::core::option::Option<u64>,
21188                #[prost(string, optional, tag="4")]
21189                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
21190            }
21191            /// Nested message and enum types in `MemoryNodeEntry`.
21192            pub mod memory_node_entry {
21193                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21194                #[repr(i32)]
21195                pub enum Units {
21196                    Unspecified = 0,
21197                    Bytes = 1,
21198                    Count = 2,
21199                }
21200                impl Units {
21201                    /// String value of the enum field names used in the ProtoBuf definition.
21202                    ///
21203                    /// The values are not transformed in any way and thus are considered stable
21204                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21205                    pub fn as_str_name(&self) -> &'static str {
21206                        match self {
21207                            Units::Unspecified => "UNSPECIFIED",
21208                            Units::Bytes => "BYTES",
21209                            Units::Count => "COUNT",
21210                        }
21211                    }
21212                }
21213            }
21214        }
21215        /// A directed edge that connects any 2 nodes in the graph above. These are
21216        /// in addition to the inherent edges added due to the tree structure of the
21217        /// node's absolute names.
21218        /// Node with id |source_id| owns the node with id |target_id|, and has the
21219        /// effect of attributing the memory usage of target to source. |importance|
21220        /// is optional and relevant only for the cases of co-ownership, where it
21221        /// acts as a z-index: the owner with the highest importance will be
21222        /// attributed target's memory.
21223        #[derive(Clone, PartialEq, ::prost::Message)]
21224        pub struct MemoryEdge {
21225            #[prost(uint64, optional, tag="1")]
21226            pub source_id: ::core::option::Option<u64>,
21227            #[prost(uint64, optional, tag="2")]
21228            pub target_id: ::core::option::Option<u64>,
21229            #[prost(uint32, optional, tag="3")]
21230            pub importance: ::core::option::Option<u32>,
21231            #[prost(bool, optional, tag="4")]
21232            pub overridable: ::core::option::Option<bool>,
21233        }
21234    }
21235    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21236    #[repr(i32)]
21237    pub enum LevelOfDetail {
21238        DetailFull = 0,
21239        DetailLight = 1,
21240        DetailBackground = 2,
21241    }
21242    impl LevelOfDetail {
21243        /// String value of the enum field names used in the ProtoBuf definition.
21244        ///
21245        /// The values are not transformed in any way and thus are considered stable
21246        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21247        pub fn as_str_name(&self) -> &'static str {
21248            match self {
21249                LevelOfDetail::DetailFull => "DETAIL_FULL",
21250                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
21251                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
21252            }
21253        }
21254    }
21255}
21256// End of protos/perfetto/trace/memory_graph.proto
21257
21258// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21259
21260/// Used to trace the execution of perfetto itself.
21261#[derive(Clone, PartialEq, ::prost::Message)]
21262pub struct PerfettoMetatrace {
21263    /// Only when using |event_id|.
21264    #[prost(uint64, optional, tag="3")]
21265    pub event_duration_ns: ::core::option::Option<u64>,
21266    /// Only when using |counter_id|.
21267    #[prost(int32, optional, tag="4")]
21268    pub counter_value: ::core::option::Option<i32>,
21269    /// ID of the thread that emitted the event.
21270    #[prost(uint32, optional, tag="5")]
21271    pub thread_id: ::core::option::Option<u32>,
21272    /// If true the meta-tracing ring buffer had overruns and hence some data is
21273    /// missing from this point.
21274    #[prost(bool, optional, tag="6")]
21275    pub has_overruns: ::core::option::Option<bool>,
21276    /// Args for the event.
21277    #[prost(message, repeated, tag="7")]
21278    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
21279    #[prost(message, repeated, tag="10")]
21280    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
21281    /// See base/metatrace_events.h for definitions.
21282    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
21283    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
21284}
21285/// Nested message and enum types in `PerfettoMetatrace`.
21286pub mod perfetto_metatrace {
21287    #[derive(Clone, PartialEq, ::prost::Message)]
21288    pub struct Arg {
21289        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
21290        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
21291        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
21292        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
21293    }
21294    /// Nested message and enum types in `Arg`.
21295    pub mod arg {
21296        #[derive(Clone, PartialEq, ::prost::Oneof)]
21297        pub enum KeyOrInternedKey {
21298            #[prost(string, tag="1")]
21299            Key(::prost::alloc::string::String),
21300            #[prost(uint64, tag="3")]
21301            KeyIid(u64),
21302        }
21303        #[derive(Clone, PartialEq, ::prost::Oneof)]
21304        pub enum ValueOrInternedValue {
21305            #[prost(string, tag="2")]
21306            Value(::prost::alloc::string::String),
21307            #[prost(uint64, tag="4")]
21308            ValueIid(u64),
21309        }
21310    }
21311    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21312    /// |value_iid| above.
21313    #[derive(Clone, PartialEq, ::prost::Message)]
21314    pub struct InternedString {
21315        #[prost(uint64, optional, tag="1")]
21316        pub iid: ::core::option::Option<u64>,
21317        #[prost(string, optional, tag="2")]
21318        pub value: ::core::option::Option<::prost::alloc::string::String>,
21319    }
21320    /// See base/metatrace_events.h for definitions.
21321    #[derive(Clone, PartialEq, ::prost::Oneof)]
21322    pub enum RecordType {
21323        #[prost(uint32, tag="1")]
21324        EventId(u32),
21325        #[prost(uint32, tag="2")]
21326        CounterId(u32),
21327        /// For trace processor metatracing.
21328        #[prost(string, tag="8")]
21329        EventName(::prost::alloc::string::String),
21330        #[prost(uint64, tag="11")]
21331        EventNameIid(u64),
21332        #[prost(string, tag="9")]
21333        CounterName(::prost::alloc::string::String),
21334    }
21335}
21336// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21337
21338// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21339
21340/// Events emitted by the tracing service.
21341/// Next id: 12.
21342#[derive(Clone, PartialEq, ::prost::Message)]
21343pub struct TracingServiceEvent {
21344    /// When each of the following booleans are set to true, they report the
21345    /// point in time (through TracePacket's timestamp) where the condition
21346    /// they describe happened.
21347    /// The order of the booleans below matches the timestamp ordering
21348    /// they would generally be expected to have.
21349    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21350    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21351}
21352/// Nested message and enum types in `TracingServiceEvent`.
21353pub mod tracing_service_event {
21354    #[derive(Clone, PartialEq, ::prost::Message)]
21355    pub struct DataSources {
21356        #[prost(message, repeated, tag="1")]
21357        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21358    }
21359    /// Nested message and enum types in `DataSources`.
21360    pub mod data_sources {
21361        #[derive(Clone, PartialEq, ::prost::Message)]
21362        pub struct DataSource {
21363            #[prost(string, optional, tag="1")]
21364            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21365            #[prost(string, optional, tag="2")]
21366            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21367        }
21368    }
21369    /// When each of the following booleans are set to true, they report the
21370    /// point in time (through TracePacket's timestamp) where the condition
21371    /// they describe happened.
21372    /// The order of the booleans below matches the timestamp ordering
21373    /// they would generally be expected to have.
21374    #[derive(Clone, PartialEq, ::prost::Oneof)]
21375    pub enum EventType {
21376        /// Emitted when we start tracing and specifically, this will be before any
21377        /// producer is notified about the existence of this trace. This is always
21378        /// emitted before the all_data_sources_started event. This event is also
21379        /// guaranteed to be seen (byte-offset wise) before any data packets from
21380        /// producers.
21381        #[prost(bool, tag="2")]
21382        TracingStarted(bool),
21383        /// Emitted after all data sources saw the start event and ACKed it.
21384        /// This identifies the point in time when it's safe to assume that all data
21385        /// sources have been recording events.
21386        #[prost(bool, tag="1")]
21387        AllDataSourcesStarted(bool),
21388        /// Emitted when a flush is started.
21389        #[prost(bool, tag="9")]
21390        FlushStarted(bool),
21391        /// Emitted when all data sources have been flushed successfully or with an
21392        /// error (including timeouts). This can generally happen many times over the
21393        /// course of the trace.
21394        #[prost(bool, tag="3")]
21395        AllDataSourcesFlushed(bool),
21396        /// Emitted when reading back the central tracing buffers has been completed.
21397        /// If |write_into_file| is specified, this can happen many times over the
21398        /// course of the trace.
21399        #[prost(bool, tag="4")]
21400        ReadTracingBuffersCompleted(bool),
21401        /// Emitted after tracing has been disabled and specifically, this will be
21402        /// after all packets from producers have been included in the central
21403        /// tracing buffer.
21404        #[prost(bool, tag="5")]
21405        TracingDisabled(bool),
21406        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21407        /// tracing session was running and it had the highest bugreport_score. In
21408        /// this case the original consumer will see a nearly empty trace, because
21409        /// the contents are routed onto the bugreport file. This event flags the
21410        /// situation explicitly. Traces that contain this marker should be discarded
21411        /// by test infrastructures / pipelines.
21412        /// Deprecated since Android U, where --save-for-bugreport uses
21413        /// non-destructive cloning.
21414        #[prost(bool, tag="6")]
21415        SeizedForBugreport(bool),
21416        /// Emitted when not all data sources in all producers reply to a start
21417        /// request after some time.
21418        #[prost(message, tag="7")]
21419        SlowStartingDataSources(DataSources),
21420        /// Emitted when the last flush request has failed. Lists data sources that
21421        /// did not reply on time.
21422        #[prost(message, tag="8")]
21423        LastFlushSlowDataSources(DataSources),
21424        /// If this was a cloned tracing session, emitted when the tracing serice
21425        /// started the clone operation.
21426        #[prost(bool, tag="10")]
21427        CloneStarted(bool),
21428        /// If this was a cloned tracing session, emitted when the tracing service
21429        /// finished the clone operation (for a specific buffer).
21430        #[prost(uint32, tag="11")]
21431        BufferCloned(u32),
21432    }
21433}
21434// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
21435
21436// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
21437
21438/// Energy consumer based on aidl class:
21439/// android.hardware.power.stats.EnergyConsumer.
21440#[derive(Clone, PartialEq, ::prost::Message)]
21441pub struct AndroidEnergyConsumer {
21442    /// Unique ID of this energy consumer.  Matches the ID in a
21443    /// AndroidEnergyEstimationBreakdown.
21444    #[prost(int32, optional, tag="1")]
21445    pub energy_consumer_id: ::core::option::Option<i32>,
21446    /// For a group of energy consumers of the same logical type, sorting by
21447    /// ordinal gives their physical order. Ordinals must be consecutive integers
21448    /// starting from 0.
21449    #[prost(int32, optional, tag="2")]
21450    pub ordinal: ::core::option::Option<i32>,
21451    /// Type of this energy consumer.
21452    #[prost(string, optional, tag="3")]
21453    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21454    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
21455    /// framework.
21456    #[prost(string, optional, tag="4")]
21457    pub name: ::core::option::Option<::prost::alloc::string::String>,
21458}
21459#[derive(Clone, PartialEq, ::prost::Message)]
21460pub struct AndroidEnergyConsumerDescriptor {
21461    #[prost(message, repeated, tag="1")]
21462    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
21463}
21464// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
21465
21466// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21467
21468/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
21469/// This proto represents the aidl class:
21470/// android.hardware.power.stats.EnergyConsumerResult.
21471#[derive(Clone, PartialEq, ::prost::Message)]
21472pub struct AndroidEnergyEstimationBreakdown {
21473    /// The first trace packet of each session should include a energy consumer
21474    /// descriptor.
21475    #[prost(message, optional, tag="1")]
21476    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
21477    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
21478    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
21479    /// should be sent at the beginning of a trace.
21480    #[prost(int32, optional, tag="2")]
21481    pub energy_consumer_id: ::core::option::Option<i32>,
21482    /// Total accumulated energy since boot in microwatt-seconds (uWs)
21483    #[prost(int64, optional, tag="3")]
21484    pub energy_uws: ::core::option::Option<i64>,
21485    /// Optional attributed energy per Android ID / Linux UID for this
21486    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
21487    /// to total accumulated energy.
21488    #[prost(message, repeated, tag="4")]
21489    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
21490}
21491/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
21492pub mod android_energy_estimation_breakdown {
21493    #[derive(Clone, PartialEq, ::prost::Message)]
21494    pub struct EnergyUidBreakdown {
21495        /// Android ID/Linux UID, the accumulated energy is attributed to.
21496        #[prost(int32, optional, tag="1")]
21497        pub uid: ::core::option::Option<i32>,
21498        /// Accumulated energy since boot in microwatt-seconds (uWs).
21499        #[prost(int64, optional, tag="2")]
21500        pub energy_uws: ::core::option::Option<i64>,
21501    }
21502}
21503// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21504
21505// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
21506
21507#[derive(Clone, PartialEq, ::prost::Message)]
21508pub struct EntityStateResidency {
21509    /// This is only emitted at the beginning of the trace.
21510    #[prost(message, repeated, tag="1")]
21511    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
21512    #[prost(message, repeated, tag="2")]
21513    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
21514}
21515/// Nested message and enum types in `EntityStateResidency`.
21516pub mod entity_state_residency {
21517    #[derive(Clone, PartialEq, ::prost::Message)]
21518    pub struct PowerEntityState {
21519        /// Index corresponding to the entity
21520        #[prost(int32, optional, tag="1")]
21521        pub entity_index: ::core::option::Option<i32>,
21522        /// Index corresponding to the state
21523        #[prost(int32, optional, tag="2")]
21524        pub state_index: ::core::option::Option<i32>,
21525        /// Name of the entity. This is device-specific, determined by the PowerStats
21526        /// HAL, and cannot be configured by the user. An example would be
21527        /// "Bluetooth".
21528        #[prost(string, optional, tag="3")]
21529        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
21530        /// Name of the state. This is device-specific, determined by the PowerStats
21531        /// HAL, and cannot be configured by the user. An example would be
21532        /// "Active".
21533        #[prost(string, optional, tag="4")]
21534        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
21535    }
21536    #[derive(Clone, PartialEq, ::prost::Message)]
21537    pub struct StateResidency {
21538        /// Index corresponding to PowerEntityState.entity_index
21539        #[prost(int32, optional, tag="1")]
21540        pub entity_index: ::core::option::Option<i32>,
21541        /// Index corresponding to PowerEntityState.state_index
21542        #[prost(int32, optional, tag="2")]
21543        pub state_index: ::core::option::Option<i32>,
21544        /// Time since boot that this entity has been in this state
21545        #[prost(uint64, optional, tag="3")]
21546        pub total_time_in_state_ms: ::core::option::Option<u64>,
21547        /// Total number of times since boot that the entity has entered this state
21548        #[prost(uint64, optional, tag="4")]
21549        pub total_state_entry_count: ::core::option::Option<u64>,
21550        /// Timestamp of the last time the entity entered this state
21551        #[prost(uint64, optional, tag="5")]
21552        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
21553    }
21554}
21555// End of protos/perfetto/trace/power/android_entity_state_residency.proto
21556
21557// Begin of protos/perfetto/trace/power/battery_counters.proto
21558
21559#[derive(Clone, PartialEq, ::prost::Message)]
21560pub struct BatteryCounters {
21561    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
21562    #[prost(int64, optional, tag="1")]
21563    pub charge_counter_uah: ::core::option::Option<i64>,
21564    /// Remaining battery capacity percentage of total capacity
21565    #[prost(float, optional, tag="2")]
21566    pub capacity_percent: ::core::option::Option<f32>,
21567    /// Instantaneous battery current in microamperes(µA).
21568    /// Negative values indicate current being drained from the battery and
21569    /// positive values indicate current feeding the battery from a charge source
21570    /// (USB).
21571    ///
21572    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
21573    #[prost(int64, optional, tag="3")]
21574    pub current_ua: ::core::option::Option<i64>,
21575    /// Instantaneous battery current in microamperes(µA).
21576    #[prost(int64, optional, tag="4")]
21577    pub current_avg_ua: ::core::option::Option<i64>,
21578    /// Battery name, emitted only on multiple batteries.
21579    #[prost(string, optional, tag="5")]
21580    pub name: ::core::option::Option<::prost::alloc::string::String>,
21581    /// Battery capacity in microwatt-hours(µWh).
21582    #[prost(int64, optional, tag="6")]
21583    pub energy_counter_uwh: ::core::option::Option<i64>,
21584    /// Battery voltage in microvolts(µV).
21585    #[prost(int64, optional, tag="7")]
21586    pub voltage_uv: ::core::option::Option<i64>,
21587}
21588// End of protos/perfetto/trace/power/battery_counters.proto
21589
21590// Begin of protos/perfetto/trace/power/power_rails.proto
21591
21592#[derive(Clone, PartialEq, ::prost::Message)]
21593pub struct PowerRails {
21594    /// This is only emitted at the beginning of the trace.
21595    #[prost(message, repeated, tag="1")]
21596    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
21597    #[prost(message, repeated, tag="2")]
21598    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
21599    /// A unique session id that can be used to match energy data to sets of
21600    /// descriptors. The indices used by rail descriptors and energy data packets
21601    /// are meant to be unique to a given session uuid. When multiple data sources
21602    /// are running in parallel, each data source should use a unique id.
21603    #[prost(uint64, optional, tag="3")]
21604    pub session_uuid: ::core::option::Option<u64>,
21605}
21606/// Nested message and enum types in `PowerRails`.
21607pub mod power_rails {
21608    #[derive(Clone, PartialEq, ::prost::Message)]
21609    pub struct RailDescriptor {
21610        /// Index corresponding to the rail
21611        #[prost(uint32, optional, tag="1")]
21612        pub index: ::core::option::Option<u32>,
21613        /// Name of the rail
21614        #[prost(string, optional, tag="2")]
21615        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
21616        /// Name of the subsystem to which this rail belongs
21617        #[prost(string, optional, tag="3")]
21618        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
21619        /// Hardware sampling rate (Hz).
21620        #[prost(uint32, optional, tag="4")]
21621        pub sampling_rate: ::core::option::Option<u32>,
21622    }
21623    #[derive(Clone, PartialEq, ::prost::Message)]
21624    pub struct EnergyData {
21625        /// Index corresponding to RailDescriptor.index
21626        #[prost(uint32, optional, tag="1")]
21627        pub index: ::core::option::Option<u32>,
21628        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
21629        #[prost(uint64, optional, tag="2")]
21630        pub timestamp_ms: ::core::option::Option<u64>,
21631        /// Accumulated energy since device boot in microwatt-seconds (uWs).
21632        #[prost(uint64, optional, tag="3")]
21633        pub energy: ::core::option::Option<u64>,
21634    }
21635}
21636// End of protos/perfetto/trace/power/power_rails.proto
21637
21638// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
21639
21640#[derive(Clone, PartialEq, ::prost::Message)]
21641pub struct ObfuscatedMember {
21642    /// This is the obfuscated field name relative to the class containing the
21643    /// ObfuscatedMember.
21644    #[prost(string, optional, tag="1")]
21645    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21646    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
21647    /// field name including its class. Otherwise, this is this the unqualified
21648    /// deobfuscated field name relative to the class containing this
21649    /// ObfuscatedMember.
21650    #[prost(string, optional, tag="2")]
21651    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21652    /// R8 inline method support: line number ranges for disambiguation.
21653    /// When multiple methods map to the same obfuscated name, the line number
21654    /// from the stack frame is used to select the correct mapping.
21655    ///
21656    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
21657    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
21658    /// - source_line_start/end = 10:12 (line range in original source)
21659    ///
21660    /// Methods with the same obfuscated_name and overlapping obfuscated line
21661    /// ranges form an inline chain, ordered innermost (inlined) first.
21662    #[prost(uint32, optional, tag="3")]
21663    pub obfuscated_line_start: ::core::option::Option<u32>,
21664    #[prost(uint32, optional, tag="4")]
21665    pub obfuscated_line_end: ::core::option::Option<u32>,
21666    #[prost(uint32, optional, tag="5")]
21667    pub source_line_start: ::core::option::Option<u32>,
21668    #[prost(uint32, optional, tag="6")]
21669    pub source_line_end: ::core::option::Option<u32>,
21670}
21671#[derive(Clone, PartialEq, ::prost::Message)]
21672pub struct ObfuscatedClass {
21673    #[prost(string, optional, tag="1")]
21674    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21675    #[prost(string, optional, tag="2")]
21676    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21677    /// fields.
21678    #[prost(message, repeated, tag="3")]
21679    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21680    #[prost(message, repeated, tag="4")]
21681    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21682}
21683#[derive(Clone, PartialEq, ::prost::Message)]
21684pub struct DeobfuscationMapping {
21685    #[prost(string, optional, tag="1")]
21686    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
21687    #[prost(int64, optional, tag="2")]
21688    pub version_code: ::core::option::Option<i64>,
21689    #[prost(message, repeated, tag="3")]
21690    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
21691}
21692// Begin of protos/perfetto/trace/profiling/heap_graph.proto
21693
21694#[derive(Clone, PartialEq, ::prost::Message)]
21695pub struct HeapGraphRoot {
21696    /// Objects retained by this root.
21697    #[prost(uint64, repeated, tag="1")]
21698    pub object_ids: ::prost::alloc::vec::Vec<u64>,
21699    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
21700    pub root_type: ::core::option::Option<i32>,
21701}
21702/// Nested message and enum types in `HeapGraphRoot`.
21703pub mod heap_graph_root {
21704    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21705    #[repr(i32)]
21706    pub enum Type {
21707        RootUnknown = 0,
21708        RootJniGlobal = 1,
21709        RootJniLocal = 2,
21710        RootJavaFrame = 3,
21711        RootNativeStack = 4,
21712        RootStickyClass = 5,
21713        RootThreadBlock = 6,
21714        RootMonitorUsed = 7,
21715        RootThreadObject = 8,
21716        RootInternedString = 9,
21717        RootFinalizing = 10,
21718        RootDebugger = 11,
21719        RootReferenceCleanup = 12,
21720        RootVmInternal = 13,
21721        RootJniMonitor = 14,
21722    }
21723    impl Type {
21724        /// String value of the enum field names used in the ProtoBuf definition.
21725        ///
21726        /// The values are not transformed in any way and thus are considered stable
21727        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21728        pub fn as_str_name(&self) -> &'static str {
21729            match self {
21730                Type::RootUnknown => "ROOT_UNKNOWN",
21731                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
21732                Type::RootJniLocal => "ROOT_JNI_LOCAL",
21733                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
21734                Type::RootNativeStack => "ROOT_NATIVE_STACK",
21735                Type::RootStickyClass => "ROOT_STICKY_CLASS",
21736                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
21737                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
21738                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
21739                Type::RootInternedString => "ROOT_INTERNED_STRING",
21740                Type::RootFinalizing => "ROOT_FINALIZING",
21741                Type::RootDebugger => "ROOT_DEBUGGER",
21742                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
21743                Type::RootVmInternal => "ROOT_VM_INTERNAL",
21744                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
21745            }
21746        }
21747    }
21748}
21749#[derive(Clone, PartialEq, ::prost::Message)]
21750pub struct HeapGraphType {
21751    /// TODO(fmayer): Consider removing this and using the index in the repeaed
21752    /// field to save space.
21753    #[prost(uint64, optional, tag="1")]
21754    pub id: ::core::option::Option<u64>,
21755    #[prost(uint64, optional, tag="2")]
21756    pub location_id: ::core::option::Option<u64>,
21757    #[prost(string, optional, tag="3")]
21758    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
21759    /// Size of objects of this type.
21760    #[prost(uint64, optional, tag="4")]
21761    pub object_size: ::core::option::Option<u64>,
21762    #[prost(uint64, optional, tag="5")]
21763    pub superclass_id: ::core::option::Option<u64>,
21764    /// Indices for InternedData.field_names for the names of the fields of
21765    /// instances of this class. This does NOT include the fields from
21766    /// superclasses. The consumer of this data needs to walk all super
21767    /// classes to get a full lists of fields. Objects always write the
21768    /// fields in order of most specific class to the furthest up superclass.
21769    #[prost(uint64, repeated, tag="6")]
21770    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21771    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
21772    pub kind: ::core::option::Option<i32>,
21773    #[prost(uint64, optional, tag="8")]
21774    pub classloader_id: ::core::option::Option<u64>,
21775}
21776/// Nested message and enum types in `HeapGraphType`.
21777pub mod heap_graph_type {
21778    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21779    #[repr(i32)]
21780    pub enum Kind {
21781        Unknown = 0,
21782        Normal = 1,
21783        Noreferences = 2,
21784        String = 3,
21785        Array = 4,
21786        Class = 5,
21787        Classloader = 6,
21788        Dexcache = 7,
21789        SoftReference = 8,
21790        WeakReference = 9,
21791        FinalizerReference = 10,
21792        PhantomReference = 11,
21793    }
21794    impl Kind {
21795        /// String value of the enum field names used in the ProtoBuf definition.
21796        ///
21797        /// The values are not transformed in any way and thus are considered stable
21798        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21799        pub fn as_str_name(&self) -> &'static str {
21800            match self {
21801                Kind::Unknown => "KIND_UNKNOWN",
21802                Kind::Normal => "KIND_NORMAL",
21803                Kind::Noreferences => "KIND_NOREFERENCES",
21804                Kind::String => "KIND_STRING",
21805                Kind::Array => "KIND_ARRAY",
21806                Kind::Class => "KIND_CLASS",
21807                Kind::Classloader => "KIND_CLASSLOADER",
21808                Kind::Dexcache => "KIND_DEXCACHE",
21809                Kind::SoftReference => "KIND_SOFT_REFERENCE",
21810                Kind::WeakReference => "KIND_WEAK_REFERENCE",
21811                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
21812                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
21813            }
21814        }
21815    }
21816}
21817#[derive(Clone, PartialEq, ::prost::Message)]
21818pub struct HeapGraphObject {
21819    /// Index for InternedData.types for the name of the type of this object.
21820    #[prost(uint64, optional, tag="2")]
21821    pub type_id: ::core::option::Option<u64>,
21822    /// Bytes occupied by this objects.
21823    #[prost(uint64, optional, tag="3")]
21824    pub self_size: ::core::option::Option<u64>,
21825    /// Add this to all non-zero values in reference_object_id. This is used to
21826    /// get more compact varint encoding.
21827    ///
21828    /// The name is confusing, but this has always been used as a base for
21829    /// reference_object_id. The field should be named reference_object_id_base.
21830    #[prost(uint64, optional, tag="6")]
21831    pub reference_field_id_base: ::core::option::Option<u64>,
21832    /// Indices for InternedData.field_names for the name of the field referring
21833    /// to the object. For Android S+ and for instances of normal classes (e.g.
21834    /// not instances of java.lang.Class or arrays), this is instead set in the
21835    /// corresponding HeapGraphType, and this is left empty.
21836    #[prost(uint64, repeated, tag="4")]
21837    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21838    /// Ids of the Object that is referred to.
21839    #[prost(uint64, repeated, tag="5")]
21840    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
21841    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
21842    /// the value of the `size` field.
21843    ///
21844    /// N.B. This is not the native size of this object.
21845    #[prost(int64, optional, tag="8")]
21846    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
21847    /// To reduce the space required we only emit the heap type if it has changed
21848    /// from the previous object we recorded.
21849    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
21850    pub heap_type_delta: ::core::option::Option<i32>,
21851    /// Ids of the Objects referred by this object, not via fields, but via
21852    /// internal runtime structures.
21853    #[prost(uint64, repeated, tag="10")]
21854    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
21855    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
21856    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
21857}
21858/// Nested message and enum types in `HeapGraphObject`.
21859pub mod heap_graph_object {
21860    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21861    #[repr(i32)]
21862    pub enum HeapType {
21863        Unknown = 0,
21864        App = 1,
21865        Zygote = 2,
21866        BootImage = 3,
21867    }
21868    impl HeapType {
21869        /// String value of the enum field names used in the ProtoBuf definition.
21870        ///
21871        /// The values are not transformed in any way and thus are considered stable
21872        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21873        pub fn as_str_name(&self) -> &'static str {
21874            match self {
21875                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
21876                HeapType::App => "HEAP_TYPE_APP",
21877                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
21878                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
21879            }
21880        }
21881    }
21882    #[derive(Clone, PartialEq, ::prost::Oneof)]
21883    pub enum Identifier {
21884        #[prost(uint64, tag="1")]
21885        Id(u64),
21886        #[prost(uint64, tag="7")]
21887        IdDelta(u64),
21888    }
21889}
21890#[derive(Clone, PartialEq, ::prost::Message)]
21891pub struct HeapGraph {
21892    #[prost(int32, optional, tag="1")]
21893    pub pid: ::core::option::Option<i32>,
21894    /// This contains all objects at the time this dump was taken. Some of these
21895    /// will be live, some of those unreachable (garbage). To find the live
21896    /// objects, the client needs to build the transitive closure of objects
21897    /// reachable from |roots|.
21898    /// All objects not contained within that transitive closure are garbage that
21899    /// has not yet been collected.
21900    #[prost(message, repeated, tag="2")]
21901    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
21902    /// Roots at the time this dump was taken.
21903    /// All live objects are reachable from the roots. All other objects are
21904    /// garbage.
21905    #[prost(message, repeated, tag="7")]
21906    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
21907    /// Types used in HeapGraphObjects.
21908    #[prost(message, repeated, tag="9")]
21909    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
21910    /// Field names for references in managed heap graph.
21911    #[prost(message, repeated, tag="4")]
21912    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
21913    /// Paths of files used in managed heap graph.
21914    #[prost(message, repeated, tag="8")]
21915    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
21916    #[prost(bool, optional, tag="5")]
21917    pub continued: ::core::option::Option<bool>,
21918    #[prost(uint64, optional, tag="6")]
21919    pub index: ::core::option::Option<u64>,
21920}
21921// End of protos/perfetto/trace/profiling/heap_graph.proto
21922
21923// Begin of protos/perfetto/trace/profiling/profile_packet.proto
21924
21925// This file contains a mixture of messages emitted by various sampling
21926// profilers:
21927//
21928// Memory allocator profiling
21929// ----------------
21930// ProfilePacket:
21931//    The packet emitted by heapprofd, which started off as a native heap
21932//    (malloc/free) profiler, but now supports custom allocators as well. Each
21933//    packet contains a preaggregated state of the heap at snapshot time, which
21934//    report the total allocated/free bytes per callstack (plus other info such
21935//    as the number of samples).
21936// StreamingAllocation/StreamingFree:
21937//    Emitted by heapprofd when configured in streaming mode (i.e. when
21938//    stream_allocations = true). This is only for local testing, and doesn't
21939//    report callstacks (only address time and size of each alloc/free). It can
21940//    lead to enormous traces, as it contains the stream of each alloc/free call.
21941//
21942// Callstack sampling
21943// ------------------
21944// StreamingProfilePacket:
21945//    The packet emitted by the chromium in-process sampling profiler, which is
21946//    based on periodically sending a signal to itself, and unwinding the stack
21947//    in the signal handler. Each packet contains a series of individual stack
21948//    samples for a Chromium thread.
21949//
21950// Callstack and performance counter sampling
21951// ---------------------
21952// PerfSample:
21953//    The packet emitted by traced_perf sampling performance profiler based on
21954//    the perf_event_open syscall. Each packet represents an individual sample
21955//    of a performance counter (which might be a timer), and optionally a
21956//    callstack of the process that was scheduled at the time of the sample.
21957//
21958
21959/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
21960/// involve more than one ProfilePacket if the snapshot is big (when |continued|
21961/// is true). The cardinality and grouping is as follows:
21962/// A ProfilePacket contains:
21963///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
21964///     one heap per process (the main malloc/free heap), but there can be more if
21965///     the process is using the heapprofd API to profile custom allocators.
21966///   - Globally interned strings, mappings and frames (to allow de-duplicating
21967///     frames/mapping in common between different processes).
21968/// A ProcessHeapSamples contains:
21969///   - The process and heap identifier.
21970///   - A number of HeapSample, one for each callsite that had some alloc/frees.
21971///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
21972/// A HeapSample contains statistics about callsites:
21973///   - Total number of bytes allocated and freed from that callsite.
21974///   - Total number of alloc/free calls sampled.
21975///   - Stats at the local maximum when dump_at_max = true.
21976/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
21977#[derive(Clone, PartialEq, ::prost::Message)]
21978pub struct ProfilePacket {
21979    /// The following interning tables are only used in Android version Q.
21980    /// In newer versions, these tables are in InternedData
21981    /// (see protos/perfetto/trace/interned_data) and are shared across
21982    /// multiple ProfilePackets.
21983    /// For backwards compatibility, consumers need to first look up interned
21984    /// data in the tables within the ProfilePacket, and then, if they are empty,
21985    /// look up in the InternedData instead.
21986    #[prost(message, repeated, tag="1")]
21987    pub strings: ::prost::alloc::vec::Vec<InternedString>,
21988    #[prost(message, repeated, tag="4")]
21989    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21990    #[prost(message, repeated, tag="2")]
21991    pub frames: ::prost::alloc::vec::Vec<Frame>,
21992    #[prost(message, repeated, tag="3")]
21993    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21994    #[prost(message, repeated, tag="5")]
21995    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
21996    /// If this is true, the next ProfilePacket in this package_sequence_id is a
21997    /// continuation of this one.
21998    /// To get all samples for a process, accummulate its
21999    /// ProcessHeapSamples.samples until you see continued=false.
22000    #[prost(bool, optional, tag="6")]
22001    pub continued: ::core::option::Option<bool>,
22002    /// Index of this ProfilePacket on its package_sequence_id. Can be used
22003    /// to detect dropped data.
22004    /// Verify these are consecutive.
22005    #[prost(uint64, optional, tag="7")]
22006    pub index: ::core::option::Option<u64>,
22007}
22008/// Nested message and enum types in `ProfilePacket`.
22009pub mod profile_packet {
22010    /// Next ID: 9
22011    #[derive(Clone, PartialEq, ::prost::Message)]
22012    pub struct HeapSample {
22013        #[prost(uint64, optional, tag="1")]
22014        pub callstack_id: ::core::option::Option<u64>,
22015        /// bytes allocated at this callstack.
22016        #[prost(uint64, optional, tag="2")]
22017        pub self_allocated: ::core::option::Option<u64>,
22018        /// bytes allocated at this callstack that have been freed.
22019        #[prost(uint64, optional, tag="3")]
22020        pub self_freed: ::core::option::Option<u64>,
22021        /// Bytes allocated by this callstack but not freed at the time the malloc
22022        /// heap usage of this process was maximal. This is only set if dump_at_max
22023        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
22024        /// self_idle will not be set.
22025        #[prost(uint64, optional, tag="8")]
22026        pub self_max: ::core::option::Option<u64>,
22027        /// Number of allocations that were sampled at this callstack but not freed
22028        /// at the time the malloc heap usage of this process was maximal. This is
22029        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
22030        /// self_allocated, self_freed and self_idle will not be set.
22031        #[prost(uint64, optional, tag="9")]
22032        pub self_max_count: ::core::option::Option<u64>,
22033        /// timestamp \[opt\]
22034        #[prost(uint64, optional, tag="4")]
22035        pub timestamp: ::core::option::Option<u64>,
22036        /// Number of allocations that were sampled at this callstack.
22037        #[prost(uint64, optional, tag="5")]
22038        pub alloc_count: ::core::option::Option<u64>,
22039        /// Number of allocations that were sampled at this callstack that have been
22040        /// freed.
22041        #[prost(uint64, optional, tag="6")]
22042        pub free_count: ::core::option::Option<u64>,
22043    }
22044    #[derive(Clone, PartialEq, ::prost::Message)]
22045    pub struct Histogram {
22046        #[prost(message, repeated, tag="1")]
22047        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
22048    }
22049    /// Nested message and enum types in `Histogram`.
22050    pub mod histogram {
22051        #[derive(Clone, PartialEq, ::prost::Message)]
22052        pub struct Bucket {
22053            /// This bucket counts values from the previous bucket's (or -infinity if
22054            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
22055            /// (exclusive).
22056            #[prost(uint64, optional, tag="1")]
22057            pub upper_limit: ::core::option::Option<u64>,
22058            /// This is the highest bucket. This is set instead of the upper_limit. Any
22059            /// values larger or equal to the previous bucket's upper_limit are counted
22060            /// in this bucket.
22061            #[prost(bool, optional, tag="2")]
22062            pub max_bucket: ::core::option::Option<bool>,
22063            /// Number of values that fall into this range.
22064            #[prost(uint64, optional, tag="3")]
22065            pub count: ::core::option::Option<u64>,
22066        }
22067    }
22068    #[derive(Clone, PartialEq, ::prost::Message)]
22069    pub struct ProcessStats {
22070        #[prost(uint64, optional, tag="1")]
22071        pub unwinding_errors: ::core::option::Option<u64>,
22072        #[prost(uint64, optional, tag="2")]
22073        pub heap_samples: ::core::option::Option<u64>,
22074        #[prost(uint64, optional, tag="3")]
22075        pub map_reparses: ::core::option::Option<u64>,
22076        #[prost(message, optional, tag="4")]
22077        pub unwinding_time_us: ::core::option::Option<Histogram>,
22078        #[prost(uint64, optional, tag="5")]
22079        pub total_unwinding_time_us: ::core::option::Option<u64>,
22080        #[prost(uint64, optional, tag="6")]
22081        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
22082    }
22083    #[derive(Clone, PartialEq, ::prost::Message)]
22084    pub struct ProcessHeapSamples {
22085        #[prost(uint64, optional, tag="1")]
22086        pub pid: ::core::option::Option<u64>,
22087        /// This process was profiled from startup.
22088        /// If false, this process was already running when profiling started.
22089        #[prost(bool, optional, tag="3")]
22090        pub from_startup: ::core::option::Option<bool>,
22091        /// This process was not profiled because a concurrent session was active.
22092        /// If this is true, samples will be empty.
22093        #[prost(bool, optional, tag="4")]
22094        pub rejected_concurrent: ::core::option::Option<bool>,
22095        /// This process disconnected while it was profiled.
22096        /// If false, the process outlived the profiling session.
22097        #[prost(bool, optional, tag="6")]
22098        pub disconnected: ::core::option::Option<bool>,
22099        /// If disconnected, this disconnect was caused by the client overrunning
22100        /// the buffer.
22101        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
22102        /// on new S builds.
22103        #[prost(bool, optional, tag="7")]
22104        pub buffer_overran: ::core::option::Option<bool>,
22105        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
22106        pub client_error: ::core::option::Option<i32>,
22107        /// If disconnected, this disconnected was caused by the shared memory
22108        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
22109        /// MEMORY CORRUPTION.
22110        #[prost(bool, optional, tag="8")]
22111        pub buffer_corrupted: ::core::option::Option<bool>,
22112        /// If disconnected, this disconnect was caused by heapprofd exceeding
22113        /// guardrails during this profiling session.
22114        #[prost(bool, optional, tag="10")]
22115        pub hit_guardrail: ::core::option::Option<bool>,
22116        #[prost(string, optional, tag="11")]
22117        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
22118        #[prost(uint64, optional, tag="12")]
22119        pub sampling_interval_bytes: ::core::option::Option<u64>,
22120        #[prost(uint64, optional, tag="13")]
22121        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
22122        /// Timestamp of the state of the target process that this dump represents.
22123        /// This can be different to the timestamp of the TracePackets for various
22124        /// reasons:
22125        /// * If disconnected is set above, this is the timestamp of last state
22126        ///    heapprofd had of the process before it disconnected.
22127        /// * Otherwise, if the rate of events produced by the process is high,
22128        ///    heapprofd might be behind.
22129        ///
22130        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
22131        ///                to have a type enum that we can reuse here.
22132        #[prost(uint64, optional, tag="9")]
22133        pub timestamp: ::core::option::Option<u64>,
22134        /// Metadata about heapprofd.
22135        #[prost(message, optional, tag="5")]
22136        pub stats: ::core::option::Option<ProcessStats>,
22137        #[prost(message, repeated, tag="2")]
22138        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
22139    }
22140    /// Nested message and enum types in `ProcessHeapSamples`.
22141    pub mod process_heap_samples {
22142        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22143        #[repr(i32)]
22144        pub enum ClientError {
22145            None = 0,
22146            HitTimeout = 1,
22147            InvalidStackBounds = 2,
22148        }
22149        impl ClientError {
22150            /// String value of the enum field names used in the ProtoBuf definition.
22151            ///
22152            /// The values are not transformed in any way and thus are considered stable
22153            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22154            pub fn as_str_name(&self) -> &'static str {
22155                match self {
22156                    ClientError::None => "CLIENT_ERROR_NONE",
22157                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
22158                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
22159                }
22160            }
22161        }
22162    }
22163}
22164/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22165/// testing. Doesn't report the callsite.
22166#[derive(Clone, PartialEq, ::prost::Message)]
22167pub struct StreamingAllocation {
22168    /// TODO(fmayer): Add callstack.
22169    #[prost(uint64, repeated, packed="false", tag="1")]
22170    pub address: ::prost::alloc::vec::Vec<u64>,
22171    #[prost(uint64, repeated, packed="false", tag="2")]
22172    pub size: ::prost::alloc::vec::Vec<u64>,
22173    #[prost(uint64, repeated, packed="false", tag="3")]
22174    pub sample_size: ::prost::alloc::vec::Vec<u64>,
22175    #[prost(uint64, repeated, packed="false", tag="4")]
22176    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
22177    #[prost(uint32, repeated, packed="false", tag="5")]
22178    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22179    #[prost(uint64, repeated, packed="false", tag="6")]
22180    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22181}
22182/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22183/// testing. Doesn't report the callsite.
22184#[derive(Clone, PartialEq, ::prost::Message)]
22185pub struct StreamingFree {
22186    /// TODO(fmayer): Add callstack.
22187    #[prost(uint64, repeated, packed="false", tag="1")]
22188    pub address: ::prost::alloc::vec::Vec<u64>,
22189    #[prost(uint32, repeated, packed="false", tag="2")]
22190    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22191    #[prost(uint64, repeated, packed="false", tag="3")]
22192    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22193}
22194/// Packet emitted by the chromium in-process signal-based callstack sampler.
22195/// Represents a series of individual stack samples (sampled at discrete points
22196/// in time), rather than aggregated over an interval.
22197#[derive(Clone, PartialEq, ::prost::Message)]
22198pub struct StreamingProfilePacket {
22199    /// Index into InternedData.callstacks
22200    #[prost(uint64, repeated, packed="false", tag="1")]
22201    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
22202    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
22203    /// this with ClockSnapshot-based delta encoding instead.
22204    #[prost(int64, repeated, packed="false", tag="2")]
22205    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
22206    #[prost(int32, optional, tag="3")]
22207    pub process_priority: ::core::option::Option<i32>,
22208}
22209/// Namespace for the contained enums.
22210#[derive(Clone, PartialEq, ::prost::Message)]
22211pub struct Profiling {
22212}
22213/// Nested message and enum types in `Profiling`.
22214pub mod profiling {
22215    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22216    #[repr(i32)]
22217    pub enum CpuMode {
22218        ModeUnknown = 0,
22219        ModeKernel = 1,
22220        ModeUser = 2,
22221        /// The following values aren't expected, but included for completeness:
22222        ModeHypervisor = 3,
22223        ModeGuestKernel = 4,
22224        ModeGuestUser = 5,
22225    }
22226    impl CpuMode {
22227        /// String value of the enum field names used in the ProtoBuf definition.
22228        ///
22229        /// The values are not transformed in any way and thus are considered stable
22230        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22231        pub fn as_str_name(&self) -> &'static str {
22232            match self {
22233                CpuMode::ModeUnknown => "MODE_UNKNOWN",
22234                CpuMode::ModeKernel => "MODE_KERNEL",
22235                CpuMode::ModeUser => "MODE_USER",
22236                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
22237                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
22238                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
22239            }
22240        }
22241    }
22242    /// Enumeration of libunwindstack's error codes.
22243    /// NB: the integral representations of the two enums are different.
22244    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22245    #[repr(i32)]
22246    pub enum StackUnwindError {
22247        UnwindErrorUnknown = 0,
22248        UnwindErrorNone = 1,
22249        UnwindErrorMemoryInvalid = 2,
22250        UnwindErrorUnwindInfo = 3,
22251        UnwindErrorUnsupported = 4,
22252        UnwindErrorInvalidMap = 5,
22253        UnwindErrorMaxFramesExceeded = 6,
22254        UnwindErrorRepeatedFrame = 7,
22255        UnwindErrorInvalidElf = 8,
22256        UnwindErrorSystemCall = 9,
22257        UnwindErrorThreadTimeout = 10,
22258        UnwindErrorThreadDoesNotExist = 11,
22259        UnwindErrorBadArch = 12,
22260        UnwindErrorMapsParse = 13,
22261        UnwindErrorInvalidParameter = 14,
22262        UnwindErrorPtraceCall = 15,
22263    }
22264    impl StackUnwindError {
22265        /// String value of the enum field names used in the ProtoBuf definition.
22266        ///
22267        /// The values are not transformed in any way and thus are considered stable
22268        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22269        pub fn as_str_name(&self) -> &'static str {
22270            match self {
22271                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
22272                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
22273                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
22274                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
22275                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
22276                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
22277                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
22278                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
22279                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
22280                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
22281                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
22282                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
22283                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
22284                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
22285                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
22286                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
22287            }
22288        }
22289    }
22290}
22291/// Packet emitted by the traced_perf sampling performance profiler, which
22292/// gathers data via the perf_event_open syscall. Each packet contains an
22293/// individual sample with a counter value, and optionally a
22294/// callstack.
22295///
22296/// Timestamps are within the root packet. The config can specify the clock, or
22297/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
22298/// timeframe, the default was CLOCK_BOOTTIME.
22299///
22300/// There are several distinct views of this message:
22301/// * indication of kernel buffer data loss (kernel_records_lost set)
22302/// * indication of skipped samples (sample_skipped_reason set)
22303/// * notable event in the sampling implementation (producer_event set)
22304/// * normal sample (timebase_count set, typically also callstack_iid)
22305#[derive(Clone, PartialEq, ::prost::Message)]
22306pub struct PerfSample {
22307    #[prost(uint32, optional, tag="1")]
22308    pub cpu: ::core::option::Option<u32>,
22309    #[prost(uint32, optional, tag="2")]
22310    pub pid: ::core::option::Option<u32>,
22311    #[prost(uint32, optional, tag="3")]
22312    pub tid: ::core::option::Option<u32>,
22313    /// Execution state that the process was sampled at.
22314    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
22315    pub cpu_mode: ::core::option::Option<i32>,
22316    /// Value of the timebase counter (since the event was configured, no deltas).
22317    #[prost(uint64, optional, tag="6")]
22318    pub timebase_count: ::core::option::Option<u64>,
22319    /// Value of the followers counter (since the event was configured, no deltas).
22320    #[prost(uint64, repeated, packed="false", tag="7")]
22321    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
22322    /// Unwound callstack. Might be partial, in which case a synthetic "error"
22323    /// frame is appended, and |unwind_error| is set accordingly.
22324    #[prost(uint64, optional, tag="4")]
22325    pub callstack_iid: ::core::option::Option<u64>,
22326    /// If set, indicates that this message is not a sample, but rather an
22327    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
22328    /// loss occurs when the kernel has insufficient ring buffer capacity to write
22329    /// a record (which gets discarded). A record in this context is an individual
22330    /// ring buffer entry, and counts more than just sample records.
22331    ///
22332    /// The |timestamp| of the packet corresponds to the time that the producer
22333    /// wrote the packet for trace-sorting purposes alone, and should not be
22334    /// interpreted relative to the sample timestamps. This field is sufficient to
22335    /// detect that *some* kernel data loss happened within the trace, but not the
22336    /// specific time bounds of that loss (which would require tracking precedessor
22337    /// & successor timestamps, which is not deemed necessary at the moment).
22338    #[prost(uint64, optional, tag="17")]
22339    pub kernel_records_lost: ::core::option::Option<u64>,
22340    #[prost(message, optional, tag="19")]
22341    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22342    /// If set, stack unwinding was incomplete due to an error.
22343    /// Unset values should be treated as UNWIND_ERROR_NONE.
22344    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22345    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22346    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22347    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22348}
22349/// Nested message and enum types in `PerfSample`.
22350pub mod perf_sample {
22351    /// A notable event within the sampling implementation.
22352    #[derive(Clone, PartialEq, ::prost::Message)]
22353    pub struct ProducerEvent {
22354        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22355        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22356    }
22357    /// Nested message and enum types in `ProducerEvent`.
22358    pub mod producer_event {
22359        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22360        #[repr(i32)]
22361        pub enum DataSourceStopReason {
22362            ProfilerStopUnknown = 0,
22363            ProfilerStopGuardrail = 1,
22364        }
22365        impl DataSourceStopReason {
22366            /// String value of the enum field names used in the ProtoBuf definition.
22367            ///
22368            /// The values are not transformed in any way and thus are considered stable
22369            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22370            pub fn as_str_name(&self) -> &'static str {
22371                match self {
22372                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22373                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22374                }
22375            }
22376        }
22377        #[derive(Clone, PartialEq, ::prost::Oneof)]
22378        pub enum OptionalSourceStopReason {
22379            #[prost(enumeration="DataSourceStopReason", tag="1")]
22380            SourceStopReason(i32),
22381        }
22382    }
22383    /// If set, indicates that the profiler encountered a sample that was relevant,
22384    /// but was skipped.
22385    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22386    #[repr(i32)]
22387    pub enum SampleSkipReason {
22388        ProfilerSkipUnknown = 0,
22389        ProfilerSkipReadStage = 1,
22390        ProfilerSkipUnwindStage = 2,
22391        ProfilerSkipUnwindEnqueue = 3,
22392        ProfilerSkipNotInScope = 4,
22393    }
22394    impl SampleSkipReason {
22395        /// String value of the enum field names used in the ProtoBuf definition.
22396        ///
22397        /// The values are not transformed in any way and thus are considered stable
22398        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22399        pub fn as_str_name(&self) -> &'static str {
22400            match self {
22401                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22402                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22403                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22404                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22405                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22406            }
22407        }
22408    }
22409    /// If set, stack unwinding was incomplete due to an error.
22410    /// Unset values should be treated as UNWIND_ERROR_NONE.
22411    #[derive(Clone, PartialEq, ::prost::Oneof)]
22412    pub enum OptionalUnwindError {
22413        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
22414        UnwindError(i32),
22415    }
22416    #[derive(Clone, PartialEq, ::prost::Oneof)]
22417    pub enum OptionalSampleSkippedReason {
22418        #[prost(enumeration="SampleSkipReason", tag="18")]
22419        SampleSkippedReason(i32),
22420    }
22421}
22422/// Submessage for TracePacketDefaults.
22423#[derive(Clone, PartialEq, ::prost::Message)]
22424pub struct PerfSampleDefaults {
22425    /// The sampling timebase. Might not be identical to the data source config if
22426    /// the implementation decided to default/override some parameters.
22427    #[prost(message, optional, tag="1")]
22428    pub timebase: ::core::option::Option<perf_events::Timebase>,
22429    /// Description of followers event
22430    #[prost(message, repeated, tag="4")]
22431    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
22432    /// If the config requested process sharding, report back the count and which
22433    /// of those bins was selected. Never changes for the duration of a trace.
22434    #[prost(uint32, optional, tag="2")]
22435    pub process_shard_count: ::core::option::Option<u32>,
22436    #[prost(uint32, optional, tag="3")]
22437    pub chosen_process_shard: ::core::option::Option<u32>,
22438}
22439// End of protos/perfetto/trace/profiling/profile_packet.proto
22440
22441// Begin of protos/perfetto/trace/profiling/smaps.proto
22442
22443#[derive(Clone, PartialEq, ::prost::Message)]
22444pub struct SmapsEntry {
22445    #[prost(string, optional, tag="1")]
22446    pub path: ::core::option::Option<::prost::alloc::string::String>,
22447    #[prost(uint64, optional, tag="2")]
22448    pub size_kb: ::core::option::Option<u64>,
22449    #[prost(uint64, optional, tag="3")]
22450    pub private_dirty_kb: ::core::option::Option<u64>,
22451    #[prost(uint64, optional, tag="4")]
22452    pub swap_kb: ::core::option::Option<u64>,
22453    /// for field upload (instead of path).
22454    #[prost(string, optional, tag="5")]
22455    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
22456    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
22457    #[prost(uint64, optional, tag="6")]
22458    pub start_address: ::core::option::Option<u64>,
22459    #[prost(uint64, optional, tag="7")]
22460    pub module_timestamp: ::core::option::Option<u64>,
22461    #[prost(string, optional, tag="8")]
22462    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
22463    #[prost(string, optional, tag="9")]
22464    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
22465    #[prost(uint32, optional, tag="10")]
22466    pub protection_flags: ::core::option::Option<u32>,
22467    #[prost(uint64, optional, tag="11")]
22468    pub private_clean_resident_kb: ::core::option::Option<u64>,
22469    #[prost(uint64, optional, tag="12")]
22470    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
22471    #[prost(uint64, optional, tag="13")]
22472    pub shared_clean_resident_kb: ::core::option::Option<u64>,
22473    #[prost(uint64, optional, tag="14")]
22474    pub locked_kb: ::core::option::Option<u64>,
22475    #[prost(uint64, optional, tag="15")]
22476    pub proportional_resident_kb: ::core::option::Option<u64>,
22477}
22478#[derive(Clone, PartialEq, ::prost::Message)]
22479pub struct SmapsPacket {
22480    #[prost(uint32, optional, tag="1")]
22481    pub pid: ::core::option::Option<u32>,
22482    #[prost(message, repeated, tag="2")]
22483    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
22484}
22485// End of protos/perfetto/trace/profiling/smaps.proto
22486
22487// Begin of protos/perfetto/trace/ps/process_stats.proto
22488
22489/// Per-process periodically sampled stats. These samples are wrapped in a
22490/// dedicated message (as opposite to be fields in process_tree.proto) because
22491/// they are dumped at a different rate than cmdline and thread list.
22492/// Note: not all of these stats will be present in every ProcessStats message
22493/// and sometimes processes may be missing. This is because counters are
22494/// cached to reduce emission of counters which do not change.
22495#[derive(Clone, PartialEq, ::prost::Message)]
22496pub struct ProcessStats {
22497    #[prost(message, repeated, tag="1")]
22498    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
22499    /// The time at which we finish collecting this batch of samples;
22500    /// the top-level packet timestamp is the time at which
22501    /// we begin collection.
22502    #[prost(uint64, optional, tag="2")]
22503    pub collection_end_timestamp: ::core::option::Option<u64>,
22504}
22505/// Nested message and enum types in `ProcessStats`.
22506pub mod process_stats {
22507    /// Per-thread periodically sampled stats.
22508    /// Note: not all of these stats will be present in every message. See the note
22509    /// for ProcessStats.
22510    #[derive(Clone, PartialEq, ::prost::Message)]
22511    pub struct Thread {
22512        #[prost(int32, optional, tag="1")]
22513        pub tid: ::core::option::Option<i32>,
22514    }
22515    #[derive(Clone, PartialEq, ::prost::Message)]
22516    pub struct FdInfo {
22517        #[prost(uint64, optional, tag="1")]
22518        pub fd: ::core::option::Option<u64>,
22519        #[prost(string, optional, tag="2")]
22520        pub path: ::core::option::Option<::prost::alloc::string::String>,
22521    }
22522    #[derive(Clone, PartialEq, ::prost::Message)]
22523    pub struct Process {
22524        #[prost(int32, optional, tag="1")]
22525        pub pid: ::core::option::Option<i32>,
22526        #[prost(message, repeated, tag="11")]
22527        pub threads: ::prost::alloc::vec::Vec<Thread>,
22528        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
22529        #[prost(uint64, optional, tag="2")]
22530        pub vm_size_kb: ::core::option::Option<u64>,
22531        #[prost(uint64, optional, tag="3")]
22532        pub vm_rss_kb: ::core::option::Option<u64>,
22533        #[prost(uint64, optional, tag="4")]
22534        pub rss_anon_kb: ::core::option::Option<u64>,
22535        #[prost(uint64, optional, tag="5")]
22536        pub rss_file_kb: ::core::option::Option<u64>,
22537        #[prost(uint64, optional, tag="6")]
22538        pub rss_shmem_kb: ::core::option::Option<u64>,
22539        #[prost(uint64, optional, tag="7")]
22540        pub vm_swap_kb: ::core::option::Option<u64>,
22541        #[prost(uint64, optional, tag="8")]
22542        pub vm_locked_kb: ::core::option::Option<u64>,
22543        /// When adding a new field remember to update kProcMemCounterSize in
22544        /// the trace processor.
22545        #[prost(uint64, optional, tag="9")]
22546        pub vm_hwm_kb: ::core::option::Option<u64>,
22547        #[prost(int64, optional, tag="10")]
22548        pub oom_score_adj: ::core::option::Option<i64>,
22549        /// The peak resident set size is resettable in newer Posix kernels.
22550        /// This field specifies if reset is supported and if the writer had reset
22551        /// the peaks after each process stats recording.
22552        #[prost(bool, optional, tag="12")]
22553        pub is_peak_rss_resettable: ::core::option::Option<bool>,
22554        /// Private, shared and swap footprint of the process as measured by
22555        /// Chrome. To know more about these metrics refer to:
22556        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
22557        #[prost(uint32, optional, tag="13")]
22558        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
22559        #[prost(uint32, optional, tag="14")]
22560        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
22561        #[prost(message, repeated, tag="15")]
22562        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
22563        /// These fields are set only when scan_smaps_rollup=true
22564        #[prost(uint64, optional, tag="16")]
22565        pub smr_rss_kb: ::core::option::Option<u64>,
22566        #[prost(uint64, optional, tag="17")]
22567        pub smr_pss_kb: ::core::option::Option<u64>,
22568        #[prost(uint64, optional, tag="18")]
22569        pub smr_pss_anon_kb: ::core::option::Option<u64>,
22570        #[prost(uint64, optional, tag="19")]
22571        pub smr_pss_file_kb: ::core::option::Option<u64>,
22572        #[prost(uint64, optional, tag="20")]
22573        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
22574        #[prost(uint64, optional, tag="23")]
22575        pub smr_swap_pss_kb: ::core::option::Option<u64>,
22576        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
22577        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22578        /// Resolution of "clock ticks", usually 10ms.
22579        #[prost(uint64, optional, tag="21")]
22580        pub runtime_user_mode: ::core::option::Option<u64>,
22581        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
22582        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22583        /// Resolution of "clock ticks", usually 10ms.
22584        #[prost(uint64, optional, tag="22")]
22585        pub runtime_kernel_mode: ::core::option::Option<u64>,
22586        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
22587        #[prost(uint64, optional, tag="24")]
22588        pub dmabuf_rss_kb: ::core::option::Option<u64>,
22589    }
22590}
22591// End of protos/perfetto/trace/ps/process_stats.proto
22592
22593// Begin of protos/perfetto/trace/ps/process_tree.proto
22594
22595/// Metadata about the processes and threads in the trace.
22596/// Note: this proto was designed to be filled in by traced_probes and should
22597/// only be populated with accurate information coming from the system. Other
22598/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
22599/// in TrackDescriptor.
22600#[derive(Clone, PartialEq, ::prost::Message)]
22601pub struct ProcessTree {
22602    /// List of processes and threads in the client. These lists are incremental
22603    /// and not exhaustive. A process and its threads might show up separately in
22604    /// different ProcessTree messages. A thread might event not show up at all, if
22605    /// no sched_switch activity was detected, for instance:
22606    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
22607    /// #1 { threads: [{pid: 12, tgid: 10}] }
22608    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
22609    #[prost(message, repeated, tag="1")]
22610    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
22611    #[prost(message, repeated, tag="2")]
22612    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
22613    /// The time at which we finish collecting this process tree;
22614    /// the top-level packet timestamp is the time at which
22615    /// we begin collection.
22616    #[prost(uint64, optional, tag="3")]
22617    pub collection_end_timestamp: ::core::option::Option<u64>,
22618}
22619/// Nested message and enum types in `ProcessTree`.
22620pub mod process_tree {
22621    /// Representation of a thread.
22622    #[derive(Clone, PartialEq, ::prost::Message)]
22623    pub struct Thread {
22624        /// The thread ID (as per gettid()) in the root PID namespace.
22625        #[prost(int32, optional, tag="1")]
22626        pub tid: ::core::option::Option<i32>,
22627        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
22628        #[prost(int32, optional, tag="3")]
22629        pub tgid: ::core::option::Option<i32>,
22630        /// The name of the thread.
22631        #[prost(string, optional, tag="2")]
22632        pub name: ::core::option::Option<::prost::alloc::string::String>,
22633        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
22634        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
22635        /// level thread ID) omitted.
22636        #[prost(int32, repeated, packed="false", tag="4")]
22637        pub nstid: ::prost::alloc::vec::Vec<i32>,
22638    }
22639    /// Representation of a process.
22640    #[derive(Clone, PartialEq, ::prost::Message)]
22641    pub struct Process {
22642        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
22643        /// PID namespace.
22644        #[prost(int32, optional, tag="1")]
22645        pub pid: ::core::option::Option<i32>,
22646        /// The parent process ID, as per getppid().
22647        #[prost(int32, optional, tag="2")]
22648        pub ppid: ::core::option::Option<i32>,
22649        /// The command line for the process, as per /proc/pid/cmdline, broken up on
22650        /// NUL bytes.
22651        /// If it is a kernel thread or a zombie, there will only be one cmdline
22652        /// field and it will contain /proc/pid/comm.
22653        #[prost(string, repeated, tag="3")]
22654        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22655        /// If true, the |cmdline| field was filled with the main thread's "comm"
22656        /// field instead.
22657        /// Introduced in: perfetto v50.
22658        #[prost(bool, optional, tag="9")]
22659        pub cmdline_is_comm: ::core::option::Option<bool>,
22660        /// The uid for the process, as per /proc/pid/status.
22661        #[prost(int32, optional, tag="5")]
22662        pub uid: ::core::option::Option<i32>,
22663        /// The non-root-level process IDs if the process runs in a PID namespace.
22664        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
22665        /// (root-level process ID) omitted.
22666        #[prost(int32, repeated, packed="false", tag="6")]
22667        pub nspid: ::prost::alloc::vec::Vec<i32>,
22668        /// Timestamp of when the process was created, in nanoseconds
22669        /// from boot. Parsed from starttime in /proc/pid/stat.
22670        /// Recorded if record_process_age config option is set.
22671        /// Resolution of "clock ticks", usually 10ms.
22672        #[prost(uint64, optional, tag="7")]
22673        pub process_start_from_boot: ::core::option::Option<u64>,
22674        /// If true, the process is a kernel thread.
22675        /// Set only on linux v6.4+. For traces from older devices, it is possible to
22676        /// infer most kthreads by checking that they're a descendant of kthreadd
22677        /// (pid=2), or are the idle process (pid=0).
22678        /// Introduced in: perfetto v50.
22679        #[prost(bool, optional, tag="8")]
22680        pub is_kthread: ::core::option::Option<bool>,
22681    }
22682}
22683// End of protos/perfetto/trace/ps/process_tree.proto
22684
22685// Begin of protos/perfetto/trace/remote_clock_sync.proto
22686
22687/// Records the parameters for aligning clock readings between machines.
22688#[derive(Clone, PartialEq, ::prost::Message)]
22689pub struct RemoteClockSync {
22690    #[prost(message, repeated, tag="1")]
22691    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
22692}
22693/// Nested message and enum types in `RemoteClockSync`.
22694pub mod remote_clock_sync {
22695    /// Synchronized clock snapshots taken on both sides of the relay port (the
22696    /// tracing service and the relay service). A round of clock synchronization
22697    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
22698    /// snapshot -> client snapshot -> host snapshot.
22699    #[derive(Clone, PartialEq, ::prost::Message)]
22700    pub struct SyncedClocks {
22701        #[prost(message, optional, tag="2")]
22702        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
22703        #[prost(message, optional, tag="3")]
22704        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
22705    }
22706}
22707// End of protos/perfetto/trace/remote_clock_sync.proto
22708
22709// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
22710
22711/// Deliberate empty message. See comment on StatsdAtom#atom below.
22712#[derive(Clone, PartialEq, ::prost::Message)]
22713pub struct Atom {
22714}
22715/// One or more statsd atoms. This must continue to match:
22716/// perfetto/protos/third_party/statsd/shell_data.proto
22717/// So that we can efficiently add data from statsd directly to the
22718/// trace.
22719#[derive(Clone, PartialEq, ::prost::Message)]
22720pub struct StatsdAtom {
22721    /// Atom should be filled with an Atom proto from:
22722    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
22723    /// We don't reference Atom directly here since we don't want to import
22724    /// Atom.proto and all its transitive dependencies into Perfetto.
22725    /// atom and timestamp_nanos have the same cardinality
22726    #[prost(message, repeated, tag="1")]
22727    pub atom: ::prost::alloc::vec::Vec<Atom>,
22728    #[prost(int64, repeated, packed="false", tag="2")]
22729    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
22730}
22731// End of protos/perfetto/trace/statsd/statsd_atom.proto
22732
22733// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
22734
22735/// Various Linux system stat counters from /proc.
22736/// The fields in this message can be reported at different rates and with
22737/// different granularity. See sys_stats_config.proto.
22738#[derive(Clone, PartialEq, ::prost::Message)]
22739pub struct SysStats {
22740    #[prost(message, repeated, tag="1")]
22741    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
22742    #[prost(message, repeated, tag="2")]
22743    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
22744    /// One entry per cpu.
22745    #[prost(message, repeated, tag="3")]
22746    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
22747    /// Num processes forked since boot.
22748    /// Populated only if FORK_COUNT in config.stat_counters.
22749    #[prost(uint64, optional, tag="4")]
22750    pub num_forks: ::core::option::Option<u64>,
22751    // Number of interrupts, broken by IRQ number.
22752    // Populated only if IRQ_COUNTS in config.stat_counters.
22753
22754    /// Total num of irqs serviced since boot.
22755    #[prost(uint64, optional, tag="5")]
22756    pub num_irq_total: ::core::option::Option<u64>,
22757    #[prost(message, repeated, tag="6")]
22758    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22759    // Number of softirqs, broken by softirq number.
22760    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
22761
22762    /// Total num of softirqs since boot.
22763    #[prost(uint64, optional, tag="7")]
22764    pub num_softirq_total: ::core::option::Option<u64>,
22765    /// Per-softirq count.
22766    #[prost(message, repeated, tag="8")]
22767    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22768    /// The time at which we finish collecting this set of samples;
22769    /// the top-level packet timestamp is the time at which
22770    /// we begin collection.
22771    #[prost(uint64, optional, tag="9")]
22772    pub collection_end_timestamp: ::core::option::Option<u64>,
22773    /// One entry per device.
22774    #[prost(message, repeated, tag="10")]
22775    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
22776    /// Cpu current frequency from
22777    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
22778    /// One entry per cpu. Report 0 for offline cpu
22779    #[prost(uint32, repeated, packed="false", tag="11")]
22780    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
22781    /// One entry per each node's zones.
22782    #[prost(message, repeated, tag="12")]
22783    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
22784    /// One entry per disk device.
22785    #[prost(message, repeated, tag="13")]
22786    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
22787    /// One entry per PsiResource type.
22788    #[prost(message, repeated, tag="14")]
22789    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
22790    #[prost(message, repeated, tag="15")]
22791    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
22792    #[prost(message, repeated, tag="16")]
22793    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
22794    /// Read GPU frequency info on Intel/AMD devices.
22795    #[prost(uint64, repeated, packed="false", tag="17")]
22796    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
22797}
22798/// Nested message and enum types in `SysStats`.
22799pub mod sys_stats {
22800    /// Counters from /proc/meminfo. Values are in KB.
22801    #[derive(Clone, PartialEq, ::prost::Message)]
22802    pub struct MeminfoValue {
22803        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
22804        pub key: ::core::option::Option<i32>,
22805        #[prost(uint64, optional, tag="2")]
22806        pub value: ::core::option::Option<u64>,
22807    }
22808    /// Counter from /proc/vmstat. Units are often pages, not KB.
22809    #[derive(Clone, PartialEq, ::prost::Message)]
22810    pub struct VmstatValue {
22811        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
22812        pub key: ::core::option::Option<i32>,
22813        #[prost(uint64, optional, tag="2")]
22814        pub value: ::core::option::Option<u64>,
22815    }
22816    /// Times in each mode, since boot. Unit: nanoseconds.
22817    #[derive(Clone, PartialEq, ::prost::Message)]
22818    pub struct CpuTimes {
22819        #[prost(uint32, optional, tag="1")]
22820        pub cpu_id: ::core::option::Option<u32>,
22821        /// Time spent in user mode.
22822        #[prost(uint64, optional, tag="2")]
22823        pub user_ns: ::core::option::Option<u64>,
22824        /// Time spent in user mode (low prio).
22825        #[prost(uint64, optional, tag="3")]
22826        pub user_nice_ns: ::core::option::Option<u64>,
22827        /// Time spent in system mode.
22828        #[prost(uint64, optional, tag="4")]
22829        pub system_mode_ns: ::core::option::Option<u64>,
22830        /// Time spent in the idle task.
22831        #[prost(uint64, optional, tag="5")]
22832        pub idle_ns: ::core::option::Option<u64>,
22833        /// Time spent waiting for I/O.
22834        #[prost(uint64, optional, tag="6")]
22835        pub io_wait_ns: ::core::option::Option<u64>,
22836        /// Time spent servicing interrupts.
22837        #[prost(uint64, optional, tag="7")]
22838        pub irq_ns: ::core::option::Option<u64>,
22839        /// Time spent servicing softirqs.
22840        #[prost(uint64, optional, tag="8")]
22841        pub softirq_ns: ::core::option::Option<u64>,
22842        /// Time spent executing something else on host than this guest.
22843        #[prost(uint64, optional, tag="9")]
22844        pub steal_ns: ::core::option::Option<u64>,
22845    }
22846    #[derive(Clone, PartialEq, ::prost::Message)]
22847    pub struct InterruptCount {
22848        #[prost(int32, optional, tag="1")]
22849        pub irq: ::core::option::Option<i32>,
22850        #[prost(uint64, optional, tag="2")]
22851        pub count: ::core::option::Option<u64>,
22852    }
22853    /// Frequencies for /sys/class/devfreq/ entries in kHz.
22854    #[derive(Clone, PartialEq, ::prost::Message)]
22855    pub struct DevfreqValue {
22856        #[prost(string, optional, tag="1")]
22857        pub key: ::core::option::Option<::prost::alloc::string::String>,
22858        #[prost(uint64, optional, tag="2")]
22859        pub value: ::core::option::Option<u64>,
22860    }
22861    #[derive(Clone, PartialEq, ::prost::Message)]
22862    pub struct BuddyInfo {
22863        #[prost(string, optional, tag="1")]
22864        pub node: ::core::option::Option<::prost::alloc::string::String>,
22865        #[prost(string, optional, tag="2")]
22866        pub zone: ::core::option::Option<::prost::alloc::string::String>,
22867        #[prost(uint32, repeated, packed="false", tag="3")]
22868        pub order_pages: ::prost::alloc::vec::Vec<u32>,
22869    }
22870    /// Counters from /proc/diskstats.
22871    #[derive(Clone, PartialEq, ::prost::Message)]
22872    pub struct DiskStat {
22873        #[prost(string, optional, tag="1")]
22874        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
22875        #[prost(uint64, optional, tag="2")]
22876        pub read_sectors: ::core::option::Option<u64>,
22877        #[prost(uint64, optional, tag="3")]
22878        pub read_time_ms: ::core::option::Option<u64>,
22879        #[prost(uint64, optional, tag="4")]
22880        pub write_sectors: ::core::option::Option<u64>,
22881        #[prost(uint64, optional, tag="5")]
22882        pub write_time_ms: ::core::option::Option<u64>,
22883        #[prost(uint64, optional, tag="6")]
22884        pub discard_sectors: ::core::option::Option<u64>,
22885        #[prost(uint64, optional, tag="7")]
22886        pub discard_time_ms: ::core::option::Option<u64>,
22887        #[prost(uint64, optional, tag="8")]
22888        pub flush_count: ::core::option::Option<u64>,
22889        #[prost(uint64, optional, tag="9")]
22890        pub flush_time_ms: ::core::option::Option<u64>,
22891    }
22892    /// Reading from /proc/pressure/*.
22893    #[derive(Clone, PartialEq, ::prost::Message)]
22894    pub struct PsiSample {
22895        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
22896        pub resource: ::core::option::Option<i32>,
22897        /// Total absolute stall time (in nanos) for a given resource.
22898        /// While PSI readings are in micros, we store in nanos for consistency with
22899        /// most other time-based counters.
22900        #[prost(uint64, optional, tag="2")]
22901        pub total_ns: ::core::option::Option<u64>,
22902    }
22903    /// Nested message and enum types in `PsiSample`.
22904    pub mod psi_sample {
22905        /// Type of resource that may have exhibited pressure stalls.
22906        ///     * _SOME indicates some resource tasks stalled.
22907        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
22908        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22909        #[repr(i32)]
22910        pub enum PsiResource {
22911            Unspecified = 0,
22912            CpuSome = 1,
22913            CpuFull = 2,
22914            IoSome = 3,
22915            IoFull = 4,
22916            MemorySome = 5,
22917            MemoryFull = 6,
22918        }
22919        impl PsiResource {
22920            /// String value of the enum field names used in the ProtoBuf definition.
22921            ///
22922            /// The values are not transformed in any way and thus are considered stable
22923            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22924            pub fn as_str_name(&self) -> &'static str {
22925                match self {
22926                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
22927                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
22928                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
22929                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
22930                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
22931                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
22932                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
22933                }
22934            }
22935        }
22936    }
22937    /// Reading from /sys/class/thermal/*.
22938    #[derive(Clone, PartialEq, ::prost::Message)]
22939    pub struct ThermalZone {
22940        #[prost(string, optional, tag="1")]
22941        pub name: ::core::option::Option<::prost::alloc::string::String>,
22942        #[prost(uint64, optional, tag="2")]
22943        pub temp: ::core::option::Option<u64>,
22944        #[prost(string, optional, tag="3")]
22945        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22946    }
22947    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
22948    #[derive(Clone, PartialEq, ::prost::Message)]
22949    pub struct CpuIdleStateEntry {
22950        /// Name of the idle state, e.g. C1-C10
22951        #[prost(string, optional, tag="1")]
22952        pub state: ::core::option::Option<::prost::alloc::string::String>,
22953        #[prost(uint64, optional, tag="2")]
22954        pub duration_us: ::core::option::Option<u64>,
22955    }
22956    #[derive(Clone, PartialEq, ::prost::Message)]
22957    pub struct CpuIdleState {
22958        #[prost(uint32, optional, tag="1")]
22959        pub cpu_id: ::core::option::Option<u32>,
22960        #[prost(message, repeated, tag="2")]
22961        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
22962    }
22963}
22964// End of protos/perfetto/trace/sys_stats/sys_stats.proto
22965
22966// Begin of protos/perfetto/trace/system_info/cpu_info.proto
22967
22968/// Information about CPUs from procfs and sysfs.
22969#[derive(Clone, PartialEq, ::prost::Message)]
22970pub struct CpuInfo {
22971    /// Describes available CPUs, one entry per CPU.
22972    #[prost(message, repeated, tag="1")]
22973    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
22974}
22975/// Nested message and enum types in `CpuInfo`.
22976pub mod cpu_info {
22977    #[derive(Clone, PartialEq, ::prost::Message)]
22978    pub struct ArmCpuIdentifier {
22979        /// Implementer code
22980        #[prost(uint32, optional, tag="1")]
22981        pub implementer: ::core::option::Option<u32>,
22982        /// Architecture code
22983        #[prost(uint32, optional, tag="2")]
22984        pub architecture: ::core::option::Option<u32>,
22985        /// CPU variant
22986        #[prost(uint32, optional, tag="3")]
22987        pub variant: ::core::option::Option<u32>,
22988        /// CPU part
22989        #[prost(uint32, optional, tag="4")]
22990        pub part: ::core::option::Option<u32>,
22991        /// CPU revision
22992        #[prost(uint32, optional, tag="5")]
22993        pub revision: ::core::option::Option<u32>,
22994    }
22995    /// Information about a single CPU.
22996    #[derive(Clone, PartialEq, ::prost::Message)]
22997    pub struct Cpu {
22998        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
22999        /// Example: "AArch64 Processor rev 12 (aarch64)"
23000        #[prost(string, optional, tag="1")]
23001        pub processor: ::core::option::Option<::prost::alloc::string::String>,
23002        /// Frequencies from
23003        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
23004        /// where X is the index of this CPU.
23005        #[prost(uint32, repeated, packed="false", tag="2")]
23006        pub frequencies: ::prost::alloc::vec::Vec<u32>,
23007        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
23008        /// the index of this CPU.
23009        #[prost(uint32, optional, tag="3")]
23010        pub capacity: ::core::option::Option<u32>,
23011        /// Features is a bitmap containing a bit set for each feature defined in
23012        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
23013        /// index.
23014        #[prost(uint64, optional, tag="5")]
23015        pub features: ::core::option::Option<u64>,
23016        /// Code to identify the CPU
23017        #[prost(oneof="cpu::Identifier", tags="4")]
23018        pub identifier: ::core::option::Option<cpu::Identifier>,
23019    }
23020    /// Nested message and enum types in `Cpu`.
23021    pub mod cpu {
23022        /// Code to identify the CPU
23023        #[derive(Clone, PartialEq, ::prost::Oneof)]
23024        pub enum Identifier {
23025            #[prost(message, tag="4")]
23026            ArmIdentifier(super::ArmCpuIdentifier),
23027        }
23028    }
23029}
23030// End of protos/perfetto/trace/system_info/cpu_info.proto
23031
23032// Begin of protos/perfetto/trace/test_event.proto
23033
23034/// Event used by testing code.
23035#[derive(Clone, PartialEq, ::prost::Message)]
23036pub struct TestEvent {
23037    /// Arbitrary string used in tests.
23038    #[prost(string, optional, tag="1")]
23039    pub str: ::core::option::Option<::prost::alloc::string::String>,
23040    /// The current value of the random number sequence used in tests.
23041    #[prost(uint32, optional, tag="2")]
23042    pub seq_value: ::core::option::Option<u32>,
23043    /// Monotonically increased on each packet.
23044    #[prost(uint64, optional, tag="3")]
23045    pub counter: ::core::option::Option<u64>,
23046    /// No more packets should follow (from the current sequence).
23047    #[prost(bool, optional, tag="4")]
23048    pub is_last: ::core::option::Option<bool>,
23049    #[prost(message, optional, tag="5")]
23050    pub payload: ::core::option::Option<test_event::TestPayload>,
23051}
23052/// Nested message and enum types in `TestEvent`.
23053pub mod test_event {
23054    #[derive(Clone, PartialEq, ::prost::Message)]
23055    pub struct TestPayload {
23056        #[prost(string, repeated, tag="1")]
23057        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23058        #[prost(message, repeated, tag="2")]
23059        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
23060        #[prost(string, optional, tag="4")]
23061        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
23062        #[prost(int32, optional, tag="5")]
23063        pub single_int: ::core::option::Option<i32>,
23064        #[prost(int32, repeated, packed="false", tag="6")]
23065        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
23066        /// When 0 this is the bottom-most nested message.
23067        #[prost(uint32, optional, tag="3")]
23068        pub remaining_nesting_depth: ::core::option::Option<u32>,
23069        #[prost(message, repeated, tag="7")]
23070        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
23071    }
23072}
23073// End of protos/perfetto/trace/test_event.proto
23074
23075// Begin of protos/perfetto/trace/trace_packet_defaults.proto
23076
23077/// Default values for TracePacket fields that hold for a particular TraceWriter
23078/// packet sequence. This message contains a subset of the TracePacket fields
23079/// with matching IDs. When provided, these fields define the default values
23080/// that should be applied, at import time, to all TracePacket(s) with the same
23081/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
23082///
23083/// Should be reemitted whenever incremental state is cleared on the sequence.
23084#[derive(Clone, PartialEq, ::prost::Message)]
23085pub struct TracePacketDefaults {
23086    #[prost(uint32, optional, tag="58")]
23087    pub timestamp_clock_id: ::core::option::Option<u32>,
23088    /// Default values for TrackEvents (e.g. default track).
23089    #[prost(message, optional, tag="11")]
23090    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
23091    /// Defaults for perf profiler packets (PerfSample).
23092    #[prost(message, optional, tag="12")]
23093    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
23094    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
23095    /// V8RegexpCode)
23096    #[prost(message, optional, tag="99")]
23097    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
23098}
23099// Begin of protos/perfetto/trace/trace_uuid.proto
23100
23101/// A random unique ID that identifies the trace.
23102/// This message has been introduced in v32. Prior to that, the UUID was
23103/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
23104/// This has been moved to a standalone packet to deal with new use-cases for
23105/// go/gapless-aot, where the same tracing session can be serialized several
23106/// times, in which case the UUID is changed on each snapshot and does not match
23107/// the one in the TraceConfig.
23108#[derive(Clone, PartialEq, ::prost::Message)]
23109pub struct TraceUuid {
23110    #[prost(int64, optional, tag="1")]
23111    pub msb: ::core::option::Option<i64>,
23112    #[prost(int64, optional, tag="2")]
23113    pub lsb: ::core::option::Option<i64>,
23114}
23115// End of protos/perfetto/trace/trace_uuid.proto
23116
23117// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
23118
23119/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
23120/// usually by the process's main thread.
23121///
23122/// Next id: 9.
23123#[derive(Clone, PartialEq, ::prost::Message)]
23124pub struct ProcessDescriptor {
23125    #[prost(int32, optional, tag="1")]
23126    pub pid: ::core::option::Option<i32>,
23127    #[prost(string, repeated, tag="2")]
23128    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23129    #[prost(string, optional, tag="6")]
23130    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23131    #[prost(int32, optional, tag="5")]
23132    pub process_priority: ::core::option::Option<i32>,
23133    /// Process start time in nanoseconds.
23134    /// The timestamp refers to the trace clock by default. Other clock IDs
23135    /// provided in TracePacket are not supported.
23136    #[prost(int64, optional, tag="7")]
23137    pub start_timestamp_ns: ::core::option::Option<i64>,
23138    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
23139    pub chrome_process_type: ::core::option::Option<i32>,
23140    /// To support old UI. New UI should determine default sorting by process_type.
23141    #[prost(int32, optional, tag="3")]
23142    pub legacy_sort_index: ::core::option::Option<i32>,
23143    /// Labels can be used to further describe properties of the work performed by
23144    /// the process. For example, these can be used by Chrome renderer process to
23145    /// provide titles of frames being rendered.
23146    #[prost(string, repeated, tag="8")]
23147    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23148}
23149/// Nested message and enum types in `ProcessDescriptor`.
23150pub mod process_descriptor {
23151    // ---------------------------------------------------------------------------
23152    // Deprecated / legacy fields, which will be removed in the future:
23153    // ---------------------------------------------------------------------------
23154
23155    /// See chromium's content::ProcessType.
23156    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23157    #[repr(i32)]
23158    pub enum ChromeProcessType {
23159        ProcessUnspecified = 0,
23160        ProcessBrowser = 1,
23161        ProcessRenderer = 2,
23162        ProcessUtility = 3,
23163        ProcessZygote = 4,
23164        ProcessSandboxHelper = 5,
23165        ProcessGpu = 6,
23166        ProcessPpapiPlugin = 7,
23167        ProcessPpapiBroker = 8,
23168    }
23169    impl ChromeProcessType {
23170        /// String value of the enum field names used in the ProtoBuf definition.
23171        ///
23172        /// The values are not transformed in any way and thus are considered stable
23173        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23174        pub fn as_str_name(&self) -> &'static str {
23175            match self {
23176                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
23177                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
23178                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
23179                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
23180                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
23181                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
23182                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
23183                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
23184                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
23185            }
23186        }
23187    }
23188}
23189// End of protos/perfetto/trace/track_event/process_descriptor.proto
23190
23191// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
23192
23193/// This message specifies the "range of interest" for track events. With the
23194/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
23195/// Trace Processor drops track events outside of this range.
23196#[derive(Clone, PartialEq, ::prost::Message)]
23197pub struct TrackEventRangeOfInterest {
23198    #[prost(int64, optional, tag="1")]
23199    pub start_us: ::core::option::Option<i64>,
23200}
23201// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
23202
23203/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
23204/// usually by the thread's trace writer.
23205///
23206/// Next id: 9.
23207#[derive(Clone, PartialEq, ::prost::Message)]
23208pub struct ThreadDescriptor {
23209    #[prost(int32, optional, tag="1")]
23210    pub pid: ::core::option::Option<i32>,
23211    #[prost(int32, optional, tag="2")]
23212    pub tid: ::core::option::Option<i32>,
23213    #[prost(string, optional, tag="5")]
23214    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
23215    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
23216    pub chrome_thread_type: ::core::option::Option<i32>,
23217    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
23218    /// and timestamp_clock_id fields instead.
23219    #[prost(int64, optional, tag="6")]
23220    pub reference_timestamp_us: ::core::option::Option<i64>,
23221    /// Absolute reference values. Clock values in subsequent TrackEvents can be
23222    /// encoded accumulatively and relative to these. This reduces their var-int
23223    /// encoding size.
23224    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
23225    #[prost(int64, optional, tag="7")]
23226    pub reference_thread_time_us: ::core::option::Option<i64>,
23227    #[prost(int64, optional, tag="8")]
23228    pub reference_thread_instruction_count: ::core::option::Option<i64>,
23229    /// To support old UI. New UI should determine default sorting by thread_type.
23230    #[prost(int32, optional, tag="3")]
23231    pub legacy_sort_index: ::core::option::Option<i32>,
23232}
23233/// Nested message and enum types in `ThreadDescriptor`.
23234pub mod thread_descriptor {
23235    // ---------------------------------------------------------------------------
23236    // Deprecated / legacy fields, which will be removed in the future:
23237    // ---------------------------------------------------------------------------
23238
23239    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23240    #[repr(i32)]
23241    pub enum ChromeThreadType {
23242        ChromeThreadUnspecified = 0,
23243        ChromeThreadMain = 1,
23244        ChromeThreadIo = 2,
23245        /// Scheduler:
23246        ChromeThreadPoolBgWorker = 3,
23247        ChromeThreadPoolFgWorker = 4,
23248        ChromeThreadPoolFbBlocking = 5,
23249        ChromeThreadPoolBgBlocking = 6,
23250        ChromeThreadPoolService = 7,
23251        /// Compositor:
23252        ChromeThreadCompositor = 8,
23253        ChromeThreadVizCompositor = 9,
23254        ChromeThreadCompositorWorker = 10,
23255        /// Renderer:
23256        ChromeThreadServiceWorker = 11,
23257        /// Tracing related threads:
23258        ChromeThreadMemoryInfra = 50,
23259        ChromeThreadSamplingProfiler = 51,
23260    }
23261    impl ChromeThreadType {
23262        /// String value of the enum field names used in the ProtoBuf definition.
23263        ///
23264        /// The values are not transformed in any way and thus are considered stable
23265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23266        pub fn as_str_name(&self) -> &'static str {
23267            match self {
23268                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
23269                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
23270                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
23271                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
23272                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
23273                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
23274                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
23275                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
23276                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
23277                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
23278                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
23279                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
23280                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
23281                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
23282            }
23283        }
23284    }
23285}
23286// End of protos/perfetto/trace/track_event/thread_descriptor.proto
23287
23288// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23289
23290/// Describes the attributes for a Chrome process. Must be paired with a
23291/// ProcessDescriptor in the same TrackDescriptor.
23292///
23293/// Next id: 6.
23294#[derive(Clone, PartialEq, ::prost::Message)]
23295pub struct ChromeProcessDescriptor {
23296    /// This is a chrome_enums::ProcessType from
23297    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23298    /// be imported here because of a dependency loop.
23299    #[prost(int32, optional, tag="1")]
23300    pub process_type: ::core::option::Option<i32>,
23301    #[prost(int32, optional, tag="2")]
23302    pub process_priority: ::core::option::Option<i32>,
23303    /// To support old UI. New UI should determine default sorting by process_type.
23304    #[prost(int32, optional, tag="3")]
23305    pub legacy_sort_index: ::core::option::Option<i32>,
23306    /// Name of the hosting app for WebView. Used to match renderer processes to
23307    /// their hosting apps.
23308    #[prost(string, optional, tag="4")]
23309    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
23310    /// The ID to link crashes to trace.
23311    /// Notes:
23312    /// * The ID is per process. So, each trace may contain many IDs, and you need
23313    ///    to look for the ID from crashed process to find the crash report.
23314    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
23315    ///    get an uploaded trace, since uploads could have failed.
23316    /// * On the other hand, if there was a crash during the session and trace was
23317    ///    uploaded, it is very likely to find a crash report with the trace ID.
23318    /// * This is not crash ID or trace ID. It is just a random 64-bit number
23319    ///    recorded in both traces and crashes. It is possible to have collisions,
23320    ///    though very rare.
23321    #[prost(uint64, optional, tag="5")]
23322    pub crash_trace_id: ::core::option::Option<u64>,
23323}
23324// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23325
23326// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23327
23328/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
23329/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23330/// in the same TrackDescriptor.
23331///
23332/// Next id: 3.
23333#[derive(Clone, PartialEq, ::prost::Message)]
23334pub struct ChromeThreadDescriptor {
23335    /// This is a chrome_enums::ThreadType from
23336    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23337    /// be imported here because of a dependency loop.
23338    #[prost(int32, optional, tag="1")]
23339    pub thread_type: ::core::option::Option<i32>,
23340    /// To support old UI. New UI should determine default sorting by thread_type.
23341    #[prost(int32, optional, tag="2")]
23342    pub legacy_sort_index: ::core::option::Option<i32>,
23343    /// Indicates whether the thread's tid specified in the thread descriptor is
23344    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23345    #[prost(bool, optional, tag="3")]
23346    pub is_sandboxed_tid: ::core::option::Option<bool>,
23347}
23348// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23349
23350// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23351
23352/// Defines properties of a counter track, e.g. for built-in counters (thread
23353/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23354/// a specific app component).
23355///
23356/// Counter tracks only support TYPE_COUNTER track events, which specify new
23357/// values for the counter. For counters that require per-slice values, counter
23358/// values can instead be provided in a more efficient encoding via TrackEvent's
23359/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23360/// slice-type events cannot be emitted onto a counter track.
23361///
23362/// Values for counters that are only emitted on a single packet sequence can
23363/// optionally be delta-encoded, see |is_incremental|.
23364///
23365/// Next id: 7.
23366#[derive(Clone, PartialEq, ::prost::Message)]
23367pub struct CounterDescriptor {
23368    /// For built-in counters (e.g. thread time). Custom user-specified counters
23369    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23370    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23371    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23372    pub r#type: ::core::option::Option<i32>,
23373    /// Names of categories of the counter (usually for user-specified counters).
23374    /// In the client library, categories are a way to turn groups of individual
23375    /// counters (or events) on or off.
23376    #[prost(string, repeated, tag="2")]
23377    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23378    /// Type of the counter's values. Built-in counters imply a value for this
23379    /// field.
23380    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23381    pub unit: ::core::option::Option<i32>,
23382    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23383    /// name can be used instead.
23384    #[prost(string, optional, tag="6")]
23385    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23386    /// Multiplication factor of this counter's values, e.g. to supply
23387    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23388    #[prost(int64, optional, tag="4")]
23389    pub unit_multiplier: ::core::option::Option<i64>,
23390    /// Whether values for this counter are provided as delta values. Only
23391    /// supported for counters that are emitted on a single packet-sequence (e.g.
23392    /// thread time). Counter values in subsequent packets on the current packet
23393    /// sequence will be interpreted as delta values from the sequence's most
23394    /// recent value for the counter. When incremental state is cleared, the
23395    /// counter value is considered to be reset to 0. Thus, the first value after
23396    /// incremental state is cleared is effectively an absolute value.
23397    #[prost(bool, optional, tag="5")]
23398    pub is_incremental: ::core::option::Option<bool>,
23399    // TODO(eseckler): Support arguments describing the counter (?).
23400    // repeated DebugAnnotation debug_annotations;
23401
23402    /// When visualizing multiple counter tracks, it is often useful to have them
23403    /// share the same Y-axis range. This allows for easy comparison of their
23404    /// values.
23405    ///
23406    /// All counter tracks with the same |y_axis_share_key| and the same parent
23407    /// track (e.g. grouped under the same process track) will share their y-axis
23408    /// range in the UI.
23409    #[prost(string, optional, tag="7")]
23410    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
23411}
23412/// Nested message and enum types in `CounterDescriptor`.
23413pub mod counter_descriptor {
23414    /// Built-in counters, usually with special meaning in the client library,
23415    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
23416    /// track name from the enum value if none is provided in TrackDescriptor.
23417    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23418    #[repr(i32)]
23419    pub enum BuiltinCounterType {
23420        CounterUnspecified = 0,
23421        // Thread-scoped counters. The thread's track should be specified via
23422        // |parent_uuid| in the TrackDescriptor for such a counter.
23423
23424        /// implies UNIT_TIME_NS.
23425        CounterThreadTimeNs = 1,
23426        /// implies UNIT_COUNT.
23427        CounterThreadInstructionCount = 2,
23428    }
23429    impl BuiltinCounterType {
23430        /// String value of the enum field names used in the ProtoBuf definition.
23431        ///
23432        /// The values are not transformed in any way and thus are considered stable
23433        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23434        pub fn as_str_name(&self) -> &'static str {
23435            match self {
23436                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
23437                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
23438                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
23439            }
23440        }
23441    }
23442    /// Type of the values for the counters - to supply lower granularity units,
23443    /// see also |unit_multiplier|.
23444    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23445    #[repr(i32)]
23446    pub enum Unit {
23447        Unspecified = 0,
23448        TimeNs = 1,
23449        Count = 2,
23450        /// TODO(eseckler): Support more units as necessary.
23451        SizeBytes = 3,
23452    }
23453    impl Unit {
23454        /// String value of the enum field names used in the ProtoBuf definition.
23455        ///
23456        /// The values are not transformed in any way and thus are considered stable
23457        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23458        pub fn as_str_name(&self) -> &'static str {
23459            match self {
23460                Unit::Unspecified => "UNIT_UNSPECIFIED",
23461                Unit::TimeNs => "UNIT_TIME_NS",
23462                Unit::Count => "UNIT_COUNT",
23463                Unit::SizeBytes => "UNIT_SIZE_BYTES",
23464            }
23465        }
23466    }
23467}
23468// End of protos/perfetto/trace/track_event/counter_descriptor.proto
23469
23470// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
23471
23472/// Defines a track for TrackEvents. Slices and instant events on the same track
23473/// will be nested based on their timestamps, see TrackEvent::Type.
23474///
23475/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
23476/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
23477/// when the ring buffer wraps, it should be reemitted whenever incremental state
23478/// is cleared.
23479///
23480/// As a fallback, TrackEvents emitted without an explicit track association will
23481/// be associated with an implicit trace-global track (uuid = 0), see also
23482/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
23483/// TrackDescriptor for this implicit track.
23484///
23485/// Next id: 18.
23486#[derive(Clone, PartialEq, ::prost::Message)]
23487pub struct TrackDescriptor {
23488    /// Unique ID that identifies this track. This ID is global to the whole trace.
23489    /// Producers should ensure that it is unlikely to clash with IDs emitted by
23490    /// other producers. A value of 0 denotes the implicit trace-global track.
23491    ///
23492    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
23493    /// event id + id_scope, pid, and/or tid to compute this ID.
23494    #[prost(uint64, optional, tag="1")]
23495    pub uuid: ::core::option::Option<u64>,
23496    /// A parent track reference can be used to describe relationships between
23497    /// tracks. For example, to define an asynchronous track which is scoped to a
23498    /// specific process, specify the uuid for that process's process track here.
23499    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
23500    /// thread, specify the uuid for that thread's thread track here. In general,
23501    /// setting a parent will *nest* that track under the parent in the UI and in
23502    /// the trace processor data model (with the important exception noted below).
23503    ///
23504    /// If not specified, the track will be a root track, i.e. not nested under any
23505    /// other track.
23506    ///
23507    /// Note: if the `thread` or `process` fields are set, this value will be
23508    /// *ignored* as priority is given to those fields.
23509    ///
23510    /// Note: if the parent is set to a track with `thread` or `process` fields
23511    /// set, the track will *not* be nested under the parent in the UI and in the
23512    /// trace processor data model. Instead, the track will inherit the parent's
23513    /// thread/process association and will appear as a *sibling* of the parent.
23514    /// This semantic exists for back-compat reasons as the UI used to work this
23515    /// way for years and changing this leads to a lot of traces subtly breaking.
23516    /// If you want to force nesting, create *another* intermediate track to act as
23517    /// the parent.
23518    #[prost(uint64, optional, tag="5")]
23519    pub parent_uuid: ::core::option::Option<u64>,
23520    /// A human-readable description of the track providing more context about its
23521    /// data. In the UI, this is shown in a popup when the track's help button is
23522    /// clicked.
23523    #[prost(string, optional, tag="14")]
23524    pub description: ::core::option::Option<::prost::alloc::string::String>,
23525    /// Associate the track with a process, making it the process-global track.
23526    /// There should only be one such track per process (usually for instant
23527    /// events; trace processor uses this fact to detect pid reuse). If you need
23528    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
23529    ///
23530    /// Trace processor will merge events on a process track with slice-type events
23531    /// from other sources (e.g. ftrace) for the same process into a single
23532    /// timeline view.
23533    #[prost(message, optional, tag="3")]
23534    pub process: ::core::option::Option<ProcessDescriptor>,
23535    #[prost(message, optional, tag="6")]
23536    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
23537    /// Associate the track with a thread, indicating that the track's events
23538    /// describe synchronous code execution on the thread. There should only be one
23539    /// such track per thread (trace processor uses this fact to detect tid reuse).
23540    ///
23541    /// Trace processor will merge events on a thread track with slice-type events
23542    /// from other sources (e.g. ftrace) for the same thread into a single timeline
23543    /// view.
23544    #[prost(message, optional, tag="4")]
23545    pub thread: ::core::option::Option<ThreadDescriptor>,
23546    #[prost(message, optional, tag="7")]
23547    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
23548    /// Descriptor for a counter track. If set, the track will only support
23549    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
23550    /// |extra_counter_values|).
23551    #[prost(message, optional, tag="8")]
23552    pub counter: ::core::option::Option<CounterDescriptor>,
23553    /// If true, forces Trace Processor to use separate tracks for track events
23554    /// and system events for the same thread.
23555    ///
23556    /// Track events timestamps in Chrome have microsecond resolution, while
23557    /// system events use nanoseconds. It results in broken event nesting when
23558    /// track events and system events share a track.
23559    #[prost(bool, optional, tag="9")]
23560    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
23561    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
23562    pub child_ordering: ::core::option::Option<i32>,
23563    /// An opaque value which allows specifying how two sibling tracks should be
23564    /// ordered relative to each other: tracks with lower ranks will appear before
23565    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
23566    /// 0.
23567    ///
23568    /// Note: this option is only relevant for tracks where the parent has
23569    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
23570    ///
23571    /// Note: for tracks where the parent has `thread` or `process` are set, this
23572    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
23573    /// See `parent_uuid` for details.
23574    #[prost(int32, optional, tag="12")]
23575    pub sibling_order_rank: ::core::option::Option<i32>,
23576    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
23577    pub sibling_merge_behavior: ::core::option::Option<i32>,
23578    /// Name of the track.
23579    ///
23580    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23581    /// emitted before any `TrackEvent`s on the same track.
23582    ///
23583    /// Note: any name specified here will be *ignored* for the root thread scoped
23584    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23585    /// case, the name of the track is shared by many different data sources and so
23586    /// is centrally controlled by trace processor.
23587    ///
23588    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23589    /// a descriptor *has* to be emitted multiple times (e.g. between different
23590    /// processes), it's recommended to ensure that the name is consistent across
23591    /// all TrackDescriptors with the same `uuid`.
23592    ///
23593    /// If the the above recommendation is not followed and the same uuid is
23594    /// emitted with different names, it is implementation defined how the final
23595    /// name will be chosen and may change at any time.
23596    ///
23597    /// The current implementation of trace processor chooses the name in the
23598    /// following way, depending on the value of the `sibling_merge_behavior`
23599    /// field:
23600    ///
23601    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23602    ///    * The *last* non-null name in the whole trace according to trace order
23603    ///      will be used.
23604    ///    * If no non-null name is present in the whole trace, the trace processor
23605    ///      may fall back to other sources to provide a name for the track (e.g.
23606    ///      the first event name for slice tracks, the counter name for counter
23607    ///      tracks). This is implementation defined and may change at any time.
23608    ///
23609    /// 2. If `sibling_merge_behavior` is set to any other value:
23610    ///    * The first non-null name before the first event on the track *or on any
23611    ///      descendant tracks* is processed will be used. For example, consider
23612    ///      the following sequence of events:
23613    ///        ts=100: TrackDescriptor(uuid=A)
23614    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23615    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23616    ///        ts=400: TrackEvent(track_uuid=B)
23617    ///      In this case, the name for track A will be "Track A" because the
23618    ///      descriptor with the name was emitted before the first event on a
23619    ///      descendant track (B).
23620    ///    * If no non-null name is present before the event is processed, the trace
23621    ///      processor may fall back to other sources to provide a name for the
23622    ///      track (e.g. the first event name for slice tracks, the counter name for
23623    ///      counter tracks). This is implementation defined and may change at any
23624    ///      time.
23625    ///    * Note on processing order: In the standard trace processor pipeline,
23626    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23627    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23628    ///      track, all its descriptors in the trace are processed before its
23629    ///      events. Consequently, the "first non-null name before the first event"
23630    ///      will be the name from the first `TrackDescriptor` for that track in the
23631    ///      trace file that has a non-null name. However, in a streaming parsing
23632    ///      scenario, the timestamp order of descriptors and events is significant,
23633    ///      and a descriptor arriving after an event has been processed will not be
23634    ///      used to name the track.
23635    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
23636    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
23637    /// An opaque value which allows specifying which tracks should be merged
23638    /// together.
23639    ///
23640    /// Only meaningful when `sibling_merge_behavior` is set to
23641    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23642    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
23643    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
23644}
23645/// Nested message and enum types in `TrackDescriptor`.
23646pub mod track_descriptor {
23647    /// Specifies how the UI should display child tracks of this track (i.e. tracks
23648    /// where `parent_uuid` is specified to this track `uuid`). Note that this
23649    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
23650    /// this if it has a good reason not to do so.
23651    ///
23652    /// Note: for tracks where `thread` or `process` are set, this option is
23653    /// *ignored*. See `parent_uuid` for details.
23654    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23655    #[repr(i32)]
23656    pub enum ChildTracksOrdering {
23657        /// The default ordering, with no bearing on how the UI will visualise the
23658        /// tracks.
23659        Unknown = 0,
23660        /// Order tracks by `name` or `static_name` depending on which one has been
23661        /// specified.
23662        Lexicographic = 1,
23663        /// Order tracks by the first `ts` event in a track.
23664        Chronological = 2,
23665        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
23666        /// the lower values will be shown before tracks with higher values. Tracks
23667        /// with no value will be treated as having 0 rank.
23668        Explicit = 3,
23669    }
23670    impl ChildTracksOrdering {
23671        /// String value of the enum field names used in the ProtoBuf definition.
23672        ///
23673        /// The values are not transformed in any way and thus are considered stable
23674        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23675        pub fn as_str_name(&self) -> &'static str {
23676            match self {
23677                ChildTracksOrdering::Unknown => "UNKNOWN",
23678                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
23679                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
23680                ChildTracksOrdering::Explicit => "EXPLICIT",
23681            }
23682        }
23683    }
23684    /// Specifies how the analysis tools should "merge" different sibling
23685    /// TrackEvent tracks.
23686    ///
23687    /// For two or more tracks to be merged, they must be "eligible" siblings.
23688    /// Eligibility is determined by the following rules:
23689    /// 1. All tracks must have the same parent.
23690    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
23691    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
23692    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23693    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
23694    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
23695    ///
23696    /// Specifically:
23697    ///    - in the UI, all tracks which are merged together will be
23698    ///      displayed as a single "visual" track.
23699    ///    - in the trace processor, all tracks which are merged together will be
23700    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
23701    ///      of tracks which have an active event at the same time.
23702    ///
23703    /// When tracks are merged togther, the properties for the merged track will be
23704    /// chosen from the source tracks based on the following rules:
23705    ///    - for `sibling_order_rank`: the rank of the merged track will be the
23706    ///      smallest rank among the source tracks.
23707    ///    - for all other properties: the property taken is unspecified and can
23708    ///      be any value provided by one of the source tracks. This can lead to
23709    ///      non-deterministic behavior.
23710    ///       - examples of other properties include `name`, `child_ordering` etc.
23711    ///       - because of this, it's strongly recommended to ensure that all source
23712    ///         tracks have the same value for these properties.
23713    ///       - the trace processor will also emit an error stat if it detects
23714    ///         that the properties are not the same across all source tracks.
23715    ///
23716    /// Note: merging is done *recursively* so entire trees of tracks can be merged
23717    /// together. To make this clearer, consider an example track hierarchy (in
23718    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
23719    /// track line, like "Updater", is its 'name' property):
23720    ///
23721    ///    Initial track hierarchy:
23722    ///      SystemActivity
23723    ///      ├── AuthService (smk: "auth_main_cluster")
23724    ///      │   └── LoginOp (smk: "login_v1")
23725    ///      ├── AuthService (smk: "auth_main_cluster")
23726    ///      │   └── LoginOp (smk: "login_v1")
23727    ///      ├── AuthService (smk: "auth_backup_cluster")
23728    ///      │   └── GuestOp (smk: "guest_v1")
23729    ///      └── UserProfileService (smk: "profile_cluster")
23730    ///          └── GetProfileOp (smk: "getprofile_v1")
23731    ///
23732    /// Merging outcomes:
23733    ///
23734    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
23735    ///    - The first two "AuthService" tracks merge because they share
23736    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
23737    ///      aligning with recommendations. The merged track is named "AuthService".
23738    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
23739    ///      remains separate, as its `sibling_merge_key` is different.
23740    ///    - "UserProfileService" also remains separate.
23741    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
23742    ///      "LoginOp" get merged as they have the same sibling merge key.
23743    ///
23744    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
23745    ///      SystemActivity
23746    ///      ├── AuthService (merged by smk: "auth_main_cluster")
23747    ///      │   ├── LoginOp (merged by smk: "login_v1")
23748    ///      ├── AuthService (smk: "auth_backup_cluster")
23749    ///      │   └── GuestOp (smk: "guest_v1")
23750    ///      └── UserProfileService (smk: "profile_cluster")
23751    ///          └── GetProfileOp (smk: "getprofile_v1")
23752    ///
23753    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
23754    ///    - All three tracks named "AuthService" merge because they share the same
23755    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
23756    ///      for this merged track would be taken from one of the source tracks
23757    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
23758    ///      relevant if its children had key-based merge behaviors.
23759    ///    - "UserProfileService" remains separate due to its different name.
23760    ///    - Within the single merged "AuthService" track:
23761    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
23762    ///      they have the same name.
23763    ///
23764    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
23765    ///      SystemActivity
23766    ///      ├── AuthService (merged from 3 "AuthService" tracks)
23767    ///      │   ├── LoginOp (smk: "login_v1")
23768    ///      │   └── GuestOp (smk: "guest_v1")
23769    ///      └── UserProfileService (smk: "profile_cluster")
23770    ///          └── GetProfileOp (smk: "getprofile_v1")
23771    ///
23772    /// Note: for tracks where `thread` or `process` are set, this option is
23773    /// *ignored*. See `parent_uuid` for details.
23774    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23775    #[repr(i32)]
23776    pub enum SiblingMergeBehavior {
23777        /// When unspecified or not set, defaults to
23778        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23779        Unspecified = 0,
23780        /// Merge this track with eligible siblings which have the same `name`.
23781        ///
23782        /// This is the default behavior.option.
23783        ///
23784        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
23785        /// worked this way for years and inherited this behavior from
23786        /// chrome://tracing which has worked this way for even longer
23787        ByTrackName = 1,
23788        /// Never merge this track with any siblings. Useful if if this track has a
23789        /// specific meaning and you want to see separately from any others.
23790        None = 2,
23791        /// Merge this track with eligible siblings which have the same
23792        /// `sibling_merge_key`.
23793        BySiblingMergeKey = 3,
23794    }
23795    impl SiblingMergeBehavior {
23796        /// String value of the enum field names used in the ProtoBuf definition.
23797        ///
23798        /// The values are not transformed in any way and thus are considered stable
23799        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23800        pub fn as_str_name(&self) -> &'static str {
23801            match self {
23802                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
23803                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
23804                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
23805                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
23806            }
23807        }
23808    }
23809    /// Name of the track.
23810    ///
23811    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23812    /// emitted before any `TrackEvent`s on the same track.
23813    ///
23814    /// Note: any name specified here will be *ignored* for the root thread scoped
23815    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23816    /// case, the name of the track is shared by many different data sources and so
23817    /// is centrally controlled by trace processor.
23818    ///
23819    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23820    /// a descriptor *has* to be emitted multiple times (e.g. between different
23821    /// processes), it's recommended to ensure that the name is consistent across
23822    /// all TrackDescriptors with the same `uuid`.
23823    ///
23824    /// If the the above recommendation is not followed and the same uuid is
23825    /// emitted with different names, it is implementation defined how the final
23826    /// name will be chosen and may change at any time.
23827    ///
23828    /// The current implementation of trace processor chooses the name in the
23829    /// following way, depending on the value of the `sibling_merge_behavior`
23830    /// field:
23831    ///
23832    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23833    ///    * The *last* non-null name in the whole trace according to trace order
23834    ///      will be used.
23835    ///    * If no non-null name is present in the whole trace, the trace processor
23836    ///      may fall back to other sources to provide a name for the track (e.g.
23837    ///      the first event name for slice tracks, the counter name for counter
23838    ///      tracks). This is implementation defined and may change at any time.
23839    ///
23840    /// 2. If `sibling_merge_behavior` is set to any other value:
23841    ///    * The first non-null name before the first event on the track *or on any
23842    ///      descendant tracks* is processed will be used. For example, consider
23843    ///      the following sequence of events:
23844    ///        ts=100: TrackDescriptor(uuid=A)
23845    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23846    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23847    ///        ts=400: TrackEvent(track_uuid=B)
23848    ///      In this case, the name for track A will be "Track A" because the
23849    ///      descriptor with the name was emitted before the first event on a
23850    ///      descendant track (B).
23851    ///    * If no non-null name is present before the event is processed, the trace
23852    ///      processor may fall back to other sources to provide a name for the
23853    ///      track (e.g. the first event name for slice tracks, the counter name for
23854    ///      counter tracks). This is implementation defined and may change at any
23855    ///      time.
23856    ///    * Note on processing order: In the standard trace processor pipeline,
23857    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23858    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23859    ///      track, all its descriptors in the trace are processed before its
23860    ///      events. Consequently, the "first non-null name before the first event"
23861    ///      will be the name from the first `TrackDescriptor` for that track in the
23862    ///      trace file that has a non-null name. However, in a streaming parsing
23863    ///      scenario, the timestamp order of descriptors and events is significant,
23864    ///      and a descriptor arriving after an event has been processed will not be
23865    ///      used to name the track.
23866    #[derive(Clone, PartialEq, ::prost::Oneof)]
23867    pub enum StaticOrDynamicName {
23868        #[prost(string, tag="2")]
23869        Name(::prost::alloc::string::String),
23870        /// This field is only set by the SDK when perfetto::StaticString is
23871        /// provided.
23872        #[prost(string, tag="10")]
23873        StaticName(::prost::alloc::string::String),
23874        /// Equivalent to name, used just to mark that the data is coming from
23875        /// android.os.Trace.
23876        #[prost(string, tag="13")]
23877        AtraceName(::prost::alloc::string::String),
23878    }
23879    /// An opaque value which allows specifying which tracks should be merged
23880    /// together.
23881    ///
23882    /// Only meaningful when `sibling_merge_behavior` is set to
23883    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23884    #[derive(Clone, PartialEq, ::prost::Oneof)]
23885    pub enum SiblingMergeKeyField {
23886        #[prost(string, tag="16")]
23887        SiblingMergeKey(::prost::alloc::string::String),
23888        #[prost(uint64, tag="17")]
23889        SiblingMergeKeyInt(u64),
23890    }
23891}
23892// End of protos/perfetto/trace/track_event/track_descriptor.proto
23893
23894// Begin of protos/perfetto/trace/translation/translation_table.proto
23895
23896/// Translation rules for the trace processor.
23897/// See the comments for each rule type for specific meaning.
23898#[derive(Clone, PartialEq, ::prost::Message)]
23899pub struct TranslationTable {
23900    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
23901    pub table: ::core::option::Option<translation_table::Table>,
23902}
23903/// Nested message and enum types in `TranslationTable`.
23904pub mod translation_table {
23905    #[derive(Clone, PartialEq, ::prost::Oneof)]
23906    pub enum Table {
23907        #[prost(message, tag="1")]
23908        ChromeHistogram(super::ChromeHistorgramTranslationTable),
23909        #[prost(message, tag="2")]
23910        ChromeUserEvent(super::ChromeUserEventTranslationTable),
23911        #[prost(message, tag="3")]
23912        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
23913        #[prost(message, tag="4")]
23914        SliceName(super::SliceNameTranslationTable),
23915        #[prost(message, tag="5")]
23916        ProcessTrackName(super::ProcessTrackNameTranslationTable),
23917        #[prost(message, tag="6")]
23918        ChromeStudy(super::ChromeStudyTranslationTable),
23919    }
23920}
23921/// Chrome histogram sample hash -> name translation rules.
23922#[derive(Clone, PartialEq, ::prost::Message)]
23923pub struct ChromeHistorgramTranslationTable {
23924    #[prost(map="uint64, string", tag="1")]
23925    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23926}
23927/// Chrome user event action hash -> name translation rules.
23928#[derive(Clone, PartialEq, ::prost::Message)]
23929pub struct ChromeUserEventTranslationTable {
23930    #[prost(map="uint64, string", tag="1")]
23931    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23932}
23933/// Chrome performance mark translation rules.
23934#[derive(Clone, PartialEq, ::prost::Message)]
23935pub struct ChromePerformanceMarkTranslationTable {
23936    #[prost(map="uint32, string", tag="1")]
23937    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23938    #[prost(map="uint32, string", tag="2")]
23939    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23940}
23941/// Raw -> deobfuscated slice name translation rules.
23942#[derive(Clone, PartialEq, ::prost::Message)]
23943pub struct SliceNameTranslationTable {
23944    #[prost(map="string, string", tag="1")]
23945    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23946}
23947/// Raw -> deobfuscated process track name translation rules.
23948#[derive(Clone, PartialEq, ::prost::Message)]
23949pub struct ProcessTrackNameTranslationTable {
23950    #[prost(map="string, string", tag="1")]
23951    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23952}
23953/// Chrome study hash -> name translation rules.
23954#[derive(Clone, PartialEq, ::prost::Message)]
23955pub struct ChromeStudyTranslationTable {
23956    #[prost(map="uint64, string", tag="1")]
23957    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23958}
23959// End of protos/perfetto/trace/translation/translation_table.proto
23960
23961// Begin of protos/perfetto/trace/trigger.proto
23962
23963/// When a TracingSession receives a trigger it records the boot time nanoseconds
23964/// in the TracePacket's timestamp field as well as the name of the producer that
23965/// triggered it. We emit this data so filtering can be done on triggers received
23966/// in the trace.
23967#[derive(Clone, PartialEq, ::prost::Message)]
23968pub struct Trigger {
23969    /// Name of the trigger which was received.
23970    #[prost(string, optional, tag="1")]
23971    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
23972    /// The actual producer that activated |trigger|.
23973    #[prost(string, optional, tag="2")]
23974    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23975    /// The verified UID of the producer.
23976    #[prost(int32, optional, tag="3")]
23977    pub trusted_producer_uid: ::core::option::Option<i32>,
23978    /// The value of stop_delay_ms from the configuration.
23979    #[prost(uint64, optional, tag="4")]
23980    pub stop_delay_ms: ::core::option::Option<u64>,
23981}
23982// End of protos/perfetto/trace/trigger.proto
23983
23984// Begin of protos/perfetto/trace/ui_state.proto
23985
23986/// Common state for UIs visualizing Perfetto traces.
23987/// This message can be appended as a TracePacket by UIs to save the
23988/// visible state (e.g. scroll position/zoom state) for future opening
23989/// of the trace.
23990/// Design doc: go/trace-ui-state.
23991#[derive(Clone, PartialEq, ::prost::Message)]
23992pub struct UiState {
23993    /// The start and end bounds of the viewport of the UI in nanoseconds.
23994    ///
23995    /// This is the absolute time associated to slices and other events in
23996    /// trace processor tables (i.e. the |ts| column of most tables)
23997    #[prost(int64, optional, tag="1")]
23998    pub timeline_start_ts: ::core::option::Option<i64>,
23999    #[prost(int64, optional, tag="2")]
24000    pub timeline_end_ts: ::core::option::Option<i64>,
24001    #[prost(message, optional, tag="3")]
24002    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
24003}
24004/// Nested message and enum types in `UiState`.
24005pub mod ui_state {
24006    /// Indicates that the given process should be highlighted by the UI.
24007    #[derive(Clone, PartialEq, ::prost::Message)]
24008    pub struct HighlightProcess {
24009        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
24010        pub selector: ::core::option::Option<highlight_process::Selector>,
24011    }
24012    /// Nested message and enum types in `HighlightProcess`.
24013    pub mod highlight_process {
24014        #[derive(Clone, PartialEq, ::prost::Oneof)]
24015        pub enum Selector {
24016            /// The pid of the process to highlight. This is useful for UIs to focus
24017            /// on tracks of a particular process in the trace.
24018            ///
24019            /// If more than one process in a trace has the same pid, it is UI
24020            /// implementation specific how the process to be focused will be
24021            /// chosen.
24022            #[prost(uint32, tag="1")]
24023            Pid(u32),
24024            /// The command line of the process to highlight; for most Android apps,
24025            /// this is the package name of the app. This is useful for UIs to focus
24026            /// on a particular app in the trace.
24027            ///
24028            /// If more than one process hasthe same cmdline, it is UI implementation
24029            /// specific how the process to be focused will be chosen.
24030            #[prost(string, tag="2")]
24031            Cmdline(::prost::alloc::string::String),
24032        }
24033    }
24034}
24035// Begin of protos/perfetto/trace/trace_packet.proto
24036
24037/// TracePacket is the root object of a Perfetto trace.
24038/// A Perfetto trace is a linear sequence of TracePacket(s).
24039///
24040/// The tracing service guarantees that all TracePacket(s) written by a given
24041/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
24042/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
24043/// to the Consumer (or written into the trace file).
24044/// TracePacket(s) written by different TraceWriter(s), hence even different
24045/// data sources, can be seen in arbitrary order.
24046/// The consumer can re-establish a total order, if interested, using the packet
24047/// timestamps, after having synchronized the different clocks onto a global
24048/// clock.
24049///
24050/// The tracing service is agnostic of the content of TracePacket, with the
24051/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
24052/// the service itself.
24053///
24054/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
24055///
24056/// Next reserved id: 14 (up to 15).
24057/// Next id: 124.
24058#[derive(Clone, PartialEq, ::prost::Message)]
24059pub struct TracePacket {
24060    /// The timestamp of the TracePacket.
24061    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
24062    /// Android). It can be overridden using a different timestamp_clock_id.
24063    /// The clock domain definition in ClockSnapshot can also override:
24064    /// - The unit (default: 1ns).
24065    /// - The absolute vs delta encoding (default: absolute timestamp).
24066    #[prost(uint64, optional, tag="8")]
24067    pub timestamp: ::core::option::Option<u64>,
24068    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
24069    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
24070    /// producer-defined clock id.
24071    /// If unspecified and if no default per-sequence value has been provided via
24072    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
24073    #[prost(uint32, optional, tag="58")]
24074    pub timestamp_clock_id: ::core::option::Option<u32>,
24075    /// Trusted process id of the producer which generated this packet, written by
24076    /// the service.
24077    #[prost(int32, optional, tag="79")]
24078    pub trusted_pid: ::core::option::Option<i32>,
24079    /// Incrementally emitted interned data, valid only on the packet's sequence
24080    /// (packets with the same |trusted_packet_sequence_id|). The writer will
24081    /// usually emit new interned data in the same TracePacket that first refers to
24082    /// it (since the last reset of interning state). It may also be emitted
24083    /// proactively in advance of referring to them in later packets.
24084    #[prost(message, optional, tag="12")]
24085    pub interned_data: ::core::option::Option<InternedData>,
24086    #[prost(uint32, optional, tag="13")]
24087    pub sequence_flags: ::core::option::Option<u32>,
24088    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
24089    #[prost(bool, optional, tag="41")]
24090    pub incremental_state_cleared: ::core::option::Option<bool>,
24091    /// Default values for fields of later TracePackets emitted on this packet's
24092    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
24093    /// It must be reemitted when incremental state is cleared (see
24094    /// |incremental_state_cleared|).
24095    /// Requires that any future packet emitted on the same sequence specifies
24096    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
24097    /// TracePacketDefaults always override the global defaults for any future
24098    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
24099    #[prost(message, optional, tag="59")]
24100    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
24101    /// Flag set by the service if, for the current packet sequence (see
24102    /// |trusted_packet_sequence_id|), either:
24103    /// * this is the first packet, or
24104    /// * one or multiple packets were dropped since the last packet that the
24105    ///    consumer read from the sequence. This can happen if chunks in the trace
24106    ///    buffer are overridden before the consumer could read them when the trace
24107    ///    is configured in ring buffer mode.
24108    ///
24109    /// When packet loss occurs, incrementally emitted data (including interned
24110    /// data) on the sequence should be considered invalid up until the next packet
24111    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
24112    #[prost(bool, optional, tag="42")]
24113    pub previous_packet_dropped: ::core::option::Option<bool>,
24114    /// Flag set by a producer (starting from SDK v29) if, for the current packet
24115    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
24116    ///
24117    /// This flag can be used for distinguishing the two situations when
24118    /// processing the trace:
24119    /// 1. There are no prior events for the sequence because of data loss, e.g.
24120    ///     due to ring buffer wrapping.
24121    /// 2. There are no prior events for the sequence because it didn't start
24122    ///     before this packet (= there's definitely no preceding data loss).
24123    ///
24124    /// Given that older SDK versions do not support this flag, this flag not
24125    /// being present for a particular sequence does not necessarily imply data
24126    /// loss.
24127    #[prost(bool, optional, tag="87")]
24128    pub first_packet_on_sequence: ::core::option::Option<bool>,
24129    /// The machine ID for identifying trace packets in a multi-machine tracing
24130    /// session. Is emitted by the tracing service for producers running on a
24131    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
24132    #[prost(uint32, optional, tag="98")]
24133    pub machine_id: ::core::option::Option<u32>,
24134    #[prost(oneof="trace_packet::Data", tags="2, 9, 4, 5, 6, 7, 11, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 56, 57, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 80, 81, 82, 83, 84, 86, 91, 61, 64, 60, 43, 44, 1, 36, 50, 72, 88, 92, 90, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 114, 115, 116, 117, 118, 120, 122, 119, 121, 123, 900")]
24135    pub data: ::core::option::Option<trace_packet::Data>,
24136    /// Trusted user id of the producer which generated this packet. Keep in sync
24137    /// with TrustedPacket.trusted_uid.
24138    ///
24139    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24140    /// instead.
24141    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
24142    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
24143    /// Service-assigned identifier of the packet sequence this packet belongs to.
24144    /// Uniquely identifies a producer + writer pair within the tracing session. A
24145    /// value of zero denotes an invalid ID. Keep in sync with
24146    /// TrustedPacket.trusted_packet_sequence_id.
24147    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
24148    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
24149}
24150/// Nested message and enum types in `TracePacket`.
24151pub mod trace_packet {
24152    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24153    #[repr(i32)]
24154    pub enum SequenceFlags {
24155        SeqUnspecified = 0,
24156        /// Set by the writer to indicate that it will re-emit any incremental data
24157        /// for the packet's sequence before referring to it again. This includes
24158        /// interned data as well as periodically emitted data like
24159        /// Process/ThreadDescriptors. This flag only affects the current packet
24160        /// sequence (see |trusted_packet_sequence_id|).
24161        ///
24162        /// When set, this TracePacket and subsequent TracePackets on the same
24163        /// sequence will not refer to any incremental data emitted before this
24164        /// TracePacket. For example, previously emitted interned data will be
24165        /// re-emitted if it is referred to again.
24166        ///
24167        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
24168        /// to skip packets in the sequence until the next one with this flag set, to
24169        /// ensure intact incremental data.
24170        SeqIncrementalStateCleared = 1,
24171        /// This packet requires incremental state, such as TracePacketDefaults or
24172        /// InternedData, to be parsed correctly. The trace reader should skip this
24173        /// packet if incremental state is not valid on this sequence, i.e. if no
24174        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
24175        /// current |trusted_packet_sequence_id|.
24176        SeqNeedsIncrementalState = 2,
24177    }
24178    impl SequenceFlags {
24179        /// String value of the enum field names used in the ProtoBuf definition.
24180        ///
24181        /// The values are not transformed in any way and thus are considered stable
24182        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24183        pub fn as_str_name(&self) -> &'static str {
24184            match self {
24185                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
24186                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
24187                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
24188            }
24189        }
24190    }
24191    #[derive(Clone, PartialEq, ::prost::Oneof)]
24192    pub enum Data {
24193        #[prost(message, tag="2")]
24194        ProcessTree(super::ProcessTree),
24195        #[prost(message, tag="9")]
24196        ProcessStats(super::ProcessStats),
24197        #[prost(message, tag="4")]
24198        InodeFileMap(super::InodeFileMap),
24199        #[prost(message, tag="5")]
24200        ChromeEvents(super::ChromeEventBundle),
24201        #[prost(message, tag="6")]
24202        ClockSnapshot(super::ClockSnapshot),
24203        #[prost(message, tag="7")]
24204        SysStats(super::SysStats),
24205        #[prost(message, tag="11")]
24206        TrackEvent(super::TrackEvent),
24207        // IDs up to 15 are reserved. They take only one byte to encode their
24208        // preamble so should be used for frequent events.
24209
24210        #[prost(message, tag="89")]
24211        TraceUuid(super::TraceUuid),
24212        #[prost(message, tag="33")]
24213        TraceConfig(super::TraceConfig),
24214        #[prost(message, tag="34")]
24215        FtraceStats(super::FtraceStats),
24216        #[prost(message, tag="35")]
24217        TraceStats(super::TraceStats),
24218        #[prost(message, tag="37")]
24219        ProfilePacket(super::ProfilePacket),
24220        #[prost(message, tag="74")]
24221        StreamingAllocation(super::StreamingAllocation),
24222        #[prost(message, tag="75")]
24223        StreamingFree(super::StreamingFree),
24224        #[prost(message, tag="38")]
24225        Battery(super::BatteryCounters),
24226        #[prost(message, tag="40")]
24227        PowerRails(super::PowerRails),
24228        #[prost(message, tag="39")]
24229        AndroidLog(super::AndroidLogPacket),
24230        #[prost(message, tag="45")]
24231        SystemInfo(super::SystemInfo),
24232        #[prost(message, tag="46")]
24233        Trigger(super::Trigger),
24234        #[prost(message, tag="109")]
24235        ChromeTrigger(super::ChromeTrigger),
24236        #[prost(message, tag="47")]
24237        PackagesList(super::PackagesList),
24238        #[prost(message, tag="48")]
24239        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
24240        #[prost(message, tag="49")]
24241        PerfettoMetatrace(super::PerfettoMetatrace),
24242        #[prost(message, tag="51")]
24243        ChromeMetadata(super::ChromeMetadataPacket),
24244        #[prost(message, tag="52")]
24245        GpuCounterEvent(super::GpuCounterEvent),
24246        #[prost(message, tag="53")]
24247        GpuRenderStageEvent(super::GpuRenderStageEvent),
24248        #[prost(message, tag="54")]
24249        StreamingProfilePacket(super::StreamingProfilePacket),
24250        #[prost(message, tag="56")]
24251        HeapGraph(super::HeapGraph),
24252        #[prost(message, tag="57")]
24253        GraphicsFrameEvent(super::GraphicsFrameEvent),
24254        #[prost(message, tag="62")]
24255        VulkanMemoryEvent(super::VulkanMemoryEvent),
24256        #[prost(message, tag="63")]
24257        GpuLog(super::GpuLog),
24258        #[prost(message, tag="65")]
24259        VulkanApiEvent(super::VulkanApiEvent),
24260        #[prost(message, tag="66")]
24261        PerfSample(super::PerfSample),
24262        #[prost(message, tag="67")]
24263        CpuInfo(super::CpuInfo),
24264        #[prost(message, tag="68")]
24265        SmapsPacket(super::SmapsPacket),
24266        #[prost(message, tag="69")]
24267        ServiceEvent(super::TracingServiceEvent),
24268        #[prost(message, tag="70")]
24269        InitialDisplayState(super::InitialDisplayState),
24270        #[prost(message, tag="71")]
24271        GpuMemTotalEvent(super::GpuMemTotalEvent),
24272        #[prost(message, tag="73")]
24273        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
24274        #[prost(message, tag="76")]
24275        FrameTimelineEvent(super::FrameTimelineEvent),
24276        #[prost(message, tag="77")]
24277        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
24278        #[prost(message, tag="78")]
24279        UiState(super::UiState),
24280        #[prost(message, tag="80")]
24281        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
24282        #[prost(message, tag="81")]
24283        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
24284        #[prost(message, tag="82")]
24285        TranslationTable(super::TranslationTable),
24286        #[prost(message, tag="83")]
24287        AndroidGameInterventionList(super::AndroidGameInterventionList),
24288        #[prost(message, tag="84")]
24289        StatsdAtom(super::StatsdAtom),
24290        #[prost(message, tag="86")]
24291        AndroidSystemProperty(super::AndroidSystemProperty),
24292        #[prost(message, tag="91")]
24293        EntityStateResidency(super::EntityStateResidency),
24294        /// Only used in profile packets.
24295        #[prost(message, tag="61")]
24296        ModuleSymbols(super::ModuleSymbols),
24297        #[prost(message, tag="64")]
24298        DeobfuscationMapping(super::DeobfuscationMapping),
24299        /// Only used by TrackEvent.
24300        #[prost(message, tag="60")]
24301        TrackDescriptor(super::TrackDescriptor),
24302        /// Deprecated, use TrackDescriptor instead.
24303        #[prost(message, tag="43")]
24304        ProcessDescriptor(super::ProcessDescriptor),
24305        /// Deprecated, use TrackDescriptor instead.
24306        #[prost(message, tag="44")]
24307        ThreadDescriptor(super::ThreadDescriptor),
24308        /// Events from the Linux kernel ftrace infrastructure.
24309        #[prost(message, tag="1")]
24310        FtraceEvents(super::FtraceEventBundle),
24311        /// This field is emitted at periodic intervals (~10s) and
24312        /// contains always the binary representation of the UUID
24313        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
24314        /// efficiently partition long traces without having to fully parse them.
24315        #[prost(bytes, tag="36")]
24316        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
24317        /// Zero or more proto encoded trace packets compressed using deflate.
24318        /// Each compressed_packets TracePacket (including the two field ids and
24319        /// sizes) should be less than 512KB.
24320        #[prost(bytes, tag="50")]
24321        CompressedPackets(::prost::alloc::vec::Vec<u8>),
24322        /// Data sources can extend the trace proto with custom extension protos (see
24323        /// docs/design-docs/extensions.md). When they do that, the descriptor of
24324        /// their extension proto descriptor is serialized in this packet. This
24325        /// allows trace_processor to deserialize extended messages using reflection
24326        /// even if the extension proto is not checked in the Perfetto repo.
24327        #[prost(message, tag="72")]
24328        ExtensionDescriptor(super::ExtensionDescriptor),
24329        /// Represents a single packet sent or received by the network.
24330        #[prost(message, tag="88")]
24331        NetworkPacket(super::NetworkPacketEvent),
24332        /// Represents one or more packets sent or received by the network.
24333        #[prost(message, tag="92")]
24334        NetworkPacketBundle(super::NetworkPacketBundle),
24335        /// The "range of interest" for track events. See the message definition
24336        /// comments for more details.
24337        #[prost(message, tag="90")]
24338        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24339        /// Winscope traces
24340        #[prost(message, tag="93")]
24341        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
24342        #[prost(message, tag="94")]
24343        SurfaceflingerTransactions(super::TransactionTraceEntry),
24344        #[prost(message, tag="96")]
24345        ShellTransition(super::ShellTransition),
24346        #[prost(message, tag="97")]
24347        ShellHandlerMappings(super::ShellHandlerMappings),
24348        #[prost(message, tag="104")]
24349        ProtologMessage(super::ProtoLogMessage),
24350        #[prost(message, tag="105")]
24351        ProtologViewerConfig(super::ProtoLogViewerConfig),
24352        #[prost(message, tag="112")]
24353        WinscopeExtensions(super::WinscopeExtensions),
24354        /// Events from the Windows etw infrastructure.
24355        #[prost(message, tag="95")]
24356        EtwEvents(super::EtwTraceEventBundle),
24357        #[prost(message, tag="99")]
24358        V8JsCode(super::V8JsCode),
24359        #[prost(message, tag="100")]
24360        V8InternalCode(super::V8InternalCode),
24361        #[prost(message, tag="101")]
24362        V8WasmCode(super::V8WasmCode),
24363        #[prost(message, tag="102")]
24364        V8RegExpCode(super::V8RegExpCode),
24365        #[prost(message, tag="103")]
24366        V8CodeMove(super::V8CodeMove),
24367        /// Clock synchronization with remote machines.
24368        #[prost(message, tag="107")]
24369        RemoteClockSync(super::RemoteClockSync),
24370        #[prost(message, tag="110")]
24371        PixelModemEvents(super::PixelModemEvents),
24372        #[prost(message, tag="111")]
24373        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
24374        #[prost(message, tag="113")]
24375        CloneSnapshotTrigger(super::Trigger),
24376        #[prost(message, tag="114")]
24377        BluetoothTraceEvent(super::BluetoothTraceEvent),
24378        #[prost(message, tag="115")]
24379        KernelWakelockData(super::KernelWakelockData),
24380        #[prost(message, tag="116")]
24381        AppWakelockBundle(super::AppWakelockBundle),
24382        /// Generic events for a standard kernel implementation
24383        #[prost(message, tag="117")]
24384        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
24385        #[prost(message, tag="118")]
24386        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
24387        #[prost(message, tag="120")]
24388        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
24389        #[prost(message, tag="122")]
24390        GenericKernelProcessTree(super::GenericKernelProcessTree),
24391        #[prost(message, tag="119")]
24392        CpuPerUidData(super::CpuPerUidData),
24393        #[prost(message, tag="121")]
24394        EvdevEvent(super::EvdevEvent),
24395        #[prost(message, tag="123")]
24396        UserList(super::AndroidUserList),
24397        /// This field is only used for testing.
24398        /// In previous versions of this proto this field had the id 268435455
24399        /// This caused many problems:
24400        /// - protozero decoder does not handle field ids larger than 999.
24401        /// - old versions of protoc produce Java bindings with syntax errors when
24402        ///    the field id is large enough.
24403        #[prost(message, tag="900")]
24404        ForTesting(super::TestEvent),
24405    }
24406    /// Trusted user id of the producer which generated this packet. Keep in sync
24407    /// with TrustedPacket.trusted_uid.
24408    ///
24409    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24410    /// instead.
24411    #[derive(Clone, PartialEq, ::prost::Oneof)]
24412    pub enum OptionalTrustedUid {
24413        #[prost(int32, tag="3")]
24414        TrustedUid(i32),
24415    }
24416    /// Service-assigned identifier of the packet sequence this packet belongs to.
24417    /// Uniquely identifies a producer + writer pair within the tracing session. A
24418    /// value of zero denotes an invalid ID. Keep in sync with
24419    /// TrustedPacket.trusted_packet_sequence_id.
24420    #[derive(Clone, PartialEq, ::prost::Oneof)]
24421    pub enum OptionalTrustedPacketSequenceId {
24422        #[prost(uint32, tag="10")]
24423        TrustedPacketSequenceId(u32),
24424    }
24425}
24426// End of protos/perfetto/trace/trace_packet.proto
24427
24428// Begin of protos/perfetto/trace/trace.proto
24429
24430#[derive(Clone, PartialEq, ::prost::Message)]
24431pub struct Trace {
24432    #[prost(message, repeated, tag="1")]
24433    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
24434}
24435// End of protos/perfetto/common/tracing_service_state.proto
24436
24437// Begin of protos/perfetto/common/builtin_clock.proto
24438
24439#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24440#[repr(i32)]
24441pub enum BuiltinClock {
24442    Unknown = 0,
24443    Realtime = 1,
24444    RealtimeCoarse = 2,
24445    Monotonic = 3,
24446    MonotonicCoarse = 4,
24447    MonotonicRaw = 5,
24448    Boottime = 6,
24449    Tsc = 9,
24450    Perf = 10,
24451    MaxId = 63,
24452}
24453impl BuiltinClock {
24454    /// String value of the enum field names used in the ProtoBuf definition.
24455    ///
24456    /// The values are not transformed in any way and thus are considered stable
24457    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24458    pub fn as_str_name(&self) -> &'static str {
24459        match self {
24460            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
24461            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
24462            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
24463            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
24464            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
24465            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
24466            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
24467            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
24468            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
24469            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
24470        }
24471    }
24472}
24473// End of protos/perfetto/common/builtin_clock.proto
24474
24475// Begin of protos/perfetto/common/semantic_type.proto
24476
24477/// Semantic types for string fields. This tells the filter what kind of
24478/// data the field contains, so it can apply the right filtering rules.
24479/// See /rfcs/0011-subset-string-filter-rules.md for design details.
24480/// Introduced in: Perfetto v54.
24481#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24482#[repr(i32)]
24483pub enum SemanticType {
24484    Unspecified = 0,
24485    Atrace = 1,
24486    Job = 2,
24487    Wakelock = 3,
24488}
24489impl SemanticType {
24490    /// String value of the enum field names used in the ProtoBuf definition.
24491    ///
24492    /// The values are not transformed in any way and thus are considered stable
24493    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24494    pub fn as_str_name(&self) -> &'static str {
24495        match self {
24496            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
24497            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
24498            SemanticType::Job => "SEMANTIC_TYPE_JOB",
24499            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
24500        }
24501    }
24502}
24503// End of protos/perfetto/config/android/android_input_event_config.proto
24504
24505// Begin of protos/perfetto/common/android_log_constants.proto
24506
24507/// Values from NDK's android/log.h.
24508#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24509#[repr(i32)]
24510pub enum AndroidLogId {
24511    /// MAIN.
24512    LidDefault = 0,
24513    LidRadio = 1,
24514    LidEvents = 2,
24515    LidSystem = 3,
24516    LidCrash = 4,
24517    LidStats = 5,
24518    LidSecurity = 6,
24519    LidKernel = 7,
24520}
24521impl AndroidLogId {
24522    /// String value of the enum field names used in the ProtoBuf definition.
24523    ///
24524    /// The values are not transformed in any way and thus are considered stable
24525    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24526    pub fn as_str_name(&self) -> &'static str {
24527        match self {
24528            AndroidLogId::LidDefault => "LID_DEFAULT",
24529            AndroidLogId::LidRadio => "LID_RADIO",
24530            AndroidLogId::LidEvents => "LID_EVENTS",
24531            AndroidLogId::LidSystem => "LID_SYSTEM",
24532            AndroidLogId::LidCrash => "LID_CRASH",
24533            AndroidLogId::LidStats => "LID_STATS",
24534            AndroidLogId::LidSecurity => "LID_SECURITY",
24535            AndroidLogId::LidKernel => "LID_KERNEL",
24536        }
24537    }
24538}
24539#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24540#[repr(i32)]
24541pub enum AndroidLogPriority {
24542    PrioUnspecified = 0,
24543    /// _DEFAULT, but should never be seen in logs.
24544    PrioUnused = 1,
24545    PrioVerbose = 2,
24546    PrioDebug = 3,
24547    PrioInfo = 4,
24548    PrioWarn = 5,
24549    PrioError = 6,
24550    PrioFatal = 7,
24551}
24552impl AndroidLogPriority {
24553    /// String value of the enum field names used in the ProtoBuf definition.
24554    ///
24555    /// The values are not transformed in any way and thus are considered stable
24556    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24557    pub fn as_str_name(&self) -> &'static str {
24558        match self {
24559            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
24560            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
24561            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
24562            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
24563            AndroidLogPriority::PrioInfo => "PRIO_INFO",
24564            AndroidLogPriority::PrioWarn => "PRIO_WARN",
24565            AndroidLogPriority::PrioError => "PRIO_ERROR",
24566            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
24567        }
24568    }
24569}
24570// End of protos/perfetto/config/android/pixel_modem_config.proto
24571
24572// Begin of protos/perfetto/common/protolog_common.proto
24573
24574#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24575#[repr(i32)]
24576pub enum ProtoLogLevel {
24577    ProtologLevelUndefined = 0,
24578    ProtologLevelDebug = 1,
24579    ProtologLevelVerbose = 2,
24580    ProtologLevelInfo = 3,
24581    ProtologLevelWarn = 4,
24582    ProtologLevelError = 5,
24583    ProtologLevelWtf = 6,
24584}
24585impl ProtoLogLevel {
24586    /// String value of the enum field names used in the ProtoBuf definition.
24587    ///
24588    /// The values are not transformed in any way and thus are considered stable
24589    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24590    pub fn as_str_name(&self) -> &'static str {
24591        match self {
24592            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
24593            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
24594            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
24595            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
24596            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
24597            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
24598            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
24599        }
24600    }
24601}
24602// End of protos/perfetto/config/profiling/perf_event_config.proto
24603
24604// Begin of protos/perfetto/config/statsd/atom_ids.proto
24605
24606/// This enum is obtained by post-processing
24607/// AOSP/frameworks/proto_logging/stats/atoms.proto through
24608/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
24609/// enum value for each proto field defined in the upstream atoms.proto.
24610#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24611#[repr(i32)]
24612pub enum AtomId {
24613    AtomUnspecified = 0,
24614    AtomBleScanStateChanged = 2,
24615    AtomProcessStateChanged = 3,
24616    AtomBleScanResultReceived = 4,
24617    AtomSensorStateChanged = 5,
24618    AtomGpsScanStateChanged = 6,
24619    AtomSyncStateChanged = 7,
24620    AtomScheduledJobStateChanged = 8,
24621    AtomScreenBrightnessChanged = 9,
24622    AtomWakelockStateChanged = 10,
24623    AtomLongPartialWakelockStateChanged = 11,
24624    AtomMobileRadioPowerStateChanged = 12,
24625    AtomWifiRadioPowerStateChanged = 13,
24626    AtomActivityManagerSleepStateChanged = 14,
24627    AtomMemoryFactorStateChanged = 15,
24628    AtomExcessiveCpuUsageReported = 16,
24629    AtomCachedKillReported = 17,
24630    AtomProcessMemoryStatReported = 18,
24631    AtomLauncherEvent = 19,
24632    AtomBatterySaverModeStateChanged = 20,
24633    AtomDeviceIdleModeStateChanged = 21,
24634    AtomDeviceIdlingModeStateChanged = 22,
24635    AtomAudioStateChanged = 23,
24636    AtomMediaCodecStateChanged = 24,
24637    AtomCameraStateChanged = 25,
24638    AtomFlashlightStateChanged = 26,
24639    AtomUidProcessStateChanged = 27,
24640    AtomProcessLifeCycleStateChanged = 28,
24641    AtomScreenStateChanged = 29,
24642    AtomBatteryLevelChanged = 30,
24643    AtomChargingStateChanged = 31,
24644    AtomPluggedStateChanged = 32,
24645    AtomInteractiveStateChanged = 33,
24646    AtomTouchEventReported = 34,
24647    AtomWakeupAlarmOccurred = 35,
24648    AtomKernelWakeupReported = 36,
24649    AtomWifiLockStateChanged = 37,
24650    AtomWifiSignalStrengthChanged = 38,
24651    AtomWifiScanStateChanged = 39,
24652    AtomPhoneSignalStrengthChanged = 40,
24653    AtomSettingChanged = 41,
24654    AtomActivityForegroundStateChanged = 42,
24655    AtomIsolatedUidChanged = 43,
24656    AtomPacketWakeupOccurred = 44,
24657    AtomWallClockTimeShifted = 45,
24658    AtomAnomalyDetected = 46,
24659    AtomAppBreadcrumbReported = 47,
24660    AtomAppStartOccurred = 48,
24661    AtomAppStartCanceled = 49,
24662    AtomAppStartFullyDrawn = 50,
24663    AtomLmkKillOccurred = 51,
24664    AtomPictureInPictureStateChanged = 52,
24665    AtomWifiMulticastLockStateChanged = 53,
24666    AtomAppStartMemoryStateCaptured = 55,
24667    AtomShutdownSequenceReported = 56,
24668    AtomBootSequenceReported = 57,
24669    AtomOverlayStateChanged = 59,
24670    AtomForegroundServiceStateChanged = 60,
24671    AtomCallStateChanged = 61,
24672    AtomKeyguardStateChanged = 62,
24673    AtomKeyguardBouncerStateChanged = 63,
24674    AtomKeyguardBouncerPasswordEntered = 64,
24675    AtomAppDied = 65,
24676    AtomResourceConfigurationChanged = 66,
24677    AtomBluetoothEnabledStateChanged = 67,
24678    AtomBluetoothConnectionStateChanged = 68,
24679    AtomGpsSignalQualityChanged = 69,
24680    AtomUsbConnectorStateChanged = 70,
24681    AtomSpeakerImpedanceReported = 71,
24682    AtomHardwareFailed = 72,
24683    AtomPhysicalDropDetected = 73,
24684    AtomChargeCyclesReported = 74,
24685    AtomMobileConnectionStateChanged = 75,
24686    AtomMobileRadioTechnologyChanged = 76,
24687    AtomUsbDeviceAttached = 77,
24688    AtomAppCrashOccurred = 78,
24689    AtomAnrOccurred = 79,
24690    AtomWtfOccurred = 80,
24691    AtomLowMemReported = 81,
24692    AtomGenericAtom = 82,
24693    AtomVibratorStateChanged = 84,
24694    AtomDeferredJobStatsReported = 85,
24695    AtomThermalThrottling = 86,
24696    AtomBiometricAcquired = 87,
24697    AtomBiometricAuthenticated = 88,
24698    AtomBiometricErrorOccurred = 89,
24699    AtomUiEventReported = 90,
24700    AtomBatteryHealthSnapshot = 91,
24701    AtomSlowIo = 92,
24702    AtomBatteryCausedShutdown = 93,
24703    AtomPhoneServiceStateChanged = 94,
24704    AtomPhoneStateChanged = 95,
24705    AtomUserRestrictionChanged = 96,
24706    AtomSettingsUiChanged = 97,
24707    AtomConnectivityStateChanged = 98,
24708    AtomServiceStateChanged = 99,
24709    AtomServiceLaunchReported = 100,
24710    AtomFlagFlipUpdateOccurred = 101,
24711    AtomBinaryPushStateChanged = 102,
24712    AtomDevicePolicyEvent = 103,
24713    AtomDocsUiFileOpCanceled = 104,
24714    AtomDocsUiFileOpCopyMoveModeReported = 105,
24715    AtomDocsUiFileOpFailure = 106,
24716    AtomDocsUiProviderFileOp = 107,
24717    AtomDocsUiInvalidScopedAccessRequest = 108,
24718    AtomDocsUiLaunchReported = 109,
24719    AtomDocsUiRootVisited = 110,
24720    AtomDocsUiStartupMs = 111,
24721    AtomDocsUiUserActionReported = 112,
24722    AtomWifiEnabledStateChanged = 113,
24723    AtomWifiRunningStateChanged = 114,
24724    AtomAppCompacted = 115,
24725    AtomNetworkDnsEventReported = 116,
24726    AtomDocsUiPickerLaunchedFromReported = 117,
24727    AtomDocsUiPickResultReported = 118,
24728    AtomDocsUiSearchModeReported = 119,
24729    AtomDocsUiSearchTypeReported = 120,
24730    AtomDataStallEvent = 121,
24731    AtomRescuePartyResetReported = 122,
24732    AtomSignedConfigReported = 123,
24733    AtomGnssNiEventReported = 124,
24734    AtomBluetoothLinkLayerConnectionEvent = 125,
24735    AtomBluetoothAclConnectionStateChanged = 126,
24736    AtomBluetoothScoConnectionStateChanged = 127,
24737    AtomAppDowngraded = 128,
24738    AtomAppOptimizedAfterDowngraded = 129,
24739    AtomLowStorageStateChanged = 130,
24740    AtomGnssNfwNotificationReported = 131,
24741    AtomGnssConfigurationReported = 132,
24742    AtomUsbPortOverheatEventReported = 133,
24743    AtomNfcErrorOccurred = 134,
24744    AtomNfcStateChanged = 135,
24745    AtomNfcBeamOccurred = 136,
24746    AtomNfcCardemulationOccurred = 137,
24747    AtomNfcTagOccurred = 138,
24748    AtomNfcHceTransactionOccurred = 139,
24749    AtomSeStateChanged = 140,
24750    AtomSeOmapiReported = 141,
24751    AtomBroadcastDispatchLatencyReported = 142,
24752    AtomAttentionManagerServiceResultReported = 143,
24753    AtomAdbConnectionChanged = 144,
24754    AtomSpeechDspStatReported = 145,
24755    AtomUsbContaminantReported = 146,
24756    AtomWatchdogRollbackOccurred = 147,
24757    AtomBiometricSystemHealthIssueDetected = 148,
24758    AtomBubbleUiChanged = 149,
24759    AtomScheduledJobConstraintChanged = 150,
24760    AtomBluetoothActiveDeviceChanged = 151,
24761    AtomBluetoothA2dpPlaybackStateChanged = 152,
24762    AtomBluetoothA2dpCodecConfigChanged = 153,
24763    AtomBluetoothA2dpCodecCapabilityChanged = 154,
24764    AtomBluetoothA2dpAudioUnderrunReported = 155,
24765    AtomBluetoothA2dpAudioOverrunReported = 156,
24766    AtomBluetoothDeviceRssiReported = 157,
24767    AtomBluetoothDeviceFailedContactCounterReported = 158,
24768    AtomBluetoothDeviceTxPowerLevelReported = 159,
24769    AtomBluetoothHciTimeoutReported = 160,
24770    AtomBluetoothQualityReportReported = 161,
24771    AtomBluetoothDeviceInfoReported = 162,
24772    AtomBluetoothRemoteVersionInfoReported = 163,
24773    AtomBluetoothSdpAttributeReported = 164,
24774    AtomBluetoothBondStateChanged = 165,
24775    AtomBluetoothClassicPairingEventReported = 166,
24776    AtomBluetoothSmpPairingEventReported = 167,
24777    AtomScreenTimeoutExtensionReported = 168,
24778    AtomProcessStartTime = 169,
24779    AtomPermissionGrantRequestResultReported = 170,
24780    AtomBluetoothSocketConnectionStateChanged = 171,
24781    AtomDeviceIdentifierAccessDenied = 172,
24782    AtomBubbleDeveloperErrorReported = 173,
24783    AtomAssistGestureStageReported = 174,
24784    AtomAssistGestureFeedbackReported = 175,
24785    AtomAssistGestureProgressReported = 176,
24786    AtomTouchGestureClassified = 177,
24787    AtomHiddenApiUsed = 178,
24788    AtomStyleUiChanged = 179,
24789    AtomPrivacyIndicatorsInteracted = 180,
24790    AtomAppInstallOnExternalStorageReported = 181,
24791    AtomNetworkStackReported = 182,
24792    AtomAppMovedStorageReported = 183,
24793    AtomBiometricEnrolled = 184,
24794    AtomSystemServerWatchdogOccurred = 185,
24795    AtomTombStoneOccurred = 186,
24796    AtomBluetoothClassOfDeviceReported = 187,
24797    AtomIntelligenceEventReported = 188,
24798    AtomThermalThrottlingSeverityStateChanged = 189,
24799    AtomRoleRequestResultReported = 190,
24800    AtomMediametricsAudiopolicyReported = 191,
24801    AtomMediametricsAudiorecordReported = 192,
24802    AtomMediametricsAudiothreadReported = 193,
24803    AtomMediametricsAudiotrackReported = 194,
24804    AtomMediametricsCodecReported = 195,
24805    AtomMediametricsDrmWidevineReported = 196,
24806    AtomMediametricsExtractorReported = 197,
24807    AtomMediametricsMediadrmReported = 198,
24808    AtomMediametricsNuplayerReported = 199,
24809    AtomMediametricsRecorderReported = 200,
24810    AtomMediametricsDrmmanagerReported = 201,
24811    AtomCarPowerStateChanged = 203,
24812    AtomGarageModeInfo = 204,
24813    AtomTestAtomReported = 205,
24814    AtomContentCaptureCallerMismatchReported = 206,
24815    AtomContentCaptureServiceEvents = 207,
24816    AtomContentCaptureSessionEvents = 208,
24817    AtomContentCaptureFlushed = 209,
24818    AtomLocationManagerApiUsageReported = 210,
24819    AtomReviewPermissionsFragmentResultReported = 211,
24820    AtomRuntimePermissionsUpgradeResult = 212,
24821    AtomGrantPermissionsActivityButtonActions = 213,
24822    AtomLocationAccessCheckNotificationAction = 214,
24823    AtomAppPermissionFragmentActionReported = 215,
24824    AtomAppPermissionFragmentViewed = 216,
24825    AtomAppPermissionsFragmentViewed = 217,
24826    AtomPermissionAppsFragmentViewed = 218,
24827    AtomTextSelectionEvent = 219,
24828    AtomTextLinkifyEvent = 220,
24829    AtomConversationActionsEvent = 221,
24830    AtomLanguageDetectionEvent = 222,
24831    AtomExclusionRectStateChanged = 223,
24832    AtomBackGestureReportedReported = 224,
24833    AtomUpdateEngineUpdateAttemptReported = 225,
24834    AtomUpdateEngineSuccessfulUpdateReported = 226,
24835    AtomCameraActionEvent = 227,
24836    AtomAppCompatibilityChangeReported = 228,
24837    AtomPerfettoUploaded = 229,
24838    AtomVmsClientConnectionStateChanged = 230,
24839    AtomMediaProviderScanOccurred = 233,
24840    AtomMediaContentDeleted = 234,
24841    AtomMediaProviderPermissionRequested = 235,
24842    AtomMediaProviderSchemaChanged = 236,
24843    AtomMediaProviderIdleMaintenanceFinished = 237,
24844    AtomRebootEscrowRecoveryReported = 238,
24845    AtomBootTimeEventDurationReported = 239,
24846    AtomBootTimeEventElapsedTimeReported = 240,
24847    AtomBootTimeEventUtcTimeReported = 241,
24848    AtomBootTimeEventErrorCodeReported = 242,
24849    AtomUserspaceRebootReported = 243,
24850    AtomNotificationReported = 244,
24851    AtomNotificationPanelReported = 245,
24852    AtomNotificationChannelModified = 246,
24853    AtomIntegrityCheckResultReported = 247,
24854    AtomIntegrityRulesPushed = 248,
24855    AtomCbMessageReported = 249,
24856    AtomCbMessageError = 250,
24857    AtomWifiHealthStatReported = 251,
24858    AtomWifiFailureStatReported = 252,
24859    AtomWifiConnectionResultReported = 253,
24860    AtomAppFreezeChanged = 254,
24861    AtomSnapshotMergeReported = 255,
24862    AtomForegroundServiceAppOpSessionEnded = 256,
24863    AtomDisplayJankReported = 257,
24864    AtomAppStandbyBucketChanged = 258,
24865    AtomSharesheetStarted = 259,
24866    AtomRankingSelected = 260,
24867    AtomTvsettingsUiInteracted = 261,
24868    AtomLauncherSnapshot = 262,
24869    AtomPackageInstallerV2Reported = 263,
24870    AtomUserLifecycleJourneyReported = 264,
24871    AtomUserLifecycleEventOccurred = 265,
24872    AtomAccessibilityShortcutReported = 266,
24873    AtomAccessibilityServiceReported = 267,
24874    AtomDocsUiDragAndDropReported = 268,
24875    AtomAppUsageEventOccurred = 269,
24876    AtomAutoRevokeNotificationClicked = 270,
24877    AtomAutoRevokeFragmentAppViewed = 271,
24878    AtomAutoRevokedAppInteraction = 272,
24879    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
24880    AtomEvsUsageStatsReported = 274,
24881    AtomAudioPowerUsageDataReported = 275,
24882    AtomTvTunerStateChanged = 276,
24883    AtomMediaoutputOpSwitchReported = 277,
24884    AtomCbMessageFiltered = 278,
24885    AtomTvTunerDvrStatus = 279,
24886    AtomTvCasSessionOpenStatus = 280,
24887    AtomAssistantInvocationReported = 281,
24888    AtomDisplayWakeReported = 282,
24889    AtomCarUserHalModifyUserRequestReported = 283,
24890    AtomCarUserHalModifyUserResponseReported = 284,
24891    AtomCarUserHalPostSwitchResponseReported = 285,
24892    AtomCarUserHalInitialUserInfoRequestReported = 286,
24893    AtomCarUserHalInitialUserInfoResponseReported = 287,
24894    AtomCarUserHalUserAssociationRequestReported = 288,
24895    AtomCarUserHalSetUserAssociationResponseReported = 289,
24896    AtomNetworkIpProvisioningReported = 290,
24897    AtomNetworkDhcpRenewReported = 291,
24898    AtomNetworkValidationReported = 292,
24899    AtomNetworkStackQuirkReported = 293,
24900    AtomMediametricsAudiorecorddeviceusageReported = 294,
24901    AtomMediametricsAudiothreaddeviceusageReported = 295,
24902    AtomMediametricsAudiotrackdeviceusageReported = 296,
24903    AtomMediametricsAudiodeviceconnectionReported = 297,
24904    AtomBlobCommitted = 298,
24905    AtomBlobLeased = 299,
24906    AtomBlobOpened = 300,
24907    AtomContactsProviderStatusReported = 301,
24908    AtomKeystoreKeyEventReported = 302,
24909    AtomNetworkTetheringReported = 303,
24910    AtomImeTouchReported = 304,
24911    AtomUiInteractionFrameInfoReported = 305,
24912    AtomUiActionLatencyReported = 306,
24913    AtomWifiDisconnectReported = 307,
24914    AtomWifiConnectionStateChanged = 308,
24915    AtomHdmiCecActiveSourceChanged = 309,
24916    AtomHdmiCecMessageReported = 310,
24917    AtomAirplaneMode = 311,
24918    AtomModemRestart = 312,
24919    AtomCarrierIdMismatchReported = 313,
24920    AtomCarrierIdTableUpdated = 314,
24921    AtomDataStallRecoveryReported = 315,
24922    AtomMediametricsMediaparserReported = 316,
24923    AtomTlsHandshakeReported = 317,
24924    AtomTextClassifierApiUsageReported = 318,
24925    AtomCarWatchdogKillStatsReported = 319,
24926    AtomMediametricsPlaybackReported = 320,
24927    AtomMediaNetworkInfoChanged = 321,
24928    AtomMediaPlaybackStateChanged = 322,
24929    AtomMediaPlaybackErrorReported = 323,
24930    AtomMediaPlaybackTrackChanged = 324,
24931    AtomWifiScanReported = 325,
24932    AtomWifiPnoScanReported = 326,
24933    AtomTifTuneChanged = 327,
24934    AtomAutoRotateReported = 328,
24935    AtomPerfettoTrigger = 329,
24936    AtomTranscodingData = 330,
24937    AtomImsServiceEntitlementUpdated = 331,
24938    AtomDeviceRotated = 333,
24939    AtomSimSpecificSettingsRestored = 334,
24940    AtomTextClassifierDownloadReported = 335,
24941    AtomPinStorageEvent = 336,
24942    AtomFaceDownReported = 337,
24943    AtomBluetoothHalCrashReasonReported = 338,
24944    AtomRebootEscrowPreparationReported = 339,
24945    AtomRebootEscrowLskfCaptureReported = 340,
24946    AtomRebootEscrowRebootReported = 341,
24947    AtomBinderLatencyReported = 342,
24948    AtomMediametricsAaudiostreamReported = 343,
24949    AtomMediaTranscodingSessionEnded = 344,
24950    AtomMagnificationUsageReported = 345,
24951    AtomMagnificationModeWithImeOnReported = 346,
24952    AtomAppSearchCallStatsReported = 347,
24953    AtomAppSearchPutDocumentStatsReported = 348,
24954    AtomDeviceControlChanged = 349,
24955    AtomDeviceStateChanged = 350,
24956    AtomInputdeviceRegistered = 351,
24957    AtomSmartspaceCardReported = 352,
24958    AtomAuthPromptAuthenticateInvoked = 353,
24959    AtomAuthManagerCanAuthenticateInvoked = 354,
24960    AtomAuthEnrollActionInvoked = 355,
24961    AtomAuthDeprecatedApiUsed = 356,
24962    AtomUnattendedRebootOccurred = 357,
24963    AtomLongRebootBlockingReported = 358,
24964    AtomLocationTimeZoneProviderStateChanged = 359,
24965    AtomFdtrackEventOccurred = 364,
24966    AtomTimeoutAutoExtendedReported = 365,
24967    AtomAlarmBatchDelivered = 367,
24968    AtomAlarmScheduled = 368,
24969    AtomCarWatchdogIoOveruseStatsReported = 369,
24970    AtomUserLevelHibernationStateChanged = 370,
24971    AtomAppSearchInitializeStatsReported = 371,
24972    AtomAppSearchQueryStatsReported = 372,
24973    AtomAppProcessDied = 373,
24974    AtomNetworkIpReachabilityMonitorReported = 374,
24975    AtomSlowInputEventReported = 375,
24976    AtomAnrOccurredProcessingStarted = 376,
24977    AtomAppSearchRemoveStatsReported = 377,
24978    AtomMediaCodecReported = 378,
24979    AtomPermissionUsageFragmentInteraction = 379,
24980    AtomPermissionDetailsInteraction = 380,
24981    AtomPrivacySensorToggleInteraction = 381,
24982    AtomPrivacyToggleDialogInteraction = 382,
24983    AtomAppSearchOptimizeStatsReported = 383,
24984    AtomNonA11yToolServiceWarningReport = 384,
24985    AtomAppCompatStateChanged = 386,
24986    AtomSizeCompatRestartButtonEventReported = 387,
24987    AtomSplitscreenUiChanged = 388,
24988    AtomNetworkDnsHandshakeReported = 389,
24989    AtomBluetoothCodePathCounter = 390,
24990    AtomBluetoothLeBatchScanReportDelay = 392,
24991    AtomAccessibilityFloatingMenuUiChanged = 393,
24992    AtomNeuralnetworksCompilationCompleted = 394,
24993    AtomNeuralnetworksExecutionCompleted = 395,
24994    AtomNeuralnetworksCompilationFailed = 396,
24995    AtomNeuralnetworksExecutionFailed = 397,
24996    AtomContextHubBooted = 398,
24997    AtomContextHubRestarted = 399,
24998    AtomContextHubLoadedNanoappSnapshotReported = 400,
24999    AtomChreCodeDownloadTransacted = 401,
25000    AtomUwbSessionInited = 402,
25001    AtomUwbSessionClosed = 403,
25002    AtomUwbFirstRangingReceived = 404,
25003    AtomUwbRangingMeasurementReceived = 405,
25004    AtomTextClassifierDownloadWorkScheduled = 406,
25005    AtomTextClassifierDownloadWorkCompleted = 407,
25006    AtomClipboardCleared = 408,
25007    AtomVmCreationRequested = 409,
25008    AtomNearbyDeviceScanStateChanged = 410,
25009    AtomApplicationLocalesChanged = 412,
25010    AtomMediametricsAudiotrackstatusReported = 413,
25011    AtomFoldStateDurationReported = 414,
25012    AtomLocationTimeZoneProviderControllerStateChanged = 415,
25013    AtomDisplayHbmStateChanged = 416,
25014    AtomDisplayHbmBrightnessChanged = 417,
25015    AtomPersistentUriPermissionsFlushed = 418,
25016    AtomEarlyBootCompOsArtifactsCheckReported = 419,
25017    AtomVbmetaDigestReported = 420,
25018    AtomApexInfoGathered = 421,
25019    AtomPvmInfoGathered = 422,
25020    AtomWearSettingsUiInteracted = 423,
25021    AtomTracingServiceReportEvent = 424,
25022    AtomMediametricsAudiorecordstatusReported = 425,
25023    AtomLauncherLatency = 426,
25024    AtomDropboxEntryDropped = 427,
25025    AtomWifiP2pConnectionReported = 428,
25026    AtomGameStateChanged = 429,
25027    AtomHotwordDetectorCreateRequested = 430,
25028    AtomHotwordDetectionServiceInitResultReported = 431,
25029    AtomHotwordDetectionServiceRestarted = 432,
25030    AtomHotwordDetectorKeyphraseTriggered = 433,
25031    AtomHotwordDetectorEvents = 434,
25032    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
25033    AtomContactsIndexerUpdateStatsReported = 440,
25034    AtomAppBackgroundRestrictionsInfo = 441,
25035    AtomMmsSmsProviderGetThreadIdFailed = 442,
25036    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
25037    AtomPermissionReminderNotificationInteracted = 444,
25038    AtomRecentPermissionDecisionsInteracted = 445,
25039    AtomGnssPsdsDownloadReported = 446,
25040    AtomLeAudioConnectionSessionReported = 447,
25041    AtomLeAudioBroadcastSessionReported = 448,
25042    AtomDreamUiEventReported = 449,
25043    AtomTaskManagerEventReported = 450,
25044    AtomCdmAssociationAction = 451,
25045    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
25046    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
25047    AtomAccessibilityTextReadingOptionsChanged = 454,
25048    AtomWifiSetupFailureCrashReported = 455,
25049    AtomUwbDeviceErrorReported = 456,
25050    AtomIsolatedCompilationScheduled = 457,
25051    AtomIsolatedCompilationEnded = 458,
25052    AtomOnsOpportunisticEsimProvisioningComplete = 459,
25053    AtomSystemServerPreWatchdogOccurred = 460,
25054    AtomTelephonyAnomalyDetected = 461,
25055    AtomLetterboxPositionChanged = 462,
25056    AtomRemoteKeyProvisioningAttempt = 463,
25057    AtomRemoteKeyProvisioningNetworkInfo = 464,
25058    AtomRemoteKeyProvisioningTiming = 465,
25059    AtomMediaoutputOpInteractionReport = 466,
25060    AtomSyncExemptionOccurred = 468,
25061    AtomAutofillPresentationEventReported = 469,
25062    AtomDockStateChanged = 470,
25063    AtomSafetySourceStateCollected = 471,
25064    AtomSafetyCenterSystemEventReported = 472,
25065    AtomSafetyCenterInteractionReported = 473,
25066    AtomSettingsProviderSettingChanged = 474,
25067    AtomBroadcastDeliveryEventReported = 475,
25068    AtomServiceRequestEventReported = 476,
25069    AtomProviderAcquisitionEventReported = 477,
25070    AtomBluetoothDeviceNameReported = 478,
25071    AtomCbConfigUpdated = 479,
25072    AtomCbModuleErrorReported = 480,
25073    AtomCbServiceFeatureChanged = 481,
25074    AtomCbReceiverFeatureChanged = 482,
25075    AtomPrivacySignalNotificationInteraction = 484,
25076    AtomPrivacySignalIssueCardInteraction = 485,
25077    AtomPrivacySignalsJobFailure = 486,
25078    AtomVibrationReported = 487,
25079    AtomUwbRangingStart = 489,
25080    AtomAppCompactedV2 = 491,
25081    AtomDisplayBrightnessChanged = 494,
25082    AtomActivityActionBlocked = 495,
25083    AtomNetworkDnsServerSupportReported = 504,
25084    AtomVmBooted = 505,
25085    AtomVmExited = 506,
25086    AtomAmbientBrightnessStatsReported = 507,
25087    AtomMediametricsSpatializercapabilitiesReported = 508,
25088    AtomMediametricsSpatializerdeviceenabledReported = 509,
25089    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
25090    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
25091    AtomHearingAidInfoReported = 513,
25092    AtomDeviceWideJobConstraintChanged = 514,
25093    AtomAmbientModeChanged = 515,
25094    AtomAnrLatencyReported = 516,
25095    AtomResourceApiInfo = 517,
25096    AtomSystemDefaultNetworkChanged = 518,
25097    AtomIwlanSetupDataCallResultReported = 519,
25098    AtomIwlanPdnDisconnectedReasonReported = 520,
25099    AtomAirplaneModeSessionReported = 521,
25100    AtomVmCpuStatusReported = 522,
25101    AtomVmMemStatusReported = 523,
25102    AtomPackageInstallationSessionReported = 524,
25103    AtomDefaultNetworkRematchInfo = 525,
25104    AtomNetworkSelectionPerformance = 526,
25105    AtomNetworkNsdReported = 527,
25106    AtomBluetoothDisconnectionReasonReported = 529,
25107    AtomBluetoothLocalVersionsReported = 530,
25108    AtomBluetoothRemoteSupportedFeaturesReported = 531,
25109    AtomBluetoothLocalSupportedFeaturesReported = 532,
25110    AtomBluetoothGattAppInfo = 533,
25111    AtomBrightnessConfigurationUpdated = 534,
25112    AtomWearMediaOutputSwitcherLaunched = 538,
25113    AtomWearMediaOutputSwitcherFinished = 539,
25114    AtomWearMediaOutputSwitcherConnectionReported = 540,
25115    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
25116    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
25117    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
25118    AtomPackageManagerSnapshotReported = 544,
25119    AtomPackageManagerAppsFilterCacheBuildReported = 545,
25120    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
25121    AtomLauncherImpressionEvent = 547,
25122    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
25123    AtomWsWatchFaceEdited = 551,
25124    AtomWsWatchFaceFavoriteActionReported = 552,
25125    AtomWsWatchFaceSetActionReported = 553,
25126    AtomPackageUninstallationReported = 554,
25127    AtomGameModeChanged = 555,
25128    AtomGameModeConfigurationChanged = 556,
25129    AtomBedtimeModeStateChanged = 557,
25130    AtomNetworkSliceSessionEnded = 558,
25131    AtomNetworkSliceDailyDataUsageReported = 559,
25132    AtomNfcTagTypeOccurred = 560,
25133    AtomNfcAidConflictOccurred = 561,
25134    AtomNfcReaderConflictOccurred = 562,
25135    AtomWsTileListChanged = 563,
25136    AtomGetTypeAccessedWithoutPermission = 564,
25137    AtomMobileBundledAppInfoGathered = 566,
25138    AtomWsWatchFaceComplicationSetChanged = 567,
25139    AtomMediaDrmCreated = 568,
25140    AtomMediaDrmErrored = 569,
25141    AtomMediaDrmSessionOpened = 570,
25142    AtomMediaDrmSessionClosed = 571,
25143    AtomUserSelectedResolution = 572,
25144    AtomUnsafeIntentEventReported = 573,
25145    AtomPerformanceHintSessionReported = 574,
25146    AtomMediametricsMidiDeviceCloseReported = 576,
25147    AtomBiometricTouchReported = 577,
25148    AtomHotwordAudioEgressEventReported = 578,
25149    AtomLocationEnabledStateChanged = 580,
25150    AtomImeRequestFinished = 581,
25151    AtomUsbComplianceWarningsReported = 582,
25152    AtomAppSupportedLocalesChanged = 583,
25153    AtomMediaProviderVolumeRecoveryReported = 586,
25154    AtomBiometricPropertiesCollected = 587,
25155    AtomKernelWakeupAttributed = 588,
25156    AtomScreenStateChangedV2 = 589,
25157    AtomWsBackupActionReported = 590,
25158    AtomWsRestoreActionReported = 591,
25159    AtomDeviceLogAccessEventReported = 592,
25160    AtomMediaSessionUpdated = 594,
25161    AtomWearOobeStateChanged = 595,
25162    AtomWsNotificationUpdated = 596,
25163    AtomNetworkValidationFailureStatsDailyReported = 601,
25164    AtomWsComplicationTapped = 602,
25165    AtomWsNotificationBlocking = 780,
25166    AtomWsNotificationBridgemodeUpdated = 822,
25167    AtomWsNotificationDismissalActioned = 823,
25168    AtomWsNotificationActioned = 824,
25169    AtomWsNotificationLatency = 880,
25170    AtomWifiBytesTransfer = 10000,
25171    AtomWifiBytesTransferByFgBg = 10001,
25172    AtomMobileBytesTransfer = 10002,
25173    AtomMobileBytesTransferByFgBg = 10003,
25174    AtomBluetoothBytesTransfer = 10006,
25175    AtomKernelWakelock = 10004,
25176    AtomSubsystemSleepState = 10005,
25177    AtomCpuTimePerUid = 10009,
25178    AtomCpuTimePerUidFreq = 10010,
25179    AtomWifiActivityInfo = 10011,
25180    AtomModemActivityInfo = 10012,
25181    AtomBluetoothActivityInfo = 10007,
25182    AtomProcessMemoryState = 10013,
25183    AtomSystemElapsedRealtime = 10014,
25184    AtomSystemUptime = 10015,
25185    AtomCpuActiveTime = 10016,
25186    AtomCpuClusterTime = 10017,
25187    AtomDiskSpace = 10018,
25188    AtomRemainingBatteryCapacity = 10019,
25189    AtomFullBatteryCapacity = 10020,
25190    AtomTemperature = 10021,
25191    AtomBinderCalls = 10022,
25192    AtomBinderCallsExceptions = 10023,
25193    AtomLooperStats = 10024,
25194    AtomDiskStats = 10025,
25195    AtomDirectoryUsage = 10026,
25196    AtomAppSize = 10027,
25197    AtomCategorySize = 10028,
25198    AtomProcStats = 10029,
25199    AtomBatteryVoltage = 10030,
25200    AtomNumFingerprintsEnrolled = 10031,
25201    AtomDiskIo = 10032,
25202    AtomPowerProfile = 10033,
25203    AtomProcStatsPkgProc = 10034,
25204    AtomProcessCpuTime = 10035,
25205    AtomCpuTimePerThreadFreq = 10037,
25206    AtomOnDevicePowerMeasurement = 10038,
25207    AtomDeviceCalculatedPowerUse = 10039,
25208    AtomProcessMemoryHighWaterMark = 10042,
25209    AtomBatteryLevel = 10043,
25210    AtomBuildInformation = 10044,
25211    AtomBatteryCycleCount = 10045,
25212    AtomDebugElapsedClock = 10046,
25213    AtomDebugFailingElapsedClock = 10047,
25214    AtomNumFacesEnrolled = 10048,
25215    AtomRoleHolder = 10049,
25216    AtomDangerousPermissionState = 10050,
25217    AtomTrainInfo = 10051,
25218    AtomTimeZoneDataInfo = 10052,
25219    AtomExternalStorageInfo = 10053,
25220    AtomGpuStatsGlobalInfo = 10054,
25221    AtomGpuStatsAppInfo = 10055,
25222    AtomSystemIonHeapSize = 10056,
25223    AtomAppsOnExternalStorageInfo = 10057,
25224    AtomFaceSettings = 10058,
25225    AtomCoolingDevice = 10059,
25226    AtomAppOps = 10060,
25227    AtomProcessSystemIonHeapSize = 10061,
25228    AtomSurfaceflingerStatsGlobalInfo = 10062,
25229    AtomSurfaceflingerStatsLayerInfo = 10063,
25230    AtomProcessMemorySnapshot = 10064,
25231    AtomVmsClientStats = 10065,
25232    AtomNotificationRemoteViews = 10066,
25233    AtomDangerousPermissionStateSampled = 10067,
25234    AtomGraphicsStats = 10068,
25235    AtomRuntimeAppOpAccess = 10069,
25236    AtomIonHeapSize = 10070,
25237    AtomPackageNotificationPreferences = 10071,
25238    AtomPackageNotificationChannelPreferences = 10072,
25239    AtomPackageNotificationChannelGroupPreferences = 10073,
25240    AtomGnssStats = 10074,
25241    AtomAttributedAppOps = 10075,
25242    AtomVoiceCallSession = 10076,
25243    AtomVoiceCallRatUsage = 10077,
25244    AtomSimSlotState = 10078,
25245    AtomSupportedRadioAccessFamily = 10079,
25246    AtomSettingSnapshot = 10080,
25247    AtomBlobInfo = 10081,
25248    AtomDataUsageBytesTransfer = 10082,
25249    AtomBytesTransferByTagAndMetered = 10083,
25250    AtomDndModeRule = 10084,
25251    AtomGeneralExternalStorageAccessStats = 10085,
25252    AtomIncomingSms = 10086,
25253    AtomOutgoingSms = 10087,
25254    AtomCarrierIdTableVersion = 10088,
25255    AtomDataCallSession = 10089,
25256    AtomCellularServiceState = 10090,
25257    AtomCellularDataServiceSwitch = 10091,
25258    AtomSystemMemory = 10092,
25259    AtomImsRegistrationTermination = 10093,
25260    AtomImsRegistrationStats = 10094,
25261    AtomCpuTimePerClusterFreq = 10095,
25262    AtomCpuCyclesPerUidCluster = 10096,
25263    AtomDeviceRotatedData = 10097,
25264    AtomCpuCyclesPerThreadGroupCluster = 10098,
25265    AtomMediaDrmActivityInfo = 10099,
25266    AtomOemManagedBytesTransfer = 10100,
25267    AtomGnssPowerStats = 10101,
25268    AtomTimeZoneDetectorState = 10102,
25269    AtomKeystore2StorageStats = 10103,
25270    AtomRkpPoolStats = 10104,
25271    AtomProcessDmabufMemory = 10105,
25272    AtomPendingAlarmInfo = 10106,
25273    AtomUserLevelHibernatedApps = 10107,
25274    AtomLauncherLayoutSnapshot = 10108,
25275    AtomGlobalHibernatedApps = 10109,
25276    AtomInputEventLatencySketch = 10110,
25277    AtomBatteryUsageStatsBeforeReset = 10111,
25278    AtomBatteryUsageStatsSinceReset = 10112,
25279    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
25280    AtomInstalledIncrementalPackage = 10114,
25281    AtomTelephonyNetworkRequests = 10115,
25282    AtomAppSearchStorageInfo = 10116,
25283    AtomVmstat = 10117,
25284    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
25285    AtomKeystore2KeyCreationWithAuthInfo = 10119,
25286    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
25287    AtomKeystore2AtomWithOverflow = 10121,
25288    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
25289    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
25290    AtomRkpErrorStats = 10124,
25291    AtomKeystore2CrashStats = 10125,
25292    AtomVendorApexInfo = 10126,
25293    AtomAccessibilityShortcutStats = 10127,
25294    AtomAccessibilityFloatingMenuStats = 10128,
25295    AtomDataUsageBytesTransferV2 = 10129,
25296    AtomMediaCapabilities = 10130,
25297    AtomCarWatchdogSystemIoUsageSummary = 10131,
25298    AtomCarWatchdogUidIoUsageSummary = 10132,
25299    AtomImsRegistrationFeatureTagStats = 10133,
25300    AtomRcsClientProvisioningStats = 10134,
25301    AtomRcsAcsProvisioningStats = 10135,
25302    AtomSipDelegateStats = 10136,
25303    AtomSipTransportFeatureTagStats = 10137,
25304    AtomSipMessageResponse = 10138,
25305    AtomSipTransportSession = 10139,
25306    AtomImsDedicatedBearerListenerEvent = 10140,
25307    AtomImsDedicatedBearerEvent = 10141,
25308    AtomImsRegistrationServiceDescStats = 10142,
25309    AtomUceEventStats = 10143,
25310    AtomPresenceNotifyEvent = 10144,
25311    AtomGbaEvent = 10145,
25312    AtomPerSimStatus = 10146,
25313    AtomGpuWorkPerUid = 10147,
25314    AtomPersistentUriPermissionsAmountPerPackage = 10148,
25315    AtomSignedPartitionInfo = 10149,
25316    AtomPinnedFileSizesPerPackage = 10150,
25317    AtomPendingIntentsPerPackage = 10151,
25318    AtomUserInfo = 10152,
25319    AtomTelephonyNetworkRequestsV2 = 10153,
25320    AtomDeviceTelephonyProperties = 10154,
25321    AtomRemoteKeyProvisioningErrorCounts = 10155,
25322    AtomSafetyState = 10156,
25323    AtomIncomingMms = 10157,
25324    AtomOutgoingMms = 10158,
25325    AtomMultiUserInfo = 10160,
25326    AtomNetworkBpfMapInfo = 10161,
25327    AtomOutgoingShortCodeSms = 10162,
25328    AtomConnectivityStateSample = 10163,
25329    AtomNetworkSelectionRematchReasonsInfo = 10164,
25330    AtomGameModeInfo = 10165,
25331    AtomGameModeConfiguration = 10166,
25332    AtomGameModeListener = 10167,
25333    AtomNetworkSliceRequestCount = 10168,
25334    AtomWsTileSnapshot = 10169,
25335    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
25336    AtomProcessState = 10171,
25337    AtomProcessAssociation = 10172,
25338    AtomAdpfSystemComponentInfo = 10173,
25339    AtomNotificationMemoryUse = 10174,
25340    AtomHdrCapabilities = 10175,
25341    AtomWsFavouriteWatchFaceListSnapshot = 10176,
25342    AtomAccessibilityCheckResultReported = 910,
25343    AtomAdaptiveAuthUnlockAfterLockReported = 820,
25344    AtomThermalStatusCalled = 772,
25345    AtomThermalHeadroomCalled = 773,
25346    AtomThermalHeadroomThresholdsCalled = 774,
25347    AtomAdpfHintSessionTidCleanup = 839,
25348    AtomThermalHeadroomThresholds = 10201,
25349    AtomAdpfSessionSnapshot = 10218,
25350    AtomJsscriptengineLatencyReported = 483,
25351    AtomAdServicesApiCalled = 435,
25352    AtomAdServicesMesurementReportsUploaded = 436,
25353    AtomMobileDataDownloadFileGroupStatusReported = 490,
25354    AtomMobileDataDownloadDownloadResultReported = 502,
25355    AtomAdServicesSettingsUsageReported = 493,
25356    AtomBackgroundFetchProcessReported = 496,
25357    AtomUpdateCustomAudienceProcessReported = 497,
25358    AtomRunAdBiddingProcessReported = 498,
25359    AtomRunAdScoringProcessReported = 499,
25360    AtomRunAdSelectionProcessReported = 500,
25361    AtomRunAdBiddingPerCaProcessReported = 501,
25362    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
25363    AtomAdServicesMeasurementRegistrations = 512,
25364    AtomAdServicesGetTopicsReported = 535,
25365    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
25366    AtomAdServicesEpochComputationClassifierReported = 537,
25367    AtomAdServicesBackCompatGetTopicsReported = 598,
25368    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
25369    AtomAdServicesMeasurementDebugKeys = 640,
25370    AtomAdServicesErrorReported = 662,
25371    AtomAdServicesBackgroundJobsExecutionReported = 663,
25372    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
25373    AtomAdServicesMeasurementAttribution = 674,
25374    AtomAdServicesMeasurementJobs = 675,
25375    AtomAdServicesMeasurementWipeout = 676,
25376    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
25377    AtomAdServicesEnrollmentDataStored = 697,
25378    AtomAdServicesEnrollmentFileDownloaded = 698,
25379    AtomAdServicesEnrollmentMatched = 699,
25380    AtomAdServicesConsentMigrated = 702,
25381    AtomAdServicesEnrollmentFailed = 714,
25382    AtomAdServicesMeasurementClickVerification = 756,
25383    AtomAdServicesEncryptionKeyFetched = 765,
25384    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
25385    AtomDestinationRegisteredBeacons = 767,
25386    AtomReportInteractionApiCalled = 768,
25387    AtomInteractionReportingTableCleared = 769,
25388    AtomAppManifestConfigHelperCalled = 788,
25389    AtomAdFilteringProcessJoinCaReported = 793,
25390    AtomAdFilteringProcessAdSelectionReported = 794,
25391    AtomAdCounterHistogramUpdaterReported = 795,
25392    AtomSignatureVerification = 807,
25393    AtomKAnonImmediateSignJoinStatusReported = 808,
25394    AtomKAnonBackgroundJobStatusReported = 809,
25395    AtomKAnonInitializeStatusReported = 810,
25396    AtomKAnonSignStatusReported = 811,
25397    AtomKAnonJoinStatusReported = 812,
25398    AtomKAnonKeyAttestationStatusReported = 813,
25399    AtomGetAdSelectionDataApiCalled = 814,
25400    AtomGetAdSelectionDataBuyerInputGenerated = 815,
25401    AtomBackgroundJobSchedulingReported = 834,
25402    AtomTopicsEncryptionEpochComputationReported = 840,
25403    AtomTopicsEncryptionGetTopicsReported = 841,
25404    AtomAdservicesShellCommandCalled = 842,
25405    AtomUpdateSignalsApiCalled = 843,
25406    AtomEncodingJobRun = 844,
25407    AtomEncodingJsFetch = 845,
25408    AtomEncodingJsExecution = 846,
25409    AtomPersistAdSelectionResultCalled = 847,
25410    AtomServerAuctionKeyFetchCalled = 848,
25411    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
25412    AtomAdServicesMeasurementProcessOdpRegistration = 864,
25413    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
25414    AtomSelectAdsFromOutcomesApiCalled = 876,
25415    AtomReportImpressionApiCalled = 877,
25416    AtomAdServicesEnrollmentTransactionStats = 885,
25417    AtomAdServicesCobaltLoggerEventReported = 902,
25418    AtomAdServicesCobaltPeriodicJobEventReported = 903,
25419    AtomUpdateSignalsProcessReported = 905,
25420    AtomTopicsScheduleEpochJobSettingReported = 930,
25421    AtomAiWallpapersButtonPressed = 706,
25422    AtomAiWallpapersTemplateSelected = 707,
25423    AtomAiWallpapersTermSelected = 708,
25424    AtomAiWallpapersWallpaperSet = 709,
25425    AtomAiWallpapersSessionSummary = 710,
25426    AtomApexInstallationRequested = 732,
25427    AtomApexInstallationStaged = 733,
25428    AtomApexInstallationEnded = 734,
25429    AtomAppSearchSetSchemaStatsReported = 385,
25430    AtomAppSearchSchemaMigrationStatsReported = 579,
25431    AtomAppSearchUsageSearchIntentStatsReported = 825,
25432    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
25433    AtomAppSearchAppsIndexerStatsReported = 909,
25434    AtomArtDatumReported = 332,
25435    AtomArtDeviceDatumReported = 550,
25436    AtomArtDatumDeltaReported = 565,
25437    AtomArtDex2oatReported = 929,
25438    AtomArtDeviceStatus = 10205,
25439    AtomBackgroundDexoptJobEnded = 467,
25440    AtomPrerebootDexoptJobEnded = 883,
25441    AtomOdrefreshReported = 366,
25442    AtomOdsignReported = 548,
25443    AtomAutofillUiEventReported = 603,
25444    AtomAutofillFillRequestReported = 604,
25445    AtomAutofillFillResponseReported = 605,
25446    AtomAutofillSaveEventReported = 606,
25447    AtomAutofillSessionCommitted = 607,
25448    AtomAutofillFieldClassificationEventReported = 659,
25449    AtomCarRecentsEventReported = 770,
25450    AtomCarCalmModeEventReported = 797,
25451    AtomCarWakeupFromSuspendReported = 852,
25452    AtomPluginInitialized = 655,
25453    AtomBluetoothHashedDeviceNameReported = 613,
25454    AtomBluetoothL2capCocClientConnection = 614,
25455    AtomBluetoothL2capCocServerConnection = 615,
25456    AtomBluetoothLeSessionConnected = 656,
25457    AtomRestrictedBluetoothDeviceNameReported = 666,
25458    AtomBluetoothProfileConnectionAttempted = 696,
25459    AtomBluetoothContentProfileErrorReported = 781,
25460    AtomBluetoothRfcommConnectionAttempted = 782,
25461    AtomRemoteDeviceInformationWithMetricId = 862,
25462    AtomLeAppScanStateChanged = 870,
25463    AtomLeRadioScanStopped = 871,
25464    AtomLeScanResultReceived = 872,
25465    AtomLeScanAbused = 873,
25466    AtomLeAdvStateChanged = 874,
25467    AtomLeAdvErrorReported = 875,
25468    AtomA2dpSessionReported = 904,
25469    AtomBluetoothCrossLayerEventReported = 916,
25470    AtomBroadcastAudioSessionReported = 927,
25471    AtomBroadcastAudioSyncReported = 928,
25472    AtomBluetoothRfcommConnectionReportedAtClose = 982,
25473    AtomBluetoothLeConnection = 988,
25474    AtomBroadcastSent = 922,
25475    AtomCameraFeatureCombinationQueryEvent = 900,
25476    AtomCertificateTransparencyLogListStateChanged = 934,
25477    AtomCertificateTransparencyLogListUpdateFailed = 972,
25478    AtomDailyKeepaliveInfoReported = 650,
25479    AtomNetworkRequestStateChanged = 779,
25480    AtomTetheringActiveSessionsReported = 925,
25481    AtomNetworkStatsRecorderFileOperated = 783,
25482    AtomCoreNetworkingTerribleErrorOccurred = 979,
25483    AtomApfSessionInfoReported = 777,
25484    AtomIpClientRaInfoReported = 778,
25485    AtomVpnConnectionStateChanged = 850,
25486    AtomVpnConnectionReported = 851,
25487    AtomCpuPolicy = 10199,
25488    AtomCredentialManagerApiCalled = 585,
25489    AtomCredentialManagerInitPhaseReported = 651,
25490    AtomCredentialManagerCandidatePhaseReported = 652,
25491    AtomCredentialManagerFinalPhaseReported = 653,
25492    AtomCredentialManagerTotalReported = 667,
25493    AtomCredentialManagerFinalnouidReported = 668,
25494    AtomCredentialManagerGetReported = 669,
25495    AtomCredentialManagerAuthClickReported = 670,
25496    AtomCredentialManagerApiv2Called = 671,
25497    AtomCronetEngineCreated = 703,
25498    AtomCronetTrafficReported = 704,
25499    AtomCronetEngineBuilderInitialized = 762,
25500    AtomCronetHttpFlagsInitialized = 763,
25501    AtomCronetInitialized = 764,
25502    AtomDesktopModeUiChanged = 818,
25503    AtomDesktopModeSessionTaskUpdate = 819,
25504    AtomDesktopModeTaskSizeUpdated = 935,
25505    AtomDeviceLockCheckInRequestReported = 726,
25506    AtomDeviceLockProvisioningCompleteReported = 727,
25507    AtomDeviceLockKioskAppRequestReported = 728,
25508    AtomDeviceLockCheckInRetryReported = 789,
25509    AtomDeviceLockProvisionFailureReported = 790,
25510    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
25511    AtomDevicePolicyManagementMode = 10216,
25512    AtomDevicePolicyState = 10217,
25513    AtomDisplayModeDirectorVoteChanged = 792,
25514    AtomExternalDisplayStateChanged = 806,
25515    AtomDndStateChanged = 657,
25516    AtomDreamSettingChanged = 705,
25517    AtomDreamSettingSnapshot = 10192,
25518    AtomExpressEventReported = 528,
25519    AtomExpressHistogramSampleReported = 593,
25520    AtomExpressUidEventReported = 644,
25521    AtomExpressUidHistogramSampleReported = 658,
25522    AtomFederatedComputeApiCalled = 712,
25523    AtomFederatedComputeTrainingEventReported = 771,
25524    AtomExampleIteratorNextLatencyReported = 838,
25525    AtomFullScreenIntentLaunched = 631,
25526    AtomBalAllowed = 632,
25527    AtomInTaskActivityStarted = 685,
25528    AtomDeviceOrientationChanged = 906,
25529    AtomCachedAppsHighWatermark = 10189,
25530    AtomStylusPredictionMetricsReported = 718,
25531    AtomUserRiskEventReported = 725,
25532    AtomMediaProjectionStateChanged = 729,
25533    AtomMediaProjectionTargetChanged = 730,
25534    AtomExcessiveBinderProxyCountReported = 853,
25535    AtomProxyBytesTransferByFgBg = 10200,
25536    AtomMobileBytesTransferByProcState = 10204,
25537    AtomBiometricFrrNotification = 817,
25538    AtomSensitiveContentMediaProjectionSession = 830,
25539    AtomSensitiveNotificationAppProtectionSession = 831,
25540    AtomSensitiveNotificationAppProtectionApplied = 832,
25541    AtomSensitiveNotificationRedaction = 833,
25542    AtomSensitiveContentAppProtection = 835,
25543    AtomAppRestrictionStateChanged = 866,
25544    AtomBatteryUsageStatsPerUid = 10209,
25545    AtomPostgcMemorySnapshot = 924,
25546    AtomPowerSaveTempAllowlistChanged = 926,
25547    AtomAppOpAccessTracked = 931,
25548    AtomContentOrFileUriEventReported = 933,
25549    AtomApplicationGrammaticalInflectionChanged = 584,
25550    AtomSystemGrammaticalInflectionChanged = 816,
25551    AtomBatteryHealth = 10220,
25552    AtomHdmiEarcStatusReported = 701,
25553    AtomHdmiSoundbarModeStatusReported = 724,
25554    AtomHealthConnectApiCalled = 616,
25555    AtomHealthConnectUsageStats = 617,
25556    AtomHealthConnectStorageStats = 618,
25557    AtomHealthConnectApiInvoked = 643,
25558    AtomExerciseRouteApiCalled = 654,
25559    AtomHealthConnectExportInvoked = 907,
25560    AtomHealthConnectImportInvoked = 918,
25561    AtomHealthConnectExportImportStatsReported = 919,
25562    AtomHealthConnectUiImpression = 623,
25563    AtomHealthConnectUiInteraction = 624,
25564    AtomHealthConnectAppOpenedReported = 625,
25565    AtomHotwordEgressSizeAtomReported = 761,
25566    AtomIkeSessionTerminated = 678,
25567    AtomIkeLivenessCheckSessionValidated = 760,
25568    AtomNegotiatedSecurityAssociation = 821,
25569    AtomKeyboardConfigured = 682,
25570    AtomKeyboardSystemsEventReported = 683,
25571    AtomInputdeviceUsageReported = 686,
25572    AtomInputEventLatencyReported = 932,
25573    AtomTouchpadUsage = 10191,
25574    AtomKernelOomKillOccurred = 754,
25575    AtomEmergencyStateChanged = 633,
25576    AtomChreSignificantMotionStateChanged = 868,
25577    AtomPopulationDensityProviderLoadingReported = 1002,
25578    AtomDensityBasedCoarseLocationsUsageReported = 1003,
25579    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
25580    AtomMediaCodecReclaimRequestCompleted = 600,
25581    AtomMediaCodecStarted = 641,
25582    AtomMediaCodecStopped = 642,
25583    AtomMediaCodecRendered = 684,
25584    AtomMediaEditingEndedReported = 798,
25585    AtomMteState = 10181,
25586    AtomMicroxrDeviceBootCompleteReported = 901,
25587    AtomNfcObserveModeStateChanged = 855,
25588    AtomNfcFieldChanged = 856,
25589    AtomNfcPollingLoopNotificationReported = 857,
25590    AtomNfcProprietaryCapabilitiesReported = 858,
25591    AtomOndevicepersonalizationApiCalled = 711,
25592    AtomComponentStateChangedReported = 863,
25593    AtomPdfLoadReported = 859,
25594    AtomPdfApiUsageReported = 860,
25595    AtomPdfSearchReported = 861,
25596    AtomPressureStallInformation = 10229,
25597    AtomPermissionRationaleDialogViewed = 645,
25598    AtomPermissionRationaleDialogActionReported = 646,
25599    AtomAppDataSharingUpdatesNotificationInteraction = 647,
25600    AtomAppDataSharingUpdatesFragmentViewed = 648,
25601    AtomAppDataSharingUpdatesFragmentActionReported = 649,
25602    AtomEnhancedConfirmationDialogResultReported = 827,
25603    AtomEnhancedConfirmationRestrictionCleared = 828,
25604    AtomPhotopickerSessionInfoReported = 886,
25605    AtomPhotopickerApiInfoReported = 887,
25606    AtomPhotopickerUiEventLogged = 888,
25607    AtomPhotopickerMediaItemStatusReported = 889,
25608    AtomPhotopickerPreviewInfoLogged = 890,
25609    AtomPhotopickerMenuInteractionLogged = 891,
25610    AtomPhotopickerBannerInteractionLogged = 892,
25611    AtomPhotopickerMediaLibraryInfoLogged = 893,
25612    AtomPhotopickerPageInfoLogged = 894,
25613    AtomPhotopickerMediaGridSyncInfoReported = 895,
25614    AtomPhotopickerAlbumSyncInfoReported = 896,
25615    AtomPhotopickerSearchInfoReported = 897,
25616    AtomSearchDataExtractionDetailsReported = 898,
25617    AtomEmbeddedPhotopickerInfoReported = 899,
25618    AtomAtom9999 = 9999,
25619    AtomAtom99999 = 99999,
25620    AtomScreenOffReported = 776,
25621    AtomScreenTimeoutOverrideReported = 836,
25622    AtomScreenInteractiveSessionReported = 837,
25623    AtomScreenDimReported = 867,
25624    AtomMediaProviderDatabaseRollbackReported = 784,
25625    AtomBackupSetupStatusReported = 785,
25626    AtomRangingSessionConfigured = 993,
25627    AtomRangingSessionStarted = 994,
25628    AtomRangingSessionClosed = 995,
25629    AtomRangingTechnologyStarted = 996,
25630    AtomRangingTechnologyStopped = 997,
25631    AtomRkpdPoolStats = 664,
25632    AtomRkpdClientOperation = 665,
25633    AtomSandboxApiCalled = 488,
25634    AtomSandboxActivityEventOccurred = 735,
25635    AtomSdkSandboxRestrictedAccessInSession = 796,
25636    AtomSandboxSdkStorage = 10159,
25637    AtomSelinuxAuditLog = 799,
25638    AtomSettingsSpaReported = 622,
25639    AtomTestExtensionAtomReported = 660,
25640    AtomTestRestrictedAtomReported = 672,
25641    AtomStatsSocketLossReported = 752,
25642    AtomLockscreenShortcutSelected = 611,
25643    AtomLockscreenShortcutTriggered = 612,
25644    AtomLauncherImpressionEventV2 = 716,
25645    AtomDisplaySwitchLatencyTracked = 753,
25646    AtomNotificationListenerService = 829,
25647    AtomNavHandleTouchPoints = 869,
25648    AtomCommunalHubWidgetEventReported = 908,
25649    AtomCommunalHubSnapshot = 10226,
25650    AtomEmergencyNumberDialed = 637,
25651    AtomCallStats = 10221,
25652    AtomCallAudioRouteStats = 10222,
25653    AtomTelecomApiStats = 10223,
25654    AtomTelecomErrorStats = 10224,
25655    AtomCellularRadioPowerStateChanged = 713,
25656    AtomEmergencyNumbersInfo = 10180,
25657    AtomDataNetworkValidation = 10207,
25658    AtomDataRatStateChanged = 854,
25659    AtomConnectedChannelChanged = 882,
25660    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
25661    AtomQualifiedRatListChanged = 634,
25662    AtomQnsImsCallDropStats = 635,
25663    AtomQnsFallbackRestrictionChanged = 636,
25664    AtomQnsRatPreferenceMismatchInfo = 10177,
25665    AtomQnsHandoverTimeMillis = 10178,
25666    AtomQnsHandoverPingpong = 10179,
25667    AtomSatelliteController = 10182,
25668    AtomSatelliteSession = 10183,
25669    AtomSatelliteIncomingDatagram = 10184,
25670    AtomSatelliteOutgoingDatagram = 10185,
25671    AtomSatelliteProvision = 10186,
25672    AtomSatelliteSosMessageRecommender = 10187,
25673    AtomCarrierRoamingSatelliteSession = 10211,
25674    AtomCarrierRoamingSatelliteControllerStats = 10212,
25675    AtomControllerStatsPerPackage = 10213,
25676    AtomSatelliteEntitlement = 10214,
25677    AtomSatelliteConfigUpdater = 10215,
25678    AtomSatelliteAccessController = 10219,
25679    AtomCellularIdentifierDisclosed = 800,
25680    AtomThreadnetworkTelemetryDataReported = 738,
25681    AtomThreadnetworkTopoEntryRepeated = 739,
25682    AtomThreadnetworkDeviceInfoReported = 740,
25683    AtomBootIntegrityInfoReported = 775,
25684    AtomTvLowPowerStandbyPolicy = 679,
25685    AtomExternalTvInputEvent = 717,
25686    AtomTestUprobestatsAtomReported = 915,
25687    AtomUwbActivityInfo = 10188,
25688    AtomMediatorUpdated = 721,
25689    AtomSysproxyBluetoothBytesTransfer = 10196,
25690    AtomSysproxyConnectionUpdated = 786,
25691    AtomWearCompanionConnectionState = 921,
25692    AtomMediaActionReported = 608,
25693    AtomMediaControlsLaunched = 609,
25694    AtomMediaSessionStateChanged = 677,
25695    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
25696    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
25697    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
25698    AtomWearModeStateChanged = 715,
25699    AtomRendererInitialized = 736,
25700    AtomSchemaVersionReceived = 737,
25701    AtomLayoutInspected = 741,
25702    AtomLayoutExpressionInspected = 742,
25703    AtomLayoutAnimationsInspected = 743,
25704    AtomMaterialComponentsInspected = 744,
25705    AtomTileRequested = 745,
25706    AtomStateResponseReceived = 746,
25707    AtomTileResponseReceived = 747,
25708    AtomInflationFinished = 748,
25709    AtomInflationFailed = 749,
25710    AtomIgnoredInflationFailuresReported = 750,
25711    AtomDrawableRendered = 751,
25712    AtomWearTimeSyncRequested = 911,
25713    AtomWearTimeUpdateStarted = 912,
25714    AtomWearTimeSyncAttemptCompleted = 913,
25715    AtomWearTimeChanged = 914,
25716    AtomWearAdaptiveSuspendStatsReported = 619,
25717    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
25718    AtomWearPowerAnomalyServiceEventStatsReported = 621,
25719    AtomWsWearTimeSession = 610,
25720    AtomWsIncomingCallActionReported = 626,
25721    AtomWsCallDisconnectionReported = 627,
25722    AtomWsCallDurationReported = 628,
25723    AtomWsCallUserExperienceLatencyReported = 629,
25724    AtomWsCallInteractionReported = 630,
25725    AtomWsOnBodyStateChanged = 787,
25726    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
25727    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
25728    AtomWsComplicationsImpactedNotificationEventReported = 804,
25729    AtomWsRemoteEventUsageReported = 920,
25730    AtomWsBugreportRequested = 936,
25731    AtomWsBugreportTriggered = 937,
25732    AtomWsBugreportFinished = 938,
25733    AtomWsBugreportResultReceived = 939,
25734    AtomWsStandaloneModeSnapshot = 10197,
25735    AtomWsFavoriteWatchFaceSnapshot = 10206,
25736    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
25737    AtomWsWatchFaceCustomizationSnapshot = 10227,
25738    AtomWearPowerMenuOpened = 731,
25739    AtomWearAssistantOpened = 755,
25740    AtomFirstOverlayStateChanged = 917,
25741    AtomWifiAwareNdpReported = 638,
25742    AtomWifiAwareAttachReported = 639,
25743    AtomWifiSelfRecoveryTriggered = 661,
25744    AtomSoftApStarted = 680,
25745    AtomSoftApStopped = 681,
25746    AtomWifiLockReleased = 687,
25747    AtomWifiLockDeactivated = 688,
25748    AtomWifiConfigSaved = 689,
25749    AtomWifiAwareResourceUsingChanged = 690,
25750    AtomWifiAwareHalApiCalled = 691,
25751    AtomWifiLocalOnlyRequestReceived = 692,
25752    AtomWifiLocalOnlyRequestScanTriggered = 693,
25753    AtomWifiThreadTaskExecuted = 694,
25754    AtomWifiStateChanged = 700,
25755    AtomPnoScanStarted = 719,
25756    AtomPnoScanStopped = 720,
25757    AtomWifiIsUnusableReported = 722,
25758    AtomWifiApCapabilitiesReported = 723,
25759    AtomSoftApStateChanged = 805,
25760    AtomScorerPredictionResultReported = 884,
25761    AtomWifiAwareCapabilities = 10190,
25762    AtomWifiModuleInfo = 10193,
25763    AtomWifiSettingInfo = 10194,
25764    AtomWifiComplexSettingInfo = 10195,
25765    AtomWifiConfiguredNetworkInfo = 10198,
25766}
25767impl AtomId {
25768    /// String value of the enum field names used in the ProtoBuf definition.
25769    ///
25770    /// The values are not transformed in any way and thus are considered stable
25771    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25772    pub fn as_str_name(&self) -> &'static str {
25773        match self {
25774            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
25775            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
25776            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
25777            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
25778            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
25779            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
25780            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
25781            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
25782            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
25783            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
25784            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
25785            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
25786            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
25787            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
25788            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
25789            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
25790            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
25791            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
25792            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
25793            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
25794            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
25795            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
25796            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
25797            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
25798            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
25799            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
25800            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
25801            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
25802            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
25803            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
25804            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
25805            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
25806            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
25807            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
25808            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
25809            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
25810            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
25811            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
25812            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
25813            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
25814            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
25815            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
25816            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
25817            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
25818            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
25819            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
25820            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
25821            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
25822            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
25823            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
25824            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
25825            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
25826            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
25827            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
25828            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
25829            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
25830            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
25831            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
25832            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
25833            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
25834            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
25835            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
25836            AtomId::AtomAppDied => "ATOM_APP_DIED",
25837            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
25838            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
25839            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
25840            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
25841            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
25842            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
25843            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
25844            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
25845            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
25846            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
25847            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
25848            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
25849            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
25850            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
25851            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
25852            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
25853            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
25854            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
25855            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
25856            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
25857            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
25858            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
25859            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
25860            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
25861            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
25862            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
25863            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
25864            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
25865            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
25866            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
25867            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
25868            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
25869            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
25870            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
25871            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
25872            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
25873            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
25874            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
25875            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
25876            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
25877            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
25878            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
25879            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
25880            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
25881            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
25882            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
25883            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
25884            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
25885            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
25886            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
25887            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
25888            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
25889            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
25890            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
25891            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
25892            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
25893            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
25894            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
25895            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
25896            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
25897            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
25898            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
25899            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
25900            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
25901            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
25902            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
25903            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
25904            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
25905            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
25906            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
25907            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
25908            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
25909            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
25910            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
25911            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
25912            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
25913            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
25914            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
25915            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
25916            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
25917            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
25918            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
25919            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
25920            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
25921            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
25922            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
25923            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
25924            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
25925            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
25926            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
25927            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
25928            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
25929            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
25930            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
25931            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
25932            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
25933            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
25934            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
25935            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
25936            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
25937            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
25938            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
25939            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
25940            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
25941            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
25942            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
25943            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
25944            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
25945            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
25946            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
25947            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
25948            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
25949            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
25950            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
25951            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
25952            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
25953            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
25954            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
25955            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
25956            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
25957            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
25958            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
25959            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
25960            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
25961            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
25962            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
25963            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
25964            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
25965            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
25966            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
25967            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
25968            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
25969            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
25970            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
25971            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
25972            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
25973            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
25974            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
25975            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
25976            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
25977            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
25978            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
25979            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
25980            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
25981            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
25982            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
25983            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
25984            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
25985            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
25986            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
25987            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
25988            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
25989            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
25990            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
25991            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
25992            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
25993            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
25994            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
25995            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
25996            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
25997            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
25998            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
25999            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
26000            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
26001            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
26002            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
26003            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
26004            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
26005            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
26006            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
26007            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
26008            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
26009            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
26010            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
26011            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
26012            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
26013            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
26014            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
26015            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
26016            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
26017            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
26018            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
26019            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
26020            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
26021            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
26022            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
26023            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
26024            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
26025            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
26026            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
26027            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
26028            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
26029            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
26030            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
26031            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
26032            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
26033            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
26034            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
26035            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
26036            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
26037            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
26038            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
26039            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
26040            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
26041            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
26042            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
26043            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
26044            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
26045            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
26046            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
26047            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
26048            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
26049            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
26050            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
26051            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
26052            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
26053            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
26054            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
26055            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
26056            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
26057            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
26058            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
26059            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
26060            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
26061            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
26062            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
26063            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
26064            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
26065            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
26066            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
26067            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
26068            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
26069            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
26070            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
26071            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
26072            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
26073            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
26074            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
26075            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
26076            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
26077            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
26078            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
26079            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
26080            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
26081            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
26082            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
26083            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
26084            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
26085            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
26086            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
26087            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
26088            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
26089            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
26090            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
26091            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
26092            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
26093            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
26094            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
26095            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
26096            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
26097            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
26098            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
26099            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
26100            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
26101            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
26102            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
26103            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
26104            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
26105            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
26106            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
26107            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
26108            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
26109            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
26110            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
26111            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
26112            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
26113            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
26114            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
26115            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
26116            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
26117            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
26118            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
26119            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
26120            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
26121            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
26122            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
26123            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
26124            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
26125            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
26126            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
26127            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
26128            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
26129            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
26130            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
26131            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
26132            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
26133            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
26134            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
26135            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
26136            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
26137            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
26138            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
26139            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
26140            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
26141            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
26142            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
26143            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
26144            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
26145            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
26146            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
26147            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
26148            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
26149            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
26150            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
26151            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
26152            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
26153            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
26154            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
26155            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
26156            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
26157            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
26158            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
26159            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
26160            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
26161            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
26162            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
26163            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
26164            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
26165            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
26166            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
26167            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
26168            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
26169            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
26170            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
26171            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
26172            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
26173            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
26174            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
26175            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
26176            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
26177            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
26178            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
26179            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
26180            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
26181            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
26182            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
26183            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
26184            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
26185            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
26186            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
26187            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
26188            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
26189            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
26190            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
26191            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
26192            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
26193            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
26194            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
26195            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
26196            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
26197            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
26198            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
26199            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
26200            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
26201            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
26202            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
26203            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
26204            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
26205            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
26206            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
26207            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
26208            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
26209            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
26210            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
26211            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
26212            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
26213            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
26214            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
26215            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
26216            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
26217            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
26218            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
26219            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
26220            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
26221            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
26222            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
26223            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
26224            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
26225            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
26226            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
26227            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
26228            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
26229            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
26230            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
26231            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
26232            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
26233            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
26234            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
26235            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
26236            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
26237            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
26238            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
26239            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
26240            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
26241            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
26242            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
26243            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
26244            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
26245            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
26246            AtomId::AtomVmExited => "ATOM_VM_EXITED",
26247            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
26248            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
26249            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
26250            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
26251            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
26252            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
26253            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
26254            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
26255            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
26256            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
26257            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
26258            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
26259            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
26260            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
26261            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
26262            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
26263            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
26264            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
26265            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
26266            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
26267            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
26268            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
26269            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
26270            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
26271            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
26272            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
26273            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
26274            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
26275            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
26276            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
26277            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
26278            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
26279            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
26280            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
26281            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
26282            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
26283            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
26284            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
26285            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
26286            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
26287            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
26288            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
26289            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
26290            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
26291            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
26292            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
26293            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
26294            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
26295            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
26296            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
26297            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
26298            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
26299            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
26300            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
26301            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
26302            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
26303            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
26304            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
26305            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
26306            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
26307            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
26308            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
26309            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
26310            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
26311            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
26312            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
26313            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
26314            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
26315            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
26316            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
26317            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
26318            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
26319            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
26320            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
26321            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
26322            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
26323            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
26324            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
26325            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
26326            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
26327            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
26328            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
26329            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
26330            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
26331            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
26332            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
26333            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
26334            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
26335            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
26336            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
26337            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
26338            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
26339            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
26340            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
26341            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
26342            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
26343            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
26344            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
26345            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
26346            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
26347            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
26348            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
26349            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
26350            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
26351            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
26352            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
26353            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
26354            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
26355            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
26356            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
26357            AtomId::AtomAppSize => "ATOM_APP_SIZE",
26358            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
26359            AtomId::AtomProcStats => "ATOM_PROC_STATS",
26360            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
26361            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
26362            AtomId::AtomDiskIo => "ATOM_DISK_IO",
26363            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
26364            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
26365            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
26366            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
26367            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
26368            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
26369            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
26370            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
26371            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
26372            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
26373            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
26374            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
26375            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
26376            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
26377            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
26378            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
26379            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
26380            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
26381            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
26382            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
26383            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
26384            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
26385            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
26386            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
26387            AtomId::AtomAppOps => "ATOM_APP_OPS",
26388            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
26389            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
26390            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
26391            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
26392            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
26393            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
26394            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
26395            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
26396            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
26397            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
26398            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
26399            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
26400            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
26401            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
26402            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
26403            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
26404            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
26405            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
26406            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
26407            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
26408            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
26409            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
26410            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
26411            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
26412            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
26413            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
26414            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
26415            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
26416            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
26417            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
26418            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
26419            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
26420            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
26421            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
26422            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
26423            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
26424            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
26425            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
26426            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
26427            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
26428            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
26429            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
26430            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
26431            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
26432            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
26433            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
26434            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
26435            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
26436            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
26437            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
26438            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
26439            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
26440            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
26441            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
26442            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
26443            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
26444            AtomId::AtomVmstat => "ATOM_VMSTAT",
26445            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
26446            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
26447            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
26448            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
26449            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
26450            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
26451            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
26452            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
26453            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
26454            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
26455            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
26456            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
26457            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
26458            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
26459            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
26460            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
26461            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
26462            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
26463            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
26464            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
26465            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
26466            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
26467            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
26468            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
26469            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
26470            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
26471            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
26472            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
26473            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
26474            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
26475            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
26476            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
26477            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
26478            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
26479            AtomId::AtomUserInfo => "ATOM_USER_INFO",
26480            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
26481            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
26482            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
26483            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
26484            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
26485            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
26486            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
26487            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
26488            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
26489            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
26490            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
26491            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
26492            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
26493            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
26494            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
26495            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
26496            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
26497            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
26498            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
26499            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
26500            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
26501            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
26502            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
26503            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
26504            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
26505            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
26506            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
26507            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
26508            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
26509            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
26510            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
26511            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
26512            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
26513            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
26514            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
26515            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
26516            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
26517            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
26518            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
26519            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
26520            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
26521            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
26522            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
26523            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
26524            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
26525            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
26526            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
26527            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26528            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
26529            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26530            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
26531            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
26532            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
26533            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
26534            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
26535            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
26536            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
26537            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
26538            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
26539            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
26540            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
26541            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
26542            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
26543            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
26544            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
26545            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
26546            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
26547            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
26548            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
26549            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
26550            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
26551            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
26552            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
26553            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
26554            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
26555            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
26556            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
26557            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
26558            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
26559            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
26560            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
26561            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
26562            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
26563            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
26564            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
26565            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
26566            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
26567            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
26568            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
26569            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
26570            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
26571            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
26572            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
26573            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
26574            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
26575            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
26576            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
26577            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
26578            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
26579            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
26580            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
26581            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
26582            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
26583            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
26584            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
26585            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
26586            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
26587            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
26588            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
26589            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
26590            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
26591            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
26592            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
26593            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
26594            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
26595            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
26596            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
26597            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
26598            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
26599            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
26600            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
26601            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
26602            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
26603            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
26604            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
26605            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
26606            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
26607            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
26608            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
26609            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
26610            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
26611            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
26612            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
26613            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
26614            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
26615            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
26616            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
26617            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
26618            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
26619            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
26620            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
26621            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
26622            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
26623            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
26624            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
26625            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
26626            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
26627            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
26628            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
26629            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
26630            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
26631            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
26632            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
26633            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
26634            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
26635            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
26636            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
26637            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
26638            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
26639            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
26640            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
26641            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
26642            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
26643            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
26644            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
26645            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
26646            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
26647            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
26648            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
26649            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
26650            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
26651            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
26652            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
26653            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
26654            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
26655            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
26656            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
26657            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
26658            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
26659            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
26660            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
26661            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
26662            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
26663            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
26664            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
26665            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
26666            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
26667            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
26668            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
26669            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
26670            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
26671            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
26672            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
26673            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
26674            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
26675            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
26676            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
26677            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
26678            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
26679            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
26680            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
26681            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
26682            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
26683            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
26684            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
26685            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
26686            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
26687            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
26688            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
26689            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
26690            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
26691            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
26692            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
26693            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
26694            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
26695            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
26696            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
26697            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
26698            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
26699            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
26700            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
26701            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
26702            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
26703            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
26704            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
26705            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
26706            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
26707            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
26708            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
26709            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
26710            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
26711            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
26712            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
26713            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
26714            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
26715            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
26716            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
26717            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
26718            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
26719            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
26720            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
26721            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
26722            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
26723            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
26724            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
26725            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
26726            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
26727            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
26728            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
26729            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
26730            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
26731            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
26732            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
26733            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
26734            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
26735            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
26736            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
26737            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
26738            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
26739            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
26740            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
26741            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
26742            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
26743            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
26744            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
26745            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
26746            AtomId::AtomMteState => "ATOM_MTE_STATE",
26747            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
26748            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
26749            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
26750            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
26751            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
26752            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
26753            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
26754            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
26755            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
26756            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
26757            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
26758            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
26759            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
26760            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
26761            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
26762            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
26763            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
26764            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
26765            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
26766            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
26767            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
26768            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
26769            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
26770            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
26771            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
26772            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
26773            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
26774            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
26775            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
26776            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
26777            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
26778            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
26779            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
26780            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
26781            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
26782            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
26783            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
26784            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
26785            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
26786            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
26787            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
26788            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
26789            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
26790            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
26791            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
26792            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
26793            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
26794            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
26795            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
26796            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
26797            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
26798            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
26799            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
26800            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
26801            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
26802            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
26803            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
26804            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
26805            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
26806            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
26807            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
26808            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
26809            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
26810            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
26811            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
26812            AtomId::AtomCallStats => "ATOM_CALL_STATS",
26813            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
26814            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
26815            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
26816            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
26817            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
26818            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
26819            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
26820            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
26821            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
26822            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
26823            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
26824            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
26825            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
26826            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
26827            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
26828            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
26829            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
26830            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
26831            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
26832            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
26833            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
26834            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
26835            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
26836            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
26837            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
26838            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
26839            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
26840            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
26841            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
26842            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
26843            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
26844            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
26845            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
26846            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
26847            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
26848            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
26849            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
26850            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
26851            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
26852            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
26853            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
26854            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
26855            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
26856            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
26857            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
26858            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
26859            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
26860            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
26861            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
26862            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
26863            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
26864            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
26865            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
26866            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
26867            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
26868            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
26869            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
26870            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
26871            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
26872            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
26873            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
26874            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
26875            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
26876            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
26877            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
26878            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
26879            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
26880            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
26881            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
26882            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
26883            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
26884            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
26885            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
26886            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
26887            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
26888            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
26889            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
26890            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
26891            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
26892            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
26893            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
26894            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
26895            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
26896            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
26897            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
26898            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
26899            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
26900            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
26901            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
26902            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
26903            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
26904            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
26905            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
26906            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
26907            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
26908            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
26909            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
26910            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
26911            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
26912            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
26913            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
26914            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
26915            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
26916            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
26917            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
26918            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
26919            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
26920            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
26921            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
26922            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
26923            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
26924            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
26925            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
26926            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
26927        }
26928    }
26929}
26930// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
26931
26932// Begin of protos/perfetto/common/sys_stats_counters.proto
26933
26934// When editing entries here remember also to update "sys_stats_counters.h" with
26935// the corresponding string definitions for the actual /proc files parser.
26936
26937/// Counter definitions for Linux's /proc/meminfo.
26938#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26939#[repr(i32)]
26940pub enum MeminfoCounters {
26941    MeminfoUnspecified = 0,
26942    MeminfoMemTotal = 1,
26943    MeminfoMemFree = 2,
26944    MeminfoMemAvailable = 3,
26945    MeminfoBuffers = 4,
26946    MeminfoCached = 5,
26947    MeminfoSwapCached = 6,
26948    MeminfoActive = 7,
26949    MeminfoInactive = 8,
26950    MeminfoActiveAnon = 9,
26951    MeminfoInactiveAnon = 10,
26952    MeminfoActiveFile = 11,
26953    MeminfoInactiveFile = 12,
26954    MeminfoUnevictable = 13,
26955    MeminfoMlocked = 14,
26956    MeminfoSwapTotal = 15,
26957    MeminfoSwapFree = 16,
26958    MeminfoDirty = 17,
26959    MeminfoWriteback = 18,
26960    MeminfoAnonPages = 19,
26961    MeminfoMapped = 20,
26962    MeminfoShmem = 21,
26963    MeminfoSlab = 22,
26964    MeminfoSlabReclaimable = 23,
26965    MeminfoSlabUnreclaimable = 24,
26966    MeminfoKernelStack = 25,
26967    MeminfoPageTables = 26,
26968    MeminfoCommitLimit = 27,
26969    MeminfoCommitedAs = 28,
26970    MeminfoVmallocTotal = 29,
26971    MeminfoVmallocUsed = 30,
26972    MeminfoVmallocChunk = 31,
26973    MeminfoCmaTotal = 32,
26974    MeminfoCmaFree = 33,
26975    MeminfoGpu = 34,
26976    MeminfoZram = 35,
26977    MeminfoMisc = 36,
26978    MeminfoIonHeap = 37,
26979    MeminfoIonHeapPool = 38,
26980}
26981impl MeminfoCounters {
26982    /// String value of the enum field names used in the ProtoBuf definition.
26983    ///
26984    /// The values are not transformed in any way and thus are considered stable
26985    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26986    pub fn as_str_name(&self) -> &'static str {
26987        match self {
26988            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
26989            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
26990            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
26991            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
26992            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
26993            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
26994            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
26995            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
26996            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
26997            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
26998            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
26999            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
27000            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
27001            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
27002            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
27003            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
27004            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
27005            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
27006            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
27007            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
27008            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
27009            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
27010            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
27011            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
27012            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
27013            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
27014            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
27015            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
27016            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
27017            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
27018            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
27019            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
27020            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
27021            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
27022            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
27023            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
27024            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
27025            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
27026            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
27027        }
27028    }
27029}
27030/// Counter definitions for Linux's /proc/vmstat.
27031#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27032#[repr(i32)]
27033pub enum VmstatCounters {
27034    VmstatUnspecified = 0,
27035    VmstatNrFreePages = 1,
27036    VmstatNrAllocBatch = 2,
27037    VmstatNrInactiveAnon = 3,
27038    VmstatNrActiveAnon = 4,
27039    VmstatNrInactiveFile = 5,
27040    VmstatNrActiveFile = 6,
27041    VmstatNrUnevictable = 7,
27042    VmstatNrMlock = 8,
27043    VmstatNrAnonPages = 9,
27044    VmstatNrMapped = 10,
27045    VmstatNrFilePages = 11,
27046    VmstatNrDirty = 12,
27047    VmstatNrWriteback = 13,
27048    VmstatNrSlabReclaimable = 14,
27049    VmstatNrSlabUnreclaimable = 15,
27050    VmstatNrPageTablePages = 16,
27051    VmstatNrKernelStack = 17,
27052    VmstatNrOverhead = 18,
27053    VmstatNrUnstable = 19,
27054    VmstatNrBounce = 20,
27055    VmstatNrVmscanWrite = 21,
27056    VmstatNrVmscanImmediateReclaim = 22,
27057    VmstatNrWritebackTemp = 23,
27058    VmstatNrIsolatedAnon = 24,
27059    VmstatNrIsolatedFile = 25,
27060    VmstatNrShmem = 26,
27061    VmstatNrDirtied = 27,
27062    VmstatNrWritten = 28,
27063    VmstatNrPagesScanned = 29,
27064    VmstatWorkingsetRefault = 30,
27065    VmstatWorkingsetActivate = 31,
27066    VmstatWorkingsetNodereclaim = 32,
27067    VmstatNrAnonTransparentHugepages = 33,
27068    VmstatNrFreeCma = 34,
27069    VmstatNrSwapcache = 35,
27070    VmstatNrDirtyThreshold = 36,
27071    VmstatNrDirtyBackgroundThreshold = 37,
27072    VmstatPgpgin = 38,
27073    VmstatPgpgout = 39,
27074    VmstatPgpgoutclean = 40,
27075    VmstatPswpin = 41,
27076    VmstatPswpout = 42,
27077    VmstatPgallocDma = 43,
27078    VmstatPgallocNormal = 44,
27079    VmstatPgallocMovable = 45,
27080    VmstatPgfree = 46,
27081    VmstatPgactivate = 47,
27082    VmstatPgdeactivate = 48,
27083    VmstatPgfault = 49,
27084    VmstatPgmajfault = 50,
27085    VmstatPgrefillDma = 51,
27086    VmstatPgrefillNormal = 52,
27087    VmstatPgrefillMovable = 53,
27088    VmstatPgstealKswapdDma = 54,
27089    VmstatPgstealKswapdNormal = 55,
27090    VmstatPgstealKswapdMovable = 56,
27091    VmstatPgstealDirectDma = 57,
27092    VmstatPgstealDirectNormal = 58,
27093    VmstatPgstealDirectMovable = 59,
27094    VmstatPgscanKswapdDma = 60,
27095    VmstatPgscanKswapdNormal = 61,
27096    VmstatPgscanKswapdMovable = 62,
27097    VmstatPgscanDirectDma = 63,
27098    VmstatPgscanDirectNormal = 64,
27099    VmstatPgscanDirectMovable = 65,
27100    VmstatPgscanDirectThrottle = 66,
27101    VmstatPginodesteal = 67,
27102    VmstatSlabsScanned = 68,
27103    VmstatKswapdInodesteal = 69,
27104    VmstatKswapdLowWmarkHitQuickly = 70,
27105    VmstatKswapdHighWmarkHitQuickly = 71,
27106    VmstatPageoutrun = 72,
27107    VmstatAllocstall = 73,
27108    VmstatPgrotated = 74,
27109    VmstatDropPagecache = 75,
27110    VmstatDropSlab = 76,
27111    VmstatPgmigrateSuccess = 77,
27112    VmstatPgmigrateFail = 78,
27113    VmstatCompactMigrateScanned = 79,
27114    VmstatCompactFreeScanned = 80,
27115    VmstatCompactIsolated = 81,
27116    VmstatCompactStall = 82,
27117    VmstatCompactFail = 83,
27118    VmstatCompactSuccess = 84,
27119    VmstatCompactDaemonWake = 85,
27120    VmstatUnevictablePgsCulled = 86,
27121    VmstatUnevictablePgsScanned = 87,
27122    VmstatUnevictablePgsRescued = 88,
27123    VmstatUnevictablePgsMlocked = 89,
27124    VmstatUnevictablePgsMunlocked = 90,
27125    VmstatUnevictablePgsCleared = 91,
27126    VmstatUnevictablePgsStranded = 92,
27127    VmstatNrZspages = 93,
27128    VmstatNrIonHeap = 94,
27129    VmstatNrGpuHeap = 95,
27130    VmstatAllocstallDma = 96,
27131    VmstatAllocstallMovable = 97,
27132    VmstatAllocstallNormal = 98,
27133    VmstatCompactDaemonFreeScanned = 99,
27134    VmstatCompactDaemonMigrateScanned = 100,
27135    VmstatNrFastrpc = 101,
27136    VmstatNrIndirectlyReclaimable = 102,
27137    VmstatNrIonHeapPool = 103,
27138    VmstatNrKernelMiscReclaimable = 104,
27139    VmstatNrShadowCallStackBytes = 105,
27140    VmstatNrShmemHugepages = 106,
27141    VmstatNrShmemPmdmapped = 107,
27142    VmstatNrUnreclaimablePages = 108,
27143    VmstatNrZoneActiveAnon = 109,
27144    VmstatNrZoneActiveFile = 110,
27145    VmstatNrZoneInactiveAnon = 111,
27146    VmstatNrZoneInactiveFile = 112,
27147    VmstatNrZoneUnevictable = 113,
27148    VmstatNrZoneWritePending = 114,
27149    VmstatOomKill = 115,
27150    VmstatPglazyfree = 116,
27151    VmstatPglazyfreed = 117,
27152    VmstatPgrefill = 118,
27153    VmstatPgscanDirect = 119,
27154    VmstatPgscanKswapd = 120,
27155    VmstatPgskipDma = 121,
27156    VmstatPgskipMovable = 122,
27157    VmstatPgskipNormal = 123,
27158    VmstatPgstealDirect = 124,
27159    VmstatPgstealKswapd = 125,
27160    VmstatSwapRa = 126,
27161    VmstatSwapRaHit = 127,
27162    VmstatWorkingsetRestore = 128,
27163    VmstatAllocstallDevice = 129,
27164    VmstatAllocstallDma32 = 130,
27165    VmstatBalloonDeflate = 131,
27166    VmstatBalloonInflate = 132,
27167    VmstatBalloonMigrate = 133,
27168    VmstatCmaAllocFail = 134,
27169    VmstatCmaAllocSuccess = 135,
27170    VmstatNrFileHugepages = 136,
27171    VmstatNrFilePmdmapped = 137,
27172    VmstatNrFollPinAcquired = 138,
27173    VmstatNrFollPinReleased = 139,
27174    VmstatNrSecPageTablePages = 140,
27175    VmstatNrShadowCallStack = 141,
27176    VmstatNrSwapcached = 142,
27177    VmstatNrThrottledWritten = 143,
27178    VmstatPgallocDevice = 144,
27179    VmstatPgallocDma32 = 145,
27180    VmstatPgdemoteDirect = 146,
27181    VmstatPgdemoteKswapd = 147,
27182    VmstatPgreuse = 148,
27183    VmstatPgscanAnon = 149,
27184    VmstatPgscanFile = 150,
27185    VmstatPgskipDevice = 151,
27186    VmstatPgskipDma32 = 152,
27187    VmstatPgstealAnon = 153,
27188    VmstatPgstealFile = 154,
27189    VmstatThpCollapseAlloc = 155,
27190    VmstatThpCollapseAllocFailed = 156,
27191    VmstatThpDeferredSplitPage = 157,
27192    VmstatThpFaultAlloc = 158,
27193    VmstatThpFaultFallback = 159,
27194    VmstatThpFaultFallbackCharge = 160,
27195    VmstatThpFileAlloc = 161,
27196    VmstatThpFileFallback = 162,
27197    VmstatThpFileFallbackCharge = 163,
27198    VmstatThpFileMapped = 164,
27199    VmstatThpMigrationFail = 165,
27200    VmstatThpMigrationSplit = 166,
27201    VmstatThpMigrationSuccess = 167,
27202    VmstatThpScanExceedNonePte = 168,
27203    VmstatThpScanExceedSharePte = 169,
27204    VmstatThpScanExceedSwapPte = 170,
27205    VmstatThpSplitPage = 171,
27206    VmstatThpSplitPageFailed = 172,
27207    VmstatThpSplitPmd = 173,
27208    VmstatThpSwpout = 174,
27209    VmstatThpSwpoutFallback = 175,
27210    VmstatThpZeroPageAlloc = 176,
27211    VmstatThpZeroPageAllocFailed = 177,
27212    VmstatVmaLockAbort = 178,
27213    VmstatVmaLockMiss = 179,
27214    VmstatVmaLockRetry = 180,
27215    VmstatVmaLockSuccess = 181,
27216    VmstatWorkingsetActivateAnon = 182,
27217    VmstatWorkingsetActivateFile = 183,
27218    VmstatWorkingsetNodes = 184,
27219    VmstatWorkingsetRefaultAnon = 185,
27220    VmstatWorkingsetRefaultFile = 186,
27221    VmstatWorkingsetRestoreAnon = 187,
27222    VmstatWorkingsetRestoreFile = 188,
27223}
27224impl VmstatCounters {
27225    /// String value of the enum field names used in the ProtoBuf definition.
27226    ///
27227    /// The values are not transformed in any way and thus are considered stable
27228    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27229    pub fn as_str_name(&self) -> &'static str {
27230        match self {
27231            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
27232            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
27233            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
27234            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
27235            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
27236            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
27237            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
27238            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
27239            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
27240            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
27241            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
27242            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
27243            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
27244            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
27245            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
27246            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
27247            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
27248            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
27249            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
27250            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
27251            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
27252            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
27253            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
27254            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
27255            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
27256            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
27257            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
27258            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
27259            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
27260            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
27261            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
27262            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
27263            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
27264            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
27265            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
27266            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
27267            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
27268            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
27269            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
27270            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
27271            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
27272            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
27273            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
27274            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
27275            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
27276            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
27277            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
27278            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
27279            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
27280            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
27281            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
27282            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
27283            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
27284            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
27285            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
27286            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
27287            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
27288            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
27289            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
27290            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
27291            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
27292            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
27293            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
27294            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
27295            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
27296            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
27297            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
27298            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
27299            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
27300            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
27301            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
27302            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
27303            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
27304            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
27305            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
27306            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
27307            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
27308            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
27309            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
27310            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
27311            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
27312            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
27313            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
27314            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
27315            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
27316            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
27317            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
27318            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
27319            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
27320            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
27321            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
27322            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
27323            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
27324            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
27325            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
27326            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
27327            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
27328            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
27329            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
27330            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
27331            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
27332            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
27333            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
27334            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
27335            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
27336            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
27337            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
27338            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
27339            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
27340            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
27341            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
27342            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
27343            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
27344            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
27345            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
27346            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
27347            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
27348            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
27349            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
27350            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
27351            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
27352            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
27353            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
27354            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
27355            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
27356            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
27357            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
27358            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
27359            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
27360            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
27361            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
27362            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
27363            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
27364            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
27365            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
27366            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
27367            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
27368            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
27369            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
27370            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
27371            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
27372            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
27373            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
27374            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
27375            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
27376            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
27377            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
27378            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
27379            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
27380            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
27381            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
27382            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
27383            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
27384            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
27385            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
27386            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
27387            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
27388            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
27389            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
27390            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
27391            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
27392            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
27393            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
27394            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
27395            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
27396            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
27397            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
27398            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
27399            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
27400            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
27401            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
27402            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
27403            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
27404            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
27405            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
27406            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
27407            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
27408            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
27409            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
27410            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
27411            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
27412            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
27413            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
27414            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
27415            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
27416            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
27417            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
27418            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
27419            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
27420        }
27421    }
27422}
27423// End of protos/perfetto/trace/android/app_wakelock_data.proto
27424
27425// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
27426
27427/// Describes the packet type and direction. CMD and EVT are unidirectional, so
27428/// no need to differentiate the direction.
27429#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27430#[repr(i32)]
27431pub enum BluetoothTracePacketType {
27432    HciCmd = 1,
27433    HciEvt = 2,
27434    HciAclRx = 3,
27435    HciAclTx = 4,
27436    HciScoRx = 5,
27437    HciScoTx = 6,
27438    HciIsoRx = 7,
27439    HciIsoTx = 8,
27440}
27441impl BluetoothTracePacketType {
27442    /// String value of the enum field names used in the ProtoBuf definition.
27443    ///
27444    /// The values are not transformed in any way and thus are considered stable
27445    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27446    pub fn as_str_name(&self) -> &'static str {
27447        match self {
27448            BluetoothTracePacketType::HciCmd => "HCI_CMD",
27449            BluetoothTracePacketType::HciEvt => "HCI_EVT",
27450            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
27451            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
27452            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
27453            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
27454            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
27455            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
27456        }
27457    }
27458}
27459// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
27460
27461// Begin of protos/perfetto/trace/android/network_trace.proto
27462
27463#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27464#[repr(i32)]
27465pub enum TrafficDirection {
27466    DirUnspecified = 0,
27467    DirIngress = 1,
27468    DirEgress = 2,
27469}
27470impl TrafficDirection {
27471    /// String value of the enum field names used in the ProtoBuf definition.
27472    ///
27473    /// The values are not transformed in any way and thus are considered stable
27474    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27475    pub fn as_str_name(&self) -> &'static str {
27476        match self {
27477            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
27478            TrafficDirection::DirIngress => "DIR_INGRESS",
27479            TrafficDirection::DirEgress => "DIR_EGRESS",
27480        }
27481    }
27482}
27483#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27484#[repr(i32)]
27485pub enum TrustedOverlay {
27486    Unset = 0,
27487    Disabled = 1,
27488    Enabled = 2,
27489}
27490impl TrustedOverlay {
27491    /// String value of the enum field names used in the ProtoBuf definition.
27492    ///
27493    /// The values are not transformed in any way and thus are considered stable
27494    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27495    pub fn as_str_name(&self) -> &'static str {
27496        match self {
27497            TrustedOverlay::Unset => "UNSET",
27498            TrustedOverlay::Disabled => "DISABLED",
27499            TrustedOverlay::Enabled => "ENABLED",
27500        }
27501    }
27502}
27503/// Must match definition in the IComposerClient HAL
27504#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27505#[repr(i32)]
27506pub enum HwcCompositionType {
27507    /// Invalid composition type
27508    HwcTypeUnspecified = 0,
27509    /// Layer was composited by the client into the client target buffer
27510    HwcTypeClient = 1,
27511    /// Layer was composited by the device through hardware overlays
27512    HwcTypeDevice = 2,
27513    /// Layer was composited by the device using a color
27514    HwcTypeSolidColor = 3,
27515    /// Similar to DEVICE, but the layer position may have been asynchronously set
27516    /// through setCursorPosition
27517    HwcTypeCursor = 4,
27518    /// Layer was composited by the device via a sideband stream
27519    HwcTypeSideband = 5,
27520    /// Layer was composited by hardware optimized for display decoration
27521    HwcTypeDisplayDecoration = 6,
27522}
27523impl HwcCompositionType {
27524    /// String value of the enum field names used in the ProtoBuf definition.
27525    ///
27526    /// The values are not transformed in any way and thus are considered stable
27527    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27528    pub fn as_str_name(&self) -> &'static str {
27529        match self {
27530            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
27531            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
27532            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
27533            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
27534            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
27535            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
27536            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
27537        }
27538    }
27539}
27540#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27541#[repr(i32)]
27542pub enum FtraceParseStatus {
27543    FtraceStatusUnspecified = 0,
27544    /// Not written, used for convenience of implementation:
27545    FtraceStatusOk = 1,
27546    /// Issues with reading data out of the ftrace ring buffer:
27547    FtraceStatusUnexpectedReadError = 2,
27548    FtraceStatusPartialPageRead = 3,
27549    /// Ring buffer binary data not matching our understanding of the layout:
27550    FtraceStatusAbiInvalidPageHeader = 4,
27551    FtraceStatusAbiShortEventHeader = 5,
27552    FtraceStatusAbiNullPadding = 6,
27553    FtraceStatusAbiShortPaddingLength = 7,
27554    FtraceStatusAbiInvalidPaddingLength = 8,
27555    FtraceStatusAbiShortTimeExtend = 9,
27556    FtraceStatusAbiShortTimeStamp = 10,
27557    FtraceStatusAbiShortDataLength = 11,
27558    FtraceStatusAbiZeroDataLength = 12,
27559    FtraceStatusAbiInvalidDataLength = 13,
27560    FtraceStatusAbiShortEventId = 14,
27561    FtraceStatusAbiEndOverflow = 15,
27562    /// Issues with parsing the event payload:
27563    FtraceStatusShortCompactEvent = 16,
27564    FtraceStatusInvalidEvent = 17,
27565}
27566impl FtraceParseStatus {
27567    /// String value of the enum field names used in the ProtoBuf definition.
27568    ///
27569    /// The values are not transformed in any way and thus are considered stable
27570    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27571    pub fn as_str_name(&self) -> &'static str {
27572        match self {
27573            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
27574            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
27575            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
27576            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
27577            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
27578            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
27579            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
27580            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
27581            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
27582            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
27583            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
27584            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
27585            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
27586            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
27587            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
27588            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
27589            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
27590            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
27591        }
27592    }
27593}
27594#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27595#[repr(i32)]
27596pub enum FtraceClock {
27597    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
27598    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
27599    Unspecified = 0,
27600    Unknown = 1,
27601    Global = 2,
27602    Local = 3,
27603    MonoRaw = 4,
27604}
27605impl FtraceClock {
27606    /// String value of the enum field names used in the ProtoBuf definition.
27607    ///
27608    /// The values are not transformed in any way and thus are considered stable
27609    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27610    pub fn as_str_name(&self) -> &'static str {
27611        match self {
27612            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
27613            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
27614            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
27615            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
27616            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
27617        }
27618    }
27619}
27620// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
27621
27622// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
27623
27624// Describes Chrome's Compositor scheduler's current state and associated
27625// variables.
27626//
27627// These protos and enums were adapted from the corresponding original JSON
27628// trace event for the scheduler state. In contrast to the JSON, we use strongly
27629// typed enum values instead of strings for many fields, and
27630// microsecond-granularity timestamps.
27631//
27632// The original format was generated in JSON by the code at
27633// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
27634//
27635// And is now generated as protozero:
27636// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
27637//
27638// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
27639
27640#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27641#[repr(i32)]
27642pub enum ChromeCompositorSchedulerAction {
27643    CcSchedulerActionUnspecified = 0,
27644    CcSchedulerActionNone = 1,
27645    CcSchedulerActionSendBeginMainFrame = 2,
27646    CcSchedulerActionCommit = 3,
27647    CcSchedulerActionActivateSyncTree = 4,
27648    CcSchedulerActionDrawIfPossible = 5,
27649    CcSchedulerActionDrawForced = 6,
27650    CcSchedulerActionDrawAbort = 7,
27651    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
27652    CcSchedulerActionPrepareTiles = 9,
27653    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
27654    CcSchedulerActionPerformImplSideInvalidation = 11,
27655    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
27656    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
27657}
27658impl ChromeCompositorSchedulerAction {
27659    /// String value of the enum field names used in the ProtoBuf definition.
27660    ///
27661    /// The values are not transformed in any way and thus are considered stable
27662    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27663    pub fn as_str_name(&self) -> &'static str {
27664        match self {
27665            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
27666            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
27667            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
27668            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
27669            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
27670            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
27671            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
27672            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
27673            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
27674            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
27675            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
27676            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
27677            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
27678            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
27679        }
27680    }
27681}
27682// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
27683
27684// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
27685
27686// Describes the state of the RendererScheduler for a given Renderer Process.
27687
27688/// RAIL Mode is an indication of the kind of work that a Renderer is currently
27689/// performing which is in turn used to prioritise work accordingly.
27690/// A fuller description of these modes can be found <https://web.dev/rail/>
27691#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27692#[repr(i32)]
27693pub enum ChromeRailMode {
27694    RailModeNone = 0,
27695    RailModeResponse = 1,
27696    RailModeAnimation = 2,
27697    RailModeIdle = 3,
27698    RailModeLoad = 4,
27699}
27700impl ChromeRailMode {
27701    /// String value of the enum field names used in the ProtoBuf definition.
27702    ///
27703    /// The values are not transformed in any way and thus are considered stable
27704    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27705    pub fn as_str_name(&self) -> &'static str {
27706        match self {
27707            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
27708            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
27709            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
27710            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
27711            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
27712        }
27713    }
27714}